Cisco-IOS-XR-um-multicast-routing-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR multicast-routing package configuration. This YANG modul...

  • Version: 2021-02-17

    Cisco-IOS-XR-um-multicast-routing-cfg@2021-02-17


    
      module Cisco-IOS-XR-um-multicast-routing-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-multicast-routing-cfg";
    
        prefix um-multicast-routing-cfg;
    
        import cisco-semver {
          prefix semver;
        }
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
         
         Postal: 170 West Tasman Drive
         San Jose, CA 95134
         
         Tel: +1 800 553-NETS
         
         E-mail: cs-yang@cisco.com";
    
        description
          "This module contains a collection of YANG definitions
         for Cisco IOS-XR multicast-routing package configuration.
         
         This YANG module augments the
         modules with configuration data.
         
         Copyright (c) 2019-2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-02-17" {
          description
            "Added strict-rpf node under static segment-routing container
           2021-01-28
             Added cisco-support task yang nodes
           2021-01-27
             Modified must constraints under p2mp-te container
           2020-12-11
             Renamed improper node name 'inerface' to 'interface'. Changed max string length from 1024 to 800.
           2020-12-04
             Removed container maximum and its child node as these are used
           internally with cisco-support task.
           2020-04-06
             Added segment-routing container under mdt and bgp";
        }
    
        revision "2019-08-20" {
          description "Initial release";
        }
    
        semver:module-version "2.0.0";
        semver:module-version "1.0.0";
    
        container multicast-routing {
          presence
            "Indicates a multicast-routing node is configured.";
          description
            "Enable IP multicast forwarding";
          container vrfs {
            description "VRF configs";
            list vrf {
              key "vrf-name";
              description "VRF configs";
              leaf vrf-name {
                type xr:Cisco-ios-xr-string {
                  length "1..800";
                }
                description "VRF configs";
              }
    
              container address-family {
                description
                  "Enter Address Family command mode";
                container ipv4 {
                  presence
                    "Indicates a ipv4 node is configured.";
                  description
                    "Enter ipv4 Address Family command mode";
                  container mdt {
                    description
                      "MVPN configuration";
                    container data {
                      description
                        "Data MDT configuration";
                      container maximum-data-mdts {
                        presence
                          "Indicates a maximum-data-mdts node is configured.";
                        description
                          "Maximum number of data-mdts to be triggered";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container maximum-data-mdts
    
                      container data-mdt-group {
                        presence
                          "Indicates a data-mdt-group node is configured.";
                        description
                          "Data MDT group IP address/prefix length";
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "Data MDT group IP address";
                        }
    
                        leaf prefix-length {
                          type xr:Ipv4-prefix-length;
                          mandatory true;
                          description
                            "Data MDT group IP prefix length";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container data-mdt-group
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Ingress Replication Data MDT";
                        leaf number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container ingress-replication
    
                      container mldp {
                        presence
                          "Indicates a mldp node is configured.";
                        description
                          "MLDP Data MDT";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container mldp
    
                      container p2mp-te {
                        must
                          "(maximum-number or route-policy) and not(maximum-number and route-policy)";
                        presence
                          "Indicates a p2mp-te node is configured.";
                        description
                          "P2MPTE Data MDT core";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf attribute-set {
                          type xr:Cisco-ios-xr-string;
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container p2mp-te
    
                      container segment-routing {
                        description
                          "Tree-SID Data MDT";
                        container mpls {
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Use SR-MPLS Tree-SID policy";
                          leaf maximum-number {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            mandatory true;
                            description
                              "Maximum number of data-mdts to be triggered";
                          }
    
                          leaf color {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "On-demand color template to be used with the Tree-SID policy";
                          }
    
                          container fast-reroute {
                            description
                              "Enable Fast Re-route protection for this Tree-SID";
                            container lfa {
                              presence
                                "Indicates a lfa node is configured.";
                              description
                                "LFA Fast Re-route";
                            }  // container lfa
                          }  // container fast-reroute
    
                          leaf route-policy {
                            type xr:Cisco-ios-xr-string {
                              length "1..800";
                            }
                            description
                              "Route policy to select data mdt core";
                          }
    
                          leaf threshold {
                            type uint32 {
                              range "0..4294967";
                            }
                            description
                              "Traffic rate threshold in Kbps to trigger Data MDT";
                          }
    
                          leaf access-list-name {
                            type xr:Cisco-ios-xr-string;
                            description
                              "ACL for Customer VRF groups allowed to do Data MDT";
                          }
    
                          container immediate-switch {
                            presence
                              "Indicates a immediate-switch node is configured.";
                            description
                              "Switch to Data MDT immediately";
                          }  // container immediate-switch
                        }  // container mpls
                      }  // container segment-routing
                    }  // container data
    
                    container default {
                      description
                        "MDT Default distribution tree";
                      container ipv4 {
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "IPv4 encapsulated MDT";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "IPv4 encapsulated MDT";
                        }
    
                        container partitioned {
                          description
                            "GRE Partitioned MDT";
                          leaf bidir {
                            type inet:ipv4-address-no-zone;
                            description
                              "GRE Partitioned MDT for Bidir";
                          }
                        }  // container partitioned
                      }  // container ipv4
    
                      container mldp {
                        description
                          "mLDP default distribution tree";
                        container ipv4s {
                          description
                            "MP2MP core-tree with IPv4 Root Address";
                          list ipv4 {
                            key "address";
                            description
                              "MP2MP core-tree with IPv4 Root Address";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              description
                                "MP2MP core-tree with IPv4 Root Address";
                            }
    
                            container partitioned {
                              description
                                "mLDP Partitioned MDT";
                              container bidir {
                                presence
                                  "Indicates a bidir node is configured.";
                                description
                                  "Enable Exclusive Partitioned MDT for Bidir";
                              }  // container bidir
                            }  // container partitioned
                          }  // list ipv4
                        }  // container ipv4s
    
                        container p2mp {
                          presence
                            "Indicates a p2mp node is configured.";
                          description
                            "P2MP core-tree";
                          container partitioned {
                            description
                              "mLDP Partitioned MDT";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container partitioned
                        }  // container p2mp
                      }  // container mldp
    
                      container p2mp-te {
                        description
                          "P2MP-TE default distribution tree";
                        leaf attribute-set {
                          type union {
                            type string {
                              pattern "default";
                            }
                            type xr:Cisco-ios-xr-string {
                              length "1..800";
                            }
                          }
                          must
                            "not(../../mldp/ipv4s/ipv4 or ../../mldp/p2mp or
                           ../../ipv4 or ../../ingress-replication)";
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
    
                        leaf static {
                          type xr:Interface-name {
                            pattern
                              "tunnel-mte[0-9]+";
                          }
                          must
                            "not(../../mldp/ipv4s/ipv4 or ../../mldp/p2mp or
                           ../../ipv4 or ../../ingress-replication)";
                          description
                            "Static P2MP-TE Tunnel";
                        }
                      }  // container p2mp-te
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Enable default ingress-replication";
                      }  // container ingress-replication
    
                      container segment-routing {
                        description
                          "Tree-SID distribution tree";
                        container mpls {
                          must
                            "not(../../../partitioned/segment-routing/mpls)";
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Use SR-MPLS Tree-SID policy";
                          leaf color {
                            type union {
                              type enumeration {
                                enum "not-used" {
                                  value 0;
                                  description
                                    "color template is not used";
                                }
                              }
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                            }
                            mandatory true;
                            description
                              "On-demand color template to be used with the Tree-SID policy";
                          }
    
                          container fast-reroute {
                            description
                              "Enable Fast Re-route protection for this Tree-SID";
                            container lfa {
                              presence
                                "Indicates a lfa node is configured.";
                              description
                                "LFA Fast Re-route";
                            }  // container lfa
                          }  // container fast-reroute
                        }  // container mpls
                      }  // container segment-routing
                    }  // container default
    
                    container partitioned {
                      description
                        "MDT Partitioned distribution tree";
                      container p2mp-te {
                        description
                          "P2MP-TE default distribution tree";
                        leaf attribute-set {
                          type union {
                            type string {
                              pattern "default";
                            }
                            type xr:Cisco-ios-xr-string {
                              length "1..800";
                            }
                          }
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
                      }  // container p2mp-te
    
                      container mldp {
                        description
                          "mLDP signaled distribution tree";
                        container ipv4 {
                          description
                            "IPv4 core";
                          container mp2mp {
                            must "not(../p2mp)";
                            presence
                              "Indicates a mp2mp node is configured.";
                            description
                              "Enable mLDP MP2MP core tree";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container mp2mp
    
                          container p2mp {
                            must "not(../mp2mp)";
                            presence
                              "Indicates a p2mp node is configured.";
                            description
                              "Enable mLDP P2MP core tree";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container p2mp
                        }  // container ipv4
                      }  // container mldp
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Enable partitioned ingress-replication";
                      }  // container ingress-replication
    
                      container segment-routing {
                        description
                          "Tree-SID distribution tree";
                        container mpls {
                          must
                            "not(../../../default/segment-routing/mpls)";
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Use SR-MPLS Tree-SID policy";
                          leaf color {
                            type union {
                              type enumeration {
                                enum "not-used" {
                                  value 0;
                                  description
                                    "color template is not used";
                                }
                              }
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                            }
                            mandatory true;
                            description
                              "On-demand color template to be used with the Tree-SID policy";
                          }
    
                          container fast-reroute {
                            description
                              "Enable Fast Re-route protection for this Tree-SID";
                            container lfa {
                              presence
                                "Indicates a lfa node is configured.";
                              description
                                "LFA Fast Re-route";
                            }  // container lfa
                          }  // container fast-reroute
                        }  // container mpls
                      }  // container segment-routing
                    }  // container partitioned
    
                    container mldp {
                      description
                        "mLDP distribution tree";
                      container in-band-signaling {
                        description
                          "Enable mLDP in-band-signalling";
                        container ipv4 {
                          presence
                            "Indicates a ipv4 node is configured.";
                          description
                            "Enable IPv4-core tree";
                        }  // container ipv4
                      }  // container in-band-signaling
                    }  // container mldp
    
                    container static {
                      description
                        "Interface used to set MDT source address";
                      container segment-routing {
                        presence
                          "Indicates a segment-routing node is configured.";
                        description
                          "Set MDT core as tree-sid";
                        container strict-rpf {
                          presence
                            "Indicates a strict-rpf node is configured.";
                          description
                            "Enable strict RPF check";
                        }  // container strict-rpf
                      }  // container segment-routing
    
                      container p2mp-te {
                        description
                          "static p2mp-te";
                        container interfaces {
                          description
                            "p2mp-te interface";
                          list interface {
                            key "interface-name";
                            description
                              "p2mp-te interface";
                            leaf interface-name {
                              type xr:Interface-name {
                                pattern
                                  "tunnel-mte[0-9]+";
                              }
                              description
                                "p2mp-te interface";
                            }
                          }  // list interface
                        }  // container interfaces
                      }  // container p2mp-te
                    }  // container static
    
                    leaf source {
                      type xr:Interface-name;
                      description
                        "Interface used to set MDT source address";
                    }
    
                    leaf mtu {
                      type uint32 {
                        range "1401..65535";
                      }
                      description
                        "MDT mtu configuration";
                    }
                  }  // container mdt
    
                  container rate-per-route {
                    presence
                      "Indicates a rate-per-route node is configured.";
                    description
                      "Enable/disable per (S,G) rate calculation";
                  }  // container rate-per-route
    
                  container accounting {
                    description
                      "Enable/disable Accounting";
                    container per-prefix {
                      presence
                        "Indicates a per-prefix node is configured.";
                      description
                        "Enable per (S,G) accounting.";
                      container forward-only {
                        presence
                          "Indicates a forward-only node is configured.";
                        description
                          "Enable per (S,G) forward-only accounting.";
                      }  // container forward-only
                    }  // container per-prefix
                  }  // container accounting
    
                  container log-traps {
                    presence
                      "Indicates a log-traps node is configured.";
                    description
                      "Enable logging trap events";
                  }  // container log-traps
    
                  container export-rt {
                    description
                      "Configure Export Route-Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number index-number";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number route distinguisher";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
    
                    list four-byte-as-rt {
                      key "four-byte-as-number index-number";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS Number route distinguisher";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
    
                    list ip-address-rt {
                      key "ip-address index-number";
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        description "IP address";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list ip-address-rt
                  }  // container export-rt
    
                  container import-rt {
                    description
                      "Configure Import Route-Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number index-number";
                      description
                        "Two Byte AS Number route-target";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
    
                    list four-byte-as-rt {
                      key "four-byte-as-number index-number";
                      description
                        "Four Byte AS Number route-target";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS Number route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
    
                    list ip-address-rt {
                      key "ip-address index-number";
                      description
                        "IP address route-target";
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        description
                          "IP address route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list ip-address-rt
                  }  // container import-rt
    
                  container interface {
                    description
                      "Multicast interface configuration subcommands";
                    container all {
                      description
                        "Inherited by all interfaces";
                      container enable {
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable IP Multicast";
                      }  // container enable
                    }  // container all
    
                    container interfaces {
                      description
                        "select an interface to configure";
                      list interface {
                        key "interface-name";
                        description
                          "select an interface to configure";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "select an interface to configure";
                        }
    
                        container enable {
                          must "not(../disable)";
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable IP multicast";
                        }  // container enable
    
                        container disable {
                          must "not(../enable)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable IP multicast";
                        }  // container disable
    
                        leaf boundary {
                          type string {
                            length "1..32";
                          }
                          description
                            "Boundary for administratively scoped multicast addresses";
                        }
    
                        leaf ttl-threshold {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "TTL threshold for IPv4 multicast packets";
                        }
                      }  // list interface
                    }  // container interfaces
                  }  // container interface
    
                  container bgp {
                    description
                      "Enable BGP MVPN Discovery";
                    container auto-discovery {
                      presence
                        "Indicates an auto-discovery node is configured.";
                      description
                        "Enable BGP Auto-Discovery";
                      leaf core-tree {
                        type enumeration {
                          enum "pim" {
                            value 1;
                            description
                              "PIM core tree";
                          }
                          enum "mldp" {
                            value 2;
                            description
                              "mLDP core tree";
                          }
                          enum "p2mp-te" {
                            value 3;
                            description
                              "RSVP P2MP-TE core tree";
                          }
                          enum
                            "ingress-replication" {
                            value 4;
                            description
                              "IR core tree";
                          }
                          enum "segment-routing" {
                            value 5;
                            description
                              "Tree-SID core tree";
                          }
                        }
                        mandatory true;
                        description
                          "Enable BGP Auto-Discovery";
                      }
    
                      container leaf-info-required {
                        presence
                          "Indicates a leaf-info-required node is configured.";
                        description
                          "Explicit tracking of S-PMSI core trees";
                      }  // container leaf-info-required
    
                      container inter-as {
                        presence
                          "Indicates a inter-as node is configured.";
                        description
                          "Inter-AS MVPN";
                      }  // container inter-as
    
                      container receiver-site {
                        presence
                          "Indicates a receiver-site node is configured.";
                        description
                          "Receiver-only site";
                      }  // container receiver-site
    
                      container anycast-rp {
                        presence
                          "Indicates a anycast-rp node is configured.";
                        description
                          "Enable Anycast RP using MVPN SAFI";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Policy for filtering routes";
                        }
                      }  // container anycast-rp
    
                      container pmsi-timer {
                        when
                          "../core-tree != 'pim'";
                        description
                          "Set PMSI Tunnel timers";
                        leaf change-delay {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set Change Delay timer";
                        }
    
                        leaf stop-forwarding {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set Stop Forwarding timer";
                        }
                      }  // container pmsi-timer
    
                      container segmented {
                        must
                          "../core-tree != 'pim'";
                        presence
                          "Indicates a segmented node is configured.";
                        description
                          "Enable Segmented Multicast/MVPN";
                        leaf bandwidth-threshold {
                          type uint32 {
                            range
                              "0..1000000000";
                          }
                          description
                            "Set Bandwidth threshold for Ingress Replication core-tree";
                        }
    
                        leaf color {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Enable Color Opaque Extended Community";
                        }
                      }  // container segmented
    
                      container inherit-vrf-ri {
                        description
                          "Inherit VRF Route-Import EC";
                        leaf vrf {
                          type xr:Cisco-ios-xr-string {
                            length "1..800";
                          }
                          description
                            "VRF to inherit from";
                        }
                      }  // container inherit-vrf-ri
                    }  // container auto-discovery
                  }  // container bgp
    
                  container static-rpf {
                    description
                      "Configure a static RPF rule for a given prefix/mask";
                    list address-range {
                      key "prefix-address prefix-length";
                      leaf prefix-address {
                        type inet:ipv4-address-no-zone;
                        description
                          "Prefix for address range";
                      }
    
                      leaf prefix-length {
                        type uint32 {
                          range "0..32";
                        }
                        description
                          "Prefix mask for address range";
                      }
    
                      leaf interface {
                        type xr:Interface-name;
                        mandatory true;
                        description
                          "Static route interface";
                      }
    
                      leaf next-hop-address {
                        type inet:ipv4-address-no-zone;
                        mandatory true;
                        description
                          "Static route next-hop";
                      }
                    }  // list address-range
                  }  // container static-rpf
    
                  container core-tree-protocol {
                    description
                      "Configure Core-tree-protocol";
                    container rsvp-te {
                      presence
                        "Indicates a rsvp-te node is configured.";
                      description
                        "Configure P2MP-TE as the Core-tree-protocol";
                      leaf group-list {
                        type xr:Cisco-ios-xr-string;
                        description
                          "ACL for group-list";
                      }
                    }  // container rsvp-te
                  }  // container core-tree-protocol
    
                  container static {
                    description
                      "Configure a static Policy";
                    list sr-policy {
                      key "sr-policy-name";
                      description
                        "SR P2MP Policy for Multicast";
                      leaf sr-policy-name {
                        type xr:Cisco-ios-xr-string;
                        description
                          "Name of the SR P2MP Policy";
                      }
    
                      leaf ingress {
                        type string;
                        description
                          "Ingress Node address of traffic (for strict-rpf)";
                      }
                    }  // list sr-policy
                  }  // container static
                }  // container ipv4
    
                container ipv6 {
                  presence
                    "Indicates a ipv4 node is configured.";
                  description
                    "Enter ipv6 Address Family command mode";
                  container mdt {
                    description
                      "MVPN configuration";
                    container data {
                      description
                        "Data MDT configuration";
                      container maximum-data-mdts {
                        presence
                          "Indicates a maximum-data-mdts node is configured.";
                        description
                          "Maximum number of data-mdts to be triggered";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container maximum-data-mdts
    
                      container data-mdt-group {
                        presence
                          "Indicates a data-mdt-group node is configured.";
                        description
                          "Data MDT group IP address/prefix length";
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "Data MDT group IP address";
                        }
    
                        leaf prefix-length {
                          type xr:Ipv4-prefix-length;
                          mandatory true;
                          description
                            "Data MDT group IP prefix length";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container data-mdt-group
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Ingress Replication Data MDT";
                        leaf number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container ingress-replication
    
                      container mldp {
                        presence
                          "Indicates a mldp node is configured.";
                        description
                          "MLDP Data MDT";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container mldp
    
                      container p2mp-te {
                        must
                          "(maximum-number or route-policy) and not(maximum-number and route-policy)";
                        presence
                          "Indicates a p2mp-te node is configured.";
                        description
                          "P2MPTE Data MDT core";
                        leaf maximum-number {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "Maximum number of data-mdts to be triggered";
                        }
    
                        leaf attribute-set {
                          type xr:Cisco-ios-xr-string;
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
    
                        leaf access-list-name {
                          type xr:Cisco-ios-xr-string;
                          description
                            "ACL for Customer VRF groups allowed to do Data MDT";
                        }
    
                        container immediate-switch {
                          presence
                            "Indicates an immediate-switch node is configured.";
                          description
                            "Switch to Data MDT immediately";
                        }  // container immediate-switch
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "DATA MDT Route policy";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "0..4294967";
                          }
                          description
                            "Traffic rate threshold in Kbps to trigger Data MDT";
                        }
                      }  // container p2mp-te
                    }  // container data
    
                    container default {
                      description
                        "MDT Default distribution tree";
                      container ipv4 {
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "IPv4 encapsulated MDT";
                        leaf ipv4-address {
                          type inet:ipv4-address-no-zone;
                          mandatory true;
                          description
                            "IPv4 encapsulated MDT";
                        }
    
                        container partitioned {
                          description
                            "GRE Partitioned MDT";
                          leaf bidir {
                            type inet:ipv4-address-no-zone;
                            description
                              "GRE Partitioned MDT for Bidir";
                          }
                        }  // container partitioned
                      }  // container ipv4
    
                      container mldp {
                        description
                          "mLDP default distribution tree";
                        container ipv4s {
                          description
                            "MP2MP core-tree with IPv4 Root Address";
                          list ipv4 {
                            key "address";
                            description
                              "MP2MP core-tree with IPv4 Root Address";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              description
                                "MP2MP core-tree with IPv4 Root Address";
                            }
    
                            container partitioned {
                              description
                                "mLDP Partitioned MDT";
                              container bidir {
                                presence
                                  "Indicates a bidir node is configured.";
                                description
                                  "Enable Exclusive Partitioned MDT for Bidir";
                              }  // container bidir
                            }  // container partitioned
                          }  // list ipv4
                        }  // container ipv4s
    
                        container p2mp {
                          presence
                            "Indicates a p2mp node is configured.";
                          description
                            "P2MP core-tree";
                          container partitioned {
                            description
                              "mLDP Partitioned MDT";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container partitioned
                        }  // container p2mp
                      }  // container mldp
    
                      container p2mp-te {
                        description
                          "P2MP-TE default distribution tree";
                        leaf attribute-set {
                          type union {
                            type string {
                              pattern "default";
                            }
                            type xr:Cisco-ios-xr-string {
                              length "1..800";
                            }
                          }
                          must
                            "not(../../mldp/ipv4s/ipv4 or ../../mldp/p2mp or
                           ../../ipv4 or ../../ingress-replication)";
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
    
                        leaf static {
                          type xr:Interface-name {
                            pattern
                              "tunnel-mte[0-9]+";
                          }
                          must
                            "not(../../mldp/ipv4s/ipv4 or ../../mldp/p2mp or
                           ../../ipv4 or ../../ingress-replication)";
                          description
                            "Static P2MP-TE Tunnel";
                        }
                      }  // container p2mp-te
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Enable default ingress-replication";
                      }  // container ingress-replication
                    }  // container default
    
                    container partitioned {
                      description
                        "MDT Partitioned distribution tree";
                      container p2mp-te {
                        description
                          "P2MP-TE default distribution tree";
                        leaf attribute-set {
                          type union {
                            type string {
                              pattern "default";
                            }
                            type xr:Cisco-ios-xr-string {
                              length "1..800";
                            }
                          }
                          description
                            "The Attribute Set template to be used with the TE tunnel request";
                        }
                      }  // container p2mp-te
    
                      container mldp {
                        description
                          "mLDP signaled distribution tree";
                        container ipv4 {
                          description
                            "IPv4 core";
                          container mp2mp {
                            must "not(../p2mp)";
                            presence
                              "Indicates a mp2mp node is configured.";
                            description
                              "Enable mLDP MP2MP core tree";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container mp2mp
    
                          container p2mp {
                            must "not(../mp2mp)";
                            presence
                              "Indicates a p2mp node is configured.";
                            description
                              "Enable mLDP P2MP core tree";
                            container bidir {
                              presence
                                "Indicates a bidir node is configured.";
                              description
                                "Enable Exclusive Partitioned MDT for Bidir";
                            }  // container bidir
                          }  // container p2mp
                        }  // container ipv4
                      }  // container mldp
    
                      container ingress-replication {
                        presence
                          "Indicates a ingress-replication node is configured.";
                        description
                          "Enable partitioned ingress-replication";
                      }  // container ingress-replication
                    }  // container partitioned
    
                    container mldp {
                      description
                        "mLDP distribution tree";
                      container in-band-signaling {
                        description
                          "Enable mLDP in-band-signalling";
                        container ipv4 {
                          presence
                            "Indicates a ipv4 node is configured.";
                          description
                            "Enable IPv4-core tree";
                        }  // container ipv4
                      }  // container in-band-signaling
                    }  // container mldp
    
                    container static {
                      description
                        "Interface used to set MDT source address";
                      container segment-routing {
                        presence
                          "Indicates a segment-routing node is configured.";
                        description
                          "Set MDT core as tree-sid";
                        container strict-rpf {
                          presence
                            "Indicates a strict-rpf node is configured.";
                          description
                            "Enable strict RPF check";
                        }  // container strict-rpf
                      }  // container segment-routing
                    }  // container static
    
                    leaf source {
                      type xr:Interface-name;
                      description
                        "Interface used to set MDT source address";
                    }
    
                    leaf mtu {
                      type uint32 {
                        range "1401..65535";
                      }
                      description
                        "MDT mtu configuration";
                    }
                  }  // container mdt
    
                  container rate-per-route {
                    presence
                      "Indicates a rate-per-route node is configured.";
                    description
                      "Enable/disable per (S,G) rate calculation";
                  }  // container rate-per-route
    
                  container accounting {
                    description
                      "Enable/disable Accounting";
                    container per-prefix {
                      presence
                        "Indicates a per-prefix node is configured.";
                      description
                        "Enable per (S,G) accounting.";
                      container forward-only {
                        presence
                          "Indicates a forward-only node is configured.";
                        description
                          "Enable per (S,G) forward-only accounting.";
                      }  // container forward-only
                    }  // container per-prefix
                  }  // container accounting
    
                  container log-traps {
                    presence
                      "Indicates a log-traps node is configured.";
                    description
                      "Enable logging trap events";
                  }  // container log-traps
    
                  container export-rt {
                    description
                      "Configure Export Route-Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number index-number";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number route distinguisher";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
    
                    list four-byte-as-rt {
                      key "four-byte-as-number index-number";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS Number route distinguisher";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
    
                    list ip-address-rt {
                      key "ip-address index-number";
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        description "IP address";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list ip-address-rt
                  }  // container export-rt
    
                  container import-rt {
                    description
                      "Configure Import Route-Target";
                    list two-byte-as-rt {
                      key "two-byte-as-number index-number";
                      description
                        "Two Byte AS Number route-target";
                      leaf two-byte-as-number {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Two Byte AS Number route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list two-byte-as-rt
    
                    list four-byte-as-rt {
                      key "four-byte-as-number index-number";
                      description
                        "Four Byte AS Number route-target";
                      leaf four-byte-as-number {
                        type uint32 {
                          range
                            "65536..4294967295";
                        }
                        description
                          "Four Byte AS Number route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list four-byte-as-rt
    
                    list ip-address-rt {
                      key "ip-address index-number";
                      description
                        "IP address route-target";
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        description
                          "IP address route-target";
                      }
    
                      leaf index-number {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "AS:nn (hex or decimal format)";
                      }
                    }  // list ip-address-rt
                  }  // container import-rt
    
                  container interface {
                    description
                      "Multicast interface configuration subcommands";
                    container all {
                      description
                        "Inherited by all interfaces";
                      container enable {
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable IP Multicast";
                      }  // container enable
                    }  // container all
    
                    container interfaces {
                      description
                        "select an interface to configure";
                      list interface {
                        key "interface-name";
                        description
                          "select an interface to configure";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "select an interface to configure";
                        }
    
                        container enable {
                          must "not(../disable)";
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable IP multicast";
                        }  // container enable
    
                        container disable {
                          must "not(../enable)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable IP multicast";
                        }  // container disable
    
                        leaf boundary {
                          type string {
                            length "1..32";
                          }
                          description
                            "Boundary for administratively scoped multicast addresses";
                        }
    
                        leaf ttl-threshold {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "TTL threshold for IPv4 multicast packets";
                        }
                      }  // list interface
                    }  // container interfaces
                  }  // container interface
    
                  container bgp {
                    description
                      "Enable BGP MVPN Discovery";
                    container auto-discovery {
                      presence
                        "Indicates an auto-discovery node is configured.";
                      description
                        "Enable BGP Auto-Discovery";
                      leaf core-tree {
                        type enumeration {
                          enum "pim" {
                            value 1;
                            description
                              "PIM core tree";
                          }
                          enum "mldp" {
                            value 2;
                            description
                              "mLDP core tree";
                          }
                          enum "p2mp-te" {
                            value 3;
                            description
                              "RSVP P2MP-TE core tree";
                          }
                          enum
                            "ingress-replication" {
                            value 4;
                            description
                              "IR core tree";
                          }
                        }
                        mandatory true;
                        description
                          "Enable BGP Auto-Discovery";
                      }
    
                      container leaf-info-required {
                        presence
                          "Indicates a leaf-info-required node is configured.";
                        description
                          "Explicit tracking of S-PMSI core trees";
                      }  // container leaf-info-required
    
                      container inter-as {
                        presence
                          "Indicates a inter-as node is configured.";
                        description
                          "Inter-AS MVPN";
                      }  // container inter-as
    
                      container receiver-site {
                        presence
                          "Indicates a receiver-site node is configured.";
                        description
                          "Receiver-only site";
                      }  // container receiver-site
    
                      container anycast-rp {
                        presence
                          "Indicates a anycast-rp node is configured.";
                        description
                          "Enable Anycast RP using MVPN SAFI";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Policy for filtering routes";
                        }
                      }  // container anycast-rp
    
                      container pmsi-timer {
                        when
                          "../core-tree != 'pim'";
                        description
                          "Set PMSI Tunnel timers";
                        leaf change-delay {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set Change Delay timer";
                        }
    
                        leaf stop-forwarding {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set Stop Forwarding timer";
                        }
                      }  // container pmsi-timer
    
                      container segmented {
                        must
                          "../core-tree != 'pim'";
                        presence
                          "Indicates a segmented node is configured.";
                        description
                          "Enable Segmented Multicast/MVPN";
                        leaf bandwidth-threshold {
                          type uint32 {
                            range
                              "0..1000000000";
                          }
                          description
                            "Set Bandwidth threshold for Ingress Replication core-tree";
                        }
    
                        leaf color {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Enable Color Opaque Extended Community";
                        }
                      }  // container segmented
    
                      container inherit-vrf-ri {
                        description
                          "Inherit VRF Route-Import EC";
                        leaf vrf {
                          type xr:Cisco-ios-xr-string {
                            length "1..800";
                          }
                          description
                            "VRF to inherit from";
                        }
                      }  // container inherit-vrf-ri
                    }  // container auto-discovery
                  }  // container bgp
    
                  container static-rpf {
                    description
                      "Configure a static RPF rule for a given prefix/mask";
                    list address-range {
                      key "prefix-address prefix-length";
                      leaf prefix-address {
                        type inet:ipv6-address-no-zone;
                        description
                          "Prefix for address range";
                      }
    
                      leaf prefix-length {
                        type uint32 {
                          range "0..128";
                        }
                        description
                          "Prefix mask for address range";
                      }
    
                      leaf interface {
                        type xr:Interface-name;
                        mandatory true;
                        description
                          "Static route interface";
                      }
    
                      leaf next-hop-address {
                        type inet:ipv6-address-no-zone;
                        mandatory true;
                        description
                          "Static route next-hop";
                      }
                    }  // list address-range
                  }  // container static-rpf
    
                  container core-tree-protocol {
                    description
                      "Configure Core-tree-protocol";
                    container rsvp-te {
                      presence
                        "Indicates a rsvp-te node is configured.";
                      description
                        "Configure P2MP-TE as the Core-tree-protocol";
                      leaf group-list {
                        type xr:Cisco-ios-xr-string;
                        description
                          "ACL for group-list";
                      }
                    }  // container rsvp-te
                  }  // container core-tree-protocol
    
                  container static {
                    description
                      "Configure a static Policy";
                    list sr-policy {
                      key "sr-policy-name";
                      description
                        "SR P2MP Policy for Multicast";
                      leaf sr-policy-name {
                        type xr:Cisco-ios-xr-string;
                        description
                          "Name of the SR P2MP Policy";
                      }
    
                      leaf ingress {
                        type string;
                        description
                          "Ingress Node address of traffic (for strict-rpf)";
                      }
                    }  // list sr-policy
                  }  // container static
                }  // container ipv6
              }  // container address-family
            }  // list vrf
          }  // container vrfs
    
          container address-family {
            description
              "Enter Address Family command mode";
            container ipv4 {
              presence
                "Indicates a ipv4 node is configured.";
              description
                "Enter ipv4 Address Family command mode";
              container mdt {
                description "MVPN configuration";
                container data {
                  description
                    "Data MDT configuration";
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Ingress Replication Data MDT";
                    leaf number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container ingress-replication
    
                  container mldp {
                    presence
                      "Indicates a mldp node is configured.";
                    description "MLDP Data MDT";
                    leaf maximum-number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      mandatory true;
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container mldp
    
                  container p2mp-te {
                    must
                      "(maximum-number or route-policy) and not(maximum-number and route-policy)";
                    presence
                      "Indicates a p2mp-te node is configured.";
                    description
                      "P2MPTE Data MDT core";
                    leaf maximum-number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf attribute-set {
                      type xr:Cisco-ios-xr-string;
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container p2mp-te
    
                  container segment-routing {
                    description
                      "Tree-SID Data MDT";
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Use SR-MPLS Tree-SID policy";
                      leaf maximum-number {
                        type uint32 {
                          range "1..4294967295";
                        }
                        mandatory true;
                        description
                          "Maximum number of data-mdts to be triggered";
                      }
    
                      leaf color {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "On-demand color template to be used with the Tree-SID policy";
                      }
    
                      container fast-reroute {
                        description
                          "Enable Fast Re-route protection for this Tree-SID";
                        container lfa {
                          presence
                            "Indicates a lfa node is configured.";
                          description
                            "LFA Fast Re-route";
                        }  // container lfa
                      }  // container fast-reroute
    
                      leaf route-policy {
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                        description
                          "Route policy to select data mdt core";
                      }
    
                      leaf threshold {
                        type uint32 {
                          range "0..4294967";
                        }
                        description
                          "Traffic rate threshold in Kbps to trigger Data MDT";
                      }
    
                      leaf access-list-name {
                        type xr:Cisco-ios-xr-string;
                        description
                          "ACL for Customer VRF groups allowed to do Data MDT";
                      }
    
                      container immediate-switch {
                        presence
                          "Indicates a immediate-switch node is configured.";
                        description
                          "Switch to Data MDT immediately";
                      }  // container immediate-switch
                    }  // container mpls
                  }  // container segment-routing
                }  // container data
    
                container default {
                  description
                    "MDT Default distribution tree";
                  container mldp {
                    description
                      "mLDP default distribution tree";
                    container p2mp {
                      must "not(../../p2mp-te)";
                      presence
                        "Indicates a p2mp node is configured.";
                      description
                        "P2MP core-tree";
                    }  // container p2mp
                  }  // container mldp
    
                  container p2mp-te {
                    description
                      "P2MP-TE default distribution tree";
                    leaf attribute-set {
                      type union {
                        type string {
                          pattern "default";
                        }
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                      }
                      must
                        "not(../../mldp/p2mp)";
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
                  }  // container p2mp-te
    
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Enable default ingress-replication";
                  }  // container ingress-replication
    
                  container segment-routing {
                    description
                      "Tree-SID distribution tree";
                    container mpls {
                      must
                        "not(../../../partitioned/segment-routing/mpls)";
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Use SR-MPLS Tree-SID policy";
                      leaf color {
                        type union {
                          type enumeration {
                            enum "not-used" {
                              value 0;
                              description
                                "color template is not used";
                            }
                          }
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                        }
                        mandatory true;
                        description
                          "On-demand color template to be used with the Tree-SID policy";
                      }
    
                      container fast-reroute {
                        description
                          "Enable Fast Re-route protection for this Tree-SID";
                        container lfa {
                          presence
                            "Indicates a lfa node is configured.";
                          description
                            "LFA Fast Re-route";
                        }  // container lfa
                      }  // container fast-reroute
                    }  // container mpls
                  }  // container segment-routing
                }  // container default
    
                leaf source {
                  type xr:Interface-name;
                  description
                    "Interface used to set MDT source address";
                }
    
                leaf mtu {
                  type uint32 {
                    range "1401..65535";
                  }
                  description
                    "MDT mtu configuration";
                }
    
                container segment-border {
                  presence
                    "Indicates a segment-border node is configured.";
                  description
                    "Border router for segmented multicast";
                  leaf route-policy {
                    type xr:Route-policy-name;
                    description
                      "Route-policy to select segmented core type";
                  }
                }  // container segment-border
    
                container segmented-inband {
                  presence
                    "Indicates a segmented-inband node is configured.";
                  description
                    "MDT Segmented Inband distribution tree";
                  leaf core-tree {
                    type enumeration {
                      enum "mldp" {
                        value 2;
                        description
                          "mLDP core tree";
                      }
                      enum "p2mp-te" {
                        value 3;
                        description
                          "RSVP P2MP-TE core tree";
                      }
                      enum "ingress-replication" {
                        value 4;
                        description
                          "IR core tree";
                      }
                    }
                    mandatory true;
                    description
                      "MDT Segmented Inband distribution tree";
                  }
    
                  leaf color {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "Enable Color Opaque extended community";
                  }
                }  // container segmented-inband
    
                container partitioned {
                  description
                    "MDT Partitioned distribution tree";
                  container p2mp-te {
                    description
                      "P2MP-TE default distribution tree";
                    leaf attribute-set {
                      type union {
                        type string {
                          pattern "default";
                        }
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                      }
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
                  }  // container p2mp-te
    
                  container mldp {
                    description
                      "mLDP signaled distribution tree";
                    container ipv4 {
                      description "IPv4 core";
                      container mp2mp {
                        must "not(../p2mp)";
                        presence
                          "Indicates a mp2mp node is configured.";
                        description
                          "Enable mLDP MP2MP core tree";
                        container bidir {
                          presence
                            "Indicates a bidir node is configured.";
                          description
                            "Enable Exclusive Partitioned MDT for Bidir";
                        }  // container bidir
                      }  // container mp2mp
    
                      container p2mp {
                        must "not(../mp2mp)";
                        presence
                          "Indicates a p2mp node is configured.";
                        description
                          "Enable mLDP P2MP core tree";
                        container bidir {
                          presence
                            "Indicates a bidir node is configured.";
                          description
                            "Enable Exclusive Partitioned MDT for Bidir";
                        }  // container bidir
                      }  // container p2mp
                    }  // container ipv4
                  }  // container mldp
    
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Enable partitioned ingress-replication";
                  }  // container ingress-replication
    
                  container segment-routing {
                    description
                      "Tree-SID distribution tree";
                    container mpls {
                      must
                        "not(../../../default/segment-routing/mpls)";
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Use SR-MPLS Tree-SID policy";
                      leaf color {
                        type union {
                          type enumeration {
                            enum "not-used" {
                              value 0;
                              description
                                "color template is not used";
                            }
                          }
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                        }
                        mandatory true;
                        description
                          "On-demand color template to be used with the Tree-SID policy";
                      }
    
                      container fast-reroute {
                        description
                          "Enable Fast Re-route protection for this Tree-SID";
                        container lfa {
                          presence
                            "Indicates a lfa node is configured.";
                          description
                            "LFA Fast Re-route";
                        }  // container lfa
                      }  // container fast-reroute
                    }  // container mpls
                  }  // container segment-routing
                }  // container partitioned
    
                container mldp {
                  description
                    "mLDP distribution tree";
                  container in-band-signaling {
                    description
                      "Enable mLDP in-band-signalling";
                    container ipv4 {
                      presence
                        "Indicates a ipv4 node is configured.";
                      description
                        "Enable IPv4-core tree";
                    }  // container ipv4
                  }  // container in-band-signaling
                }  // container mldp
    
                container static {
                  description
                    "Interface used to set MDT source address";
                  container segment-routing {
                    presence
                      "Indicates a segment-routing node is configured.";
                    description
                      "Set MDT core as tree-sid";
                    container strict-rpf {
                      presence
                        "Indicates a strict-rpf node is configured.";
                      description
                        "Enable strict RPF check";
                    }  // container strict-rpf
                  }  // container segment-routing
    
                  container p2mp-te {
                    description "static p2mp-te";
                    container interfaces {
                      description
                        "p2mp-te interface";
                      list interface {
                        key "interface-name";
                        description
                          "p2mp-te interface";
                        leaf interface-name {
                          type xr:Interface-name {
                            pattern
                              "tunnel-mte[0-9]+";
                          }
                          description
                            "p2mp-te interface";
                        }
                      }  // list interface
                    }  // container interfaces
                  }  // container p2mp-te
                }  // container static
              }  // container mdt
    
              container rate-per-route {
                presence
                  "Indicates a rate-per-route node is configured.";
                description
                  "Enable/disable per (S,G) rate calculation";
              }  // container rate-per-route
    
              container accounting {
                description
                  "Enable/disable Accounting";
                container per-prefix {
                  presence
                    "Indicates a per-prefix node is configured.";
                  description
                    "Enable per (S,G) accounting.";
                  container forward-only {
                    presence
                      "Indicates a forward-only node is configured.";
                    description
                      "Enable per (S,G) forward-only accounting.";
                  }  // container forward-only
                }  // container per-prefix
              }  // container accounting
    
              container log-traps {
                presence
                  "Indicates a log-traps node is configured.";
                description
                  "Enable logging trap events";
              }  // container log-traps
    
              container interface-inheritance {
                description
                  "Knob to separate enabling/disabling multicast routing & forwarding";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable inheriting En/Dis config ";
                }  // container disable
              }  // container interface-inheritance
    
              leaf mofrr-lockout-timer {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Lockout timer for mofrr";
              }
    
              leaf mofrr-loss-detection-timer {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Loss Detection timer for mofrr";
              }
    
              container forwarding-latency {
                description
                  "Knob to delay traffic being forwarded on a route";
                leaf delay {
                  type uint32 {
                    range "5..500";
                  }
                  description
                    "Delay time in msecs";
                }
              }  // container forwarding-latency
    
              container export-rt {
                description
                  "Configure Export Route-Target";
                list two-byte-as-rt {
                  key "two-byte-as-number index-number";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    description
                      "Two Byte AS Number route distinguisher";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list two-byte-as-rt
    
                list four-byte-as-rt {
                  key "four-byte-as-number index-number";
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    description
                      "Four Byte AS Number route distinguisher";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list four-byte-as-rt
    
                list ip-address-rt {
                  key "ip-address index-number";
                  leaf ip-address {
                    type inet:ipv4-address-no-zone;
                    description "IP address";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list ip-address-rt
              }  // container export-rt
    
              container import-rt {
                description
                  "Configure Import Route-Target";
                list two-byte-as-rt {
                  key "two-byte-as-number index-number";
                  description
                    "Two Byte AS Number route-target";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    description
                      "Two Byte AS Number route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list two-byte-as-rt
    
                list four-byte-as-rt {
                  key "four-byte-as-number index-number";
                  description
                    "Four Byte AS Number route-target";
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    description
                      "Four Byte AS Number route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list four-byte-as-rt
    
                list ip-address-rt {
                  key "ip-address index-number";
                  description
                    "IP address route-target";
                  leaf ip-address {
                    type inet:ipv4-address-no-zone;
                    description
                      "IP address route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list ip-address-rt
              }  // container import-rt
    
              container interface {
                description
                  "Multicast interface configuration subcommands";
                container all {
                  description
                    "Inherited by all interfaces";
                  container enable {
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable IP Multicast";
                  }  // container enable
                }  // container all
    
                container interfaces {
                  description
                    "select an interface to configure";
                  list interface {
                    key "interface-name";
                    description
                      "select an interface to configure";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "select an interface to configure";
                    }
    
                    container enable {
                      must "not(../disable)";
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable IP multicast";
                    }  // container enable
    
                    container disable {
                      must "not(../enable)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable IP multicast";
                    }  // container disable
    
                    leaf boundary {
                      type string {
                        length "1..32";
                      }
                      description
                        "Boundary for administratively scoped multicast addresses";
                    }
    
                    leaf ttl-threshold {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "TTL threshold for IPv4 multicast packets";
                    }
                  }  // list interface
                }  // container interfaces
              }  // container interface
    
              container maximum {
                description
                  "Maximum state limits";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable all multicast state limit checks";
                }  // container disable
              }  // container maximum
    
              container oom-handling {
                presence
                  "Indicates a oom-handling node is configured.";
                description
                  "Enable out-of-memory handling";
              }  // container oom-handling
    
              container bgp {
                description
                  "Enable BGP MVPN Discovery";
                container auto-discovery {
                  presence
                    "Indicates a auto-discovery node is configured.";
                  description
                    "Enable BGP Auto-Discovery";
                  leaf core-tree {
                    type enumeration {
                      enum "pim" {
                        value 1;
                        description
                          "PIM core tree";
                      }
                      enum "mldp" {
                        value 2;
                        description
                          "mLDP core tree";
                      }
                      enum "p2mp-te" {
                        value 3;
                        description
                          "RSVP P2MP-TE core tree";
                      }
                      enum "ingress-replication" {
                        value 4;
                        description
                          "IR core tree";
                      }
                      enum "segment-routing" {
                        value 5;
                        description
                          "Tree-SID core tree";
                      }
                    }
                    mandatory true;
                    description
                      "Enable BGP Auto-Discovery";
                  }
    
                  container leaf-info-required {
                    presence
                      "Indicates a leaf-info-required node is configured.";
                    description
                      "Explicit tracking of S-PMSI core trees";
                  }  // container leaf-info-required
    
                  container inter-as {
                    presence
                      "Indicates a inter-as node is configured.";
                    description "Inter-AS MVPN";
                  }  // container inter-as
    
                  container receiver-site {
                    presence
                      "Indicates a receiver-site node is configured.";
                    description
                      "Receiver-only site";
                  }  // container receiver-site
    
                  container anycast-rp {
                    presence
                      "Indicates a anycast-rp node is configured.";
                    description
                      "Enable Anycast RP using MVPN SAFI";
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Policy for filtering routes";
                    }
                  }  // container anycast-rp
    
                  container pmsi-timer {
                    when "../core-tree != 'pim'";
                    description
                      "Set PMSI Tunnel timers";
                    leaf change-delay {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set Change Delay timer";
                    }
    
                    leaf stop-forwarding {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set Stop Forwarding timer";
                    }
                  }  // container pmsi-timer
    
                  container segmented {
                    must "../core-tree != 'pim'";
                    presence
                      "Indicates a segmented node is configured.";
                    description
                      "Enable Segmented Multicast/MVPN";
                    leaf bandwidth-threshold {
                      type uint32 {
                        range "0..1000000000";
                      }
                      must
                        "../../core-tree = 'ingress-replication'";
                      description
                        "Set Bandwidth threshold for Ingress Replication core-tree";
                    }
    
                    leaf color {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Enable Color Opaque Extended Community";
                    }
                  }  // container segmented
    
                  container inherit-vrf-ri {
                    description
                      "Inherit VRF Route-Import EC";
                    leaf vrf {
                      type xr:Cisco-ios-xr-string {
                        length "1..800";
                      }
                      description
                        "VRF to inherit from";
                    }
                  }  // container inherit-vrf-ri
                }  // container auto-discovery
              }  // container bgp
    
              container static-rpf {
                description
                  "Configure a static RPF rule for a given prefix/mask";
                list address-range {
                  key "prefix-address prefix-length";
                  leaf prefix-address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Prefix for address range";
                  }
    
                  leaf prefix-length {
                    type uint32 {
                      range "0..32";
                    }
                    description
                      "Prefix mask for address range";
                  }
    
                  leaf interface {
                    type xr:Interface-name;
                    mandatory true;
                    description
                      "Static route interface";
                  }
    
                  leaf next-hop-address {
                    type inet:ipv4-address-no-zone;
                    mandatory true;
                    description
                      "Static route next-hop";
                  }
                }  // list address-range
              }  // container static-rpf
    
              container core-tree-protocol {
                description
                  "Configure Core-tree-protocol";
                container rsvp-te {
                  presence
                    "Indicates a rsvp-te node is configured.";
                  description
                    "Configure P2MP-TE as the Core-tree-protocol";
                  leaf group-list {
                    type xr:Cisco-ios-xr-string;
                    description
                      "ACL for group-list";
                  }
                }  // container rsvp-te
              }  // container core-tree-protocol
    
              container static {
                description
                  "Configure a static Policy";
                list sr-policy {
                  key "sr-policy-name";
                  description
                    "SR P2MP Policy for Multicast";
                  leaf sr-policy-name {
                    type xr:Cisco-ios-xr-string;
                    description
                      "Name of the SR P2MP Policy";
                  }
    
                  leaf ingress {
                    type string;
                    description
                      "Ingress Node address of traffic (for strict-rpf)";
                  }
                }  // list sr-policy
              }  // container static
            }  // container ipv4
    
            container ipv6 {
              presence
                "Indicates a ipv4 node is configured.";
              description
                "Enter ipv6 Address Family command mode";
              container mdt {
                description "MVPN configuration";
                container data {
                  description
                    "Data MDT configuration";
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Ingress Replication Data MDT";
                    leaf number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container ingress-replication
    
                  container mldp {
                    presence
                      "Indicates a mldp node is configured.";
                    description "MLDP Data MDT";
                    leaf maximum-number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      mandatory true;
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container mldp
    
                  container p2mp-te {
                    must
                      "(maximum-number or route-policy) and not(maximum-number and route-policy)";
                    presence
                      "Indicates a p2mp-te node is configured.";
                    description
                      "P2MPTE Data MDT core";
                    leaf maximum-number {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "Maximum number of data-mdts to be triggered";
                    }
    
                    leaf attribute-set {
                      type xr:Cisco-ios-xr-string;
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
    
                    leaf access-list-name {
                      type xr:Cisco-ios-xr-string;
                      description
                        "ACL for Customer VRF groups allowed to do Data MDT";
                    }
    
                    container immediate-switch {
                      presence
                        "Indicates an immediate-switch node is configured.";
                      description
                        "Switch to Data MDT immediately";
                    }  // container immediate-switch
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "DATA MDT Route policy";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "0..4294967";
                      }
                      description
                        "Traffic rate threshold in Kbps to trigger Data MDT";
                    }
                  }  // container p2mp-te
                }  // container data
    
                container default {
                  description
                    "MDT Default distribution tree";
                  container mldp {
                    description
                      "mLDP default distribution tree";
                    container ipv4s {
                      description
                        "MP2MP core-tree with IPv4 Root Address";
                      list ipv4 {
                        key "address";
                        description
                          "MP2MP core-tree with IPv4 Root Address";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          description
                            "MP2MP core-tree with IPv4 Root Address";
                        }
    
                        container partitioned {
                          description
                            "mLDP Partitioned MDT";
                          container bidir {
                            presence
                              "Indicates a bidir node is configured.";
                            description
                              "Enable Exclusive Partitioned MDT for Bidir";
                          }  // container bidir
                        }  // container partitioned
                      }  // list ipv4
                    }  // container ipv4s
    
                    container p2mp {
                      presence
                        "Indicates a p2mp node is configured.";
                      description
                        "P2MP core-tree";
                      container partitioned {
                        description
                          "mLDP Partitioned MDT";
                        container bidir {
                          presence
                            "Indicates a bidir node is configured.";
                          description
                            "Enable Exclusive Partitioned MDT for Bidir";
                        }  // container bidir
                      }  // container partitioned
                    }  // container p2mp
                  }  // container mldp
    
                  container p2mp-te {
                    description
                      "P2MP-TE default distribution tree";
                    leaf attribute-set {
                      type union {
                        type string {
                          pattern "default";
                        }
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                      }
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
                  }  // container p2mp-te
    
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Enable default ingress-replication";
                  }  // container ingress-replication
                }  // container default
    
                container segment-border {
                  presence
                    "Indicates a segment-border node is configured.";
                  description
                    "Border router for segmented multicast";
                  leaf route-policy {
                    type xr:Route-policy-name;
                    description
                      "Route-policy to select segmented core type";
                  }
                }  // container segment-border
    
                container segmented-inband {
                  presence
                    "Indicates a segmented-inband node is configured.";
                  description
                    "MDT Segmented Inband distribution tree";
                  leaf core-tree {
                    type enumeration {
                      enum "mldp" {
                        value 2;
                        description
                          "mLDP core tree";
                      }
                      enum "p2mp-te" {
                        value 3;
                        description
                          "RSVP P2MP-TE core tree";
                      }
                      enum "ingress-replication" {
                        value 4;
                        description
                          "IR core tree";
                      }
                    }
                    mandatory true;
                    description
                      "MDT Segmented Inband distribution tree";
                  }
    
                  leaf color {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "Enable Color Opaque extended community";
                  }
                }  // container segmented-inband
    
                container partitioned {
                  description
                    "MDT Partitioned distribution tree";
                  container p2mp-te {
                    description
                      "P2MP-TE default distribution tree";
                    leaf attribute-set {
                      type union {
                        type string {
                          pattern "default";
                        }
                        type xr:Cisco-ios-xr-string {
                          length "1..800";
                        }
                      }
                      description
                        "The Attribute Set template to be used with the TE tunnel request";
                    }
                  }  // container p2mp-te
    
                  container mldp {
                    description
                      "mLDP signaled distribution tree";
                    container ipv4 {
                      description "IPv4 core";
                      container mp2mp {
                        must "not(../p2mp)";
                        presence
                          "Indicates a mp2mp node is configured.";
                        description
                          "Enable mLDP MP2MP core tree";
                        container bidir {
                          presence
                            "Indicates a bidir node is configured.";
                          description
                            "Enable Exclusive Partitioned MDT for Bidir";
                        }  // container bidir
                      }  // container mp2mp
    
                      container p2mp {
                        must "not(../mp2mp)";
                        presence
                          "Indicates a p2mp node is configured.";
                        description
                          "Enable mLDP P2MP core tree";
                        container bidir {
                          presence
                            "Indicates a bidir node is configured.";
                          description
                            "Enable Exclusive Partitioned MDT for Bidir";
                        }  // container bidir
                      }  // container p2mp
                    }  // container ipv4
                  }  // container mldp
    
                  container ingress-replication {
                    presence
                      "Indicates a ingress-replication node is configured.";
                    description
                      "Enable partitioned ingress-replication";
                  }  // container ingress-replication
                }  // container partitioned
    
                container mldp {
                  description
                    "mLDP distribution tree";
                  container in-band-signaling {
                    description
                      "Enable mLDP in-band-signalling";
                    container ipv4 {
                      presence
                        "Indicates a ipv4 node is configured.";
                      description
                        "Enable IPv4-core tree";
                    }  // container ipv4
                  }  // container in-band-signaling
                }  // container mldp
    
                container static {
                  description
                    "Interface used to set MDT source address";
                  container segment-routing {
                    presence
                      "Indicates a segment-routing node is configured.";
                    description
                      "Set MDT core as tree-sid";
                    container strict-rpf {
                      presence
                        "Indicates a strict-rpf node is configured.";
                      description
                        "Enable strict RPF check";
                    }  // container strict-rpf
                  }  // container segment-routing
                }  // container static
    
                leaf source {
                  type xr:Interface-name;
                  description
                    "Interface used to set MDT source address";
                }
    
                leaf mtu {
                  type uint32 {
                    range "1401..65535";
                  }
                  description
                    "MDT mtu configuration";
                }
              }  // container mdt
    
              container rate-per-route {
                presence
                  "Indicates a rate-per-route node is configured.";
                description
                  "Enable/disable per (S,G) rate calculation";
              }  // container rate-per-route
    
              container accounting {
                description
                  "Enable/disable Accounting";
                container per-prefix {
                  presence
                    "Indicates a per-prefix node is configured.";
                  description
                    "Enable per (S,G) accounting.";
                  container forward-only {
                    presence
                      "Indicates a forward-only node is configured.";
                    description
                      "Enable per (S,G) forward-only accounting.";
                  }  // container forward-only
                }  // container per-prefix
              }  // container accounting
    
              container log-traps {
                presence
                  "Indicates a log-traps node is configured.";
                description
                  "Enable logging trap events";
              }  // container log-traps
    
              container interface-inheritance {
                description
                  "Knob to separate enabling/disabling multicast routing & forwarding";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable inheriting En/Dis config ";
                }  // container disable
              }  // container interface-inheritance
    
              leaf mofrr-lockout-timer {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Lockout timer for mofrr";
              }
    
              leaf mofrr-loss-detection-timer {
                type uint32 {
                  range "1..3600";
                }
                description
                  "Loss Detection timer for mofrr";
              }
    
              container forwarding-latency {
                description
                  "Knob to delay traffic being forwarded on a route";
                leaf delay {
                  type uint32 {
                    range "5..500";
                  }
                  description
                    "Delay time in msecs";
                }
              }  // container forwarding-latency
    
              container export-rt {
                description
                  "Configure Export Route-Target";
                list two-byte-as-rt {
                  key "two-byte-as-number index-number";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    description
                      "Two Byte AS Number route distinguisher";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list two-byte-as-rt
    
                list four-byte-as-rt {
                  key "four-byte-as-number index-number";
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    description
                      "Four Byte AS Number route distinguisher";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list four-byte-as-rt
    
                list ip-address-rt {
                  key "ip-address index-number";
                  leaf ip-address {
                    type inet:ipv4-address-no-zone;
                    description "IP address";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list ip-address-rt
              }  // container export-rt
    
              container import-rt {
                description
                  "Configure Import Route-Target";
                list two-byte-as-rt {
                  key "two-byte-as-number index-number";
                  description
                    "Two Byte AS Number route-target";
                  leaf two-byte-as-number {
                    type uint32 {
                      range "1..65535";
                    }
                    description
                      "Two Byte AS Number route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list two-byte-as-rt
    
                list four-byte-as-rt {
                  key "four-byte-as-number index-number";
                  description
                    "Four Byte AS Number route-target";
                  leaf four-byte-as-number {
                    type uint32 {
                      range "65536..4294967295";
                    }
                    description
                      "Four Byte AS Number route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list four-byte-as-rt
    
                list ip-address-rt {
                  key "ip-address index-number";
                  description
                    "IP address route-target";
                  leaf ip-address {
                    type inet:ipv4-address-no-zone;
                    description
                      "IP address route-target";
                  }
    
                  leaf index-number {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "AS:nn (hex or decimal format)";
                  }
                }  // list ip-address-rt
              }  // container import-rt
    
              container interface {
                description
                  "Multicast interface configuration subcommands";
                container all {
                  description
                    "Inherited by all interfaces";
                  container enable {
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable IP Multicast";
                  }  // container enable
                }  // container all
    
                container interfaces {
                  description
                    "select an interface to configure";
                  list interface {
                    key "interface-name";
                    description
                      "select an interface to configure";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "select an interface to configure";
                    }
    
                    container enable {
                      must "not(../disable)";
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable IP multicast";
                    }  // container enable
    
                    container disable {
                      must "not(../enable)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable IP multicast";
                    }  // container disable
    
                    leaf boundary {
                      type string {
                        length "1..32";
                      }
                      description
                        "Boundary for administratively scoped multicast addresses";
                    }
    
                    leaf ttl-threshold {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "TTL threshold for IPv4 multicast packets";
                    }
                  }  // list interface
                }  // container interfaces
              }  // container interface
    
              container maximum {
                description
                  "Maximum state limits";
                container disable {
                  presence
                    "Indicates a disable node is configured.";
                  description
                    "Disable all multicast state limit checks";
                }  // container disable
              }  // container maximum
    
              container bgp {
                description
                  "Enable BGP MVPN Discovery";
                container auto-discovery {
                  presence
                    "Indicates a auto-discovery node is configured.";
                  description
                    "Enable BGP Auto-Discovery";
                  leaf core-tree {
                    type enumeration {
                      enum "pim" {
                        value 1;
                        description
                          "PIM core tree";
                      }
                      enum "mldp" {
                        value 2;
                        description
                          "mLDP core tree";
                      }
                      enum "p2mp-te" {
                        value 3;
                        description
                          "RSVP P2MP-TE core tree";
                      }
                      enum "ingress-replication" {
                        value 4;
                        description
                          "IR core tree";
                      }
                    }
                    mandatory true;
                    description
                      "Enable BGP Auto-Discovery";
                  }
    
                  container leaf-info-required {
                    presence
                      "Indicates a leaf-info-required node is configured.";
                    description
                      "Explicit tracking of S-PMSI core trees";
                  }  // container leaf-info-required
    
                  container inter-as {
                    presence
                      "Indicates a inter-as node is configured.";
                    description "Inter-AS MVPN";
                  }  // container inter-as
    
                  container receiver-site {
                    presence
                      "Indicates a receiver-site node is configured.";
                    description
                      "Receiver-only site";
                  }  // container receiver-site
    
                  container anycast-rp {
                    presence
                      "Indicates a anycast-rp node is configured.";
                    description
                      "Enable Anycast RP using MVPN SAFI";
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Policy for filtering routes";
                    }
                  }  // container anycast-rp
    
                  container pmsi-timer {
                    when "../core-tree != 'pim'";
                    description
                      "Set PMSI Tunnel timers";
                    leaf change-delay {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set Change Delay timer";
                    }
    
                    leaf stop-forwarding {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set Stop Forwarding timer";
                    }
                  }  // container pmsi-timer
    
                  container segmented {
                    must "../core-tree != 'pim'";
                    presence
                      "Indicates a segmented node is configured.";
                    description
                      "Enable Segmented Multicast/MVPN";
                    leaf bandwidth-threshold {
                      type uint32 {
                        range "0..1000000000";
                      }
                      description
                        "Set Bandwidth threshold for Ingress Replication core-tree";
                    }
    
                    leaf color {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Enable Color Opaque Extended Community";
                    }
                  }  // container segmented
    
                  container inherit-vrf-ri {
                    description
                      "Inherit VRF Route-Import EC";
                    leaf vrf {
                      type xr:Cisco-ios-xr-string {
                        length "1..800";
                      }
                      description
                        "VRF to inherit from";
                    }
                  }  // container inherit-vrf-ri
                }  // container auto-discovery
              }  // container bgp
    
              container static-rpf {
                description
                  "Configure a static RPF rule for a given prefix/mask";
                list address-range {
                  key "prefix-address prefix-length";
                  leaf prefix-address {
                    type inet:ipv6-address-no-zone;
                    description
                      "Prefix for address range";
                  }
    
                  leaf prefix-length {
                    type uint32 {
                      range "0..128";
                    }
                    description
                      "Prefix mask for address range";
                  }
    
                  leaf interface {
                    type xr:Interface-name;
                    mandatory true;
                    description
                      "Static route interface";
                  }
    
                  leaf next-hop-address {
                    type inet:ipv6-address-no-zone;
                    mandatory true;
                    description
                      "Static route next-hop";
                  }
                }  // list address-range
              }  // container static-rpf
    
              container core-tree-protocol {
                description
                  "Configure Core-tree-protocol";
                container rsvp-te {
                  presence
                    "Indicates a rsvp-te node is configured.";
                  description
                    "Configure P2MP-TE as the Core-tree-protocol";
                  leaf group-list {
                    type xr:Cisco-ios-xr-string;
                    description
                      "ACL for group-list";
                  }
                }  // container rsvp-te
              }  // container core-tree-protocol
    
              container static {
                description
                  "Configure a static Policy";
                list sr-policy {
                  key "sr-policy-name";
                  description
                    "SR P2MP Policy for Multicast";
                  leaf sr-policy-name {
                    type xr:Cisco-ios-xr-string;
                    description
                      "Name of the SR P2MP Policy";
                  }
    
                  leaf ingress {
                    type string;
                    description
                      "Ingress Node address of traffic (for strict-rpf)";
                  }
                }  // list sr-policy
              }  // container static
            }  // container ipv6
          }  // container address-family
        }  // container multicast-routing
      }  // module Cisco-IOS-XR-um-multicast-routing-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.