huawei-bier

Model for Bit Index Explicit Replication (BIER).

  • Version: 2021-07-29

    huawei-bier@2021-07-29


    
      module huawei-bier {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-bier";
    
        prefix bier;
    
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-ip {
          prefix ip;
        }
        import huawei-if-ip {
          prefix if-ip;
        }
        import huawei-srv6 {
          prefix srv6;
        }
        import huawei-network-instance {
          prefix ni;
        }
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
    Bantian, Longgang
    Shenzhen 518129
    People's Republic of China
    Website: http://www.huawei.com
    Email: support@huawei.com";
    
        description
          "Model for Bit Index Explicit Replication (BIER).";
    
        revision "2021-07-29" {
          description
            "Modify prefixs container to bier-prefixs.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-12-16" {
          description "Add BIER IPv6 models.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-21" {
          description
            "Modify prefixs container to bier; Modify description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-09-06" {
          description "Init revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "bier";
    
        typedef underlay-protocol-type {
          type enumeration {
            enum "isis" {
              value 2;
              description "IS-IS.";
            }
            enum "static-bift" {
              value 3;
              description "Static BIFT.";
            }
          }
          description
            "BIER underlay protocol type.";
        }
    
        typedef bit-string-length {
          type enumeration {
            enum "64-bit" {
              value 1;
              description "64-bit BitString.";
            }
            enum "128-bit" {
              value 2;
              description "128-bit BitString.";
            }
            enum "256-bit" {
              value 3;
              description "256-bit BitString.";
            }
          }
          description
            "Enumerated values of the BitString length.";
        }
    
        typedef igp-algorithm-type {
          type enumeration {
            enum "SPF" {
              value 0;
              description
                "Shortest Path First (SPF) algorithm based on link metric.";
            }
            enum "SSPF" {
              value 1;
              description
                "Strict Shortest Path First (SPF) algorithm based on link metric.";
            }
          }
          description "IGP algorithm type.";
        }
    
        typedef bier-algorithm-type {
          type enumeration {
            enum "no-specific" {
              value 0;
              description
                "No BIER-specific algorithm is used.";
            }
          }
          description "BIER algorithm type.";
        }
    
        typedef bier-encapsulation-type {
          type enumeration {
            enum "mpls" {
              value 1;
              description
                "MPLS encapsulation for BIER.";
            }
            enum "ipv6" {
              value 2;
              description
                "IPv6 encapsulation for BIER.";
            }
          }
          description
            "Encapsulation types for BIER.";
        }
    
        typedef address-family-type {
          type enumeration {
            enum "ipv4-unicast" {
              value 1;
              description "IPv4 address family.";
            }
            enum "ipv6-unicast" {
              value 2;
              description "IPv6 address family.";
            }
          }
          description "Address family.";
        }
    
        typedef birt-nexthop-invalid-type {
          type enumeration {
            enum "none" {
              value 0;
              description "Valid nexthop.";
            }
            enum "missing-neighbor" {
              value 1;
              description
                "Invalid sub-domain configuration.";
            }
            enum "lack-label" {
              value 2;
              description
                "The packet encapsulation configuration of the next-hop device does not support the BFR-ID of the target device.";
            }
            enum "exceed-load-balance-number" {
              value 3;
              description
                "The value is larger than the maximum number of load balancing paths.";
            }
            enum "invalid-nexthop-type" {
              value 4;
              description
                "The next hop type is invalid.";
            }
            enum "miss-end-bier" {
              value 5;
              description
                "The next-hop device is not configured with an End.BIER address.";
            }
            enum "miss-bsl" {
              value 6;
              description
                "The BSL is not configured for the next hop device.";
            }
          }
          description
            "Reason for the invalid nexthop.";
        }
    
        typedef end-bier-address-type {
          type enumeration {
            enum "srv6-locator" {
              value 1;
              description
                "End-bier addresses using SRv6 locator.";
            }
          }
          description
            "The end-bier addresses type.";
        }
    
        container bier {
          presence "BIER enable.";
          description "BIER configuration.";
          container sub-domains {
            description
              "List of BIER sub-domain.";
            list sub-domain {
              must
                "not(./bfr-id) or (not(./encapsulations/encapsulation[bsl='64-bit'][encapsulation-type='mpls']/max-si) or (./bfr-id <= (./encapsulations/encapsulation[bsl='64-bit'][encapsulation-type='mpls']/max-si + 1) * 64))";
              must
                "not(./bfr-id) or (not(./encapsulations/encapsulation[bsl='128-bit'][encapsulation-type='mpls']/max-si) or (./bfr-id <= (./encapsulations/encapsulation[bsl='128-bit'][encapsulation-type='mpls']/max-si + 1) * 128))";
              must
                "not(./bfr-id) or (not(./encapsulations/encapsulation[bsl='256-bit'][encapsulation-type='mpls']/max-si) or (./bfr-id <= (./encapsulations/encapsulation[bsl='256-bit'][encapsulation-type='mpls']/max-si + 1) * 256))";
              key "address-family sub-domain-id";
              description
                "Configure BIER sub-domain.";
              leaf address-family {
                type address-family-type;
                description
                  "IPv4 or IPv6 address family.";
              }
    
              leaf sub-domain-id {
                type uint16 {
                  range "0..255";
                }
                description
                  "BIER sub-domain ID.";
              }
    
              leaf bfr-prefix-interface {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='LoopBack' and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name='_public_'";
                description
                  "BFR prefix interface.";
              }
    
              leaf ipv6-specified-address {
                when
                  "../bfr-prefix-interface and ../address-family='ipv6-unicast'";
                type inet:ipv6-address-no-zone;
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:vrf-name='_public_'][current()/../bfr-prefix-interface=ifm:name]/ip:ipv6/ip:addresses/ip:address[ip:ip=current()]/ip:type='global' or /ni:network-instance/ni:instances/ni:instance[ni:name='_public_']/if-ip:ipv6-ifs/if-ip:ipv6-if[current()/../bfr-prefix-interface=if-ip:name]/if-ip:addresses/if-ip:address[if-ip:ip=current()]/if-ip:type='global'";
                must
                  "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:vrf-name='_public_'][current()/../bfr-prefix-interface=ifm:name]/ip:ipv6/ip:addresses/ip:address[ip:ip=current()]/ip:prefix-length=128 or /ni:network-instance/ni:instances/ni:instance[ni:name='_public_']/if-ip:ipv6-ifs/if-ip:ipv6-if[current()/../bfr-prefix-interface=if-ip:name]/if-ip:addresses/if-ip:address[if-ip:ip=current()]/if-ip:prefix-length=128";
                description
                  "Specified IPv6 BFR prefix.";
              }
    
              choice end-bier-address {
                description
                  "The end-bier address of BIER IPv6 for current SD.";
                case srv6-locator {
                  description "Srv6 locator.";
                  container srv6-locator {
                    when
                      "../address-family='ipv6-unicast'";
                    description
                      "Configure Srv6 locator.";
                    leaf locator {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/srv6:srv6/srv6:locators/srv6:locator/srv6:name";
                      }
                      mandatory true;
                      description
                        "SRv6 locator.";
                    }
    
                    leaf auto-sid {
                      type boolean;
                      must "../auto-sid='false'";
                      default "false";
                      description
                        "Enable/disable Auto sid.";
                    }
    
                    leaf sid {
                      type inet:ipv6-address-no-zone;
                      mandatory true;
                      description
                        "End-bier-sid for SD.";
                    }
                  }  // container srv6-locator
                }  // case srv6-locator
              }  // choice end-bier-address
    
              leaf underlay-protocol {
                type underlay-protocol-type;
                must
                  "(../underlay-protocol='isis') or (../address-family='ipv6-unicast' and ../underlay-protocol='static-bift')";
                description
                  "BIER underlay protocol.";
              }
    
              leaf bfr-id {
                type uint16 {
                  range "1..65535";
                }
                description "BFR-ID.";
              }
    
              leaf load-balance-num {
                type uint8 {
                  range "1..16";
                }
                default "1";
                description
                  "Maximum number of paths for multicast load balancing.";
              }
    
              leaf mt-id {
                type uint16;
                config false;
                description
                  "Multi-topology type identifier.";
              }
    
              leaf igp-algorithm {
                type igp-algorithm-type;
                config false;
                description
                  "IGP algorithm type.";
              }
    
              leaf bier-algorithm {
                type bier-algorithm-type;
                config false;
                description
                  "BIER algorithm type.";
              }
    
              container encapsulations {
                description
                  "List of BIER encapsulation.";
                list encapsulation {
                  key "bsl encapsulation-type";
                  description
                    "Configure BIER encapsulation.";
                  leaf bsl {
                    type bit-string-length;
                    description
                      "BIER BitString length, which is 64/128/256 bits. Multiple devices in a subdomain must have the same BSL.";
                  }
    
                  leaf encapsulation-type {
                    type bier-encapsulation-type;
                    must
                      "(../../../address-family='ipv4-unicast' and ../encapsulation-type='mpls') or (../../../address-family='ipv6-unicast' and ../encapsulation-type='ipv6')";
                    description
                      "BIER encapsulation type configuration.";
                  }
    
                  leaf max-si {
                    type uint16 {
                      range "0..255";
                    }
                    mandatory true;
                    description
                      "Maximum set identifier.";
                  }
    
                  leaf bift-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    config false;
                    description "BIFT ID base.";
                  }
                }  // list encapsulation
              }  // container encapsulations
    
              container static-bifts {
                when
                  "../address-family='ipv6-unicast'";
                description
                  "List of BIER static BIFTs.";
                list static-bift {
                  must
                    "../../underlay-protocol='static-bift'";
                  must
                    "not(../bier:static-bift[bier:end-bier!=current()/bier:end-bier][bier:bfr-id-start>=current()/bier:bfr-id-start][bier:bfr-id-start<=current()/bier:bfr-id-end])";
                  must
                    "not(../bier:static-bift[bier:end-bier=current()/bier:end-bier][bier:bfr-id-start!=current()/bier:bfr-id-start][bier:bfr-id-start>=current()/bier:bfr-id-start]/bier:bfr-id-start<=current()/bier:bfr-id-end)";
                  must
                    "bier:bfr-id-end>=bier:bfr-id-start";
                  must
                    "bier:bfr-id-end<=bier:bfr-id-start+255";
                  must
                    "bier:end-bier!=../../bier:srv6-locator/bier:sid";
                  must
                    "not(bier:bfr-id-start<=../../bfr-id and bier:bfr-id-end>=../../bfr-id)";
                  must
                    "not(../../bier:encapsulations/bier:encapsulation[bier:bsl='64-bit'][(bier:max-si+1)*64<current()/bier:bfr-id-end])";
                  must
                    "not(../../bier:encapsulations/bier:encapsulation[bier:bsl='128-bit'][(bier:max-si+1)*128<current()/bier:bfr-id-end])";
                  must
                    "not(../../bier:encapsulations/bier:encapsulation[bier:bsl='256-bit'][(bier:max-si+1)*256<current()/bier:bfr-id-end])";
                  key "end-bier bfr-id-start bfr-id-end";
                  description
                    "Configure BIER static BIFT.";
                  leaf end-bier {
                    type inet:ipv6-address-no-zone;
                    description
                      "End BIER address of neighbor, must a valid unicast IPv6 address.";
                  }
    
                  leaf bfr-id-start {
                    type uint16 {
                      range "1..65535";
                    }
                    description
                      "BFR-ID as start of range.";
                  }
    
                  leaf bfr-id-end {
                    type uint16 {
                      range "1..65535";
                    }
                    description
                      "BFR-ID as end of range.";
                  }
                }  // list static-bift
              }  // container static-bifts
    
              container local-infos {
                config false;
                description
                  "BIER sub-domain state.";
                leaf igp-process-id {
                  type uint32;
                  description
                    "Process ID of the underlay routing protocol.";
                }
    
                leaf igp-sub-process-id {
                  type uint32;
                  description
                    "Sub-process ID of the underlay routing protocol.";
                }
    
                leaf bfr-prefix {
                  type inet:ip-address-no-zone;
                  description
                    "BFR prefix address.";
                }
    
                leaf bfr-prefix-mask-len {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "BFR prefix address mask length.";
                }
    
                leaf end-bier-sid {
                  type inet:ipv6-address-no-zone;
                  description
                    "End-bier-sid of the SD.";
                }
              }  // container local-infos
    
              container routings {
                config false;
                description
                  "List of BIER routing state.";
                list routing {
                  key "bsl destination-prefix";
                  description
                    "BIER routing state.";
                  leaf bsl {
                    type bit-string-length;
                    description
                      "BIER BitString length, which is 64/128/256 bits.";
                  }
    
                  leaf destination-prefix {
                    type inet:ip-address-no-zone;
                    description
                      "Destination prefix.";
                  }
    
                  leaf underlay-protocol {
                    type underlay-protocol-type;
                    description
                      "Underlay IGP used by BIER.";
                  }
    
                  choice prefix-igp-attribute {
                    description
                      "IGP attributes.";
                    case ospf-protocol {
                      description "OSPF.";
                      leaf router-id {
                        type inet:ip-address-no-zone;
                        description
                          "OSPF router ID.";
                      }
                    }  // case ospf-protocol
    
                    case isis-protocol {
                      description "IS-IS.";
                      leaf system-id {
                        type string {
                          length "1..16";
                        }
                        description
                          "IS-IS system ID.";
                      }
                    }  // case isis-protocol
    
                    case local-system {
                      description
                        "Local system.";
                      leaf is-local-system {
                        type boolean;
                        description
                          "Prefix is advertised by local system.";
                      }
                    }  // case local-system
                  }  // choice prefix-igp-attribute
    
                  leaf bfr-id {
                    type uint16 {
                      range "1..65535";
                    }
                    description "BFR-ID.";
                  }
    
                  leaf up-time {
                    type pub-type:time-tick;
                    description
                      "Prefix survival time.";
                  }
    
                  container nexthops {
                    description
                      "List of next-hop state.";
                    list nexthop {
                      key "next-hop-addr next-hop-outbound-if";
                      description
                        "Next-hop state.";
                      leaf next-hop-addr {
                        type inet:ip-address-no-zone;
                        description
                          "Next-hop prefix address.";
                      }
    
                      leaf next-hop-outbound-if {
                        type pub-type:if-name;
                        description
                          "Next-hop outbound interface.";
                      }
    
                      leaf bfr-neighbor {
                        type inet:ip-address-no-zone;
                        description
                          "BIER neighbor.";
                      }
    
                      leaf underlay-protocol {
                        type underlay-protocol-type;
                        description
                          "Underlay IGP used by BIER.";
                      }
    
                      choice igp-attribute {
                        description
                          "IGP attributes.";
                        case ospf-protocol {
                          description "OSPF.";
                          leaf router-id {
                            type inet:ip-address-no-zone;
                            description
                              "OSPF router ID.";
                          }
                        }  // case ospf-protocol
    
                        case isis-protocol {
                          description "IS-IS.";
                          leaf system-id {
                            type string {
                              length "1..16";
                            }
                            description
                              "IS-IS system ID.";
                          }
                        }  // case isis-protocol
    
                        case local-system {
                          description
                            "Local system.";
                          leaf is-local-system {
                            type boolean;
                            description
                              "Prefix is advertised by local system.";
                          }
                        }  // case local-system
                      }  // choice igp-attribute
    
                      leaf up-time {
                        type pub-type:time-tick;
                        description
                          "Neighbor relationship establishment time.";
                      }
    
                      leaf bift-id {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "The BIFT-ID assigned by this nexthop node.";
                      }
    
                      leaf direct-flag {
                        type boolean;
                        description
                          "The nexthop is directly conected.";
                      }
                    }  // list nexthop
                  }  // container nexthops
    
                  container invalid-nexthops {
                    description
                      "List of Next-hop state.";
                    list invalid-nexthop {
                      key "next-hop-addr next-hop-outbound-if";
                      description
                        "Next-hop state.";
                      leaf next-hop-addr {
                        type inet:ip-address-no-zone;
                        description
                          "Next-hop prefix address.";
                      }
    
                      leaf next-hop-outbound-if {
                        type pub-type:if-name;
                        description
                          "Next-hop outbound interface.";
                      }
    
                      leaf bfr-neighbor {
                        type inet:ip-address-no-zone;
                        description
                          "BIER neighbor.";
                      }
    
                      leaf underlay-protocol {
                        type underlay-protocol-type;
                        description
                          "Underlay IGP used by BIER.";
                      }
    
                      choice igp-attribute {
                        description
                          "IGP attributes.";
                        case ospf-protocol {
                          description "OSPF.";
                          leaf router-id {
                            type inet:ip-address-no-zone;
                            description
                              "OSPF router ID.";
                          }
                        }  // case ospf-protocol
    
                        case isis-protocol {
                          description "IS-IS.";
                          leaf system-id {
                            type string {
                              length "1..16";
                            }
                            description
                              "IS-IS system ID.";
                          }
                        }  // case isis-protocol
    
                        case local-system {
                          description
                            "Local system.";
                          leaf is-local-system {
                            type boolean;
                            description
                              "Prefix is advertised by local system.";
                          }
                        }  // case local-system
                      }  // choice igp-attribute
    
                      leaf up-time {
                        type pub-type:time-tick;
                        description
                          "Neighbor relationship establishment time.";
                      }
    
                      leaf bift-id {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "The BIFT-ID assigned by this nexthop node.";
                      }
    
                      leaf invalid-reason {
                        type birt-nexthop-invalid-type;
                        description
                          "Invalid nexthop reason.";
                      }
                    }  // list invalid-nexthop
                  }  // container invalid-nexthops
                }  // list routing
              }  // container routings
    
              container static-routings {
                config false;
                description
                  "List of BIER static BIFT state.";
                list static-routing {
                  key "bsl dest-end-bier-sid";
                  description
                    "BIER routing state.";
                  leaf bsl {
                    type bit-string-length;
                    description
                      "BIER BitString length, which is 64/128/256 bits.";
                  }
    
                  leaf dest-end-bier-sid {
                    type inet:ipv6-address-no-zone;
                    description
                      "Destination prefix.";
                  }
    
                  container bfr-id-ranges {
                    description
                      "List of target BFR-ID range.";
                    list bfr-id-range {
                      key "bfr-id-start bfr-id-end";
                      description
                        "Statistics of target BFR-ID range.";
                      leaf bfr-id-start {
                        type uint16 {
                          range "1..65535";
                        }
                        description
                          "Start of BFR-ID range.";
                      }
    
                      leaf bfr-id-end {
                        type uint16 {
                          range "1..65535";
                        }
                        description
                          "End of BFR-ID range.";
                      }
                    }  // list bfr-id-range
                  }  // container bfr-id-ranges
    
                  leaf up-time {
                    type pub-type:time-tick;
                    description
                      "Prefix survival time.";
                  }
    
                  container nexthops {
                    description
                      "List of next-hop state.";
                    list nexthop {
                      key "next-hop-addr next-hop-outbound-if";
                      description
                        "Next-hop state.";
                      leaf next-hop-addr {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next-hop prefix address.";
                      }
    
                      leaf next-hop-outbound-if {
                        type pub-type:if-name;
                        description
                          "Next-hop outbound interface.";
                      }
    
                      leaf bift-id {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "The BIFT-ID assigned by this nexthop node.";
                      }
                    }  // list nexthop
                  }  // container nexthops
    
                  container invalid-nexthops {
                    description
                      "List of Next-hop state.";
                    list invalid-nexthop {
                      key "next-hop-addr next-hop-outbound-if";
                      description
                        "Next-hop state.";
                      leaf next-hop-addr {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next-hop prefix address.";
                      }
    
                      leaf next-hop-outbound-if {
                        type pub-type:if-name;
                        description
                          "Next-hop outbound interface.";
                      }
    
                      leaf bift-id {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "The BIFT-ID assigned by this nexthop node.";
                      }
    
                      leaf invalid-reason {
                        type birt-nexthop-invalid-type;
                        description
                          "Invalid nexthop reason.";
                      }
                    }  // list invalid-nexthop
                  }  // container invalid-nexthops
                }  // list static-routing
              }  // container static-routings
    
              container pipe-mode-ttl {
                description
                  "Configure pipe mode ttl value.";
                leaf ttl-value {
                  type uint8 {
                    range "1..255";
                  }
                  default "255";
                  description
                    "Bier pipe mode ttl value.";
                }
              }  // container pipe-mode-ttl
    
              container load-balance-enhance-factor {
                when
                  "../bier:address-family = 'ipv6-unicast'";
                description
                  "Configure load-balance enhance factor.";
                leaf factor-value {
                  type uint8 {
                    range "1..64";
                  }
                  must
                    "(../bier-fwd:factor-value * ../../bier:load-balance-num) <= 64";
                  description
                    "Configure load-balance enhance factor.";
                }
              }  // container load-balance-enhance-factor
            }  // list sub-domain
          }  // container sub-domains
    
          container bier-prefixs {
            config false;
            description
              "List of BIER prefix state.";
            container isis-prefixs {
              description
                "List of ISIS prefix state.";
              list isis-prefix {
                key "address-family igp-process-id mt-id igp-sub-process-id";
                description "ISIS prefix state.";
                leaf address-family {
                  type address-family-type;
                  description
                    "IPv4 or IPv6 address family.";
                }
    
                leaf igp-process-id {
                  type uint32;
                  description
                    "Process ID of the underlay IGP.";
                }
    
                leaf mt-id {
                  type uint32;
                  description
                    "Multi-topology ID of the underlay IGP.";
                }
    
                leaf igp-sub-process-id {
                  type uint32;
                  description
                    "Sub-process ID of the underlay IGP.";
                }
    
                container isis-systems {
                  description
                    "List of ISIS system state.";
                  list isis-system {
                    key "system-id";
                    description
                      "ISIS system state.";
                    leaf system-id {
                      type string {
                        length "1..16";
                      }
                      description
                        "IS-IS system ID.";
                    }
    
                    container prefix-infos {
                      description
                        "List of prefix state.";
                      list prefix-info {
                        key "prefix prefix-mask-len";
                        description
                          "Prefix state.";
                        leaf prefix {
                          type inet:ip-address-no-zone;
                          description
                            "BFR prefix address.";
                        }
    
                        leaf prefix-mask-len {
                          type uint8 {
                            range "0..128";
                          }
                          description
                            "BFR prefix address mask length.";
                        }
    
                        leaf prefix-igp-flags {
                          type bits {
                            bit local {
                              position 0;
                              description
                                "Local prefix.";
                            }
                            bit intra {
                              position 1;
                              description
                                "Intra-domain prefix.";
                            }
                            bit invalid {
                              position 2;
                              description
                                "Invalid prefix.";
                            }
                            bit duplicate {
                              position 3;
                              description
                                "Duplicate prefix.";
                            }
                            bit best {
                              position 4;
                              description
                                "Best prefix.";
                            }
                          }
                          description
                            "BIER prefix IGP state.";
                        }
    
                        container sub-domain-infos {
                          description
                            "List of sub-domain state.";
                          list sub-domain-info {
                            key "sub-domain-id";
                            description
                              "Sub-domain state.";
                            leaf sub-domain-id {
                              type uint16 {
                                range "0..255";
                              }
                              description
                                "BIER sub-domain ID.";
                            }
    
                            leaf bfr-id {
                              ext:support-filter "true";
                              type uint16 {
                                range "1..65535";
                              }
                              description
                                "BFR-ID.";
                            }
    
                            leaf end-bier-sid {
                              type inet:ipv6-address-no-zone;
                              description
                                "End-bier-sid of the SD.";
                            }
    
                            leaf prefix-sd-flags {
                              type bits {
                                bit
                                  duplicate-sd {
                                  position 0;
                                  description
                                    "Duplicate sub-domain ID.";
                                }
                                bit
                                  invalid-igp-cfg {
                                  position 1;
                                  description
                                    "Invalid IGP configuration.";
                                }
                                bit
                                  invalid-bar {
                                  position 2;
                                  description
                                    "Invalid BIER algorithm.";
                                }
                                bit
                                  invalid-ipa {
                                  position 3;
                                  description
                                    "Invalid IGP algorithm.";
                                }
                                bit
                                  duplicate-bfr-id {
                                  position 4;
                                  description
                                    "Duplicate BFR-ID.";
                                }
                                bit invalid-mt {
                                  position 5;
                                  description
                                    "Invalid multi-topology.";
                                }
                                bit
                                  supress-bfr-id-adv {
                                  position 6;
                                  description
                                    "BFR-ID advertisement suppression.";
                                }
                              }
                              description
                                "BIER prefix sub-domain state.";
                            }
    
                            leaf igp-algorithm {
                              type igp-algorithm-type;
                              description
                                "IGP algorithm type.";
                            }
    
                            leaf bier-algorithm {
                              type bier-algorithm-type;
                              description
                                "BIER algorithm type.";
                            }
    
                            container encapsulation-infos {
                              description
                                "BIER prefix encapsulation state.";
                              container encapsulations {
                                description
                                  "List of BIER prefix encapsulation state.";
                                list encapsulation {
                                  key "bsl encapsulation-type";
                                  description
                                    "BIER prefix encapsulation state.";
                                  leaf bsl {
                                    type bit-string-length;
                                    description
                                      "BIER BitString length, which is 64/128/256 bits.";
                                  }
    
                                  leaf encapsulation-type {
                                    type bier-encapsulation-type;
                                    description
                                      "BIER encapsulation type.";
                                  }
    
                                  leaf max-si {
                                    type uint16 {
                                      range
                                        "0..255";
                                    }
                                    description
                                      "Maximum set identifier.";
                                  }
    
                                  leaf up-time {
                                    type pub-type:time-tick;
                                    description
                                      "Prefix survival time.";
                                  }
    
                                  leaf bift-id-base {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    description
                                      "Start BIFT-ID in the BIER encapsulation information.";
                                  }
                                }  // list encapsulation
                              }  // container encapsulations
    
                              container invalid-encapsulations {
                                description
                                  "List of BIER prefix encapsulation state.";
                                list invalid-encapsulation {
                                  key "bsl encapsulation-type";
                                  description
                                    "BIER prefix encapsulation state.";
                                  leaf bsl {
                                    type bit-string-length;
                                    description
                                      "BIER BitString length, which is 64/128/256 bits.";
                                  }
    
                                  leaf encapsulation-type {
                                    type bier-encapsulation-type;
                                    description
                                      "BIER encapsulation type.";
                                  }
    
                                  leaf max-si {
                                    type uint16 {
                                      range
                                        "0..255";
                                    }
                                    description
                                      "Maximum set identifier.";
                                  }
    
                                  leaf up-time {
                                    type pub-type:time-tick;
                                    description
                                      "Prefix survival time.";
                                  }
    
                                  leaf bift-id-base {
                                    type uint32 {
                                      range
                                        "0..4294967295";
                                    }
                                    description
                                      "Start BIFT-ID in the BIER encapsulation information.";
                                  }
    
                                  leaf invalid-reason {
                                    type bits {
                                      bit
                                        unknown-sd {
                                        position
                                          0;
                                        description
                                          "Unknown sub-domain ID.";
                                      }
                                      bit
                                        invalid-igp-cfg {
                                        position
                                          1;
                                        description
                                          "The SD advertised by an IGP instance is the same as that advertised by another IGP instance.";
                                      }
                                      bit
                                        duplicate-bsl {
                                        position
                                          2;
                                        description
                                          "Duplicate BitString length.";
                                      }
                                      bit
                                        invalid-bsl {
                                        position
                                          3;
                                        description
                                          "Invalid BitString length.";
                                      }
                                      bit
                                        unsupport-bsl {
                                        position
                                          4;
                                        description
                                          "Unsupported BitString length.";
                                      }
                                      bit
                                        invalid-label {
                                        position
                                          5;
                                        description
                                          "Invalid MPLS label.";
                                      }
                                      bit
                                        invalid-label-range {
                                        position
                                          6;
                                        description
                                          "Invalid range of MPLS labels.";
                                      }
                                      bit
                                        overlap-label-range {
                                        position
                                          7;
                                        description
                                          "Overlap range of MPLS labels.";
                                      }
                                      bit
                                        sd-unsupport-bsl {
                                        position
                                          8;
                                        description
                                          "BitString length is not configured locally.";
                                      }
                                      bit
                                        invalid-bsl-bfrid-maxsi-asso {
                                        position
                                          9;
                                        description
                                          "The advertised BFR-ID exceeds the maximum value that can be expressed by the advertised BSL and Max-SI.";
                                      }
                                      bit
                                        invalid-prefix-mask {
                                        position
                                          10;
                                        description
                                          "Invalid prefix mask.";
                                      }
                                    }
                                    description
                                      "Invalid BSL reason.";
                                  }
                                }  // list invalid-encapsulation
                              }  // container invalid-encapsulations
                            }  // container encapsulation-infos
                          }  // list sub-domain-info
                        }  // container sub-domain-infos
                      }  // list prefix-info
                    }  // container prefix-infos
                  }  // list isis-system
                }  // container isis-systems
              }  // list isis-prefix
            }  // container isis-prefixs
          }  // container bier-prefixs
    
          container forward {
            description
              "Configure global attributes to the BIER.";
            container reserve-interface-enhancement {
              description
                "Configure reserve-interface enhancement.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable reserve-interface enhancement.";
              }
            }  // container reserve-interface-enhancement
          }  // container forward
        }  // container bier
      }  // module huawei-bier
    

© 2023 YumaWorks, Inc. All rights reserved.