huawei-srv6

Segment routing IPv6.

  • Version: 2021-08-26

    huawei-srv6@2021-08-26


    
      module huawei-srv6 {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-srv6";
    
        prefix srv6;
    
        import huawei-network-instance {
          prefix ni;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-evpl {
          prefix evpl;
        }
        import huawei-bd {
          prefix bd;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
    
        include huawei-srv6-type;
    
        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 "Segment routing IPv6.";
    
        revision "2021-08-26" {
          description "Add end-dt2us container.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-06-17" {
          description "Add leaf units.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-25" {
          description
            "Add mapping-policys container.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-18" {
          description
            "Modify the default value of path-mtu leaf.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-10" {
          description "Modify the description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-09" {
          description "Modify the description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-03" {
          description "Modify the description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-24" {
          description "Add end-ass container.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-14" {
          description
            "Add path-mtu-compensation leaf.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-04" {
          description "Add new leaf.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-01-20" {
          description "Add path-mtu leaf.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-27" {
          description
            "Modify the default value about leaf protocol of end-dt6s.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-30" {
          description "Add end-dt6s container.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-22" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-04-04" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "segr";
    
        rpc get-available-static-sid {
          description
            "Query a maximum of 10 available SRv6 static SIDs for a specified locator name.";
          input {
            leaf locator-name {
              type string {
                length "1..31";
              }
              mandatory true;
              description "Locator name.";
            }
    
            leaf begin-value {
              type inet:ipv6-address-no-zone;
              description
                "Start value in the range of available SRv6 static SIDs.";
            }
          }
    
          output {
            leaf sid-value1 {
              type inet:ipv6-address-no-zone;
              description
                "The first available SRv6 static SID.";
            }
    
            leaf sid-value2 {
              type inet:ipv6-address-no-zone;
              description
                "The second available SRv6 static SID.";
            }
    
            leaf sid-value3 {
              type inet:ipv6-address-no-zone;
              description
                "The third available SRv6 static SID.";
            }
    
            leaf sid-value4 {
              type inet:ipv6-address-no-zone;
              description
                "The fourth available SRv6 static SID.";
            }
    
            leaf sid-value5 {
              type inet:ipv6-address-no-zone;
              description
                "The fifth available SRv6 static SID.";
            }
    
            leaf sid-value6 {
              type inet:ipv6-address-no-zone;
              description
                "The sixth available SRv6 static SID.";
            }
    
            leaf sid-value7 {
              type inet:ipv6-address-no-zone;
              description
                "The seventh available SRv6 static SID.";
            }
    
            leaf sid-value8 {
              type inet:ipv6-address-no-zone;
              description
                "The eighth available SRv6 static SID.";
            }
    
            leaf sid-value9 {
              type inet:ipv6-address-no-zone;
              description
                "The ninth available SRv6 static SID.";
            }
    
            leaf sid-value10 {
              type inet:ipv6-address-no-zone;
              description
                "The tenth available SRv6 static SID.";
            }
          }
        }  // rpc get-available-static-sid
    
        augment /ni:network-instance/ni:instances/ni:instance {
          description
            "Segment routing IPv6 augment to L3VPN.";
          container srv6 {
            when "../ni:name='_public_'";
            description
              "Configure segment routing IPv6.";
            leaf enable {
              type boolean;
              default "false";
              description
                "Enable/disable segment routing IPv6.";
            }
    
            leaf te-frr-enable {
              type boolean;
              must
                "../te-frr-enable='false' or ../enable='true'";
              default "false";
              description
                "Enable/disable SR TE FRR.";
            }
    
            leaf te-frr-enable-downgrade {
              when "../te-frr-enable='true'";
              type boolean;
              default "false";
              description
                "Enable/disable fast re-route mode.";
            }
    
            leaf end-x-delay-time {
              when "../enable='true'";
              type uint32 {
                range "0..600000";
              }
              units "ms";
              default "0";
              description "End.X delay time.";
            }
    
            leaf path-mtu {
              when "../enable='true'";
              type uint32 {
                range "1280..9600";
              }
              must
                "(../path-mtu-reserved and (../path-mtu)-(../path-mtu-reserved)>=1280) or not(../path-mtu-reserved)";
              default "9600";
              description "Path MTU value.";
            }
    
            leaf path-mtu-reserved {
              when "../enable='true'";
              type uint32 {
                range "1..9600";
              }
              must
                "(../path-mtu)-(../path-mtu-reserved)>=1280";
              description
                "Path MTU reserved value.";
            }
    
            leaf proxy-peer-sid {
              when "../enable='true'";
              type inet:ipv6-address-no-zone;
              description
                "Peer SID of SFC for anycast.";
            }
    
            leaf reduce-srh-enable {
              when "../enable='true'";
              type boolean;
              default "false";
              description
                "Enable/disable reduce SRH.";
            }
    
            container encapsulation {
              when "../enable='true'";
              description
                "Configure IPv6 encapsulation configuation.";
              leaf source-address {
                type inet:ipv6-address-no-zone;
                description
                  "SRv6 VPN encapsulation source address.";
              }
    
              leaf hop-limit {
                when "../source-address";
                type uint8 {
                  range "1..255";
                }
                default "255";
                description
                  "Encapsulation IPv6 header TTL value.";
              }
            }  // container encapsulation
    
            container locators {
              when "../enable='true'";
              description
                "List of SRv6 locator configuration.";
              list locator {
                key "name";
                unique "prefix";
                description
                  "Configure SRv6 locator configuration.";
                leaf name {
                  type string {
                    length "1..31";
                  }
                  description "Locator name.";
                }
    
                leaf prefix {
                  ext:operation-exclude "update";
                  type inet:ipv6-address-no-zone;
                  mandatory true;
                  description "IPv6 prefix.";
                }
    
                leaf prefix-length {
                  ext:operation-exclude "update";
                  type uint8 {
                    range "32..120";
                  }
                  must
                    "../prefix-length+../static-length+../args-length<=128";
                  mandatory true;
                  description
                    "Mask length. The maximum sum value of the mask length, static segment length, and argument segment length is 128.";
                }
    
                leaf static-length {
                  ext:operation-exclude "update";
                  type uint8 {
                    range "0..96";
                  }
                  must
                    "../prefix-length+../static-length+../args-length<=128";
                  default "0";
                  description
                    "The static segment length determines the range of opcode. The maximum sum value of the mask length, static segment length, and argument segment length is 128.";
                }
    
                leaf args-length {
                  ext:operation-exclude "update";
                  type uint8 {
                    range "0..64";
                  }
                  must
                    "../prefix-length+../static-length+../args-length<=128";
                  default "0";
                  description
                    "Argument segment length. The maximum sum value of the mask length, static segment length, and argument segment length is 128.";
                }
    
                leaf compress-block-length {
                  ext:operation-exclude "update";
                  type uint8 {
                    range "1..88";
                  }
                  must
                    "((../compress-block-length mod 4)=0) and (../compress-block-length>=4) and (../compress-block-length<=128) and (../prefix-length - ../compress-block-length>=1) and (../prefix-length - ../compress-block-length<=31)";
                  description
                    "Block segment length. The block segment length is within the range of prefix length.";
                }
    
                leaf compress-static-length {
                  ext:operation-exclude "update|delete";
                  when
                    "../compress-block-length";
                  type uint8 {
                    range "1..32";
                  }
                  must
                    "../compress-static-length<=(32-(../prefix-length - ../compress-block-length))";
                  description
                    "Compress static segment length. The compress static segment length is within the range of compress length.";
                }
    
                leaf flex-algo {
                  ext:operation-exclude "update|delete";
                  type uint8 {
                    range "0|128..255";
                  }
                  default "0";
                  description
                    "Flexible algorithm.";
                }
    
                container opcodes {
                  when "../static-length>0";
                  description
                    "Configure SRv6 opcodes configuration.";
                  container ends {
                    description
                      "List of End type opcode configuration.";
                    list end {
                      key "value";
                      max-elements 1;
                      description
                        "Configure End type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end
                  }  // container ends
    
                  container end-psps {
                    description
                      "List of End psp type opcode configuration.";
                    list end-psp {
                      key "value";
                      max-elements 1;
                      description
                        "Configure End psp type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end-psp
                  }  // container end-psps
    
                  container end-psp-usp-usds {
                    description
                      "List of End psp-usp-usd type opcode configuration.";
                    list end-psp-usp-usd {
                      key "value";
                      max-elements 1;
                      description
                        "Configure End psp-usp-usd type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end-psp-usp-usd
                  }  // container end-psp-usp-usds
    
                  container end-psp-usp-usd-cocs {
                    description
                      "List of End psp-usp-usd-coc type opcode configuration.";
                    list end-psp-usp-usd-coc {
                      must
                        "../../../compress-block-length>0";
                      key "value";
                      max-elements 1;
                      description
                        "Configure End psp-usp-usd-coc type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
                    }  // list end-psp-usp-usd-coc
                  }  // container end-psp-usp-usd-cocs
    
                  container end-ops {
                    description
                      "List of End.OP type opcode configuration.";
                    list end-op {
                      key "value";
                      max-elements 1;
                      description
                        "Configure End.OP type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
                    }  // list end-op
                  }  // container end-ops
    
                  container end-xs {
                    description
                      "List of End.X type opcode configuration.";
                    list end-x {
                      key "value if-name next-hop";
                      description
                        "Configure End.X type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Nexthop address.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end-x
                  }  // container end-xs
    
                  container end-x-psps {
                    description
                      "List of End.X psp type opcode configuration.";
                    list end-x-psp {
                      key "value if-name next-hop";
                      description
                        "Configure End.X psp type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "NextHop address.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end-x-psp
                  }  // container end-x-psps
    
                  container end-x-psp-usp-usds {
                    description
                      "List of End.X psp-usp-usd type opcode configuration.";
                    list end-x-psp-usp-usd {
                      key "value if-name next-hop";
                      description
                        "Configure End.X psp-usp-usd type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "NextHop address.";
                      }
    
                      leaf compress {
                        ext:operation-exclude "update|delete";
                        type boolean;
                        must
                          "(../compress = 'true' and (../../../../compress-block-length>0) and (../../../../compress-static-length>0)) or ../compress = 'false'";
                        default "false";
                        description
                          "Enable/disable compress function.";
                      }
                    }  // list end-x-psp-usp-usd
                  }  // container end-x-psp-usp-usds
    
                  container end-x-psp-usp-usd-cocs {
                    description
                      "List of End.X psp-usp-usd-coc type opcode configuration.";
                    list end-x-psp-usp-usd-coc {
                      must
                        "../../../compress-block-length>0";
                      key "value if-name next-hop";
                      description
                        "Configure End.X psp-usp-usd-coc type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "NextHop address.";
                      }
                    }  // list end-x-psp-usp-usd-coc
                  }  // container end-x-psp-usp-usd-cocs
    
                  container end-dt2us {
                    description
                      "List of End.DT2U type opcode configuration.";
                    list end-dt2u {
                      key "value";
                      unique "bd-id";
                      description
                        "Configure End.DT2U type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf bd-id {
                        ext:operation-exclude "update";
                        ext:support-filter "true";
                        type leafref {
                          path "/bd:bd/bd:instances/bd:instance/bd:id";
                        }
                        mandatory true;
                        description
                          "Bridge domain ID.";
                      }
                    }  // list end-dt2u
                  }  // container end-dt2us
    
                  container end-dt2uls {
                    description
                      "List of End.DT2UL type opcode configuration.";
                    list end-dt2ul {
                      key "value";
                      unique "bd-id";
                      description
                        "Configure End.DT2UL type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf bd-id {
                        ext:operation-exclude "update";
                        ext:support-filter "true";
                        type leafref {
                          path "/bd:bd/bd:instances/bd:instance/bd:id";
                        }
                        mandatory true;
                        description
                          "Bridge domain ID.";
                      }
                    }  // list end-dt2ul
                  }  // container end-dt2uls
    
                  container end-dt2ms {
                    description
                      "List of End.DT2M type opcode configuration.";
                    list end-dt2m {
                      key "value";
                      unique "bd-id";
                      description
                        "Configure End.DT2M type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf bd-id {
                        ext:operation-exclude "update";
                        ext:support-filter "true";
                        type leafref {
                          path "/bd:bd/bd:instances/bd:instance/bd:id";
                        }
                        mandatory true;
                        description
                          "Bridge domain ID.";
                      }
                    }  // list end-dt2m
                  }  // container end-dt2ms
    
                  container end-dx2s {
                    description
                      "List of End.DX2 type opcode configuration.";
                    list end-dx2 {
                      key "value";
                      unique "evpl-id";
                      description
                        "Configure End.DX2 type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf evpl-id {
                        ext:operation-exclude "update";
                        type leafref {
                          path "/evpl:evpl/evpl:instances/evpl:instance/evpl:id";
                        }
                        must
                          "((/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='mpls-mode') or (/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='srv6-mode') or (/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='none'))";
                        mandatory true;
                        description
                          "EVPL instance ID.";
                      }
                    }  // list end-dx2
                  }  // container end-dx2s
    
                  container end-dx2ls {
                    description
                      "List of End.DX2L type opcode configuration.";
                    list end-dx2l {
                      key "value";
                      unique "evpl-id";
                      description
                        "Configure End.DX2L type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf evpl-id {
                        ext:operation-exclude "update";
                        type leafref {
                          path "/evpl:evpl/evpl:instances/evpl:instance/evpl:id";
                        }
                        must
                          "((/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='mpls-mode') or (/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='srv6-mode') or (/evpl:evpl/evpl:instances/evpl:instance[evpl:id=current()]/evpl:mode='none'))";
                        mandatory true;
                        description
                          "EVPL instance ID.";
                      }
                    }  // list end-dx2l
                  }  // container end-dx2ls
    
                  container end-dt4s {
                    description
                      "List of End.DT4 type opcode configuration.";
                    list end-dt4 {
                      key "value";
                      unique "vpn-name";
                      description
                        "Configure End.DT4 type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf vpn-name {
                        ext:operation-exclude "update";
                        type leafref {
                          path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        default "_public_";
                        description "VPN name.";
                      }
    
                      leaf protocol {
                        type protocol-type;
                        must
                          "not(../vpn-name='_public_' and (../protocol='evpn' or ../protocol='evpn-l3vpn'))";
                        default "l3vpn";
                        description
                          "Protocol type.";
                      }
                    }  // list end-dt4
                  }  // container end-dt4s
    
                  container end-dt6s {
                    description
                      "List of End.DT6 type opcode configuration.";
                    list end-dt6 {
                      key "value";
                      unique "vpn-name";
                      description
                        "Configure End.DT6 type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf vpn-name {
                        ext:operation-exclude "update";
                        type leafref {
                          path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        default "_public_";
                        description "VPN name.";
                      }
    
                      leaf protocol {
                        type protocol-type;
                        must
                          "not(../vpn-name='_public_' and (../protocol='evpn' or ../protocol='evpn-l3vpn'))";
                        default "l3vpn";
                        description
                          "Protocol type.";
                      }
                    }  // list end-dt6
                  }  // container end-dt6s
    
                  container end-ms {
                    description
                      "List of End.M type opcode configuration.";
                    list end-m {
                      must
                        "../../../flex-algo=0";
                      key "value mirror-prefix mirror-mask";
                      description
                        "Configure End.M type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf mirror-prefix {
                        type inet:ipv6-address-no-zone;
                        description
                          "Mirror locator prefix.";
                      }
    
                      leaf mirror-mask {
                        type uint8 {
                          range "32..120";
                        }
                        description
                          "Mirror locator mask.";
                      }
                    }  // list end-m
                  }  // container end-ms
    
                  container end-dx4s {
                    description
                      "List of End.DX4 type opcode configuration.";
                    list end-dx4 {
                      key "value vpn-name if-name next-hop";
                      description
                        "Configure End.DX4 type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf vpn-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        must
                          "../vpn-name!='_public_'";
                        description "VPN name.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name. Only support physical port.";
                      }
    
                      leaf next-hop {
                        type inet:ipv4-address-no-zone;
                        description
                          "NextHop address.";
                      }
    
                      leaf protocol {
                        type protocol-type;
                        mandatory true;
                        description
                          "Protocol type.";
                      }
                    }  // list end-dx4
                  }  // container end-dx4s
    
                  container end-dx6s {
                    description
                      "List of End.DX6 type opcode configuration.";
                    list end-dx6 {
                      key "value vpn-name if-name next-hop";
                      description
                        "Configure End.DX6 type opcode configuration.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf vpn-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        must
                          "../vpn-name!='_public_'";
                        description "VPN name.";
                      }
    
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Interface name. Only support physical port.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Nexthop address.";
                      }
    
                      leaf protocol {
                        type protocol-type;
                        mandatory true;
                        description
                          "Protocol type.";
                      }
                    }  // list end-dx6
                  }  // container end-dx6s
    
                  container end-ass {
                    description
                      "List of End.AS type opcode.";
                    list end-as {
                      must
                        "(service-class and color) or (not(service-class) and not(color))";
                      key "value";
                      description
                        "Configure End.AS type opcode.";
                      leaf value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf backup-value {
                        type inet:ipv6-address-no-zone;
                        description
                          "Backup proxy SID function opcode value. The value ranges from ::1 to ::XX, in which XX is an IPv6 address translated from 2^static-length minus 1.";
                      }
    
                      leaf inner-type {
                        type inner-type;
                        default "null";
                        description
                          "Inner packet type.";
                      }
    
                      leaf bypass-enable {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable bypass function of SFC.";
                      }
    
                      leaf bypass-sid {
                        when
                          "../bypass-enable='true'";
                        type inet:ipv6-address-no-zone;
                        description
                          "Bypass SID, that must be a valid SID of other protection device in the SF group.";
                      }
    
                      choice service-mode {
                        default "uniform";
                        description
                          "Configure differenciated service mode.";
                        case pipe {
                          description
                            "Pipe mode.";
                          leaf service-class {
                            type service-class;
                            description
                              "Class of service.";
                          }
    
                          leaf color {
                            type color;
                            description
                              "Packet color.";
                          }
                        }  // case pipe
    
                        case uniform {
                          description
                            "Uniform mode.";
                          leaf diffserv-uniform {
                            type empty;
                            description
                              "Uniform mode.";
                          }
                        }  // case uniform
                      }  // choice service-mode
    
                      choice ttl-mode {
                        default "uniform";
                        description
                          "Configure TTL mode.";
                        case pipe {
                          description
                            "Pipe mode.";
                          leaf ttl-value {
                            type uint8 {
                              range "1..255";
                            }
                            description
                              "TTL value.";
                          }
                        }  // case pipe
    
                        case uniform {
                          description
                            "Uniform mode.";
                          leaf ttl-uniform {
                            type empty;
                            description
                              "Uniform mode.";
                          }
                        }  // case uniform
                      }  // choice ttl-mode
    
                      container l2-fwds {
                        description
                          "List of encapsulation for layer 2 packet forwarding.";
                        list l2-fwd {
                          key "out-ifname in-ifname out-vlan in-vlan out-ce-vlan in-ce-vlan";
                          max-elements 1;
                          description
                            "Configure encapsulation for layer 2 packet forwarding.";
                          leaf out-ifname {
                            type leafref {
                              path
                                "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:l2-mode-enable='true'";
                            description
                              "Outbound interface from SFF to SF, this interface must be exclusively used by SFC.";
                          }
    
                          leaf in-ifname {
                            type leafref {
                              path
                                "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:l2-mode-enable='true'";
                            description
                              "Inbound interface from SF to SFF, this interface must be exclusively used by SFC.";
                          }
    
                          leaf out-vlan {
                            type uint32 {
                              ext:value-meaning {
                                ext:item "0" {
                                  ext:meaning "no-set";
                                  description "Value 0 means that the VLAN ID is not set.";
                                }
                              }
                              range "0..4094";
                            }
                            description
                              "Outer VLAN ID of the outbound interface from SFF to SF.";
                          }
    
                          leaf in-vlan {
                            type uint32 {
                              ext:value-meaning {
                                ext:item "0" {
                                  ext:meaning "no-set";
                                  description "Value 0 means that the VLAN ID is not set.";
                                }
                              }
                              range "0..4094";
                            }
                            description
                              "Outer VLAN ID of the inbound interface from SF to SFF.";
                          }
    
                          leaf out-ce-vlan {
                            type uint32 {
                              ext:value-meaning {
                                ext:item "0" {
                                  ext:meaning "no-set";
                                  description "Value 0 means that the VLAN ID is not set.";
                                }
                              }
                              range "0..4094";
                            }
                            must
                              "../out-vlan!=0";
                            description
                              "Inner VLAN ID of the outbound interface from SFF to SF.";
                          }
    
                          leaf in-ce-vlan {
                            type uint32 {
                              ext:value-meaning {
                                ext:item "0" {
                                  ext:meaning "no-set";
                                  description "Value 0 means that the VLAN ID is not set.";
                                }
                              }
                              range "0..4094";
                            }
                            must "../in-vlan!=0";
                            description
                              "Inner VLAN ID of the inbound interface from SF to SFF.";
                          }
    
                          leaf dest-mac {
                            type pub-type:mac-address;
                            description
                              "MAC address of destination for the inbound interface, that is H-H-H.";
                          }
                        }  // list l2-fwd
                      }  // container l2-fwds
    
                      container l3-fwds {
                        description
                          "List of encapsulation for layer 3 packet forwarding.";
                        list l3-fwd {
                          key "next-hop in-ifname out-ifname";
                          description
                            "Configure encapsulation for layer 3 packet forwarding.";
                          leaf next-hop {
                            type inet:ipv4-address-no-zone;
                            description
                              "IPv4 next hop address.";
                          }
    
                          leaf in-ifname {
                            type leafref {
                              path
                                "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Vbdif'";
                            description
                              "Inbound interface from SF to SFF, this interface must be exclusively used by SFC.";
                          }
    
                          leaf out-ifname {
                            type leafref {
                              path
                                "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Vbdif'";
                            description
                              "Outbound interface from SFF to SF, this interface must be exclusively used by SFC.";
                          }
    
                          leaf symmetric-index {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Symmetric index for the forward and reverse traffic on the same VM.";
                          }
                        }  // list l3-fwd
                      }  // container l3-fwds
    
                      container cache {
                        description
                          "Configure SR information to be attached on the traffic coming back from SF.";
                        leaf source-address {
                          type inet:ipv6-address-no-zone;
                          description
                            "IPv6 source address that encapsulated on the traffic coming back from SF.";
                        }
    
                        leaf sl-num {
                          type uint32 {
                            range "0..10";
                          }
                          config false;
                          description
                            "Number of route segments remaining.";
                        }
    
                        container ipv6addrs {
                          description
                            "List of IPv6 address for encapsulating on the traffic coming back from SF. The local End.AS SID must be in the address list except the first address.";
                          list ipv6addr {
                            key "ipv6-address";
                            max-elements 11;
                            ordered-by user;
                            description
                              "Configure the IPv6 address for encapsulating on the traffic coming back from SF.";
                            leaf ipv6-address {
                              type inet:ipv6-address-no-zone;
                              description
                                "Configure the IPv6 address for encapsulating on the traffic coming back from SF.";
                            }
                          }  // list ipv6addr
                        }  // container ipv6addrs
                      }  // container cache
                    }  // list end-as
                  }  // container end-ass
                }  // container opcodes
    
                container attribute {
                  config false;
                  description
                    "Operational data of locator.";
                  leaf block {
                    type inet:ipv6-address-no-zone;
                    description "Block segment.";
                  }
    
                  leaf node-id {
                    type inet:ipv6-address-no-zone;
                    description
                      "NodeId segment.";
                  }
    
                  leaf node-id-length {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Length of the NodeId segment.";
                  }
    
                  leaf reference {
                    type uint16 {
                      range "0..65535";
                    }
                    description
                      "Number of times the locator is referenced.";
                  }
    
                  leaf compress-dynamic-sid-pool-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "ID of a compressed dynamic SID pool.";
                  }
    
                  leaf compress-dynamic-length {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Length of the compression dynamic segment.";
                  }
    
                  leaf compress-dynamic-sid-begin {
                    type inet:ipv6-address-no-zone;
                    description
                      "Start value in the range of compressed dynamic SIDs.";
                  }
    
                  leaf compress-dynamic-sid-end {
                    type inet:ipv6-address-no-zone;
                    description
                      "End value in the range of compressed dynamic SIDs.";
                  }
    
                  leaf compress-static-sid-begin {
                    type inet:ipv6-address-no-zone;
                    description
                      "Start value in the range of compressed static SIDs.";
                  }
    
                  leaf compress-static-sid-end {
                    type inet:ipv6-address-no-zone;
                    description
                      "End value in the range of compressed static SIDs.";
                  }
    
                  leaf dynamic-sid-pool-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "ID of a dynamic SID pool.";
                  }
    
                  leaf dynamic-length {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Length of the dynamic segment.";
                  }
    
                  leaf dynamic-sid-begin {
                    type inet:ipv6-address-no-zone;
                    description
                      "Start value in the range of dynamic SIDs.";
                  }
    
                  leaf dynamic-sid-end {
                    type inet:ipv6-address-no-zone;
                    description
                      "End value in the range of dynamic SIDs.";
                  }
    
                  leaf static-sid-begin {
                    type inet:ipv6-address-no-zone;
                    description
                      "Start value in the range of static SIDs.";
                  }
    
                  leaf static-sid-end {
                    type inet:ipv6-address-no-zone;
                    description
                      "End value in the range of static SIDs.";
                  }
                }  // container attribute
              }  // list locator
            }  // container locators
    
            container remote-end-ops {
              when "../enable='true'";
              description
                "List of remote End.OTP configuration.";
              list remote-end-op {
                key "sid";
                description
                  "Configure remote End.OTP configuration.";
                leaf sid {
                  type inet:ipv6-address-no-zone;
                  description
                    "Remote End.OTP SID.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "1..128";
                  }
                  mandatory true;
                  description
                    "Remote End.OTP SID prefix length.";
                }
              }  // list remote-end-op
            }  // container remote-end-ops
    
            container local-sids {
              config false;
              description
                "Statistics of segment routing IPv6 local SID list.";
              container ends {
                description
                  "List of segment routing IPv6 End local SID list.";
                list end {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description "End SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end
              }  // container ends
    
              container end-psps {
                description
                  "List of segment routing IPv6 End psp local SID list.";
                list end-psp {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End psp local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description "End SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-psp
              }  // container end-psps
    
              container end-psp-usp-usds {
                description
                  "List of segment routing IPv6 End psp-usp-usd local SID list.";
                list end-psp-usp-usd {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End psp-usp-usd local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description "End SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-psp-usp-usd
              }  // container end-psp-usp-usds
    
              container end-psp-usp-usd-cocs {
                description
                  "List of segment routing IPv6 End psp-usp-usd-coc local SID list.";
                list end-psp-usp-usd-coc {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End psp-usp-usd-coc local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End psp-usp-usd-coc SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-psp-usp-usd-coc
              }  // container end-psp-usp-usd-cocs
    
              container end-ops {
                description
                  "List of segment routing IPv6 End.OP local SID list.";
                list end-op {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.OP local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.OP SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-op
              }  // container end-ops
    
              container end-xs {
                description
                  "List of segment routing IPv6 End.X local SID list.";
                list end-x {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.X local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.X SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
    
                  container next-hops {
                    description
                      "List of next hop information.";
                    list next-hop {
                      key "if-name next-hop";
                      description
                        "Statistics of next hop information.";
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Exit interface.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next hop IPv6 address.";
                      }
                    }  // list next-hop
                  }  // container next-hops
                }  // list end-x
              }  // container end-xs
    
              container end-x-psps {
                description
                  "List of segment routing IPv6 End.X psp local SID list.";
                list end-x-psp {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.X psp local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.X SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
    
                  container next-hops {
                    description
                      "List of next hop information.";
                    list next-hop {
                      key "if-name next-hop";
                      description
                        "Statistics of next hop information.";
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Exit interface.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next hop IPv6 address.";
                      }
                    }  // list next-hop
                  }  // container next-hops
                }  // list end-x-psp
              }  // container end-x-psps
    
              container end-x-psp-usp-usds {
                description
                  "List of segment routing IPv6 End.X psp-usp-usd local SID list.";
                list end-x-psp-usp-usd {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.X psp-usp-usd local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.X SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
    
                  container next-hops {
                    description
                      "List of next hop information.";
                    list next-hop {
                      key "if-name next-hop";
                      description
                        "Statistics of next hop information.";
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Exit interface.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next hop IPv6 address.";
                      }
                    }  // list next-hop
                  }  // container next-hops
                }  // list end-x-psp-usp-usd
              }  // container end-x-psp-usp-usds
    
              container end-x-psp-usp-usd-cocs {
                description
                  "List of segment routing IPv6 End.X psp-usp-usd-coc local SID list.";
                list end-x-psp-usp-usd-coc {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.X psp-usp-usd-coc local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.X psp-usp-usd-coc SID value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
    
                  container next-hops {
                    description
                      "List of next hop information.";
                    list next-hop {
                      key "if-name next-hop";
                      description
                        "Statistics of next hop information.";
                      leaf if-name {
                        type leafref {
                          path
                            "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        description
                          "Exit interface.";
                      }
    
                      leaf next-hop {
                        type inet:ipv6-address-no-zone;
                        description
                          "Next hop IPv6 address.";
                      }
                    }  // list next-hop
                  }  // container next-hops
                }  // list end-x-psp-usp-usd-coc
              }  // container end-x-psp-usp-usd-cocs
    
              container end-dt2us {
                description
                  "List of segment routing IPv6 End.DT2U local SID list.";
                list end-dt2u {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DT2U local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DT2U SID value.";
                  }
    
                  leaf bd-id {
                    ext:support-filter "true";
                    type uint32 {
                      range "1..16777215";
                    }
                    description
                      "The Bridge-domain ID corresponding to the SID.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..32";
                    }
                    description "Locator name.";
                  }
                }  // list end-dt2u
              }  // container end-dt2us
    
              container end-dt2uls {
                description
                  "List of segment routing IPv6 End.DT2UL local SID list.";
                list end-dt2ul {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DT2UL local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DT2UL SID value.";
                  }
    
                  leaf bd-id {
                    ext:support-filter "true";
                    type uint32 {
                      range "1..16777215";
                    }
                    description
                      "The Bridge-domain ID corresponding to the SID.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..32";
                    }
                    description "Locator name.";
                  }
                }  // list end-dt2ul
              }  // container end-dt2uls
    
              container end-dt2ms {
                description
                  "List of segment routing IPv6 End.DT2M local SID list.";
                list end-dt2m {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DT2M local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DT2M SID value.";
                  }
    
                  leaf bd-id {
                    ext:support-filter "true";
                    type uint32 {
                      range "1..16777215";
                    }
                    description
                      "The Bridge-domain ID corresponding to the SID.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..32";
                    }
                    description "Locator name.";
                  }
                }  // list end-dt2m
              }  // container end-dt2ms
    
              container end-dx2s {
                description
                  "List of segment routing IPv6 End.DX2 local SID list.";
                list end-dx2 {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DX2 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DX2 SID value.";
                  }
    
                  leaf evpl-id {
                    ext:support-filter "true";
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "EVPL ID mapped to the SID.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..32";
                    }
                    description "Locator name.";
                  }
                }  // list end-dx2
              }  // container end-dx2s
    
              container end-dx2ls {
                description
                  "List of segment routing IPv6 End.DX2L local SID list.";
                list end-dx2l {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DX2L local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DX2L SID value.";
                  }
    
                  leaf evpl-id {
                    ext:support-filter "true";
                    type uint32 {
                      range "0..4294967295";
                    }
                    description
                      "EVPL ID mapped to the SID.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..32";
                    }
                    description "Locator name.";
                  }
                }  // list end-dx2l
              }  // container end-dx2ls
    
              container end-dt4s {
                description
                  "List of segment routing IPv6 End.DT4 local SID list.";
                list end-dt4 {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DT4 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DT4 SID value.";
                  }
    
                  leaf vpn-name {
                    type string {
                      length "1..31";
                    }
                    description "VPN name.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-dt4
              }  // container end-dt4s
    
              container end-dt6s {
                description
                  "List of segment routing IPv6 End.DT6 local SID list.";
                list end-dt6 {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.DT6 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.DT6 SID value.";
                  }
    
                  leaf vpn-name {
                    type string {
                      length "1..31";
                    }
                    description "VPN name.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-dt6
              }  // container end-dt6s
    
              container end-ms {
                config false;
                description
                  "List of segment routing IPv6 End.M local SID list.";
                list end-m {
                  key "value";
                  config false;
                  description
                    "Statistics of segment routing IPv6 End.M local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    config false;
                    description
                      "End.M SID value.";
                  }
    
                  leaf flavor {
                    type string {
                      length "1..64";
                    }
                    config false;
                    description
                      "End SID flavor value.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    config false;
                    description "Locator name.";
                  }
    
                  leaf mirror-locator-number {
                    type uint32;
                    config false;
                    description
                      "Mirror locator number.";
                  }
    
                  leaf mirror-locator-set {
                    type string {
                      length "1..360";
                    }
                    config false;
                    description
                      "Mirror locator address set.";
                  }
                }  // list end-m
              }  // container end-ms
    
              container end-dx4s {
                config false;
                description
                  "List of segment routing IPv6 End.DX4 local SID list.";
                list end-dx4 {
                  key "value";
                  config false;
                  description
                    "Statistics of segment routing IPv6 End.DX4 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    config false;
                    description
                      "End.DX4 SID value.";
                  }
    
                  leaf vpn-name {
                    type string {
                      length "1..31";
                    }
                    config false;
                    description "VPN name.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    config false;
                    description "Locator name.";
                  }
    
                  leaf if-name {
                    type string {
                      length "1..32";
                    }
                    description
                      "Exit interface.";
                  }
    
                  leaf next-hop {
                    type inet:ipv4-address-no-zone;
                    description
                      "Next hop IPv4 address.";
                  }
                }  // list end-dx4
              }  // container end-dx4s
    
              container end-dx6s {
                config false;
                description
                  "List of segment routing IPv6 End.DX6 local SID list.";
                list end-dx6 {
                  key "value";
                  config false;
                  description
                    "Statistics of segment routing IPv6 End.DX6 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    config false;
                    description
                      "End.DX6 SID value.";
                  }
    
                  leaf vpn-name {
                    type string {
                      length "1..31";
                    }
                    config false;
                    description "VPN name.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    config false;
                    description "Locator name.";
                  }
    
                  leaf if-name {
                    type string {
                      length "1..32";
                    }
                    description
                      "Exit interface.";
                  }
    
                  leaf next-hop {
                    type inet:ipv6-address-no-zone;
                    description
                      "Next hop IPv6 address.";
                  }
                }  // list end-dx6
              }  // container end-dx6s
    
              container end-b6s {
                description
                  "List of segment routing IPv6 End.B6 local SID list.";
                list end-b6 {
                  key "value";
                  description
                    "Statistics of segment routing IPv6 End.B6 local SID list.";
                  leaf value {
                    type inet:ipv6-address-no-zone;
                    description
                      "End.B6 SID value.";
                  }
    
                  leaf tunnel-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description "Tunnel Id.";
                  }
    
                  leaf tunnel-type {
                    type string {
                      length "1..16";
                    }
                    description "Tunnel type.";
                  }
    
                  leaf tunnel-vrf-id {
                    type uint32 {
                      range "0..4294967295";
                    }
                    description "Tunnel VRF Id.";
                  }
    
                  leaf encapsulation-mode {
                    type encapsulation-type;
                    description
                      "Encapsulation mode.";
                  }
    
                  leaf slice-enable {
                    type boolean;
                    description
                      "Whether the slice is enabled.";
                  }
    
                  leaf locator-name {
                    type string {
                      length "1..31";
                    }
                    description "Locator name.";
                  }
                }  // list end-b6
              }  // container end-b6s
            }  // container local-sids
          }  // container srv6
        }
      }  // module huawei-srv6
    

© 2023 YumaWorks, Inc. All rights reserved.