Segment routing IPv6.
Version: 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.