huawei-routing

This YANG module defines essential components for the management of a routing subsystem.

  • Version: 2021-08-11

    huawei-routing@2021-08-11


    
      module huawei-routing {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-routing";
    
        prefix rt;
    
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-bfd {
          prefix bfd;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import huawei-routing-policy {
          prefix rtp;
        }
        import huawei-xpl {
          prefix xpl;
        }
        import huawei-tunnel-management {
          prefix tnlm;
        }
    
        include huawei-routing-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
          "This YANG module defines essential components for the management
    of a routing subsystem.";
    
        revision "2021-08-11" {
          description
            "Add grouping import-rib-policy-type routing-table etc.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-04-27" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "route-base";
    
        typedef af-type {
          type enumeration {
            enum "ipv4-unicast" {
              value 1;
              description "IPv4 unicast.";
            }
            enum "ipv6-unicast" {
              value 2;
              description "IPv6 unicast.";
            }
          }
          description
            "The type of address family.";
        }
    
        grouping import-rib-policy-type {
          description
            "Import rib policy configuration.";
          choice policy-type {
            description
              "When routes are imported from other routing protocols, the Route-Policy filter specified by the parameter can be used to filter the routes and change the route attributes.";
            case rtp-ref {
              description "Route policy.";
              leaf policy-name {
                type leafref {
                  path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                }
                description
                  "Specify an import rib route policy name.";
              }
            }  // case rtp-ref
    
            case xpl-ref {
              description "Route policy.";
              leaf filter-name {
                type leafref {
                  path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                }
                description
                  "Specify an import rib route filter name.";
              }
    
              leaf filter-parameter {
                when "../filter-name";
                type xpl:filter-parameter-type;
                description
                  "Specify an import rib route filter parameter.";
              }
            }  // case xpl-ref
          }  // choice policy-type
        }  // grouping import-rib-policy-type
    
        grouping routing-table-non-key {
          description
            "Operational data of the routing table.";
          leaf nexthop {
            type inet:ip-address-no-zone;
            description "Next hop.";
          }
    
          leaf frr-type {
            type frr-type;
            description "FRR type.";
          }
    
          leaf preference {
            type uint32 {
              range "0..255";
            }
            description
              "Priority of a route. During route selection, the route with the highest priority is selected.";
          }
    
          leaf cost {
            type uint32;
            description "Cost.";
          }
    
          leaf flag {
            type route-flag;
            description "Flag.";
          }
    
          leaf qos-id {
            type pub-type:hex-binary;
            description "QoS information.";
          }
    
          leaf active {
            type boolean;
            default "false";
            description
              "Enable/disable the flag indicating whether routes are active.";
          }
    
          leaf tag {
            type uint32;
            description "Route tag.";
          }
    
          leaf priority {
            type route-priority;
            description
              "Route convergence priority, which can be low, medium, high, or critical.";
          }
    
          leaf label {
            type uint32;
            description
              "Label that is used for traffic forwarding along a tunnel.";
          }
    
          leaf indirect-id {
            type pub-type:hex-binary;
            description "IID index of a route.";
          }
    
          leaf state {
            type route-state;
            description
              "Route states. The following route states are supported:
    Active: Indicates that a route is activated.
    Invalid: Indicates that a route is invalid.
    Inactive: Indicates that a route is inactive.
    No advertise: Indicates that route advertisement is prohibited.
    Advertise: Indicates that a route can be advertised.
    Relied: Indicates that a route can be iterated to the next hop or the outbound interface, or iterated to a tunnel.
    Stale: Indicates that routes with this tag are used in GR.";
          }
    
          leaf neighbour {
            type inet:ip-address-no-zone;
            description "Neighbor.";
          }
    
          leaf age {
            type string {
              length "0..20";
            }
            description
              "Keepalive time. The value is a string in the format of 'xdxhxmxs', for example '1d18h10m16s'.";
          }
    
          leaf relay-nexthop {
            type inet:ip-address-no-zone;
            description "Iteration next hop.";
          }
        }  // grouping routing-table-non-key
    
        grouping routing-statistics-num {
          description "Route statistics.";
          leaf total-num {
            type uint32;
            description
              "Number of routes in the routing table.";
          }
    
          leaf active-num {
            type uint32;
            description
              "Number of active routes in the routing table.";
          }
    
          leaf added-num {
            type uint32;
            description
              "Number of active and inactive routes added to the routing table.";
          }
    
          leaf deleted-num {
            type uint32;
            description
              "Number of routes deleted from the routing table.";
          }
    
          leaf freed-num {
            type uint32;
            description
              "Number of routes that are permanently released from the routing table.";
          }
        }  // grouping routing-statistics-num
    
        container routing {
          description
            "Configuration parameters for the routing module.";
          container routing-manage {
            description
              "Configure the routing management module to store and select optimal routes.";
            container relay-tunnel {
              description
                "Configure route recursion to tunnel.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable route recursion to tunnel. By default, this configuration takes effect for all routes. If an IP prefix list is configured, the configuration takes effect only for the routes that match the IP prefix list. If a tunnel policy is configured, routes carry the tunnel policy information when recursing to a tunnel.";
              }
    
              leaf ipv4-prefix-ref {
                when "../enable='true'";
                type leafref {
                  path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                }
                must "../enable='true'";
                description
                  "Name of an IPv4 prefix list.";
              }
    
              leaf tunnel-policy-ref {
                when "../enable='true'";
                type leafref {
                  path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name";
                }
                must "../enable='true'";
                description
                  "Name of a tunnel policy.";
              }
            }  // container relay-tunnel
    
            container relay-label {
              description
                "Configure route recursion to remotely leaked VPN routes globally.";
              leaf ipv4-set {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv4 unicast routes to remotely leaked VPN routes.";
              }
    
              leaf ipv6-set {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv6 unicast routes to remotely leaked VPN routes.";
              }
            }  // container relay-label
    
            container ipv4-threshold {
              must "upper-percent>lower-percent";
              description
                "Configure thresholds (one alarm threshold and one clear alarm threshold) for the number of IPv4 route prefixes.";
              leaf upper-percent {
                type uint8 {
                  range "2..100";
                }
                units "%";
                default "80";
                description
                  "Upper limit for the number of IPv4 route prefixes.";
              }
    
              leaf lower-percent {
                type uint8 {
                  range "1..99";
                }
                units "%";
                default "70";
                description
                  "Lower limit for the number of IPv4 route prefixes.";
              }
            }  // container ipv4-threshold
    
            container ipv6-threshold {
              must "upper-percent>lower-percent";
              description
                "Configure thresholds (one alarm threshold and one clear alarm threshold) for the number of IPv6 route prefixes.";
              leaf upper-percent {
                type uint8 {
                  range "2..100";
                }
                units "%";
                default "80";
                description
                  "Set the upper limit percent of the IPv6 prefix threshold.";
              }
    
              leaf lower-percent {
                type uint8 {
                  range "1..99";
                }
                units "%";
                default "70";
                description
                  "Set the lower limit percent of the IPv6 prefix threshold.";
              }
            }  // container ipv6-threshold
    
            container iterative-restrain {
              description
                "Configure suppression periods for recursion.";
              leaf enable {
                type boolean;
                default "true";
                description
                  "Enable/disable suppression on recursion.";
              }
    
              leaf start-time {
                type uint32 {
                  range "500..2000";
                }
                units "ms";
                default "500";
                description
                  "Specifies the time of the first route or tunnel iteration suppression.";
              }
    
              leaf increase-time {
                type uint32 {
                  range "1000..5000";
                }
                units "ms";
                default "1000";
                description
                  "Specifies the incremental suppression duration of route or tunnel iteration.";
              }
    
              leaf max-time {
                type uint32 {
                  range "5000..60000";
                }
                units "ms";
                default "30000";
                description
                  "Specifies the maximum suppression duration of route or tunnel iteration.";
              }
            }  // container iterative-restrain
    
            container relay-default-routes {
              description
                "List of routes that recurse to the default route globally.";
              list relay-default-route {
                key "address-family protocol-type";
                description
                  "Configure route recursion to the default route globally.";
                leaf address-family {
                  type af-type;
                  must
                    "../address-family='ipv4-unicast' or (not(../protocol-type='msr') and ../address-family='ipv6-unicast')";
                  description
                    "Set an address family.";
                }
    
                leaf protocol-type {
                  type enumeration {
                    enum "msr" {
                      value 2;
                      description
                        "MSR protocol.";
                    }
                    enum "static" {
                      value 3;
                      description
                        "Static protocol.";
                    }
                  }
                  must
                    "../protocol-type='static' or (../protocol-type='msr' and ../address-family='ipv4-unicast')";
                  description "Protocol.";
                }
              }  // list relay-default-route
            }  // container relay-default-routes
    
            container ipv4-vpn-route-statisticss {
              config false;
              description
                "List of statistics about routes of all VPN instances in the IPv4 routing table.";
              list ipv4-vpn-route-statistics {
                key "protocol-type";
                description
                  "All IPv4 VPN Instance route statistics.";
                leaf protocol-type {
                  type statistic-protocol-type;
                  description "Protocol.";
                }
    
                leaf total-num {
                  type uint32;
                  description
                    "Number of routes in the routing table.";
                }
    
                leaf active-num {
                  type uint32;
                  description
                    "Number of active routes in the routing table.";
                }
    
                leaf added-num {
                  type uint32;
                  description
                    "Number of active and inactive routes added to the routing table.";
                }
    
                leaf deleted-num {
                  type uint32;
                  description
                    "Number of routes deleted from the routing table.";
                }
    
                leaf freed-num {
                  type uint32;
                  description
                    "Number of routes that are permanently released from the routing table.";
                }
              }  // list ipv4-vpn-route-statistics
            }  // container ipv4-vpn-route-statisticss
    
            container ipv6-vpn-route-statisticss {
              config false;
              description
                "List of statistics about routes of all VPN instances in the IPv6 routing table.";
              list ipv6-vpn-route-statistics {
                key "protocol-type";
                description
                  "All IPv6 VPN Instance route statistics.";
                leaf protocol-type {
                  type ipv6-statistic-protocol-type;
                  description "Protocol.";
                }
    
                leaf total-num {
                  type uint32;
                  description
                    "Number of routes in the routing table.";
                }
    
                leaf active-num {
                  type uint32;
                  description
                    "Number of active routes in the routing table.";
                }
    
                leaf added-num {
                  type uint32;
                  description
                    "Number of active and inactive routes added to the routing table.";
                }
    
                leaf deleted-num {
                  type uint32;
                  description
                    "Number of routes deleted from the routing table.";
                }
    
                leaf freed-num {
                  type uint32;
                  description
                    "Number of routes that are permanently released from the routing table.";
                }
              }  // list ipv6-vpn-route-statistics
            }  // container ipv6-vpn-route-statisticss
    
            container unicast-route-statistics {
              config false;
              description
                "Statistics of unicast route of all VPN instances.";
              leaf ipv4-prefix-number {
                type uint32;
                description
                  "The number of IPv4 route prefixes for all VPN instances.";
              }
    
              leaf ipv6-prefix-number {
                type uint32;
                description
                  "The number of IPv6 route prefixes for all VPN instances.";
              }
            }  // container unicast-route-statistics
          }  // container routing-manage
    
          container static-routing {
            description
              "Configure a basic service package for static routes.";
            container ipv4-site {
              description
                "Configure parameters for IPv4 static routes.";
              leaf preference {
                ext:dynamic-default;
                type uint32 {
                  range "1..255";
                }
                description
                  "Default priority of IPv4 static routes. The default value can be controlled by the PAF file and varies according to hardware. To query the default value, you can perform a get operation.";
              }
    
              leaf relay-switch {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of selecting static routes based on recursion depths.";
              }
    
              leaf min-tx-interval {
                ext:dynamic-default;
                type uint32;
                units "ms";
                description
                  "Default minimum interval expected at which IPv4 BFD packets are sent to the peer end. The default value can be controlled by the PAF file and varies according to hardware.";
              }
    
              leaf min-rx-interval {
                ext:dynamic-default;
                type uint32;
                units "ms";
                description
                  "Default minimum interval expected at which IPv4 BFD packets are received from the peer end. The default value can be controlled by the PAF file and varies according to hardware.";
              }
    
              leaf multiplier {
                type uint32 {
                  range "3..50";
                }
                default "3";
                description
                  "IPv4 Local detection multiplier.";
              }
    
              leaf relay-remote {
                type boolean;
                default "true";
                description
                  "Enable/disable the function of recursing IPv4 unicast static routes to remotely leaked VPN routes.";
              }
    
              leaf relay-arp-vlink {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv4 unicast static routes to ARP Vlink routes.";
              }
    
              leaf inherit-cost-switch {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of comparing the costs of inherited routes during static route selection.";
              }
    
              leaf current-route-num {
                type uint32;
                config false;
                description
                  "Number of IPv4 static routes that have been configured.";
              }
    
              leaf max-route-num {
                type uint32;
                config false;
                description
                  "Maximum number of IPv4 static routes that can be configured.";
              }
    
              leaf relay-srv6-nexthop {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv4 unicast static routes to SRv6 routes.";
              }
            }  // container ipv4-site
    
            container ipv4-relay-tunnel {
              description
                "Configure route recursion to tunnel.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable route recursion to tunnel. By default, this configuration takes effect for all routes. If an IP prefix list is configured, the configuration takes effect only for the routes that match the IP prefix list. If a tunnel policy is configured, routes carry the tunnel policy information when recursing to a tunnel.";
              }
    
              leaf ipv4-prefix-ref {
                when "../enable='true'";
                type leafref {
                  path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                }
                description
                  "Name of an IPv4 prefix list.";
              }
    
              leaf tunnel-policy-ref {
                when "../enable='true'";
                type leafref {
                  path "/tnlm:tunnel-management/tnlm:tunnel-policys/tnlm:tunnel-policy/tnlm:name";
                }
                description
                  "Name of a tunnel policy.";
              }
            }  // container ipv4-relay-tunnel
    
            container ipv6-site {
              description
                "Configure parameters for IPv6 static routes.";
              leaf preference {
                ext:dynamic-default;
                type uint32 {
                  range "1..255";
                }
                description
                  "Default priority of IPv6 static routes. The default value can be controlled by the PAF file and varies according to hardware. To query the default value, you can perform a get operation.";
              }
    
              leaf min-tx-interval {
                ext:dynamic-default;
                type uint32;
                units "ms";
                description
                  "Default minimum interval expected at which IPv6 BFD packets are sent to the peer end. The default value can be controlled by the PAF file and varies according to hardware.";
              }
    
              leaf min-rx-interval {
                ext:dynamic-default;
                type uint32;
                units "ms";
                description
                  "Default minimum interval expected at which IPv6 BFD packets are received from the peer end. The default value can be controlled by the PAF file and varies according to hardware.";
              }
    
              leaf multiplier {
                type uint32 {
                  range "3..50";
                }
                default "3";
                description
                  "IPv6 Local detection multiplier.";
              }
    
              leaf relay-arp-vlink6 {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv6 unicast static routes to ARP Vlink routes.";
              }
    
              leaf current-route-num {
                type uint32;
                config false;
                description
                  "Number of IPv6 static routes that have been configured.";
              }
    
              leaf max-route-num {
                type uint32;
                config false;
                description
                  "Maximum number of IPv6 static routes that can be configured.";
              }
    
              leaf relay-srv6-nexthop6 {
                type boolean;
                default "false";
                description
                  "Enable/disable the function of recursing IPv6 unicast static routes to SRv6 routes.";
              }
            }  // container ipv6-site
    
            container max-route-number {
              config false;
              description
                "Statistics of static routes that can be configured, including IPv4 routes and IPv6 routes.";
              leaf num {
                type uint32;
                description
                  "Maximum number of IPv4 and IPv6 static routes that can be configured.";
              }
            }  // container max-route-number
    
            container bfd-admindowns {
              description
                "List of BFD sessions. A static route cannot be selected if the BFD session associated with it is in the AdminDown state.";
              list bfd-admindown {
                key "address-family session-name";
                description
                  "Configure BFD session. A static route cannot be selected if the BFD session associated with it is in the AdminDown state.";
                leaf address-family {
                  type af-type;
                  description
                    "Set an address family.";
                }
    
                leaf session-name {
                  type leafref {
                    path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                  }
                  description
                    "Set a BFD session.";
                }
              }  // list bfd-admindown
            }  // container bfd-admindowns
          }  // container static-routing
        }  // container routing
    
        rpc reset-all-route-statistics {
          ext:node-ref "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:routes/rt:ipv4-route-statistics/rt:ipv4-route-statistic";
          ext:node-ref "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:routes/rt:ipv6-route-statistics/rt:ipv6-route-statistic";
          description
            "Clear statistics about added, deleted, and released routes of each routing protocol in the IPv4 or IPv6 routing table.";
          input {
            leaf address-family {
              type af-type;
              mandatory true;
              description
                "Set an address family.";
            }
    
            leaf protocol-type {
              type statistic-protocol-type;
              mandatory true;
              description
                "Specify a routing protocol type.";
            }
          }
        }  // rpc reset-all-route-statistics
    
        rpc reset-all-vpn-route-statistics {
          ext:node-ref "/rt:routing/rt:routing-manage/rt:ipv4-vpn-route-statisticss/rt:ipv4-vpn-route-statistics";
          ext:node-ref "/rt:routing/rt:routing-manage/rt:ipv6-vpn-route-statisticss/rt:ipv6-vpn-route-statistics";
          description
            "Clear statistics about added, deleted, and released routes of each routing protocol in the IPv4 or IPv6 routing tables of all VPN instances.";
          input {
            leaf address-family {
              type af-type;
              mandatory true;
              description
                "Set an address family.";
            }
    
            leaf protocol-type {
              type statistic-protocol-type;
              mandatory true;
              description
                "Specify a routing protocol type.";
            }
          }
        }  // rpc reset-all-vpn-route-statistics
    
        rpc reset-route-statistics {
          ext:node-ref "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:routes/rt:ipv4-route-statistics/rt:ipv4-route-statistic";
          ext:node-ref "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:routes/rt:ipv6-route-statistics/rt:ipv6-route-statistic";
          description
            "Clear statistics about added, deleted, and released routes of each routing protocol in the IPv4 or IPv6 routing table.";
          input {
            leaf address-family {
              type af-type;
              mandatory true;
              description
                "Set an address family.";
            }
    
            leaf vpn-instance-name {
              type leafref {
                path "/ni:network-instance/ni:instances/ni:instance/ni:name";
              }
              mandatory true;
              description
                "Name of the VPN instance.";
            }
    
            leaf protocol-type {
              type statistic-protocol-type;
              mandatory true;
              description
                "Specify a routing protocol type.";
            }
          }
        }  // rpc reset-route-statistics
    
        rpc static-unicast-route-number {
          description
            "Query the number of static routes for a specified VPN instance.";
          input {
            leaf vpn-instance-name {
              type string {
                length "1..31";
              }
              mandatory true;
              description
                "Name of the VPN to which a prefix belongs.";
            }
    
            leaf address-family {
              type af-type;
              mandatory true;
              description
                "Types of the VPN address families.";
            }
    
            leaf prefix {
              type inet:ip-address-no-zone;
              description
                "Destination IP address.";
            }
    
            leaf mask-length {
              type uint8 {
                range "0..128";
              }
              description
                "Mask length of an IP address.";
            }
          }
    
          output {
            leaf route-number {
              type uint32;
              description
                "Number of static routes in the static routing table.";
            }
          }
        }  // rpc static-unicast-route-number
    
        rpc ipv4-unicast-route-number {
          description
            "Query the number of IPv4 routes for a specified VPN instance.";
          input {
            leaf vpn-instance-name {
              type string {
                length "1..31";
              }
              mandatory true;
              description
                "Name of the VPN to which a prefix belongs.";
            }
    
            choice filter-type {
              description
                "Filter routing options.";
              case prefix-mask {
                description
                  "Filter routes by prefix.";
                leaf prefix {
                  type inet:ip-address-no-zone;
                  description
                    "Destination IP address.";
                }
    
                leaf mask-length {
                  type uint8 {
                    range "0..32";
                  }
                  description
                    "Mask length of an IP address.";
                }
              }  // case prefix-mask
    
              case protocol {
                description
                  "Filter routing by protocol type.";
                leaf protocol-type {
                  type protocol-type;
                  description "Protocol type.";
                }
              }  // case protocol
            }  // choice filter-type
          }
    
          output {
            leaf route-number {
              type uint32;
              description
                "The number of IPv4 routes for a VPN instance.";
            }
          }
        }  // rpc ipv4-unicast-route-number
    
        rpc ipv6-unicast-route-number {
          description
            "Query the number of IPv6 routes for a specified VPN instance.";
          input {
            leaf vpn-instance-name {
              type string {
                length "1..31";
              }
              mandatory true;
              description
                "Name of the VPN to which a prefix belongs.";
            }
    
            choice filter-type {
              description "Filter routing type.";
              case prefix-mask {
                description
                  "Filter routes by prefix.";
                leaf prefix {
                  type inet:ip-address-no-zone;
                  description
                    "Destination IP address.";
                }
    
                leaf mask-length {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "Mask length of an IP address.";
                }
              }  // case prefix-mask
    
              case protocol {
                description
                  "Filter routing by protocol type.";
                leaf protocol-type {
                  type ipv6-protocol-type;
                  description "Protocol type.";
                }
              }  // case protocol
            }  // choice filter-type
          }
    
          output {
            leaf route-number {
              type uint32;
              description
                "The number of IPv6 routes for a VPN instance.";
            }
          }
        }  // rpc ipv6-unicast-route-number
    
        augment /ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af {
          description
            "Augment the huawei-network-instance model to add routing specific configuration.";
          container routing {
            description
              "Configure routing management.";
            container routing-manage {
              description
                "Configure a basic service package for routing management.";
              container option {
                description
                  "Configure routing management options.";
                leaf frr-enable {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable inter-protocol FRR. In the case where primary and secondary links are created between different protocols, if the primary link is faulty, services can be quickly switched to the secondary link.";
                }
    
                leaf prefix-limit-number {
                  type uint32 {
                    range "1..4294967295";
                  }
                  must
                    "../prefix-simply-alert or ../prefix-alert-percent or not(../prefix-limit-number)";
                  description
                    "Maximum number of prefixes supported by a VPN instance.";
                }
    
                choice prefix-alert-type {
                  description
                    "Set prefix limit.";
                  case percent {
                    description "Percent.";
                    leaf prefix-alert-percent {
                      when
                        "../prefix-limit-number";
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      description
                        "Percentage of the maximum number of route prefixes. When the maximum number of route prefixes in a VPN instance reaches the value obtained through the formula (number * alert-percent)/100, the system generates an alarm. In this case, subsequent VPN routes can still be added to the routing table of the VPN instance. After the number of route prefixes reaches the specified number, the subsequent routes are discarded.";
                    }
    
                    leaf route-unchanged {
                      when
                        "../prefix-limit-number and ../prefix-alert-percent";
                      type empty;
                      description
                        "When the alert-percent parameter is specified and the number of routes in the routing table reaches the upper limit and then a smaller upper limit is specified. There are the following results:
    If route-unchanged is specified, the routes in the routing table remain unchanged;
    if route-unchanged is not specified, all routes in the routing table are deleted, and routes are re-added.";
                    }
                  }  // case percent
    
                  case alert {
                    description "Alert.";
                    leaf prefix-simply-alert {
                      when
                        "../prefix-limit-number";
                      type empty;
                      description
                        "When the number of VPN route prefixes exceeds the specified number, subsequent VPN routes can still be added to the routing table of the VPN instance and the system only generates an alarm. After the total number of VPN route prefixes and public network route prefixes reaches the limit on the total number of unicast routes specified in the license, the subsequent VPN routes are discarded.";
                    }
                  }  // case alert
                }  // choice prefix-alert-type
    
                leaf route-limit-number {
                  when
                    "../../../../../../ni:name!='_public_'";
                  type uint32 {
                    range "1..4294967295";
                  }
                  must
                    "../route-alert-percent or ../route-simply-alert or not(../route-limit-number)";
                  description
                    "Maximum number of routes supported by a VPN instance.";
                }
    
                choice route-alert-type {
                  description
                    "Set routing-table limit.";
                  case percent {
                    description "Percent.";
                    leaf route-alert-percent {
                      when
                        "../route-limit-number";
                      type uint32 {
                        range "1..100";
                      }
                      units "%";
                      description
                        "Percentage of the maximum number of routes. When the maximum number of routes in a VPN instance reaches the value obtained through the formula (number * alert-percent)/100, the system generates an alarm. In this case, subsequent VPN routes can still be added to the routing table of the VPN instance. After the number of routes reaches the specified number, the subsequent routes are discarded.";
                    }
                  }  // case percent
    
                  case alert {
                    description "Alert.";
                    leaf route-simply-alert {
                      when
                        "../route-limit-number";
                      type empty;
                      description
                        "When the number of VPN routes exceeds the specified number, subsequent VPN routes can still be added to the routing table of the VPN instance and the system only generates an alarm. After the total number of VPN routes and public network routes reaches the limit on the total number of unicast routes specified in the license, the subsequent VPN routes are discarded.";
                    }
                  }  // case alert
                }  // choice route-alert-type
              }  // container option
    
              container topologys {
                description
                  "List of topology instances.";
                list topology {
                  ext:generated-by "system" {
                    ext:filter "name = 'base'";
                    description "The base topology are generated automatically when the address families of the vpn instance is created.";
                  }
                  key "name";
                  max-elements 32;
                  description
                    "Configure a topology instance. Different logical topologies can be planned on a physical network for different services.";
                  leaf name {
                    type string {
                      length "1..31";
                    }
                    must
                      "../../../../../../../ni:name='_public_' or ../name='base'";
                    description
                      "Topology name. The base topology cannot be created or deleted. The letters in the topology name should be lowercase.";
                  }
    
                  container routes {
                    config false;
                    description
                      "Operational data of a routing table.";
                    container ipv4-unicast-routes {
                      description
                        "List of routing entries in the basic IPv4 routing table.";
                      list ipv4-unicast-route {
                        key "prefix mask-length protocol-type interface-name process-id direct-nexthop";
                        description
                          "Operational data of the IPv4 routing table.";
                        leaf prefix {
                          type inet:ip-address-no-zone;
                          description
                            "Destination IP address.";
                        }
    
                        leaf mask-length {
                          type uint8 {
                            range "0..32";
                          }
                          description
                            "Mask length of an IP address.";
                        }
    
                        leaf protocol-type {
                          type protocol-type;
                          description
                            "Protocol type.";
                        }
    
                        leaf interface-name {
                          type string {
                            length "1..63";
                          }
                          description
                            "Outbound interface whose next hop is reachable.
    1.If a VPN instance is specified for the outbound interface of routes, the VPN instance name is displayed in this field.
    2.If a tunnel is specified for the outbound interface of routes, the tunnel name or tunnel outbound interface is displayed in this field.
    3.If a physical interface is specified as the outbound interface of routes, the physical interface name is displayed in this field.
    4.Under conditions other than the preceding ones, this field is displayed as --.";
                        }
    
                        leaf process-id {
                          type uint32;
                          description
                            "Process ID.";
                        }
    
                        leaf direct-nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Direct next hop.";
                        }
    
                        leaf nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Next hop.";
                        }
    
                        leaf frr-type {
                          type frr-type;
                          description
                            "FRR type.";
                        }
    
                        leaf preference {
                          type uint32 {
                            range "0..255";
                          }
                          description
                            "Priority of a route. During route selection, the route with the highest priority is selected.";
                        }
    
                        leaf cost {
                          type uint32;
                          description "Cost.";
                        }
    
                        leaf flag {
                          type route-flag;
                          description "Flag.";
                        }
    
                        leaf qos-id {
                          type pub-type:hex-binary;
                          description
                            "QoS information.";
                        }
    
                        leaf active {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable the flag indicating whether routes are active.";
                        }
    
                        leaf tag {
                          type uint32;
                          description
                            "Route tag.";
                        }
    
                        leaf priority {
                          type route-priority;
                          description
                            "Route convergence priority, which can be low, medium, high, or critical.";
                        }
    
                        leaf label {
                          type uint32;
                          description
                            "Label that is used for traffic forwarding along a tunnel.";
                        }
    
                        leaf indirect-id {
                          type pub-type:hex-binary;
                          description
                            "IID index of a route.";
                        }
    
                        leaf state {
                          type route-state;
                          description
                            "Route states. The following route states are supported:
    Active: Indicates that a route is activated.
    Invalid: Indicates that a route is invalid.
    Inactive: Indicates that a route is inactive.
    No advertise: Indicates that route advertisement is prohibited.
    Advertise: Indicates that a route can be advertised.
    Relied: Indicates that a route can be iterated to the next hop or the outbound interface, or iterated to a tunnel.
    Stale: Indicates that routes with this tag are used in GR.";
                        }
    
                        leaf neighbour {
                          type inet:ip-address-no-zone;
                          description
                            "Neighbor.";
                        }
    
                        leaf age {
                          type string {
                            length "0..20";
                          }
                          description
                            "Keepalive time. The value is a string in the format of 'xdxhxmxs', for example '1d18h10m16s'.";
                        }
    
                        leaf sub-protocol-type {
                          type sub-protocol-type;
                          description
                            "Sub protocol type.";
                        }
    
                        leaf tunnel-type {
                          type tnlm:tunnel-type;
                          description
                            "Tunnel type.";
                        }
    
                        leaf tunnel-id {
                          type string {
                            length "1..21";
                          }
                          description
                            "Tunnel ID.";
                        }
    
                        leaf nexthop-vrf-name {
                          type string {
                            length "1..31";
                          }
                          description
                            "Nexthop VPN instance name.";
                        }
    
                        leaf relay-nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Iteration next hop.";
                        }
    
                        leaf route-color {
                          type uint32;
                          description
                            "Route color.";
                        }
    
                        choice tunnel-types {
                          description
                            "Tunnel type.";
                          case mpls-tunnel {
                            description
                              "MPLS tunnel information.";
                            leaf out-label {
                              type uint32;
                              description
                                "Outbound label that is used for traffic forwarding along a tunnel.";
                            }
    
                            leaf label-stack {
                              type string {
                                length "0..120";
                              }
                              description
                                "Label Stack that is used for traffic forwarding along a tunnel.";
                            }
                          }  // case mpls-tunnel
    
                          case sr-policy {
                            description
                              "SR-MPLS TE Policy tunnel information.";
                            leaf group-id {
                              type uint32;
                              description
                                "Index of an SR-MPLS TE Policy group.";
                            }
    
                            leaf endpoint {
                              type inet:ip-address-no-zone;
                              description
                                "Destination address of an SR-MPLS TE Policy.";
                            }
    
                            leaf color {
                              type uint32;
                              description
                                "Color of an SR-MPLS TE Policy.";
                            }
    
                            leaf policy-name {
                              type string {
                                length "0..31";
                              }
                              description
                                "Policy Name of an SR-MPLS TE Policy.";
                            }
                          }  // case sr-policy
    
                          case vxlan {
                            description
                              "VXLAN tunnel information.";
                            leaf vni {
                              type uint32;
                              description
                                "VXLAN network identifier.";
                            }
    
                            leaf gateway {
                              type inet:ip-address-no-zone;
                              description
                                "Gateway IP address.";
                            }
                          }  // case vxlan
                        }  // choice tunnel-types
                      }  // list ipv4-unicast-route
                    }  // container ipv4-unicast-routes
    
                    container ipv6-unicast-routes {
                      description
                        "List of routing entries in the basic IPv6 routing table.";
                      list ipv6-unicast-route {
                        key "prefix mask-length protocol-type interface-name process-id direct-nexthop";
                        description
                          "Operational data of the IPv6 routing table.";
                        leaf prefix {
                          type inet:ip-address-no-zone;
                          description
                            "Destination IP address.";
                        }
    
                        leaf mask-length {
                          type uint8 {
                            range "0..128";
                          }
                          description
                            "Mask length of an IP address.";
                        }
    
                        leaf protocol-type {
                          type ipv6-protocol-type;
                          description
                            "Protocol type.";
                        }
    
                        leaf interface-name {
                          type string {
                            length "1..63";
                          }
                          description
                            "Outbound interface whose next hop is reachable.
    1.If a VPN instance is specified for the outbound interface of routes, the VPN instance name is displayed in this field.
    2.If a tunnel is specified for the outbound interface of routes, the tunnel name or tunnel outbound interface is displayed in this field.
    3.If a physical interface is specified as the outbound interface of routes, the physical interface name is displayed in this field.
    4.Under conditions other than the preceding ones, this field is displayed as --.";
                        }
    
                        leaf process-id {
                          type uint32;
                          description
                            "Process ID.";
                        }
    
                        leaf direct-nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Direct next hop.";
                        }
    
                        leaf nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Next hop.";
                        }
    
                        leaf frr-type {
                          type frr-type;
                          description
                            "FRR type.";
                        }
    
                        leaf preference {
                          type uint32 {
                            range "0..255";
                          }
                          description
                            "Priority of a route. During route selection, the route with the highest priority is selected.";
                        }
    
                        leaf cost {
                          type uint32;
                          description "Cost.";
                        }
    
                        leaf flag {
                          type route-flag;
                          description "Flag.";
                        }
    
                        leaf qos-id {
                          type pub-type:hex-binary;
                          description
                            "QoS information.";
                        }
    
                        leaf active {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable the flag indicating whether routes are active.";
                        }
    
                        leaf tag {
                          type uint32;
                          description
                            "Route tag.";
                        }
    
                        leaf priority {
                          type route-priority;
                          description
                            "Route convergence priority, which can be low, medium, high, or critical.";
                        }
    
                        leaf label {
                          type uint32;
                          description
                            "Label that is used for traffic forwarding along a tunnel.";
                        }
    
                        leaf indirect-id {
                          type pub-type:hex-binary;
                          description
                            "IID index of a route.";
                        }
    
                        leaf state {
                          type route-state;
                          description
                            "Route states. The following route states are supported:
    Active: Indicates that a route is activated.
    Invalid: Indicates that a route is invalid.
    Inactive: Indicates that a route is inactive.
    No advertise: Indicates that route advertisement is prohibited.
    Advertise: Indicates that a route can be advertised.
    Relied: Indicates that a route can be iterated to the next hop or the outbound interface, or iterated to a tunnel.
    Stale: Indicates that routes with this tag are used in GR.";
                        }
    
                        leaf neighbour {
                          type inet:ip-address-no-zone;
                          description
                            "Neighbor.";
                        }
    
                        leaf age {
                          type string {
                            length "0..20";
                          }
                          description
                            "Keepalive time. The value is a string in the format of 'xdxhxmxs', for example '1d18h10m16s'.";
                        }
    
                        leaf sub-protocol-type {
                          type sub-protocol-type;
                          description
                            "Sub protocol type.";
                        }
    
                        leaf tunnel-type {
                          type tnlm:tunnel-type;
                          description
                            "Tunnel type.";
                        }
    
                        leaf tunnel-id {
                          type string {
                            length "1..21";
                          }
                          description
                            "Tunnel ID.";
                        }
    
                        leaf nexthop-vrf-name {
                          type string {
                            length "1..31";
                          }
                          description
                            "Nexthop VPN instance name.";
                        }
    
                        leaf relay-nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Iteration next hop.";
                        }
    
                        leaf route-color {
                          type uint32;
                          description
                            "Route color.";
                        }
    
                        choice tunnel-types {
                          description
                            "Tunnel type.";
                          case vxlan {
                            description
                              "VXLAN tunnel information.";
                            leaf vni {
                              type uint32;
                              description
                                "VXLAN network identifier.";
                            }
    
                            leaf gateway {
                              type inet:ip-address-no-zone;
                              description
                                "Gateway IP address.";
                            }
                          }  // case vxlan
                        }  // choice tunnel-types
                      }  // list ipv6-unicast-route
                    }  // container ipv6-unicast-routes
    
                    container ipv4-route-statistics {
                      description
                        "List of route statistics in the basic IPv4 routing table.";
                      list ipv4-route-statistic {
                        key "protocol-type";
                        description
                          "Route statistics.";
                        leaf protocol-type {
                          type statistic-protocol-type;
                          description
                            "Route protocol.";
                        }
    
                        uses routing-statistics-num;
                      }  // list ipv4-route-statistic
                    }  // container ipv4-route-statistics
    
                    container ipv6-route-statistics {
                      description
                        "List of route statistics in the basic IPv6 routing table.";
                      list ipv6-route-statistic {
                        key "protocol-type";
                        description
                          "Route statistics.";
                        leaf protocol-type {
                          type ipv6-statistic-protocol-type;
                          description
                            "Route protocol.";
                        }
    
                        uses routing-statistics-num;
                      }  // list ipv6-route-statistic
                    }  // container ipv6-route-statistics
    
                    container ipv4-localmt-routes {
                      description
                        "List of routing entries in the IPv4 Local MT routing table.";
                      list ipv4-localmt-route {
                        key "prefix mask-length protocol-type interface-name process-id direct-nexthop";
                        description
                          "Operational data of the IPv4 Local MT routing table.";
                        leaf prefix {
                          type inet:ip-address-no-zone;
                          description
                            "Destination IP address.";
                        }
    
                        leaf mask-length {
                          type uint8 {
                            range "0..32";
                          }
                          description
                            "Mask length of an IP address.";
                        }
    
                        leaf protocol-type {
                          type protocol-type;
                          description
                            "Protocol type.";
                        }
    
                        leaf interface-name {
                          type string {
                            length "1..63";
                          }
                          description
                            "Outbound interface whose next hop is reachable.
    1.If a VPN instance is specified for the outbound interface of routes, the VPN instance name is displayed in this field.
    2.If a tunnel is specified for the outbound interface of routes, the tunnel name or tunnel outbound interface is displayed in this field.
    3.If a physical interface is specified as the outbound interface of routes, the physical interface name is displayed in this field.
    4.Under conditions other than the preceding ones, this field is displayed as --.";
                        }
    
                        leaf process-id {
                          type uint32;
                          description
                            "Process ID.";
                        }
    
                        leaf direct-nexthop {
                          type inet:ip-address-no-zone;
                          description
                            "Direct next hop.";
                        }
    
                        uses routing-table-non-key;
                      }  // list ipv4-localmt-route
                    }  // container ipv4-localmt-routes
    
                    container ipv4-prefix-statistics {
                      config false;
                      description
                        "Statistics of IPv4 route prefixes of a specified VPN instance.";
                      leaf unicast-route {
                        type uint32;
                        description
                          "The number of unicast route prefixes for a specified VPN instance.";
                      }
                    }  // container ipv4-prefix-statistics
    
                    container ipv6-prefix-statistics {
                      config false;
                      description
                        "Statistics of IPv6 route prefixes of a specified VPN instance.";
                      leaf unicast-route {
                        type uint32;
                        description
                          "The number of unicast route prefixes for a specified VPN instance.";
                      }
                    }  // container ipv6-prefix-statistics
                  }  // container routes
                }  // list topology
              }  // container topologys
            }  // container routing-manage
    
            container direct-routing {
              description
                "Configure a direct route.";
              container import-ribs {
                description
                  "List of routes imported from a VPN instance into the public network routing table.";
                list import-rib {
                  key "source-vpn";
                  description
                    "Configure the import of routes from a VPN instance into the public network routing table.";
                  leaf source-vpn {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    must
                      "../../../../../../../ni:name != current()";
                    must
                      "/ni:network-instance/ni:instances/ni:instance[ni:name = current()]/l3vpn:afs/l3vpn:af[l3vpn:type = current()/../../../../../l3vpn:type]";
                    description
                      "VPN instance name. It uniquely identifies a VPN instance. The name is a string of case-sensitive characters.";
                  }
    
                  uses import-rib-policy-type;
                }  // list import-rib
              }  // container import-ribs
    
              container interfaces {
                description
                  "List of configure direct route attributes on the interface.";
                list interface {
                  must
                    "cost or degrade-cost or binding-topologys";
                  key "name";
                  description
                    "Configure direct route attributes on the interface.";
                  leaf name {
                    type leafref {
                      path
                        "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Name of an interface.";
                  }
    
                  leaf cost {
                    when
                      "(../../../../../l3vpn:type='ipv4-unicast' and (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='VBridge' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Remote-Ap')) or ((/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Global-VE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Virtual-Ethernet') and /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:class='sub-interface')";
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Cost configured for direct routes on a specified interface.";
                  }
    
                  leaf degrade-cost {
                    when
                      "(../../../../../l3vpn:type='ipv4-unicast' and (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Tunnel'))";
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Specifies the cost for IPv4 direct routes on a specified IPsec tunnel interface.";
                  }
    
                  container binding-topologys {
                    when
                      "../../../../../../../ni:name='_public_' and (/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:class='sub-interface' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Serial' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='100GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='10GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='25GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='40GE' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Eth-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='GigabitEthernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Ip-Trunk' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='LoopBack' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Mp-group' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../rt:name]/ifm:type='Pos')";
                    description
                      "List of Interface binding topology.";
                    list binding-topology {
                      key "topology-name";
                      description
                        "Configure interface bound to a topology. To add direct routes or IS-IS routes to the multiple-topology network, the interfaces of the direct routes or IS-IS routes must be bound to specified topology instances. By default, interfaces are bound to only base topology instances and cannot be unbound or re-bound. One interface can be bound to multiple topology instances, and multiple interfaces can be bound to one topology instance.";
                      leaf topology-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:name";
                        }
                        description
                          "Name of the topology to which an interface is bound. Topologies must have been created before the interfaces of direct routes or IS-IS routes are bound to the topologies.";
                      }
                    }  // list binding-topology
                  }  // container binding-topologys
                }  // list interface
              }  // container interfaces
            }  // container direct-routing
    
            container static-routing {
              description
                "Configure a basic service package for static routes.";
              container import-ribs {
                description
                  "List of routes imported from a VPN instance into the public network routing table.";
                list import-rib {
                  key "source-vpn";
                  description
                    "Configure the import of routes from a VPN instance into the public network routing table.";
                  leaf source-vpn {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    must
                      "../../../../../../../ni:name != current()";
                    must
                      "/ni:network-instance/ni:instances/ni:instance[ni:name = current()]/l3vpn:afs/l3vpn:af[l3vpn:type = current()/../../../../../l3vpn:type]";
                    description
                      "VPN instance name. It uniquely identifies a VPN instance. The name is a string of case-sensitive characters.";
                  }
    
                  leaf valid-route {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable the function of importing only the valid routes of a specified route type.";
                  }
    
                  uses import-rib-policy-type;
                }  // list import-rib
              }  // container import-ribs
    
              container unicast-routes {
                status deprecated;
                description
                  "List of configured static routes. The node unicast-routes is deprecated. You are advised to use the node unicast-route2s.";
                list unicast-route {
                  key "topology-name prefix mask-length interface-name vpn-destination-name next-hop";
                  status deprecated;
                  description
                    "Configure static routes. Static routes can be configured on a network with a simple topology to ensure normal running of the network, and can be configured when a router cannot run dynamic routing protocols or cannot generate routes to destination networks. Reasonable configuration of static routes can improve network performance and ensure bandwidths for important services.";
                  leaf topology-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:name";
                    }
                    must
                      "../vpn-destination-name='_public_' or ../topology-name='base'";
                    status deprecated;
                    description
                      "Name of the specified topology.";
                  }
    
                  leaf prefix {
                    type inet:ip-address-no-zone;
                    status deprecated;
                    description
                      "Destination IP address.";
                  }
    
                  leaf mask-length {
                    type uint8 {
                      range "0..128";
                    }
                    status deprecated;
                    description
                      "Mask length of an IP address.";
                  }
    
                  leaf interface-name {
                    type string {
                      length "0..63";
                    }
                    status deprecated;
                    description
                      "Transmission interface of a route.";
                  }
    
                  leaf vpn-destination-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    must
                      "../topology-name='base' or ../vpn-destination-name='_public_'";
                    status deprecated;
                    description
                      "Name of the destination VPN instance.";
                  }
    
                  leaf next-hop {
                    type inet:ip-address-no-zone;
                    status deprecated;
                    description
                      "Next hop IP address of a route.";
                  }
    
                  leaf preference {
                    ext:dynamic-default;
                    type int32 {
                      range "1..255";
                    }
                    status deprecated;
                    description
                      "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                  }
    
                  leaf description {
                    type string {
                      length "1..150";
                    }
                    status deprecated;
                    description
                      "Description of a static route.";
                  }
    
                  leaf tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    status deprecated;
                    description
                      "Tag of a static route.";
                  }
    
                  leaf cost {
                    when "../interface-name";
                    type uint32 {
                      range "1..4294967295";
                    }
                    must "../ldp-sync='false'";
                    status deprecated;
                    description
                      "Cost of static route.";
                  }
    
                  leaf inherit-cost {
                    type boolean;
                    must
                      "(../interface-name='' and ../next-hop!='0.0.0.0') or ../inherit-cost='false'";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of allowing a static route to inherit the cost of a recursive route. The cost of the static route changes according to the cost of the recursive route.";
                  }
    
                  leaf permanent {
                    type boolean;
                    must
                      "(((../../../../../l3vpn:type='ipv4-unicast' and ../next-hop!='0.0.0.0') or (../../../../../l3vpn:type='ipv6-unicast' and ../next-hop!='::')) and ../topology-name='base') or ../permanent='false'";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable permanent advertisement of a static route.";
                  }
    
                  leaf no-advertise {
                    type boolean;
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of preventing a static route from being advertised.";
                  }
    
                  leaf no-install {
                    type boolean;
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                  }
    
                  leaf relay-host-route {
                    type boolean;
                    must
                      "(../interface-name='' and ../next-hop!='0.0.0.0') or ../relay-host-route='false'";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of recursing a static route to a host route.";
                  }
    
                  leaf dhcp-enable {
                    type boolean;
                    must
                      "(../interface-name!='' and ../next-hop='0.0.0.0' and ../ldp-sync='false') or ../dhcp-enable='false'";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of associating a static route with DHCP.";
                  }
    
                  leaf ldp-sync {
                    type boolean;
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the synchronization between LDP and a static route.";
                  }
    
                  leaf inter-protocol-ecmp {
                    type boolean;
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable inter-protocol load balancing among a static route and the routes of dynamic routing protocols.";
                  }
    
                  leaf bfd-enable {
                    type boolean;
                    must
                      "../bfd-enable='false' or (../permanent='false' and ../inherit-cost='false' and ../topology-name='base')";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable the function of binding a dynamic BFD session to a static route. Dynamic BFD sessions can quickly detect link changes for static routes, which improves network reliability. Precaution: When enabling BFD for a single static route, you need to check whether BFD parameters are set for the static route.";
                  }
    
                  leaf relay-arp-vlink-route {
                    when
                      "../relay-host-route='true'";
                    type boolean;
                    must
                      "../../../../../l3vpn:type='ipv4-unicast'";
                    default "false";
                    status deprecated;
                    description
                      "Enable/disable static routes to be iterated only to ARP Vlink routes.";
                  }
    
                  choice track-setting {
                    status deprecated;
                    description "Track set.";
                    case bfd {
                      status deprecated;
                      description "Track BFD.";
                      leaf session-name {
                        type leafref {
                          path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                        }
                        must
                          "(../permanent='false' and ../inherit-cost='false' and ../topology-name='base') or not(../session-name)";
                        status deprecated;
                        description
                          "Bind a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                      }
                    }  // case bfd
    
                    case efm {
                      status deprecated;
                      description "Track EFM.";
                      leaf name {
                        type leafref {
                          path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                        }
                        must
                          "../../../../../l3vpn:type='ipv4-unicast' and ../next-hop!='0.0.0.0' and ../inherit-cost='false' and ../permanent='false' and ../topology-name='base'";
                        status deprecated;
                        description
                          "Track EFM Interface Name.";
                      }
                    }  // case efm
                  }  // choice track-setting
                }  // list unicast-route
              }  // container unicast-routes
    
              container unicast-route2s {
                description
                  "List of configured static routes.";
                list unicast-route2 {
                  key "topology-name prefix mask-length";
                  description
                    "Configure static routes. Static routes can be configured on a network with a simple topology to ensure normal running of the network, and can be configured when a router cannot run dynamic routing protocols or cannot generate routes to destination networks. Reasonable configuration of static routes can improve network performance and ensure bandwidths for important services.";
                  leaf topology-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:name";
                    }
                    must
                      "(../../../../../../../ni:name='_public_' or ../topology-name='base') and (count(../nexthop-interfaces/nexthop-interface)> 0 or count(../nexthop-interface-addresses/nexthop-interface-address)> 0 or count(../nexthop-addresses/nexthop-address)> 0 or count(../nexthop-sdwans/nexthop-sdwan)> 0 or count(../nexthop-vrf-addresses/nexthop-vrf-address)> 0 or count(../nexthop-vrf-sdwans/nexthop-vrf-sdwan)> 0 or count(../nexthop-vrf-onlys/nexthop-vrf-only)> 0)";
                    description
                      "Name of the specified topology.";
                  }
    
                  leaf prefix {
                    type inet:ip-address-no-zone;
                    description
                      "Destination IP address.";
                  }
    
                  leaf mask-length {
                    type uint8 {
                      range "0..128";
                    }
                    description
                      "Mask length of an IP address.";
                  }
    
                  container nexthop-interfaces {
                    description
                      "List of outbound interfaces.";
                    list nexthop-interface {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "interface-name";
                      description
                        "Configure outbound interfaces.";
                      leaf interface-name {
                        type string {
                          length "0..63";
                        }
                        must
                          "../interface-name!=''";
                        description
                          "Configure outbound interface of the route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf cost {
                        type uint32 {
                          range "1..4294967295";
                        }
                        must
                          "../ldp-sync='false'";
                        description
                          "Cost of static route.";
                      }
    
                      leaf permanent {
                        type boolean;
                        must
                          "../../../topology-name='base' or ../permanent='false'";
                        default "false";
                        description
                          "Enable/disable permanent advertisement of a static route.";
                      }
    
                      leaf no-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being advertised.";
                      }
    
                      leaf no-install {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                      }
    
                      leaf dhcp-enable {
                        type boolean;
                        must
                          "../ldp-sync='false' or ../dhcp-enable='false'";
                        default "false";
                        description
                          "Enable/disable the function of associating a static route with DHCP.";
                      }
    
                      leaf ldp-sync {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the synchronization between LDP and a static route.";
                      }
    
                      leaf inter-protocol-ecmp {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable inter-protocol load balancing among a static route and the routes of dynamic routing protocols.";
                      }
    
                      choice track-setting {
                        description "Track set.";
                        case bfd-session {
                          description
                            "Track BFD session.";
                          leaf bfd-session-name {
                            type leafref {
                              path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                            }
                            must
                              "(../permanent='false' and ../../../topology-name='base') or not(../bfd-session-name)";
                            description
                              "Bind a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                          }
                        }  // case bfd-session
    
                        case bfd-enable {
                          description
                            "Track dynamic BFD.";
                          leaf bfd-enable {
                            type boolean;
                            must
                              "(../permanent='false' and ../../../topology-name='base' and ../dhcp-enable='true') and ../bfd-enable='true'";
                            description
                              "Enable/disable the function of binding a dynamic BFD session to a static route. Dynamic BFD sessions can quickly detect link changes for static routes, which improves network reliability. Precaution: When enabling BFD for a single static route, you need to check whether BFD parameters are set for the static route.";
                          }
                        }  // case bfd-enable
    
                        case efm {
                          description
                            "Track EFM.";
                          leaf efm-interface-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "(../../../../../../../l3vpn:type='ipv4-unicast' and ../permanent='false' and ../../../topology-name='base') or not(../efm-interface-name)";
                            description
                              "Track EFM Interface Name.";
                          }
                        }  // case efm
                      }  // choice track-setting
                    }  // list nexthop-interface
                  }  // container nexthop-interfaces
    
                  container nexthop-interface-addresses {
                    description
                      "List of outbound interfaces and next hops.";
                    list nexthop-interface-address {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "interface-name address";
                      description
                        "Configure outbound interfaces and next hops.";
                      leaf interface-name {
                        type string {
                          length "0..63";
                        }
                        must
                          "../interface-name!=''";
                        description
                          "Configure outbound interface of the route.";
                      }
    
                      leaf address {
                        type inet:ip-address-no-zone;
                        must
                          "not(../address='0.0.0.0')";
                        description
                          "Next hop IP address of a route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf cost {
                        type uint32 {
                          range "1..4294967295";
                        }
                        must
                          "../ldp-sync='false'";
                        description
                          "Cost of static route.";
                      }
    
                      leaf permanent {
                        type boolean;
                        must
                          "../../../topology-name='base' or ../permanent='false'";
                        default "false";
                        description
                          "Enable/disable permanent advertisement of a static route.";
                      }
    
                      leaf no-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being advertised.";
                      }
    
                      leaf no-install {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                      }
    
                      leaf ldp-sync {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the synchronization between LDP and a static route.";
                      }
    
                      leaf inter-protocol-ecmp {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable inter-protocol load balancing among a static route and the routes of dynamic routing protocols.";
                      }
    
                      choice track-setting {
                        description "Track set.";
                        case bfd-session {
                          description
                            "Track BFD.";
                          leaf bfd-session-name {
                            type leafref {
                              path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                            }
                            must
                              "(../permanent='false' and ../../../topology-name='base') or not(../bfd-session-name)";
                            description
                              "Bind a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                          }
                        }  // case bfd-session
    
                        case bfd-enable {
                          description
                            "Track dynamic BFD.";
                          leaf bfd-enable {
                            type boolean;
                            must
                              "(../permanent='false' and ../../../topology-name='base') and ../bfd-enable='true'";
                            description
                              "Enable/disable the function of binding a dynamic BFD session to a static route. Dynamic BFD sessions can quickly detect link changes for static routes, which improves network reliability. Precaution: When enabling BFD for a single static route, you need to check whether BFD parameters are set for the static route.";
                          }
                        }  // case bfd-enable
    
                        case efm {
                          description
                            "Track EFM.";
                          leaf efm-interface-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "(../../../../../../../l3vpn:type='ipv4-unicast' and ../permanent='false' and ../../../topology-name='base') or not(../efm-interface-name)";
                            description
                              "Track EFM Interface Name.";
                          }
                        }  // case efm
                      }  // choice track-setting
                    }  // list nexthop-interface-address
                  }  // container nexthop-interface-addresses
    
                  container nexthop-addresses {
                    description
                      "List of next hops.";
                    list nexthop-address {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "address";
                      description
                        "Configure next hops.";
                      leaf address {
                        type inet:ip-address-no-zone;
                        must
                          "not(../address='0.0.0.0')";
                        description
                          "Next hop IP address of a route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf inherit-cost {
                        type boolean;
                        must
                          "../permanent='false' or ../inherit-cost='false'";
                        default "false";
                        description
                          "Enable/disable the function of allowing a static route to inherit the cost of a recursive route. The cost of the static route changes according to the cost of the recursive route.";
                      }
    
                      leaf permanent {
                        type boolean;
                        must
                          "../../../topology-name='base' or ../permanent='false'";
                        default "false";
                        description
                          "Enable/disable permanent advertisement of a static route.";
                      }
    
                      leaf no-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being advertised.";
                      }
    
                      leaf no-install {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                      }
    
                      leaf relay-host-route {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of recursing a static route to a host route.";
                      }
    
                      leaf inter-protocol-ecmp {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable inter-protocol load balancing among a static route and the routes of dynamic routing protocols.";
                      }
    
                      leaf relay-arp-vlink-route {
                        when
                          "../relay-host-route='true'";
                        type boolean;
                        must
                          "../../../../../../../l3vpn:type='ipv4-unicast'";
                        default "false";
                        description
                          "Enable/disable static routes to be iterated only to ARP Vlink routes.";
                      }
    
                      choice track-setting {
                        description "Track set.";
                        case bfd-session {
                          description
                            "Track BFD.";
                          leaf bfd-session-name {
                            type leafref {
                              path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                            }
                            must
                              "(../permanent='false' and ../inherit-cost='false' and ../../../topology-name='base') or not(../bfd-session-name)";
                            description
                              "Bind a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                          }
                        }  // case bfd-session
    
                        case bfd-enable {
                          description
                            "Track dynamic BFD.";
                          leaf bfd-enable {
                            type boolean;
                            must
                              "(../permanent='false' and ../inherit-cost='false' and ../../../topology-name='base') and ../bfd-enable='true'";
                            description
                              "Enable/disable the function of binding a dynamic BFD session to a static route. Dynamic BFD sessions can quickly detect link changes for static routes, which improves network reliability. Precaution: When enabling BFD for a single static route, you need to check whether BFD parameters are set for the static route.";
                          }
                        }  // case bfd-enable
    
                        case efm {
                          description
                            "Track EFM.";
                          leaf efm-interface-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "(../../../../../../../l3vpn:type='ipv4-unicast' and ../inherit-cost='false' and ../permanent='false' and ../../../topology-name='base') or not(../efm-interface-name)";
                            description
                              "Track EFM Interface Name.";
                          }
                        }  // case efm
                      }  // choice track-setting
                    }  // list nexthop-address
                  }  // container nexthop-addresses
    
                  container nexthop-sdwans {
                    when
                      "(../../../../../../../ni:name='_public_' and ../../../../../l3vpn:type='ipv4-unicast') and ../topology-name='base'";
                    description
                      "List of SD-WAN next hops.";
                    list nexthop-sdwan {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "color";
                      description
                        "Configure SD-WAN next hops.";
                      leaf color {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Color of a static route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
                    }  // list nexthop-sdwan
                  }  // container nexthop-sdwans
    
                  container nexthop-vrf-addresses {
                    when
                      "../topology-name='base'";
                    description
                      "List of inter-VPN next hops.";
                    list nexthop-vrf-address {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "vpn-destination-name address";
                      description
                        "Configure Inter-VPN next hops.";
                      leaf vpn-destination-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        must
                          "../../../../../../../../../ni:name!=current()";
                        description
                          "Name of the destination VPN instance.";
                      }
    
                      leaf address {
                        type inet:ip-address-no-zone;
                        must
                          "not(../address='0.0.0.0')";
                        description
                          "Next hop IP address of a route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf inherit-cost {
                        type boolean;
                        must
                          "../permanent='false' or ../inherit-cost='false'";
                        default "false";
                        description
                          "Enable/disable the function of allowing a static route to inherit the cost of a recursive route. The cost of the static route changes according to the cost of the recursive route.";
                      }
    
                      leaf permanent {
                        type boolean;
                        must
                          "../../../topology-name='base' or ../permanent='false'";
                        default "false";
                        description
                          "Enable/disable permanent advertisement of a static route.";
                      }
    
                      leaf no-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being advertised.";
                      }
    
                      leaf no-install {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                      }
    
                      leaf relay-host-route {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of recursing a static route to a host route.";
                      }
    
                      leaf inter-protocol-ecmp {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable inter-protocol load balancing among a static route and the routes of dynamic routing protocols.";
                      }
    
                      leaf relay-arp-vlink-route {
                        when
                          "../relay-host-route='true'";
                        type boolean;
                        must
                          "../../../../../../../l3vpn:type='ipv4-unicast'";
                        default "false";
                        description
                          "Enable/disable static routes to be iterated only to ARP Vlink routes.";
                      }
    
                      choice track-setting {
                        description "Track set.";
                        case bfd-session {
                          description
                            "Track BFD.";
                          leaf bfd-session-name {
                            type leafref {
                              path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                            }
                            must
                              "(../permanent='false' and ../inherit-cost='false' and ../../../topology-name='base') or not(../bfd-session-name)";
                            description
                              "Bind a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                          }
                        }  // case bfd-session
    
                        case bfd-enable {
                          description
                            "Track dynamic BFD.";
                          leaf bfd-enable {
                            type boolean;
                            must
                              "(../permanent='false' and ../inherit-cost='false' and ../../../topology-name='base') and ../bfd-enable='true'";
                            description
                              "Enable/disable the function of binding a dynamic BFD session to a static route. Dynamic BFD sessions can quickly detect link changes for static routes, which improves network reliability. Precaution: When enabling BFD for a single static route, you need to check whether BFD parameters are set for the static route.";
                          }
                        }  // case bfd-enable
    
                        case efm {
                          description
                            "Track EFM.";
                          leaf efm-interface-name {
                            type leafref {
                              path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                            }
                            must
                              "(../../../../../../../l3vpn:type='ipv4-unicast' and ../inherit-cost='false' and ../permanent='false' and ../../../topology-name='base') or not(../efm-interface-name)";
                            description
                              "Track EFM Interface Name.";
                          }
                        }  // case efm
                      }  // choice track-setting
                    }  // list nexthop-vrf-address
                  }  // container nexthop-vrf-addresses
    
                  container nexthop-vrf-sdwans {
                    when
                      "../../../../../l3vpn:type='ipv4-unicast' and ../topology-name='base'";
                    description
                      "List of inter-VPN SD-WAN next hops.";
                    list nexthop-vrf-sdwan {
                      must
                        "not(../../nexthop-vrf-onlys/nexthop-vrf-only)";
                      key "vpn-destination-name color";
                      description
                        "Configure Inter-VPN SD-WAN next hops.";
                      leaf vpn-destination-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        must
                          "../../../../../../../../../ni:name!=current() and ../vpn-destination-name='_public_'";
                        description
                          "Name of the destination VPN instance.";
                      }
    
                      leaf color {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Color of a static route.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf vn-id {
                        type uint32 {
                          range "1..16777215";
                        }
                        mandatory true;
                        description
                          "Virtual network ID of a static route.";
                      }
                    }  // list nexthop-vrf-sdwan
                  }  // container nexthop-vrf-sdwans
    
                  container nexthop-vrf-onlys {
                    when
                      "../topology-name='base'";
                    description
                      "List of VPN instances as next hops.";
                    list nexthop-vrf-only {
                      key "vpn-destination-name";
                      description
                        "Configure VPN instances as next hops.";
                      leaf vpn-destination-name {
                        type leafref {
                          path
                            "/ni:network-instance/ni:instances/ni:instance/ni:name";
                        }
                        must
                          "../../../../../../../../../ni:name!=current()";
                        description
                          "Name of the destination VPN instance.";
                      }
    
                      leaf preference {
                        ext:dynamic-default;
                        type int32 {
                          range "1..255";
                        }
                        description
                          "Priority of a static route. If the parameter is not configured, the global default value is used.
    To change the global default priority of IPv4 static routes, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 static routes, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:preference object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                      }
    
                      leaf description {
                        type string {
                          length "1..150";
                        }
                        description
                          "Description of a static route.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Tag of a static route.";
                      }
    
                      leaf no-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being advertised.";
                      }
    
                      leaf no-install {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the function of preventing a static route from being delivered to the FIB.";
                      }
                    }  // list nexthop-vrf-only
                  }  // container nexthop-vrf-onlys
                }  // list unicast-route2
              }  // container unicast-route2s
    
              container ipv4-multicast-routes {
                when
                  "../../../l3vpn:type='ipv4-unicast'";
                description
                  "List of multicast static routes.";
                list ipv4-multicast-route {
                  key "prefix mask-length next-hop interface-name";
                  description
                    "Configure a multicast static route. The RPF check is performed based on multicast static routes. An RPF interface and an RPF neighbor can be specified for a packet source on the local device by configuring a multicast static route. Multicast static routes can provide two functions in different scenarios:
    1. Changing an RPF route: When the multicast topology is the same as the unicast topology on a network, the paths for transmitting multicast data are consistent with that for transmitting unicast data. The RPF route can be configured as a multicast route to work as a transmission path different from unicast transmission paths.
    2. Connecting an RPF route: This method is used on a network where unicast routes are blocked, no multicast static route is configured, and therefore no RFP route can be used to forward packets. An RPF multicast static route can be configured after an RPF check, and then can be used to forward packets.";
                  leaf prefix {
                    type inet:ipv4-address-no-zone;
                    description
                      "Destination IP address.";
                  }
    
                  leaf mask-length {
                    type uint8 {
                      range "0..32";
                    }
                    description
                      "Mask length of the destination IP address.";
                  }
    
                  leaf next-hop {
                    type inet:ipv4-address-no-zone;
                    description
                      "Next hop IP address of a route.";
                  }
    
                  leaf interface-name {
                    type string {
                      length "0..63";
                    }
                    must
                      "(../interface-name!='' and ../next-hop='0.0.0.0') or (not(../next-hop='0.0.0.0') and ../interface-name='')";
                    description
                      "Transmission interface of a route.";
                  }
    
                  leaf preference {
                    type uint32 {
                      range "1..255";
                    }
                    default "1";
                    description
                      "Priority of a route.";
                  }
    
                  leaf interface-state {
                    type string {
                      length "1..8";
                    }
                    config false;
                    description
                      "Interface status.";
                  }
    
                  leaf bfd-detect {
                    type string {
                      length "1..36";
                    }
                    config false;
                    description
                      "Establishment status of a BFD session:
    Disable: indicates that the BFD session is not enabled.
    Up: indicates that the BFD session is established successfully.
    Down: indicates that the BFD session fails to be established.";
                  }
    
                  leaf state {
                    type string {
                      length "1..20";
                    }
                    config false;
                    description
                      "Route selection result:
    Active Primary: indicates an active primary route.
    Active Backup: indicates an active backup route.
    Inactive Valid: indicates a route that takes part in the route selection but is not preferred.
    Inactive Invalid: indicates a route that cannot take part in the route selection.";
                  }
    
                  leaf indirect-id {
                    type pub-type:hex-binary;
                    config false;
                    description
                      "Keyword of indirect next hop.";
                  }
    
                  leaf local-address {
                    type inet:ip-address-no-zone;
                    config false;
                    description
                      "IP address of the local interface. If no IP address is configured for the local interface, this item is displayed as 0.0.0.0.";
                  }
    
                  leaf remote-ip {
                    type inet:ip-address-no-zone;
                    config false;
                    description
                      "IP address of the remote P2P interface. If no IP address is configured for the remote P2P interface, this item is displayed as 0.0.0.0.";
                  }
    
                  leaf relay-nexthop {
                    type inet:ip-address-no-zone;
                    config false;
                    description
                      "Next hop address to which a static route is iterated. If the static route is iterated to a tunnel, this item is displayed as 0.0.0.0.";
                  }
    
                  leaf relay-interface {
                    type string {
                      length "0..63";
                    }
                    config false;
                    description
                      "Name of an iteration outbound interface. If the static route is iterated to a tunnel, this item is displayed as a tunnel name.";
                  }
    
                  leaf tunnel-id {
                    type string {
                      length "1..21";
                    }
                    config false;
                    description
                      "ID of a tunnel.";
                  }
                }  // list ipv4-multicast-route
              }  // container ipv4-multicast-routes
    
              container bfd-templates {
                description
                  "List of parameters configured in a BFD template.";
                list bfd-template {
                  key "interface-name nexthop";
                  description
                    "Configure a dynamic BFD template and related parameters for static routes. When configuring dynamic BFD for a single static route, check whether a BFD template has been configured for the static route. If the BFD template is not configured, dynamic BFD for the static route fails to be enabled. You can search for the corresponding BFD template based on the static route's outbound interface, next hop, and VPN instance to which the next hop belongs.";
                  leaf interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "Transmission interface of a route. When configured on a private network, the private network bound to the interface must be consistent with it.";
                  }
    
                  leaf nexthop {
                    type inet:ip-address-no-zone;
                    description
                      "Next hop address.";
                  }
    
                  leaf local-address {
                    type inet:ip-address-no-zone;
                    must
                      "(../local-address!='0.0.0.0') or not(../interface-name='')";
                    default "0.0.0.0";
                    description "Local address.";
                  }
    
                  leaf min-tx-interval {
                    ext:dynamic-default;
                    type uint32 {
                      range "3..4294967295";
                    }
                    units "ms";
                    description
                      "Minimum interval at which BFD packets are sent to the peer end. If no minimum interval is specified, the global default minimum value is used.
    To change the global default priority of IPv4 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:min-tx-interval object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:min-tx-interval object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                  }
    
                  leaf min-rx-interval {
                    ext:dynamic-default;
                    type uint32 {
                      range "3..4294967295";
                    }
                    units "ms";
                    description
                      "Minimum interval at which BFD packets are received from the peer end. If no minimum interval is specified, the global default value is used.
    To change the global default priority of IPv4 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:min-rx-interval object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:min-rx-interval object or the PAF file. The global default priority varies according to hardware. To query the default value, you can perform a get operation.";
                  }
    
                  leaf multiplier {
                    ext:dynamic-default;
                    type uint32 {
                      range "3..50";
                    }
                    description
                      "Local detection multiplier. If no detection multiplier is specified locally, the global default value is used.
    To change the global default priority of IPv4 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv4-site/rt:multiplier object. To query the default value, you can perform a get operation.
    To change the global default priority of IPv6 BFD templates, use the /rt:routing/rt:static-routing/rt:ipv6-site/rt:multiplier object. To query the default value, you can perform a get operation.";
                  }
    
                  leaf dhcp-enable {
                    type boolean;
                    must
                      "(../../../../../l3vpn:type='ipv4-unicast' and ../interface-name!='' and ../nexthop='0.0.0.0' and ../dhcp-enable='true') or ../dhcp-enable='false'";
                    default "false";
                    description
                      "Enable/disable the function of associating static routes with DHCP.";
                  }
                }  // list bfd-template
              }  // container bfd-templates
    
              container route-frr-set {
                description "Configure FRR.";
                leaf unicast-route-frr-enable {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable FRR. Before configuring FRR for VPN static routes, you need to configure VPN instances.";
                }
    
                leaf multicast-route-frr-enable {
                  when
                    "../../../../l3vpn:type='ipv4-unicast'";
                  type boolean;
                  default "false";
                  description
                    "Enable/disable FRR. Before configuring FRR for multicast VPN static routes, you need to configure VPN instances.";
                }
              }  // container route-frr-set
    
              container ipv4-routes {
                config false;
                description
                  "List of static routes.";
                list ipv4-route {
                  key "topology-name prefix mask-length interface-name vpn-destination-name next-hop relay-next-hop relay-interface-name tunnel-id color";
                  description
                    "Operational state of the IPv4 static routing table.";
                  leaf topology-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:name";
                    }
                    description
                      "Name of the specified topology.";
                  }
    
                  leaf prefix {
                    type inet:ip-address-no-zone;
                    description
                      "Destination IP address.";
                  }
    
                  leaf mask-length {
                    type uint8 {
                      range "0..128";
                    }
                    description
                      "Mask length of an IP address.";
                  }
    
                  leaf interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "Transmission interface of a route.";
                  }
    
                  leaf vpn-destination-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    description
                      "Name of the destination VPN instance.";
                  }
    
                  leaf next-hop {
                    type inet:ip-address-no-zone;
                    description
                      "Next-hop IP address of a route.";
                  }
    
                  leaf relay-next-hop {
                    type inet:ip-address-no-zone;
                    description
                      "Next hop address to which a static route is iterated. If the static route is iterated to a tunnel, this item is displayed as 0.0.0.0.";
                  }
    
                  leaf relay-interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "Name of an iteration outbound interface. If the static route is iterated to a tunnel, this item is displayed as a tunnel name.";
                  }
    
                  leaf tunnel-id {
                    type string {
                      length "1..21";
                    }
                    description
                      "ID of a tunnel.";
                  }
    
                  leaf color {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Color of static route.";
                  }
    
                  leaf preference {
                    type uint32 {
                      range "1..255";
                    }
                    description
                      "Priority of a static routing protocol. If no priority is specified for the protocol, the global default priority is used.";
                  }
    
                  leaf cost {
                    type uint32;
                    description
                      "Cost of static route.";
                  }
    
                  leaf tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Tag of a static route.";
                  }
    
                  leaf interface-state {
                    type string {
                      length "1..8";
                    }
                    description
                      "Interface status.";
                  }
    
                  leaf state {
                    type string {
                      length "1..25";
                    }
                    description
                      "Route selection result:
    Active Primary: indicates an active primary route.
    Active Backup: indicates an active backup route.
    Inactive Valid: indicates a route that takes part in the route selection but is not preferred.
    Inactive Invalid: indicates a route that cannot take part in the route selection.";
                  }
    
                  leaf indirect-id {
                    type pub-type:hex-binary;
                    description
                      "Keyword of indirect next hop.";
                  }
    
                  leaf local-address {
                    type inet:ip-address-no-zone;
                    description
                      "IP address of the local interface.";
                  }
    
                  leaf remote-ip {
                    type inet:ip-address-no-zone;
                    description
                      "IP address of the remote P2P interface.";
                  }
    
                  leaf inherit-cost {
                    type boolean;
                    description
                      "The cost value of the static route will change according to the iterative route cost value.";
                  }
    
                  leaf label {
                    type uint32;
                    description "Label.";
                  }
    
                  leaf permanent {
                    type boolean;
                    description
                      "Static route permanent advertisement status.";
                  }
    
                  leaf no-advertise {
                    type boolean;
                    description
                      "No advertise the static route.";
                  }
    
                  leaf no-install {
                    type boolean;
                    description
                      "No install the static route.";
                  }
    
                  leaf bfd-type {
                    type string {
                      length "0..15";
                    }
                    description
                      "Type of BFD enabled for the static route.";
                  }
    
                  leaf bfd-session-name {
                    type leafref {
                      path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                    }
                    description
                      "Binds a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                  }
    
                  leaf bfd-detect {
                    type string {
                      length "1..36";
                    }
                    description
                      "Establishment status of a BFD session:
    Disable: indicates that the BFD session is not enabled.
    Up: indicates that the BFD session is established successfully.
    Down: indicates that the BFD session fails to be established.";
                  }
    
                  leaf efm-interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "EFM interface name.";
                  }
    
                  leaf efm-detect {
                    type string {
                      length "1..8";
                    }
                    description
                      "Detection status of EFM:
    Disable: indicates that the EFM detection is not enabled.
    Up: indicates the EFM detection succeeds.
    Down: indicates the EFM detection fails.
    UNKNOWN: indicates the detection status of the EFM test instance is no result.";
                  }
    
                  leaf nqa-detect {
                    type string {
                      length "1..8";
                    }
                    description
                      "Detection status of an NQA test instance:
    Disable: indicates that the NQA test instance is not enabled.
    Up: indicates the detection of the NQA test instance succeeds.
    Down: indicates the detection of the NQA test instance fails.
    UNKNOWN: indicates the detection status of the NQA test instance is no result.";
                  }
                }  // list ipv4-route
              }  // container ipv4-routes
    
              container ipv6-routes {
                config false;
                description
                  "List of static routes.";
                list ipv6-route {
                  key "topology-name prefix mask-length interface-name vpn-destination-name next-hop relay-next-hop relay-interface-name tunnel-id";
                  description
                    "Operational state of the IPv6 static routing table.";
                  leaf topology-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af/rt:routing/rt:routing-manage/rt:topologys/rt:topology/rt:name";
                    }
                    description
                      "Name of the specified topology.";
                  }
    
                  leaf prefix {
                    type inet:ip-address-no-zone;
                    description
                      "Destination IP address.";
                  }
    
                  leaf mask-length {
                    type uint8 {
                      range "0..128";
                    }
                    description
                      "Mask length of an IP address.";
                  }
    
                  leaf interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "Transmission interface of a route.";
                  }
    
                  leaf vpn-destination-name {
                    type leafref {
                      path
                        "/ni:network-instance/ni:instances/ni:instance/ni:name";
                    }
                    description
                      "Name of the destination VPN instance.";
                  }
    
                  leaf next-hop {
                    type inet:ip-address-no-zone;
                    description
                      "Next-hop IP address of a route.";
                  }
    
                  leaf relay-next-hop {
                    type inet:ip-address-no-zone;
                    description
                      "Next hop address to which a static route is iterated. If the static route is iterated to a tunnel, this item is displayed as 0.0.0.0.";
                  }
    
                  leaf relay-interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "Name of an iteration outbound interface. If the static route is iterated to a tunnel, this item is displayed as a tunnel name.";
                  }
    
                  leaf tunnel-id {
                    type string {
                      length "1..21";
                    }
                    description
                      "ID of a tunnel.";
                  }
    
                  leaf preference {
                    type uint32 {
                      range "1..255";
                    }
                    description
                      "Priority of a static routing protocol. If no priority is specified for the protocol, the global default priority is used.";
                  }
    
                  leaf cost {
                    type uint32;
                    description
                      "Cost of static route.";
                  }
    
                  leaf tag {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Tag of a static route.";
                  }
    
                  leaf interface-state {
                    type string {
                      length "1..8";
                    }
                    description
                      "Interface status.";
                  }
    
                  leaf state {
                    type string {
                      length "1..25";
                    }
                    description
                      "Route selection result:
    Active Primary: indicates an active primary route.
    Active Backup: indicates an active backup route.
    Inactive Valid: indicates a route that takes part in the route selection but is not preferred.
    Inactive Invalid: indicates a route that cannot take part in the route selection.";
                  }
    
                  leaf indirect-id {
                    type pub-type:hex-binary;
                    description
                      "Keyword of indirect next hop.";
                  }
    
                  leaf local-address {
                    type inet:ip-address-no-zone;
                    description
                      "IP address of the local interface.";
                  }
    
                  leaf remote-ip {
                    type inet:ip-address-no-zone;
                    description
                      "IP address of the remote P2P interface.";
                  }
    
                  leaf inherit-cost {
                    type boolean;
                    description
                      "The cost value of the static route will change according to the iterative route cost value.";
                  }
    
                  leaf label {
                    type uint32;
                    description "Label.";
                  }
    
                  leaf permanent {
                    type boolean;
                    description
                      "Static route permanent advertisement status.";
                  }
    
                  leaf no-advertise {
                    type boolean;
                    description
                      "No advertise the static route.";
                  }
    
                  leaf no-install {
                    type boolean;
                    description
                      "No install the static route.";
                  }
    
                  leaf bfd-type {
                    type string {
                      length "0..15";
                    }
                    description
                      "Type of BFD enabled for the static route.";
                  }
    
                  leaf bfd-session-name {
                    type leafref {
                      path "/bfd:bfd/bfd:sessions/bfd:session/bfd:name";
                    }
                    description
                      "Binds a static BFD session to a static route. The static BFD session can detect the session link status and quickly detect link status changes, which improves network reliability.";
                  }
    
                  leaf bfd-detect {
                    type string {
                      length "1..36";
                    }
                    description
                      "Establishment status of a BFD session:
    Disable: indicates that the BFD session is not enabled.
    Up: indicates that the BFD session is established successfully.
    Down: indicates that the BFD session fails to be established.";
                  }
    
                  leaf efm-interface-name {
                    type string {
                      length "0..63";
                    }
                    description
                      "EFM interface name.";
                  }
    
                  leaf efm-detect {
                    type string {
                      length "1..8";
                    }
                    description
                      "Detection status of EFM:
    Disable: indicates that the EFM detection is not enabled.
    Up: indicates the EFM detection succeeds.
    Down: indicates the EFM detection fails.
    UNKNOWN: indicates the detection status of the EFM test instance is no result.";
                  }
    
                  leaf nqa-detect {
                    type string {
                      length "1..8";
                    }
                    description
                      "Detection status of an NQA test instance:
    Disable: indicates that the NQA test instance is not enabled.
    Up: indicates the detection of the NQA test instance succeeds.
    Down: indicates the detection of the NQA test instance fails.
    UNKNOWN: indicates the detection status of the NQA test instance is no result.";
                  }
                }  // list ipv6-route
              }  // container ipv6-routes
            }  // container static-routing
          }  // container routing
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface {
          description "Interface.";
          container routing {
            description
              "Configure parameters for the route management module.";
            container static-routing {
              description
                "Configure parameters for the static route module.";
              container ldp-sync {
                presence
                  "Configure the interval for waiting for the establishment of an LDP session when the static route is inactive.";
                description
                  "Configure the interval for waiting for the establishment of an LDP session when the static route is inactive.";
                choice set-timer {
                  mandatory true;
                  description
                    "Set the interval for waiting for the establishment of an LDP session when the static route is inactive.";
                  case hold-down-times {
                    description
                      "Set the interval for waiting for the establishment of an LDP session when the static route is inactive.";
                    leaf hold-down-time {
                      type uint32 {
                        range "0..65535";
                      }
                      units "s";
                      description
                        "Set the interval for waiting for the establishment of an LDP session when the static route is inactive.";
                    }
                  }  // case hold-down-times
    
                  case infinite {
                    description
                      "Enable/disable the function of ensuring that the timer never expires.";
                    leaf infinite-enable {
                      type empty;
                      description
                        "Enable/disable the function of ensuring that the timer never expires. With this function enabled, static routes become active only when an LDP session is established.";
                    }
                  }  // case infinite
                }  // choice set-timer
              }  // container ldp-sync
            }  // container static-routing
          }  // container routing
        }
      }  // module huawei-routing
    

© 2023 YumaWorks, Inc. All rights reserved.