huawei-ospfv2

OSPFv2.

  • Version: 2020-07-03

    huawei-ospfv2@2020-07-03


    
      module huawei-ospfv2 {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-ospfv2";
    
        prefix ospfv2;
    
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import huawei-routing-policy {
          prefix rtp;
        }
        import huawei-acl {
          prefix acl;
        }
        import huawei-xpl {
          prefix xpl;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import huawei-extension {
          prefix ext;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        include huawei-ospfv2-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 "OSPFv2.";
    
        revision "2020-07-03" {
          description
            "Modify the must statement.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-07-01" {
          description
            "Add keychain-name pattern lower-only.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-28" {
          description
            "Add cost-binding and case.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-04" {
          description "Modify the description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-03" {
          description "Modify the description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-27" {
          description
            "Modify session-car and case.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-04" {
          description
            "Add session-car and case.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-26" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-20" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-16" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-22" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-15" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-10-22" {
          description
            "Reconstructing Yang file by yin mechanism.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-04-04" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "ospf";
    
        grouping policy-type {
          description
            "Type of a filtering rule. The available options are ACL Name or ACL Number or IP Prefix List or Route policy.";
          choice policy-type {
            mandatory true;
            description
              "Type of a filtering rule.";
            case basic-acl {
              description
                "Apply basic ACL Name or ACL Number.";
              leaf name-or-num {
                type leafref {
                  path "/acl:acl/acl:groups/acl:group/acl:identity";
                }
                must
                  "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                description
                  "Apply basic ACL Name or ACL Number.";
              }
            }  // case basic-acl
    
            case ip-prefix {
              description
                "Set the name of an IP prefix list.";
              leaf ip-prefix {
                type leafref {
                  path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                }
                description
                  "Set the name of an IP prefix list.";
              }
            }  // case ip-prefix
    
            case route-policy {
              description
                "Set a route policy name.";
              leaf route-policy {
                type leafref {
                  path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                }
                description
                  "Set a route policy name.";
              }
            }  // case route-policy
    
            case route-filter {
              description
                "Set a route filter name.";
              leaf route-filter {
                type leafref {
                  path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                }
                description
                  "Set a route filter name.";
              }
            }  // case route-filter
          }  // choice policy-type
        }  // grouping policy-type
    
        container ospfv2 {
          description "Configure OSPFv2 config.";
          container check-rt-id {
            description
              "Configure automatic modification of conflicted router IDs. If enable, check and resolve OSPF router ID conflict.";
            leaf conflict-flag {
              type boolean;
              default "true";
              description
                "Enable/disable automatic modification of conflicted router IDs. If enable, check and resolve OSPF router ID conflict.";
            }
          }  // container check-rt-id
    
          container advertise-max-cost {
            description
              "Configure OSPF LSA advertise max cost globally.";
            leaf enable {
              type boolean;
              default "false";
              description
                "Enable/disable OSPF LSAs to advertise max cost globally.";
            }
          }  // container advertise-max-cost
    
          container session-car {
            must 'pir-interval>=cir-interval';
            must 'pbs-interval>=cbs-interval';
            description
              "Configure OSPF Session CAR.";
            leaf enable {
              type boolean;
              default "true";
              description
                "Enable/disable OSPF Session CAR.";
            }
    
            leaf cir-interval {
              type uint32 {
                range "0..1000000";
              }
              units "kbit/s";
              default "8";
              description
                "Specify the Session CAR CIR interval.";
            }
    
            leaf cbs-interval {
              type uint32 {
                range "0..1000000";
              }
              units "Byte";
              default "100000";
              description
                "Specify the Session CAR CBS interval.";
            }
    
            leaf pir-interval {
              type uint32 {
                range "0..1000000";
              }
              units "kbit/s";
              default "16000";
              description
                "Specify the Session CAR PIR interval.";
            }
    
            leaf pbs-interval {
              type uint32 {
                range "0..10000000";
              }
              units "Byte";
              default "9000000";
              description
                "Specify the Session CAR PBS interval.";
            }
          }  // container session-car
    
          container micro-isolation-car {
            must 'pir>=cir';
            must 'pbs>=cbs';
            description
              "Configure OSPF Micro Isolation CAR.";
            leaf enable {
              type boolean;
              default "true";
              description
                "Enable/disable OSPF Micro Isolation CAR.";
            }
    
            leaf cir {
              type uint32 {
                range "0..1000000";
              }
              units "kbit/s";
              default "8";
              description
                "Specify the Micro Isolation CAR CIR interval.";
            }
    
            leaf cbs {
              type uint32 {
                range "0..1000000";
              }
              units "Byte";
              default "100000";
              description
                "Specify the Micro Isolation CAR CBS interval.";
            }
    
            leaf pir {
              type uint32 {
                range "0..1000000";
              }
              units "kbit/s";
              default "16000";
              description
                "Specify the Micro Isolation CAR PIR interval.";
            }
    
            leaf pbs {
              type uint32 {
                range "0..10000000";
              }
              units "Byte";
              default "9000000";
              description
                "Specify the Micro Isolation CAR PBS interval.";
            }
          }  // container micro-isolation-car
    
          container maxage-lsa-protect {
            description
              "Configure auto protect of purge LSA error for OSPF.";
            leaf disable {
              type boolean;
              default "false";
              description
                "Enable/disable auto protect of purge LSA error for OSPF.";
            }
          }  // container maxage-lsa-protect
    
          container suppress-flap-intf {
            description
              "Configure OSPF suppress flapping interface.";
            leaf disable {
              type boolean;
              default "false";
              description
                "Enable/disable cancel the current setting or default setting.";
            }
          }  // container suppress-flap-intf
    
          container mib-binding {
            description
              "Configure MIB binding an OSPF process.";
            leaf process-id {
              type leafref {
                path "/ni:network-instance/ni:instances/ni:instance/ospfv2:ospfv2/ospfv2:sites/ospfv2:site/ospfv2:process-id";
              }
              description "Process ID.";
            }
          }  // container mib-binding
    
          container flush-source-trace {
            description
              "Configure OSPF flush source trace globally.";
            leaf enable {
              type boolean;
              default "true";
              description
                "Enable/disable OSPF flush source trace globally.";
            }
    
            leaf vlink-enable {
              type boolean;
              default "true";
              description
                "Enable/disable OSPF vlink flush source trace globally.";
            }
    
            leaf port {
              type uint16 {
                range "1025..65535";
              }
              default "50122";
              description
                "Set OSPF flush source trace port allocated by huawei-pp4.The related CLI is 'display ip port info | inc UDP'.";
            }
    
            leaf vlink-port {
              type uint16 {
                range "1025..65535";
              }
              default "50123";
              description
                "Set OSPF vlink flush source trace port allocated by huawei-pp4.The related CLI is 'display ip port info | inc UDP'.";
            }
          }  // container flush-source-trace
    
          container system-control {
            description
              "Configure memory overload control and CPU overload control.";
            leaf cpu-overload-ctrl-enable {
              type boolean;
              default "true";
              description
                "Enable/disable CPU overload control.";
            }
    
            leaf mem-overload-ctrl-enable {
              type boolean;
              default "true";
              description
                "Enable/disable memory overload control.";
            }
          }  // container system-control
    
          container route-loop-detect {
            description
              "Configure OSPF import route loop detect.";
            leaf enable {
              type boolean;
              default "true";
              description
                "Enable/disable OSPF import route loop detect.";
            }
          }  // container route-loop-detect
    
          container global-state {
            config false;
            description
              "Statistics of OSPFv2 global status.";
            leaf dcn-link-cnt {
              type uint32 {
                range "1..4294967295";
              }
              description "Number of dcn links.";
            }
          }  // container global-state
        }  // container ospfv2
    
        rpc reset-redistribution {
          description "To re-import routes.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
          }
        }  // rpc reset-redistribution
    
        rpc reset-counter {
          description "To clear the counter.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
    
            leaf router-id {
              type inet:ipv4-address-no-zone;
              description "Neighbor router ID.";
            }
    
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
          }
        }  // rpc reset-counter
    
        rpc reset-process {
          description
            "To restart an OSPF process.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
          }
        }  // rpc reset-process
    
        rpc reset-peer {
          description
            "To re-establish a neighbor.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
    
            leaf router-id {
              type inet:ipv4-address-no-zone;
              description "Neighbor router ID.";
            }
    
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
          }
        }  // rpc reset-peer
    
        rpc reset-spf {
          description "To restart SPF.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
          }
        }  // rpc reset-spf
    
        rpc reset-frr {
          description "Restart FRR.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
          }
        }  // rpc reset-frr
    
        rpc reset-suppress-peer {
          description
            "Restart OSPF peer flapping suppress.";
          input {
            leaf process-id {
              type uint32 {
                range "1..4294967295";
              }
              description "Process ID.";
            }
    
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
    
            leaf notify-peer-flag {
              type boolean;
              default "false";
              description
                "Enable/disable notification neighbor quit peer flapping suppress flag.";
            }
          }
        }  // rpc reset-suppress-peer
    
        rpc clear-loop-detect {
          description
            "Clear OSPF import route loop detect status and alarm.";
        }  // rpc clear-loop-detect
    
        augment /ni:network-instance/ni:instances/ni:instance/l3vpn:afs/l3vpn:af {
          description "OSPF augment to L3VPN.";
          container ospf-import-rts {
            description
              "List of import route information from another routing protocol.";
            list ospf-import-rt {
              key "src-vrf process-id";
              description
                "Configure import route information from another routing protocol.";
              leaf src-vrf {
                type leafref {
                  path
                    "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                must
                  "../src-vrf!=../../../../../ni:name";
                description
                  "VPN instance route information.";
              }
    
              leaf process-id {
                type uint32 {
                  range "1..4294967295";
                }
                description "Process ID.";
              }
    
              leaf valid-route {
                type boolean;
                default "false";
                description
                  "Enable/disable the valid routes.";
              }
    
              choice policy-type {
                description
                  "Type of import route rule.";
                case route-policy {
                  description
                    "Set a route policy name.";
                  leaf route-policy {
                    type leafref {
                      path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                    }
                    description
                      "Set a route policy name.";
                  }
                }  // case route-policy
    
                case route-filter {
                  description
                    "Set a route filter name.";
                  leaf route-filter {
                    type leafref {
                      path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                    }
                    description
                      "Set a route filter name.";
                  }
                }  // case route-filter
              }  // choice policy-type
            }  // list ospf-import-rt
          }  // container ospf-import-rts
        }
    
        augment /ni:network-instance/ni:instances/ni:instance {
          description "OSPFv2 augment to L3VPN.";
          container ospfv2 {
            description "Configure OSPFv2.";
            container gtsm {
              when
                "../../l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']";
              presence "Enable gtsm.";
              description
                "Configure the OSPF GTSM.";
              leaf hops {
                type uint8 {
                  range "1..255";
                }
                mandatory true;
                description
                  "Specifies the number of TTL hops to be detected.";
              }
    
              leaf nonstandard-multicast {
                type boolean;
                default "false";
                description
                  "Enable/disable sending Multicast packet with TTL as 255 and receive multicast packet TTL should be 1 or 255 to ((255 - configured hop) + 1).";
              }
            }  // container gtsm
    
            container sites {
              when
                "../../l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']";
              description
                "List of OSPF instance.";
              list site {
                key "process-id";
                description
                  "Configure OSPF instance.";
                leaf process-id {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description "Process ID.";
                }
    
                leaf description {
                  type string {
                    length "1..80";
                    pattern '([^?]*)';
                  }
                  description
                    "Description of an OSPF process.";
                }
    
                leaf router-id {
                  type inet:ipv4-address-no-zone;
                  description
                    "Router ID. It is used to set the OSPF private ID.";
                }
    
                leaf opaque {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable the opaque LSA capability. After it is enabled, an OSPF process can generate the opaque LSA and receive the opaque LSA from the neighbor device.";
                }
    
                leaf rfc1583-compatible {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable the route selection rule that is compatible with RFC 1583.";
                }
    
                leaf rfc1583-prefer {
                  type asbr-prefer-rule;
                  must
                    "../rfc1583-prefer='none' or ../rfc1583-prefer='lower-cost' and ../rfc1583-compatible='true' or ../rfc1583-prefer='intra-area' and ../rfc1583-compatible='false'";
                  default "none";
                  description
                    "ASBR source prefer rules for compatible with RFC 1583.";
                }
    
                leaf silent-all-interface {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable to suppress all interfaces in an OSPF process from sending or receiving OSPF packets.";
                }
    
                leaf retransmission-limit {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable maximum retransmission.";
                }
    
                leaf retransmission-limit-value {
                  when
                    "../retransmission-limit='true'";
                  type uint32 {
                    range "2..255";
                  }
                  default "30";
                  description
                    "Maximum retransmission times.";
                }
    
                leaf safe-sync {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable safe synchronization.";
                }
    
                leaf traffic-adj {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable traffic adjust info.";
                }
    
                leaf traffic-adv {
                  when "../traffic-adj='true'";
                  type boolean;
                  default "false";
                  description
                    "Enable/disable traffic advertise info.";
                }
    
                leaf local-mt {
                  when
                    "../../../../ni:name='_public_'";
                  type boolean;
                  must
                    "../local-mt='false' or ../traffic-adj='true'";
                  default "false";
                  description
                    "Enable/disable local multicast topology.";
                }
    
                leaf advertise-mpls-lsr-id {
                  type boolean;
                  must
                    "../advertise-mpls-lsr-id='false' or ../../../../ni:name='_public_'";
                  default "false";
                  description
                    "Enable/disable advertise MPLS LSR ID into multiple areas as an intra area route.";
                }
    
                leaf advertise-mpls-lsr-id-cost {
                  when
                    "../advertise-mpls-lsr-id='true'";
                  type uint32 {
                    range "0..65535";
                  }
                  default "0";
                  description
                    "MPLS LSR ID link cost.";
                }
    
                leaf suppress-reachability {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable suppress reachability.";
                }
    
                leaf lsa-refresh {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable refresh the age of LSA with greater lsa age.";
                }
    
                leaf mpls-ldp-auto-flag {
                  type proc-auto-cfg-state;
                  default "none";
                  description
                    "Enable LDP automatically on OSPF enabled interfaces, but need to set MPLS first.";
                }
    
                leaf lsdb-overflow-limit {
                  type uint32 {
                    range "1..1000000";
                  }
                  description
                    "Maximum number of AS external LSAs allowed in the LSDB.";
                }
    
                leaf peer-flapping-suppress {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable peer flapping suppress feature.";
                }
    
                leaf shutdown {
                  type boolean;
                  must
                    "../shutdown='false' or ../../../../ni:name='__dcn_vpn__'";
                  default "false";
                  description
                    "Enable/disable shutdown OSPFv2 service.";
                }
    
                leaf sham-hello {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable peers keep alive by receiving any valid OSPF packet.";
                }
    
                leaf max-link-cost {
                  type uint16 {
                    range "1..65534";
                  }
                  description
                    "Set the max value of link cost.";
                }
    
                leaf maxage-lsa {
                  type uint32 {
                    range "0..65535";
                  }
                  units "s";
                  default "20";
                  description
                    "Calculation of route delay when the OSPF LSA frequently flaps.";
                }
    
                container private-net {
                  when
                    "../../../../ni:name!='_public_'";
                  description
                    "Configure private network configuration of OSPF.";
                  leaf eca-route {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable route type of the extended community attribute for VPN.";
                  }
    
                  choice route-tag {
                    description
                      "To set route tag value.";
                    case disable {
                      description
                        "To disable the using of the tag for loop detection.";
                      leaf disable {
                        type empty;
                        description
                          "To disable the using of the tag for loop detection.";
                      }
                    }  // case disable
    
                    case value {
                      description
                        "Tag of an imported VPN route.";
                      leaf value {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Tag of an imported VPN route. By default, the first two bytes of the tag value are fixed to be 0xD000, and the last two bytes are the local AS number of the local BGP. For example, if the AS number of BGP is 100, the default tag value in decimal notation is 3489661028.If not configed, the default is 0.";
                      }
                    }  // case value
                  }  // choice route-tag
    
                  leaf vpn-capability {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable route loop detection and directly calculate routes. When VPN multi instance is supported on the multi VPN instance CE (MCE) router, loop detection must be cancelled. It is applicable to only OSPF VPN instances.";
                  }
    
                  container domain-id {
                    presence
                      "ID of an OSPF domain.";
                    description
                      "Configure ID of an OSPF domain.";
                    leaf domain-id {
                      type inet:ipv4-address-no-zone;
                      mandatory true;
                      description
                        "ID of an OSPF domain.";
                    }
    
                    leaf type {
                      type domain-id-type;
                      default "0x0005";
                      description
                        "Type of an OSPF domain ID.";
                    }
    
                    leaf value {
                      type pub-type:hex-binary {
                        length "1..6";
                        pattern
                          '((0x|0X)?[0-9a-fA-F]{0,4})';
                      }
                      default "0x0";
                      description
                        "Value of an OSPF domain ID type.";
                    }
                  }  // container domain-id
    
                  container domain-id-secondarys {
                    when "../domain-id";
                    description
                      "List of ID of a secondary domain.";
                    list domain-id-secondary {
                      key "domain-id type value";
                      description
                        "Configure ID of a secondary domain.";
                      leaf domain-id {
                        type inet:ipv4-address-no-zone;
                        description
                          "ID of an OSPF domain.";
                      }
    
                      leaf type {
                        type domain-id-type;
                        description
                          "Type of an OSPF domain ID.";
                      }
    
                      leaf value {
                        type pub-type:hex-binary {
                          length "1..6";
                          pattern
                            '((0x|0X)?[0-9a-fA-F]{0,4})';
                        }
                        description
                          "Value of an OSPF domain ID type.";
                      }
                    }  // list domain-id-secondary
                  }  // container domain-id-secondarys
                }  // container private-net
    
                container host-name {
                  description
                    "Configure OSPF host name.";
                  leaf enable {
                    type boolean;
                    must
                      "../enable='false' or ../../opaque='true'";
                    default "false";
                    description
                      "Enable/disable host name.";
                  }
    
                  leaf value {
                    when "../enable='true'";
                    type string {
                      length "1..255";
                    }
                    description "Set host name.";
                  }
                }  // container host-name
    
                container bandwidth {
                  description
                    "Configure bandwidth.";
                  leaf config-bw-enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable bandwidth config.";
                  }
    
                  leaf reference-value {
                    type uint32 {
                      range "1..2147483648";
                    }
                    default "100";
                    description
                      "Reference to the calculation of link costs.";
                  }
                }  // container bandwidth
    
                container timer {
                  description "Configure timer.";
                  container lsa-arrival {
                    description
                      "Configure interval for receiving LSAs either through an intelligent timer or timer.";
                    choice timer-type {
                      default
                        "intelligent-timer";
                      description
                        "Set a value for the LDP and OSPF synchronization timer.";
                      case timer {
                        description
                          "Interval for receiving LSAs.";
                        leaf interval {
                          type uint32 {
                            range "0..10000";
                          }
                          description
                            "Interval for receiving LSAs.";
                        }
                      }  // case timer
    
                      case intelligent-timer {
                        description
                          "Specify an intelligent timer.";
                        leaf max-interval {
                          type uint32 {
                            range "1..300000";
                          }
                          must
                            '../start-interval<=../max-interval and ../hold-interval<=../max-interval';
                          default "1000";
                          description
                            "Maximum interval for receiving OSPF LSAs.";
                        }
    
                        leaf start-interval {
                          type uint32 {
                            range "0..60000";
                          }
                          must
                            '../start-interval<=../max-interval';
                          default "500";
                          description
                            "Initial interval for receiving OSPF LSAs.";
                        }
    
                        leaf hold-interval {
                          type uint32 {
                            range "1..60000";
                          }
                          must
                            '../hold-interval<=../max-interval';
                          default "500";
                          description
                            "Hold interval for receiving OSPF LSAs.";
                        }
                      }  // case intelligent-timer
                    }  // choice timer-type
                  }  // container lsa-arrival
    
                  container lsa-arr-supp-flap {
                    description
                      "Configure the delay timer for LSA acceptance.";
                    leaf interval {
                      type uint32 {
                        range "0..600";
                      }
                      units "s";
                      default "10";
                      description
                        "Specifies an interval for suppressing LSA advertising in case of route flapping. The value 0 indicates that LSA advertising is not suppressed.";
                    }
    
                    leaf threshold-count {
                      type uint32 {
                        range "3..100";
                      }
                      default "30";
                      description
                        "Value of the threshold of LSAs to be suppressed.";
                    }
                  }  // container lsa-arr-supp-flap
    
                  container lsa-originate {
                    description
                      "Configure interval for receiving LSAs either through an intelligent timer or timer.";
                    leaf other-type-interval {
                      type uint32 {
                        range "0..10";
                      }
                      default "5";
                      description
                        "Specify an updating/originating interval for type3, type4 and type10 LSAs. Interval for updating the LSAs except OSPF router LSAs and network LSAs.";
                    }
    
                    choice timer-type {
                      default
                        "intelligent-timer";
                      description
                        "Specify an updating/originating interval for type3, type4 and type10 LSAs.";
                      case intelligent-timer {
                        description
                          "Specify an intelligent timer for router LSA, network LSA, external LSA and NSSA LSA.";
                        leaf max-interval {
                          type uint32 {
                            range "1..300000";
                          }
                          must
                            '../start-interval<=../max-interval and ../hold-interval<=../max-interval';
                          default "5000";
                          description
                            "Maximum interval for updating OSPF LSAs.";
                        }
    
                        leaf start-interval {
                          type uint32 {
                            range "0..60000";
                          }
                          must
                            '../start-interval<=../max-interval';
                          default "500";
                          description
                            "Initial interval for updating OSPF LSAs.";
                        }
    
                        leaf hold-interval {
                          type uint32 {
                            range "1..60000";
                          }
                          must
                            '../hold-interval<=../max-interval';
                          default "1000";
                          description
                            "Hold interval for updating OSPF LSAs.";
                        }
                      }  // case intelligent-timer
                    }  // choice timer-type
                  }  // container lsa-originate
    
                  container lsa-org-supp-flap {
                    description
                      "Configure the delay timer for LSA generation.";
                    leaf interval {
                      type uint32 {
                        range "0..600";
                      }
                      units "s";
                      default "10";
                      description
                        "Specifies an interval for suppressing LSA advertising in case of route flapping. The value 0 indicates that LSA advertising is not suppressed.";
                    }
    
                    leaf threshold-count {
                      type uint32 {
                        range "3..100";
                      }
                      default "30";
                      description
                        "Value of the threshold of LSAs to be suppressed.";
                    }
                  }  // container lsa-org-supp-flap
    
                  container spf-schedule {
                    description
                      "Configure the interval for SPF calculation.";
                    choice schedule-type {
                      default
                        "intelligent-timer";
                      description
                        "SPF schedule interval.";
                      case timer {
                        description
                          "Specify an updating/originating interval for type3, type4 and type10 LSAs.";
                        leaf interval {
                          type uint32 {
                            range "1..10";
                          }
                          units "s";
                          description
                            "Interval for OSPF SPF calculation. By adjusting the interval for SPF calculation, you can prevent the occupation of too many bandwidth and router resources caused by frequent network changes.";
                        }
                      }  // case timer
    
                      case intelligent-timer {
                        description
                          "Specify an intelligent timer.";
                        leaf max-interval {
                          type uint32 {
                            range "1..300000";
                          }
                          units "ms";
                          must
                            '../start-interval<=../max-interval and ../hold-interval<=../max-interval';
                          default "5000";
                          description
                            "Maximum interval for OSPF SPF calculation set through an intelligent timer. By adjusting the interval for SPF calculation, you can prevent the occupation of too many bandwidths and device resources caused by frequent network changes.";
                        }
    
                        leaf start-interval {
                          type uint32 {
                            range "1..60000";
                          }
                          units "ms";
                          must
                            '../start-interval<=../max-interval';
                          default "50";
                          description
                            "Initial interval for OSPF SPF calculation set through an intelligent timer. By adjusting the interval for SPF calculation, you can prevent the occupation of too many bandwidth and router resources caused by frequent network changes.";
                        }
    
                        leaf hold-interval {
                          type uint32 {
                            range "1..60000";
                          }
                          units "ms";
                          must
                            '../hold-interval<=../max-interval';
                          default "200";
                          description
                            "Hold interval for OSPF SPF calculation set through an intelligent timer. By adjusting the interval for calculating SPF, you can prevent the occupation of too many bandwidth and router resources caused by frequent network changes.";
                        }
    
                        leaf conserv-flag {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable conservative mode.";
                        }
                      }  // case intelligent-timer
    
                      case millisecond {
                        description
                          "Specify an interval.";
                        leaf millisecond {
                          type uint32 {
                            range "1..10000";
                          }
                          units "ms";
                          description
                            "Interval for OSPF SPF calculation. By adjusting the interval for SPF calculation, you can prevent the occupation of too many bandwidths and device resources caused by frequent network changes.";
                        }
                      }  // case millisecond
                    }  // choice schedule-type
                  }  // container spf-schedule
                }  // container timer
    
                container bfd {
                  description
                    "Configure BFD in an OSPF process.";
                  leaf enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable BFD in an OSPF process.";
                  }
    
                  leaf min-rx {
                    type uint32 {
                      range "3..20000";
                    }
                    units "ms";
                    description
                      "Minimum interval for receiving BFD packets from the peer end. The range and default are based on PAF.";
                  }
    
                  leaf min-tx {
                    type uint32 {
                      range "3..20000";
                    }
                    units "ms";
                    description
                      "Minimum interval for sending BFD packets to the peer end. The range and default are based on PAF.";
                  }
    
                  leaf detect-multiplier {
                    type uint32 {
                      range "3..50";
                    }
                    default "3";
                    description
                      "Local detection multiplier.";
                  }
    
                  leaf incr-cost {
                    type uint32 {
                      range "1..65535";
                    }
                    description "BFD sync cost.";
                  }
    
                  leaf frr-binding {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable bind FRR with BFD.";
                  }
                }  // container bfd
    
                container metric-delay {
                  when "../opaque='true'";
                  description
                    "Configure metric delay in an OSPF process.";
                  leaf adv-enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable metric delay advertisement.";
                  }
    
                  leaf suppress-timer {
                    type uint32 {
                      range "0..600";
                    }
                    units "s";
                    default "120";
                    description
                      "Metric delay suppress timer.";
                  }
    
                  leaf suppress-percent {
                    type uint8 {
                      range "0..100";
                    }
                    default "10";
                    description
                      "Metric delay suppress percent threshold.";
                  }
    
                  leaf suppress-absolute {
                    type uint32 {
                      range "0..10000";
                    }
                    default "1000";
                    description
                      "Metric delay suppress absolute threshold.";
                  }
                }  // container metric-delay
    
                container bier {
                  when
                    "../opaque='true' and ../../../../ni:name='_public_'";
                  description
                    "Configure the bier.";
                  leaf enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable the bier.";
                  }
                }  // container bier
    
                container stub-router {
                  description
                    "Configure stub router is used to configure the router as stub router.";
                  leaf flag {
                    type stub-router-flag;
                    default "no-config";
                    description
                      "Stub router. The router configured with the stub router command notifies other OSPF routers of not using the stub router to forward data by increasing the metric greater than 65535 of the links in the LSA that is generated by the router.";
                  }
    
                  leaf interval {
                    when
                      "../flag='stub-on-boot'";
                    type uint32 {
                      range "5..65535";
                    }
                    default "500";
                    description
                      "Interval for remaining as the stub router during the active/standby switchover of a router.";
                  }
    
                  leaf include-stub {
                    when "../flag!='no-config'";
                    type boolean;
                    default "false";
                    description
                      "Enable/disable set maximum cost for router lsa stub link.";
                  }
    
                  leaf external-lsa {
                    when "../flag!='no-config'";
                    type boolean;
                    default "false";
                    description
                      "Enable/disable set maximum cost for external lsa.";
                  }
    
                  leaf external-cost {
                    when
                      "../external-lsa='true'";
                    type uint32 {
                      range "1..16777215";
                    }
                    default "16711680";
                    description
                      "Advertise external LSAs with configured/default overriding metric.";
                  }
    
                  leaf summary-lsa {
                    when "../flag!='no-config'";
                    type boolean;
                    default "false";
                    description
                      "Enable/disable set maximum cost for summary lsa.";
                  }
    
                  leaf summary-cost {
                    when "../summary-lsa='true'";
                    type uint32 {
                      range "1..16777215";
                    }
                    default "16711680";
                    description
                      "Advertise summary LSAs with configured/default overriding metric.";
                  }
                }  // container stub-router
    
                container bgp-ls {
                  description
                    "Configure BGP LS.";
                  leaf enable {
                    type boolean;
                    must
                      "../enable='false' or ../../../../../ni:name='_public_'";
                    default "false";
                    description
                      "Enable/disable BGP LS.";
                  }
    
                  leaf identifier {
                    when "../enable='true'";
                    type uint32 {
                      range "2..65535";
                    }
                    description
                      "Topo identifier.";
                  }
                }  // container bgp-ls
    
                container import-limit {
                  presence "Enable import-limit";
                  description
                    "Configure limits the maximum number of routes to be imported.";
                  leaf max-number {
                    type uint32 {
                      range "1..4294967295";
                    }
                    mandatory true;
                    description
                      "Maximum number of external routes that can be imported.";
                  }
    
                  leaf threshold-upper {
                    type uint32 {
                      range "1..100";
                    }
                    must
                      '../threshold-upper>=../threshold-lower';
                    default "80";
                    description
                      "Upper threshold of the maximum number of routes that can be imported.";
                  }
    
                  leaf threshold-lower {
                    type uint32 {
                      range "1..100";
                    }
                    must
                      '../threshold-upper>=../threshold-lower';
                    default "70";
                    description
                      "Lower threshold of the maximum number of routes that can be imported.";
                  }
                }  // container import-limit
    
                container spf-control {
                  description
                    "Configure SPF calculation control.";
                  leaf max-load-balancing {
                    ext:dynamic-default;
                    type uint32 {
                      range "1..128";
                    }
                    description
                      "Maximum number of the equal cost routes of the destination address in the routing table. The range and default are based on PAF.";
                  }
                }  // container spf-control
    
                container default-para {
                  description
                    "Configure default parameter.";
                  choice cost {
                    default "cost-value";
                    description
                      "Cost assigned to the ASE or NSSA LSA generated when an external route is imported.";
                    case cost-value {
                      description
                        "Default metric of the external routes imported by OSPF.";
                      leaf cost-value {
                        type uint32 {
                          range "0..16777214";
                        }
                        default "1";
                        description
                          "Default metric of the external routes imported by OSPF.";
                      }
                    }  // case cost-value
    
                    case cost-inherit-metric {
                      description
                        "Cost of the imported route is the cost carried in the route. If the cost is not specified, the default cost can be set through the default command.";
                      leaf cost-inherit-metric {
                        type empty;
                        description
                          "Cost of the imported route is the cost carried in the route. If the cost is not specified, the default cost can be set through the default command.";
                      }
                    }  // case cost-inherit-metric
                  }  // choice cost
    
                  leaf tag {
                    type uint32 {
                      range "0..4294967295";
                    }
                    default "1";
                    description
                      "Tag of an external route.";
                  }
    
                  leaf type {
                    type external-route-type;
                    default "type2";
                    description
                      "Type of an external route.";
                  }
                }  // container default-para
    
                container avoid-micro-loop {
                  description
                    "Configure OSPF avoid microloop.";
                  leaf frr-enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable avoid microloop.";
                  }
    
                  leaf frr-rib-update-delay {
                    type uint32 {
                      range "100..5000";
                    }
                    units "ms";
                    default "100";
                    description
                      "Set the maximum interval of delay timer.";
                  }
    
                  leaf te-tunnel-enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable TE shortcut tunnel avoid microloop.";
                  }
    
                  leaf te-tunnel-rib-update-delay {
                    type uint32 {
                      range "100..30000";
                    }
                    units "ms";
                    default "1000";
                    description
                      "Set the route delivery delay for TE shortcut tunnel.";
                  }
                }  // container avoid-micro-loop
    
                container asbr-summary-prefixs {
                  description
                    "List of aggregate addresses for OSPF (only for ASBR).";
                  list asbr-summary-prefix {
                    key "prefix network-mask";
                    description
                      "Configure aggregate addresses for OSPF (only for ASBR).";
                    leaf prefix {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP address. Prefix is the address after mask.";
                    }
    
                    leaf network-mask {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP address mask.";
                    }
    
                    leaf cost {
                      type uint32 {
                        range "0..16777214";
                      }
                      description
                        "Specifies the cost of the aggregated route.";
                    }
    
                    leaf distribute-delay {
                      type uint32 {
                        range "1..65535";
                      }
                      units "s";
                      description
                        "Distribute delay interval.";
                    }
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Specifies that the tag is mainly used to control advertisement of routes through the routing policy.";
                    }
    
                    leaf advertise {
                      type boolean;
                      default "true";
                      description
                        "Enable/disable the aggregated route is advertised.";
                    }
    
                    leaf generate-null-zero {
                      when
                        "../advertise = 'true'";
                      type boolean;
                      default "false";
                      description
                        "Enable/disable generate black hole route.";
                    }
                  }  // list asbr-summary-prefix
                }  // container asbr-summary-prefixs
    
                choice default-route {
                  description
                    "Notification of default routes to the OSPF routing area.";
                  case summary {
                    description "Summary.";
                    container summary {
                      when
                        "../../../../ni:name!='_public_'";
                      presence
                        "Enable default-route-advertise summary.";
                      description
                        "Configure advertises the type3 summary LSAs of the specified default route.";
                      leaf cost {
                        type uint32 {
                          range "0..16777214";
                        }
                        mandatory true;
                        description
                          "Metric of an ASE LSA.";
                      }
                    }  // container summary
                  }  // case summary
    
                  case no-summary {
                    description "No summary.";
                    container no-summary {
                      presence
                        "Enable default-route-advertise no-summary.";
                      description
                        "Configure default routes to the OSPF routing area.";
                      leaf enable {
                        type empty;
                        status deprecated;
                        description
                          "Default Route Enable. The node enable is deprecated. You are advised to use the node no-summary.";
                      }
    
                      leaf cost {
                        type uint32 {
                          range "0..16777214";
                        }
                        description
                          "Metric of an ASE LSA.";
                      }
    
                      leaf tag {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Route tag for default imported routes.";
                      }
    
                      leaf type {
                        type external-route-type;
                        description
                          "Metric type of an ASE LSA for the default routes.";
                      }
    
                      leaf distribute-delay {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Distribute delay timer used for the local router to calculate the default routes advertised by other routers.";
                      }
    
                      choice mode {
                        description
                          "Mode for default route.";
                        case permit-calculate-other {
                          description
                            "Set permit calculate other.";
                          leaf permit-calculate-other {
                            type empty;
                            description
                              "To generate and advertise an ASE LSA that describes the default route only when there are valid default routes of other protocols in the routing table of the host. The router configured with permit calculate other still calculates the default routes of other routers.";
                          }
    
                          leaf permit-ibgp {
                            type empty;
                            description
                              "Match IBGP default route.";
                          }
                        }  // case permit-calculate-other
    
                        case always {
                          description
                            "Set always.";
                          leaf always {
                            type empty;
                            description
                              "The router configured with the always parameter does not calculate the default routes of other routers.";
                          }
                        }  // case always
                      }  // choice mode
    
                      choice policy-type {
                        description
                          "Mode of the policy used for default route.";
                        case route-policy-name {
                          description
                            "Set a route policy name.";
                          leaf route-policy-name {
                            type leafref {
                              path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                            }
                            description
                              "Name of a routing policy. Through the routing policy, the device matches the default routing entry generated by the device that does not run OSPF in the routing table, and advertises the default route according to the parameters set through the routing policy.";
                          }
                        }  // case route-policy-name
    
                        case route-filter-name {
                          description
                            "Set a route filter name.";
                          leaf route-filter-name {
                            type leafref {
                              path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                            }
                            description
                              "Name of a routing Filter.";
                          }
                        }  // case route-filter-name
                      }  // choice policy-type
                    }  // container no-summary
                  }  // case no-summary
                }  // choice default-route
    
                container route-preferences {
                  description
                    "List of preference of an OSPF route.";
                  list route-preference {
                    ext:generated-by "system" {
                      ext:filter "route-type='default' or route-type='ase'";
                    }
                    key "route-type";
                    max-elements 4;
                    description
                      "Configure preference of an OSPF route.";
                    leaf route-type {
                      type ospf-route-type;
                      description "Router type.";
                    }
    
                    leaf preference {
                      ext:dynamic-default {
                        ext:default-value "10" {
                          when "../route-type != 'ase'";
                          description "The default value is 10 when route type is not ase.";
                        }
                        ext:default-value "150" {
                          when "../route-type = 'ase'";
                          description "The default value is 150 when route type is ase.";
                        }
                      }
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Preference of an OSPF route. The default of intra and inter area is 10.And The default of external is 150.";
                    }
    
                    choice policy-type {
                      description
                        "Type of a filtering rule.";
                      case route-policy-name {
                        description
                          "Name of a routing policy.";
                        leaf route-policy-name {
                          type leafref {
                            path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                          }
                          description
                            "Name of a routing policy.";
                        }
                      }  // case route-policy-name
    
                      case route-filter-name {
                        description
                          "Name of a routing Filter.";
                        leaf route-filter-name {
                          type leafref {
                            path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                          }
                          description
                            "Name of a routing Filter.";
                        }
                      }  // case route-filter-name
                    }  // choice policy-type
                  }  // list route-preference
                }  // container route-preferences
    
                container nexthop-weights {
                  description
                    "List of preference of an equal cost route.";
                  list nexthop-weight {
                    key "ip-address";
                    description
                      "Configure preference of an equal cost route.";
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP address of the next hop.";
                    }
    
                    leaf weight {
                      type uint32 {
                        range "1..254";
                      }
                      mandatory true;
                      description
                        "Weight of the next hop. After OSPF calculates the equal cost routes, the next hop is chosen from these equal cost routes based on the value of weight. The smaller the value is, the higher the preference is. By default, the weight is 255. This indicates that load balancing is carried out among equal cost routes and packets are forwarded at the same time without the preference being set.";
                    }
                  }  // list nexthop-weight
                }  // container nexthop-weights
    
                container prefix-prioritys {
                  description
                    "List of priority of OSPF route.";
                  list prefix-priority {
                    key "priority";
                    description
                      "Configure priority of OSPF route.";
                    leaf priority {
                      type prefix-priority;
                      description
                        "Convergence priority of OSPF routes.";
                    }
    
                    leaf ip-prefix {
                      type leafref {
                        path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                      }
                      mandatory true;
                      description
                        "Name of the IP prefix list. The value is a string of 1 to 169 characters without spaces. The prefix priority command sets the convergence priority of OSPF routes according to the specified IP prefix list name, and takes effect on the public network only.
    By default, the convergence priority of public OSPF host routes is medium, the convergence priority of directly connected routes is high, the convergence priority of static routes is medium, and the convergence priority of the routes of other protocols (such as BGP and RIP) is low. On the private network, OSPF 32 bit host routes are globally identified as medium.";
                    }
                  }  // list prefix-priority
                }  // container prefix-prioritys
    
                container ecmp-prefer {
                  description
                    "Configure equal cost multipath preference of OSPF routes.";
                  leaf te-tunnel {
                    type boolean;
                    must
                      "../te-tunnel='false' or ../intact='false'";
                    default "false";
                    description
                      "Enable/disable TE tunnel interface nexthops.";
                  }
    
                  leaf intact {
                    type boolean;
                    must
                      "../intact='false' or ../te-tunnel='false'";
                    default "false";
                    description
                      "Enable/disable IGP native nexthop.";
                  }
                }  // container ecmp-prefer
    
                container frr {
                  description
                    "Configure OSPF fast rerouting.";
                  leaf enable {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable FRR for this particular process.";
                  }
    
                  leaf lfa-enable {
                    type boolean;
                    must
                      "../lfa-enable='false' or ../enable='true'";
                    default "false";
                    description
                      "Enable/disable loop free alternate.";
                  }
    
                  leaf rlfa-enable {
                    type boolean;
                    must
                      "../rlfa-enable='false' or ../lfa-enable='true' and ../../../../../ni:name='_public_'";
                    default "false";
                    description
                      "Enable/disable remote lfa.";
                  }
    
                  leaf rlfa-max-cost {
                    when "../rlfa-enable='true'";
                    type uint32 {
                      range "1..4294967295";
                    }
                    default "4294967295";
                    description
                      "Remote lfa tunnel ldp maximum-reachable-cost.";
                  }
    
                  leaf tilfa-enable {
                    type boolean;
                    must
                      "../tilfa-enable='false' or ../lfa-enable='true' and ../../../../../ni:name='_public_'";
                    default "false";
                    description
                      "Enable/disable TILFA.";
                  }
    
                  container tiebreaker {
                    when "../lfa-enable='true'";
                    must
                      "node-protect!=lowest-cost";
                    must
                      "node-protect!=ldp-sync";
                    must "ldp-sync!=lowest-cost";
                    must
                      "node-protect!=srlg-disjoint";
                    must
                      "lowest-cost!=srlg-disjoint";
                    must
                      "ldp-sync!=srlg-disjoint";
                    description
                      "Configure tiebreaker for multiple backups.";
                    leaf node-protect {
                      type uint8 {
                        range "1..255";
                      }
                      default "40";
                      description
                        "Set the value of node protect preference.";
                    }
    
                    leaf lowest-cost {
                      type uint8 {
                        range "1..255";
                      }
                      default "20";
                      description
                        "Set the value of lowcost preference.";
                    }
    
                    leaf ldp-sync {
                      type uint8 {
                        range "1..255";
                      }
                      default "10";
                      description
                        "Prefer backup nexthop with ldp sync.";
                    }
    
                    leaf srlg-disjoint {
                      type uint8 {
                        range "1..255";
                      }
                      default "5";
                      description
                        "Set the value of srlg-disjoint preference.";
                    }
                  }  // container tiebreaker
    
                  container route-policy {
                    when "../enable='true'";
                    description
                      "Configure FRR route policy.";
                    choice policy-type {
                      description
                        "Type of a filtering rule.";
                      case route-policy-name {
                        description
                          "Name of a routing policy.";
                        leaf route-policy-name {
                          type leafref {
                            path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                          }
                          description
                            "Name of a routing policy.";
                        }
                      }  // case route-policy-name
    
                      case route-filter-name {
                        description
                          "Name of a routing filter.";
                        leaf route-filter-name {
                          type leafref {
                            path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                          }
                          description
                            "Name of a routing filter.";
                        }
                      }  // case route-filter-name
                    }  // choice policy-type
                  }  // container route-policy
    
                  container rlfa-tunnel {
                    when
                      "../enable='true' and ../../../../../ni:name='_public_'";
                    description
                      "Configure remote LFA ip prefix.";
                    choice policy-type {
                      description
                        "Name of a routing policy.";
                      case ip-prefix-name {
                        description
                          "Set a route policy name.";
                        leaf ip-prefix-name {
                          type leafref {
                            path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                          }
                          description
                            "To filter PQ node. Those nodes which don't pass filter can't be PQ node.";
                        }
                      }  // case ip-prefix-name
                    }  // choice policy-type
                  }  // container rlfa-tunnel
                }  // container frr
    
                container local-mt-filter {
                  when
                    "../../../../ni:name='_public_'";
                  description
                    "Configure OSPF local multicast topology filtering in routing updates.";
                  choice filter-policy {
                    description
                      "Type of a filtering rule.";
                    case acl-name-or-num {
                      description
                        "ACL name or ACL number. ACL name: specify the ACL name. ACL num: apply basic ACL.";
                      leaf acl-name-or-num {
                        type leafref {
                          path "/acl:acl/acl:groups/acl:group/acl:identity";
                        }
                        must
                          "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                        description
                          "ACL name or ACL number. ACL name: specify the ACL name. ACL num: apply basic ACL.";
                      }
                    }  // case acl-name-or-num
    
                    case ip-prefix {
                      description
                        "Ip prefix name.";
                      leaf ip-prefix {
                        type leafref {
                          path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                        }
                        description
                          "Ip prefix name.";
                      }
                    }  // case ip-prefix
    
                    case route-policy-name {
                      description
                        "Name of a routing policy.";
                      leaf route-policy-name {
                        type leafref {
                          path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                        }
                        description
                          "Name of a routing policy.";
                      }
                    }  // case route-policy-name
    
                    case route-filter-name {
                      description
                        "Name of a routing filter.";
                      leaf route-filter-name {
                        type leafref {
                          path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                        }
                        description
                          "Name of a routing filter.";
                      }
                    }  // case route-filter-name
                  }  // choice filter-policy
                }  // container local-mt-filter
    
                container peers {
                  description
                    "List of the IP address and DR priority of the neighbor router on the NBMA network.";
                  list peer {
                    key "ip-address";
                    description
                      "Configure the IP address and DR priority of the neighbor router on the NBMA network.";
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP address of the neighbor router.";
                    }
    
                    leaf priority {
                      type uint8 {
                        range "0..255";
                      }
                      default "1";
                      description
                        "To set the IP address and DR priority of the neighbor router on the NBMA network.";
                    }
                  }  // list peer
                }  // container peers
    
                container filter-lsa-outs {
                  description
                    "List of LSA filter policy.";
                  list filter-lsa-out {
                    key "peer-ip-addr";
                    max-elements 512;
                    description
                      "Configure LSA filter policy.";
                    leaf peer-ip-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP address of the P2MP neighbor.";
                    }
    
                    choice type {
                      mandatory true;
                      description
                        "Set filter lsa out type.";
                      case total {
                        description
                          "Filter total types of LSAs.";
                        leaf all-flag {
                          type empty;
                          description
                            "Filter all types of LSAs.";
                        }
                      }  // case total
    
                      case other {
                        description
                          "Filter other types of LSAs.";
                        leaf sum-flag {
                          type empty;
                          description
                            "Filter type 3 Summary LSAs.";
                        }
    
                        choice sum-filter {
                          description
                            "Type of a filtering rule.";
                          case sum-acl-name {
                            description
                              "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            leaf sum-acl-name {
                              when '../sum-flag';
                              type leafref {
                                path "/acl:acl/acl:groups/acl:group/acl:identity";
                              }
                              must
                                "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                              description
                                "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            }
                          }  // case sum-acl-name
                        }  // choice sum-filter
    
                        leaf ase-flag {
                          type empty;
                          description
                            "Filter type-5 ASE LSAs.";
                        }
    
                        choice ase-filter {
                          description
                            "Type of a filtering rule.";
                          case ase-acl-name {
                            description
                              "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            leaf ase-acl-name {
                              when '../ase-flag';
                              type leafref {
                                path "/acl:acl/acl:groups/acl:group/acl:identity";
                              }
                              must
                                "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                              description
                                "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            }
                          }  // case ase-acl-name
                        }  // choice ase-filter
    
                        leaf nssa-flag {
                          type empty;
                          description
                            "Filter type7 NSSA LSAs.";
                        }
    
                        choice nssa-filter {
                          description
                            "Type of a filtering rule.";
                          case nssa-acl-name {
                            description
                              "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            leaf nssa-acl-name {
                              when
                                '../nssa-flag';
                              type leafref {
                                path "/acl:acl/acl:groups/acl:group/acl:identity";
                              }
                              must
                                "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                              description
                                "ACL Name or ACL Number. ACL Name: specify the ACL name. ACL Num: apply basic ACL.";
                            }
                          }  // case nssa-acl-name
                        }  // choice nssa-filter
                      }  // case other
                    }  // choice type
                  }  // list filter-lsa-out
                }  // container filter-lsa-outs
    
                choice graceful-restart {
                  description
                    "Information about OSPF GR.";
                  case gr-ietf {
                    description
                      "Information about OSPF IETF GR.";
                    container gr-ietf {
                      when "../opaque='true'";
                      presence
                        "Enable OSPF IETF GR.";
                      description
                        "Configure OSPF IETF GR.";
                      choice helper-role-mode {
                        description
                          "Information about OSPF IETF GR helper role.";
                        case never {
                          description
                            "Forbid to support enable mode.";
                          leaf never {
                            type empty;
                            description
                              "Forbid to support enable mode.";
                          }
                        }  // case never
    
                        case work-mode {
                          description
                            "Information about OSPF IETF GR.";
                          leaf planned-only {
                            type empty;
                            description
                              "To support only planned GR on routers.";
                          }
    
                          leaf ignore-external-lsa {
                            type empty;
                            description
                              "Ignore external lsa check (type5 and type7 LSAs).";
                          }
    
                          choice match-mode {
                            description
                              "Name of a routing policy.";
                            case acl-name-or-num {
                              description
                                "Specify the basic ACL number or ACL name for filtering peer.";
                              leaf acl-name-or-num {
                                type leafref {
                                  path "/acl:acl/acl:groups/acl:group/acl:identity";
                                }
                                must
                                  "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                                description
                                  "Specify the basic ACL number or ACL name for filtering peer.";
                              }
                            }  // case acl-name-or-num
    
                            case ip-prefix-name {
                              description
                                "Specify the IP prefix name for filtering peers.";
                              leaf ip-prefix-name {
                                type leafref {
                                  path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                                }
                                description
                                  "Specify the IP prefix name for filtering peers.";
                              }
                            }  // case ip-prefix-name
                          }  // choice match-mode
                        }  // case work-mode
                      }  // choice helper-role-mode
                    }  // container gr-ietf
                  }  // case gr-ietf
    
                  case gr-non-ietf {
                    description
                      "Information about OSPF NON IETF GR.";
                    container gr-non-ietf {
                      when "../opaque='true'";
                      presence
                        "Enable OSPF NON IETF GR.";
                      description
                        "Configure OSPF NON IETF GR.";
                    }  // container gr-non-ietf
                  }  // case gr-non-ietf
                }  // choice graceful-restart
    
                container flood-control {
                  presence
                    "Enable flood-control";
                  description
                    "Configure OSPF flooding control.";
                  leaf number {
                    type uint32 {
                      range "1..1000";
                    }
                    default "50";
                    description
                      "Specify the update packet number to send.";
                  }
    
                  leaf interval {
                    type uint32 {
                      range "30..100000";
                    }
                    default "30";
                    description
                      "Specify the update packet timer interval to send.";
                  }
                }  // container flood-control
    
                container dn-bit {
                  when
                    "../../../../ni:name!='_public_'";
                  description
                    "Configure VPN optionA feature will help PEs in inter AS exchange routes through OSPF. VPN optionA provide two ways to suppress DN bit so that so that inter AS can exchange routes through OSPF. First way dose not set DN bit while import routes from BGP, second way dose not check DN bit while learning the routes from neighbor router. In both the scenario PE will be able to learn route and propagate the route in the new VPN cloud.";
                  leaf set-ase {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable setting of DN bit in all ASE LSA, applicable in private network.";
                  }
    
                  leaf set-nssa {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable setting of DN bit in all NSSA LSA, applicable in private network.";
                  }
    
                  leaf set-summary {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable setting of DN bit in all summary LSA, applicable in private network.";
                  }
    
                  leaf check-ase {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable checking of DN bit in all ASE LSA, applicable in private network.";
                  }
    
                  leaf check-nssa {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable checking of DN bit in all NSSA LSA, applicable in private network.";
                  }
    
                  leaf check-summary {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable checking of DN bit in all summary LSA, applicable in private network.";
                  }
    
                  container summary-router-ids {
                    when
                      "../check-summary='false'";
                    description
                      "List of router ID for which checking for DN bit summary LSA is disabled, applicable in private network.";
                    list summary-router-id {
                      key "router-id";
                      description
                        "Configure router ID for which checking for DN bit summary LSA is disabled, applicable in private network.";
                      leaf router-id {
                        type inet:ipv4-address-no-zone;
                        description
                          "Router ID for which checking for DN bit summary LSA is disabled, applicable in private network.";
                      }
                    }  // list summary-router-id
                  }  // container summary-router-ids
                }  // container dn-bit
    
                container filter-import {
                  presence
                    "filter policy import";
                  description
                    "Configure the filter policy import command. You can set the rules for filtering intra area, inter area, and AS external routes of an OSPF process.";
                  choice policy-type {
                    mandatory true;
                    description
                      "Type of a filtering rule.";
                    case basic-acl {
                      description
                        "Apply basic ACL name or ACL number.";
                      leaf name-or-num {
                        type leafref {
                          path "/acl:acl/acl:groups/acl:group/acl:identity";
                        }
                        must
                          "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                        description
                          "Apply basic ACL name or ACL number.";
                      }
                    }  // case basic-acl
    
                    case ip-prefix {
                      description
                        "Set the name of an IP prefix list.";
                      leaf ip-prefix {
                        type leafref {
                          path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                        }
                        description
                          "Set the name of an IP prefix list.";
                      }
                    }  // case ip-prefix
    
                    case route-policy {
                      description
                        "Set a route policy name.";
                      leaf route-policy {
                        type leafref {
                          path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                        }
                        description
                          "Set a route policy name.";
                      }
                    }  // case route-policy
    
                    case route-filter {
                      description
                        "Set a route filter name.";
                      leaf route-filter {
                        type leafref {
                          path "/xpl:xpl/xpl:route-filters/xpl:route-filter/xpl:name";
                        }
                        description
                          "Set a route filter name.";
                      }
                    }  // case route-filter
                  }  // choice policy-type
    
                  leaf secondary {
                    type boolean;
                    must
                      "../secondary='false' or ../route-policy";
                    default "false";
                    description
                      "Enable/disable secondary flag.";
                  }
                }  // container filter-import
    
                container filter-exports {
                  description
                    "List of the filter policy export command. You can set the rules for filtering the routes imported through the import route (OSPF) command when the routes are advertised in type5 LSAs to the OSPF AS.";
                  list filter-export {
                    key "protocol protocol-id";
                    description
                      "Configure the filter policy export command. You can set the rules for filtering the routes imported through the import route (OSPF) command when the routes are advertised in type5 LSAs to the OSPF AS.";
                    leaf protocol {
                      type filter-rt-protocol;
                      description
                        "Protocol that advertises routes.";
                    }
    
                    leaf protocol-id {
                      type uint32 {
                        range "1..4294967295";
                      }
                      must
                        "../protocol-id=1 or ../protocol='ospf' or ../protocol='isis' or ../protocol='rip'";
                      description
                        "Process ID when the advertised protocol is RIP, ISIS, or OSPF.";
                    }
    
                    choice policy-type {
                      mandatory true;
                      description
                        "Type of a filtering rule.";
                      case basic-acl {
                        description
                          "Apply basic ACL name or ACL number.";
                        leaf name-or-num {
                          type leafref {
                            path "/acl:acl/acl:groups/acl:group/acl:identity";
                          }
                          must
                            "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                          description
                            "Apply basic ACL name or ACL number.";
                        }
                      }  // case basic-acl
    
                      case ip-prefix {
                        description
                          "Set the name of an IP prefix list.";
                        leaf ip-prefix {
                          type leafref {
                            path "/rtp:routing-policy/rtp:ipv4-prefix-filters/rtp:ipv4-prefix-filter/rtp:name";
                          }
                          description
                            "Set the name of an IP prefix list.";
                        }
                      }  // case ip-prefix
    
                      case route-policy {
                        description
                          "Set a route policy name.";
                        leaf route-policy {
                          type leafref {
                            path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                          }
                          description
                            "Set a route policy name.";
                        }
                      }  // case route-policy
                    }  // choice policy-type
                  }  // list filter-export
                }  // container filter-exports
    
                container import-routes {
                  description
                    "List of import the routes learned from other routing protocols.";
                  list import-route {
                    key "protocol process-id";
                    description
                      "Configure import the routes learned from other routing protocols.";
                    leaf protocol {
                      type import-rt-protocol;
                      description
                        "Routing protocol whose routes are imported.";
                    }
    
                    leaf process-id {
                      type uint32 {
                        range "0..4294967295";
                      }
                      must
                        "(../process-id=0 and (../protocol='direct' or ../protocol='static' or ../protocol='bgp' or ../protocol='unr' or ../protocol='opr')) or (../process-id>0 and (../protocol='ospf' or ../protocol='isis' or ../protocol='rip'))";
                      description
                        "Process ID of the routing protocol whose routes are imported. It needs to be set only when the protocol is RIP, OSPF, or ISIS.";
                    }
    
                    leaf cost {
                      type uint32 {
                        range "0..16777214";
                      }
                      description "Route cost.";
                    }
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Route tag of an external LSA.";
                    }
    
                    leaf type {
                      type external-route-type;
                      description
                        "Metric type of an external LSA.";
                    }
    
                    leaf permit-ibgp {
                      type boolean;
                      must
                        "../permit-ibgp='false' or ../protocol='bgp'";
                      default "false";
                      description
                        "Enable/disable to import IBGP routes.";
                    }
    
                    choice policy-type {
                      description
                        "Type of a filtering rule.";
                      case route-policy-name {
                        description
                          "Name of a routing policy.";
                        leaf route-policy-name {
                          type leafref {
                            path "/rtp:routing-policy/rtp:policy-definitions/rtp:policy-definition/rtp:name";
                          }
                          description
                            "Name of a routing policy.";
                        }
                      }  // case route-policy-name
                    }  // choice policy-type
                  }  // list import-route
                }  // container import-routes
    
                container silent-interfaces {
                  when
                    "../silent-all-interface='false'";
                  description
                    "List of interface. To prevent the OSPF routing information from being received by routers in a network segment and forbid the local router to receive the routing update information that is advertised by other routers in the network segment, you can use the silent interface command to suppress the interface to receive or send the OSPF packets.";
                  list silent-interface {
                    key "if-name";
                    description
                      "Configure interface. To prevent the OSPF routing information from being received by routers in a network segment and forbid the local router to receive the routing update information that is advertised by other routers in the network segment, you can use the silent interface command to suppress the interface to receive or send the OSPF packets.";
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
                  }  // list silent-interface
                }  // container silent-interfaces
    
                container undo-silent-interfaces {
                  when
                    "../silent-all-interface='true'";
                  description
                    "List of interface. Enables sending and receiving packet on this interface when true. This information is useful when sending and receiving packet is suppressed on all interface on process level and user want it to be enabled on certain interface.";
                  list undo-silent-interface {
                    key "if-name";
                    description
                      "Configure interface. Enables sending and receiving packet on this interface when true. This information is useful when sending and receiving packet is suppressed on all interface on process level and user want it to be enabled on certain interface.";
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
                  }  // list undo-silent-interface
                }  // container undo-silent-interfaces
    
                container cost-bindings {
                  description
                    "List of cost-binding. Indicate cost of routing from indicated router source ID binding interface.";
                  list cost-binding {
                    key "router-id if-name";
                    description
                      "Configure cost-binding. Indicate cost of routing from indicated router source ID binding interface.";
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source router ID.";
                    }
    
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
                  }  // list cost-binding
                }  // container cost-bindings
    
                container areas {
                  description
                    "List of OSPF area.";
                  list area {
                    key "area-id";
                    description
                      "Configure OSPF area.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf area-type {
                      type area-type;
                      default "normal";
                      description "Area type.";
                    }
    
                    leaf description {
                      type string {
                        length "1..80";
                        pattern '([^?]*)';
                      }
                      description
                        "Description of an OSPF area.";
                    }
    
                    container networks {
                      description
                        "List of the interface that runs OSPF and the area to which the interface belongs to.";
                      list network {
                        key "ip-address mask";
                        description
                          "Configure the interface that runs OSPF and the area to which the interface belongs to.";
                        leaf ip-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies the address of the network segment where the interface resides.";
                        }
    
                        leaf mask {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies the wildcard mask of IP address.";
                        }
    
                        leaf description {
                          type string {
                            length "1..80";
                            pattern '([^?]*)';
                          }
                          description
                            "Specifies the description of the specified OSPF network segment.";
                        }
                      }  // list network
                    }  // container networks
    
                    container stub {
                      when "../area-type='stub'";
                      description
                        "Configure stub area.";
                      leaf backbone-peer-ignore {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable ignore backbone peer for Stub area.";
                      }
    
                      leaf no-summary {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable forbid an ABR to Send Summary LSAs to the Stub Area.";
                      }
    
                      leaf default-cost {
                        type int32 {
                          range "0..16777214";
                        }
                        default "1";
                        description
                          "Cost of the default Type3 routes that are sent by an OSPF process to a stub area or an NSSA area. The value is an integer ranging from 1 to 16777214. This parameter takes effect only when it is configured on the ABR connected to a stub area or an NSSA area. The default is 1.";
                      }
                    }  // container stub
    
                    container nssa {
                      when "../area-type='nssa'";
                      description
                        "Configure nssa area.";
                      leaf no-summary {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable forbid an ABR to Send Summary LSAs to the NSSA Area.";
                      }
    
                      leaf translator-always {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the router to act as translator always for NSSA Area.";
                      }
    
                      leaf default-route-advertise {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable originate Type 7 default into NSSA area.";
                      }
    
                      leaf backbone-peer-ignore {
                        when
                          "../default-route-advertise='true'";
                        type boolean;
                        default "false";
                        description
                          "Enable/disable ignore backbone peer for Nssa area.";
                      }
    
                      leaf no-import-route {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable redistribute type 7 LSA into this area.";
                      }
    
                      leaf set-n-bit {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable setting of 'N' bit in the DD packet.";
                      }
    
                      leaf suppress-fa {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable the forwarding address as 0 for all translated type 5 LSAs.";
                      }
    
                      leaf zero-address-forwarding {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable allow zero forwarding address for redistributed type 7 LSA.";
                      }
    
                      leaf translator-interval {
                        type uint32 {
                          range "1..120";
                        }
                        default "40";
                        description
                          "Translator interval.";
                      }
    
                      leaf default-cost {
                        type int32 {
                          range "0..16777214";
                        }
                        default "1";
                        description
                          "Cost of the default Type3 routes that are sent by an OSPF process to a stub area or an NSSA area. This parameter takes effect only when it is configured on the ABR connected to a stub area or an NSSA area.";
                      }
                    }  // container nssa
    
                    container ldp-sync {
                      description
                        "Configure timer ldp sync.";
                      leaf enable {
                        type boolean;
                        default "false";
                        description
                          "Enable/disable LDP and OSPF synchronization on area.";
                      }
    
                      choice hold-cost-max {
                        default "infinite";
                        description
                          "Set timer ldp sync.";
                        case timer {
                          description
                            "Set timer ldp sync.";
                          leaf timer {
                            type uint32 {
                              range "0..65535";
                            }
                            units "s";
                            description
                              "The interval for sending OSPF LSAs to advertise the maximum metric on the local device.";
                          }
                        }  // case timer
    
                        case infinite {
                          description
                            "Always advertise the maximum cost.";
                          leaf infinite {
                            type boolean;
                            must
                              "../infinite='true'";
                            default "true";
                            description
                              "Enable/disable always advertise the maximum cost.";
                          }
                        }  // case infinite
                      }  // choice hold-cost-max
                    }  // container ldp-sync
    
                    container mpls-te {
                      when
                        "../../../../../../ni:name!='__dcn_vpn__'";
                      description
                        "Configure OSPF processes enabled with the TE capability.";
                      leaf enable {
                        type boolean;
                        must
                          "../../../../opaque='true' or ../enable='false'";
                        default "false";
                        description
                          "Enable/disable TE capability of the OSPF process in the specified area.";
                      }
    
                      leaf standard-complying {
                        type boolean;
                        must
                          "../standard-complying='false' or ../enable='true'";
                        default "false";
                        description
                          "Enable/disable accept the LSAs in standard format only.";
                      }
                    }  // container mpls-te
    
                    container authentication {
                      must
                        '(key-id and auth-text-md5) or (not(key-id) and not(auth-text-md5))';
                      description
                        "Configure authentication. The encryption algorithm MD5 has a low security, which may bring security risks. Using more secure authentication is recommended.";
                      leaf mode {
                        type area-authen-mode;
                        default "none";
                        description
                          "Set authentication type.";
                      }
    
                      leaf auth-text-simple {
                        when "../mode='simple'";
                        type pub-type:password;
                        description
                          "Simple authentication key. The password is a string ranging from 1 to 8 characters for a unencrypted password and 24 to 128 characters for a encrypted password.";
                      }
    
                      leaf key-id {
                        when
                          "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                        type uint32 {
                          range "1..255";
                        }
                        description
                          "Authentication identifier.";
                      }
    
                      leaf auth-text-md5 {
                        when
                          "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                        type pub-type:password-extend;
                        description
                          "Encrypted authentication password.";
                      }
    
                      leaf key-chain-name {
                        ext:case-sensitivity "lower-only";
                        when
                          "../mode='keychain'";
                        type string {
                          length "1..47";
                          pattern "[^A-Z]+";
                        }
                        mandatory true;
                        description
                          "Keychain name.";
                      }
                    }  // container authentication
    
                    container abr-summary-prefixs {
                      description
                        "List of ABR route aggregation method.";
                      list abr-summary-prefix {
                        key "prefix network-mask";
                        description
                          "Configure ABR route aggregation method.";
                        leaf prefix {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies the IP address in dotted decimal notation.";
                        }
    
                        leaf network-mask {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies the mask of the IP address. The mask address is in dotted decimal notation.";
                        }
    
                        choice cost {
                          description
                            "Set the cost.";
                          case cost-value {
                            description
                              "Specifies the cost of the aggregated route. By default, the maximal cost in that of all the routes which are aggregated serves as the cost of the aggregated route.";
                            leaf cost-value {
                              type uint32 {
                                range
                                  "0..16777214";
                              }
                              description
                                "Specifies the cost of the aggregated route. By default, the maximal cost in that of all the routes which are aggregated serves as the cost of the aggregated route.";
                            }
                          }  // case cost-value
    
                          case cost-inherit-min {
                            description
                              "Indicates if minimum cost should be inherited. By default, maximum cost is inherited.";
                            leaf cost-inherit-min {
                              when
                                "../../../../../../../../ni:name!='_public_'";
                              type empty;
                              description
                                "Indicates if minimum cost should be inherited. By default, maximum cost is inherited.";
                            }
                          }  // case cost-inherit-min
                        }  // choice cost
    
                        leaf hold-max-cost {
                          type uint16 {
                            range "10..1800";
                          }
                          description
                            "Hold max cost duration.";
                        }
    
                        leaf advertise {
                          type boolean;
                          default "true";
                          description
                            "Enable/disable the aggregated route is advertised.";
                        }
    
                        leaf generate-null-zero {
                          when
                            "../advertise='true'";
                          type boolean;
                          default "false";
                          description
                            "Enable/disable generate black hole route.";
                        }
                      }  // list abr-summary-prefix
                    }  // container abr-summary-prefixs
    
                    container vlink-peers {
                      when
                        "../area-type='normal'";
                      description
                        "List of virtual link and its parameters.";
                      list vlink-peer {
                        key "router-id";
                        description
                          "Configure virtual link and its parameters.";
                        leaf router-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Neighbor Router ID.";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..3600";
                          }
                          default "5";
                          description
                            "Interval for retransmitting LSAs.";
                        }
    
                        leaf smart-discover {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable smart discover feature.";
                        }
    
                        container timer {
                          must
                            "hello-interval<dead-interval";
                          description
                            "Configure timer.";
                          leaf hello-interval {
                            type uint32 {
                              range "1..65535";
                            }
                            default "10";
                            description
                              "Time between Hello packets.";
                          }
    
                          leaf dead-interval {
                            type uint32 {
                              range
                                "1..235926000";
                            }
                            default "40";
                            description
                              "Interval after which a neighbor is declared dead.";
                          }
    
                          leaf trans-delay-interval {
                            type uint32 {
                              range "1..3600";
                            }
                            default "1";
                            description
                              "Delay for transmitting LSAs.";
                          }
                        }  // container timer
    
                        container authentication {
                          description
                            "Configure authentication. The encryption algorithm MD5 has a low security, which may bring security risks. Using more secure authentication is recommended.";
                          leaf mode {
                            type intf-authen-mode;
                            default "none";
                            description
                              "Set authentication type: Simple authentication type, Md5/HMAC MD5/HMAC SHA256 authentication type.";
                          }
    
                          leaf auth-text-simple {
                            when
                              "../mode='simple'";
                            type pub-type:password;
                            description
                              "Simple authentication key. The password is a string ranging from 1 to 8 characters for a unencrypted password and 24 to 128 characters for a encrypted password.";
                          }
    
                          leaf key-id {
                            when
                              "../mode='hmac-sha256' or ../mode='md5' or ../mode='hmac-md5'";
                            type uint32 {
                              range "1..255";
                            }
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "Authentication identifier.";
                          }
    
                          leaf auth-text-md5 {
                            when
                              "../mode='hmac-sha256' or ../mode='md5' or ../mode='hmac-md5'";
                            type pub-type:password-extend {
                              length "1..432";
                            }
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "MD5/HMAC MD5/HMAC SHA256 authentication password.";
                          }
    
                          leaf key-chain-name {
                            ext:case-sensitivity "lower-only";
                            when
                              "../mode='keychain'";
                            type string {
                              length "1..47";
                              pattern "[^A-Z]+";
                            }
                            mandatory true;
                            description
                              "Keychain name.";
                          }
                        }  // container authentication
    
                        container attribute {
                          config false;
                          description
                            "Statistics of vlink peer.";
                          leaf intf-state {
                            type intf-state;
                            description
                              "OSPF virtual interface states.";
                          }
    
                          leaf intf-ip-addr {
                            type inet:ipv4-address-no-zone;
                            description
                              "Self or source IP address of the out going interface.";
                          }
    
                          leaf gr-state {
                            type nbr-gr-state;
                            description
                              "Status of GR of an interface.";
                          }
    
                          leaf intf-cost {
                            type uint32;
                            description
                              "Cost to reach the end point of this virtual link or cost to reach the virtual neighbor.";
                          }
    
                          leaf intf-type {
                            type network-type;
                            description
                              "Interface type.";
                          }
    
                          leaf if-events {
                            type uint32;
                            description
                              "Virtual interface events.";
                          }
    
                          leaf if-status {
                            type if-row-status;
                            description
                              "Virtual interface status.";
                          }
    
                          leaf if-lsa-count {
                            type uint32;
                            description
                              "Virtual interface LSA count.";
                          }
    
                          leaf if-lsa-checksum {
                            type uint32;
                            description
                              "Virtual interface LSA checksum.";
                          }
                        }  // container attribute
                      }  // list vlink-peer
                    }  // container vlink-peers
    
                    container sham-links {
                      when
                        "../../../../../../ni:name!='_public_'";
                      description
                        "List of sham link and its parameters.";
                      list sham-link {
                        key "src-addr dest-addr";
                        description
                          "Configure sham link and its parameters.";
                        leaf src-addr {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address.";
                        }
    
                        leaf dest-addr {
                          type inet:ipv4-address-no-zone;
                          must
                            "../dest-addr!=../src-addr";
                          description
                            "Destination address.";
                        }
    
                        leaf cost {
                          type uint32 {
                            range "1..65535";
                          }
                          default "1";
                          description "Cost.";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..3600";
                          }
                          default "5";
                          description
                            "Interval for retransmitting LSAs.";
                        }
    
                        leaf smart-discover {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable smart discover feature.";
                        }
    
                        container timer {
                          must
                            "hello-interval<dead-interval";
                          description
                            "Configure timer.";
                          leaf hello-interval {
                            type uint32 {
                              range "1..65535";
                            }
                            default "10";
                            description
                              "Time between Hello packets.";
                          }
    
                          leaf dead-interval {
                            type uint32 {
                              range
                                "1..235926000";
                            }
                            default "40";
                            description
                              "Interval after which a neighbor is declared dead.";
                          }
    
                          leaf trans-delay-interval {
                            type uint32 {
                              range "1..3600";
                            }
                            default "1";
                            description
                              "Delay for transmitting LSAs.";
                          }
                        }  // container timer
    
                        container authentication {
                          description
                            "Configure authentication. The encryption algorithm MD5 has a low security, which may bring security risks. Using more secure authentication is recommended.";
                          leaf mode {
                            type intf-authen-mode;
                            default "none";
                            description
                              "Set authentication type: Simple authentication type, Md5/HMAC MD5/HMAC SHA256 authentication type.";
                          }
    
                          leaf auth-text-simple {
                            when
                              "../mode='simple'";
                            type pub-type:password;
                            description
                              "Simple authentication key. The password is a string ranging from 1 to 8 characters for a unencrypted password and 24 to 128 characters for a encrypted password.";
                          }
    
                          leaf key-id {
                            when
                              "../mode='hmac-sha256' or ../mode='md5' or ../mode='hmac-md5'";
                            type uint32 {
                              range "1..255";
                            }
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "Authentication identifier.";
                          }
    
                          leaf auth-text-md5 {
                            when
                              "../mode='hmac-sha256' or ../mode='md5' or ../mode='hmac-md5'";
                            type pub-type:password-extend {
                              length "1..432";
                            }
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "MD5/HMAC MD5/HMAC SHA256 authentication password.";
                          }
    
                          leaf key-chain-name {
                            ext:case-sensitivity "lower-only";
                            when
                              "../mode='keychain'";
                            type string {
                              length "1..47";
                              pattern "[^A-Z]+";
                            }
                            mandatory true;
                            description
                              "Keychain name.";
                          }
                        }  // container authentication
    
                        container attribute {
                          config false;
                          description
                            "Statistics of sham link.";
                          leaf state {
                            type intf-state;
                            description
                              "OSPF sham interface states.";
                          }
    
                          leaf gr-state {
                            type nbr-gr-state;
                            description
                              "Status of GR of the interface.";
                          }
    
                          leaf nbr-state {
                            type nbr-state;
                            description
                              "OSPF neighbor states.";
                          }
    
                          leaf nbr-id {
                            type inet:ipv4-address-no-zone;
                            description
                              "Neighbor router ID.";
                          }
                        }  // container attribute
                      }  // list sham-link
                    }  // container sham-links
    
                    container filters {
                      description
                        "List of ABR to filter outgoing or incoming summary LSAs of the local area.";
                      list filter {
                        key "mode";
                        description
                          "Configure ABR to filter outgoing or incoming summary LSAs of the local area.";
                        leaf mode {
                          type area-filter-mode;
                          description
                            "Using the filter export command, you can configure an ABR to filter outgoing summary LSAs of the local area. Using the filter import command, you can configure an ABR to filter incoming summary LSAs of the local area.";
                        }
    
                        uses policy-type;
    
                        leaf include-abr-summary {
                          when
                            "../mode='filter-import'";
                          type boolean;
                          default "false";
                          description
                            "Enable/disable include abr summary flag.";
                        }
                      }  // list filter
                    }  // container filters
    
                    container interfaces {
                      description
                        "List of the interface enabled with OSPF.";
                      list interface {
                        key "name";
                        description
                          "Configure the interface enabled with OSPF.";
                        leaf name {
                          type leafref {
                            path
                              "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                          }
                          must
                            "../../../../../../../../ni:name=/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name";
                          description
                            "Interface name. OSPF does not support the configuration of a NULL/LMP/MTUNNEL/RPR/STACKPORT/SIP/ATMBUNDLE/IMAGROUP/Remote-Ap/VBridge interface types.";
                        }
    
                        leaf network-type {
                          ext:dynamic-default;
                          type network-type;
                          description
                            "Network type of an OSPF interface. By default, the network type of an interface is determined by the physical interface.
                           In the same network segment, if only two routers run OSPF, you can change the network type of an interface to P2P.";
                        }
    
                        leaf peer-ip-ignore {
                          type peer-ip-ignore-type;
                          must
                            "../peer-ip-ignore='enable' and ../network-type='p2p' or ../peer-ip-ignore='disable'";
                          default "disable";
                          description
                            "Ignores the subnet match check in multi access interface when network type P2P is configured along with this option.";
                        }
    
                        leaf transmit-delay {
                          type int32 {
                            range "1..500";
                          }
                          default "1";
                          description
                            "Delay for transmitting LSAs on an interface.";
                        }
    
                        leaf mtu-enable {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable MTU filled in a DD packet when the packet is sent. The default MTU in the DD packet is 0. Using the command, you can manually configure the interface to fill in the MTU field (actual MTU of the interface) when the interface sends DD packets.
                           After a virtual connection is established through the virtual template or tunnel, different vendors may use different MTUs as default settings. To ensure consistency, the MTU is set to 0 by default when the interface sends DD packets. Thus, the ospf mtu-enable command usually does not need to be configured.
                           OSPF does not support the preceding configuration on a null interface.";
                        }
    
                        leaf dr-priority {
                          type int32 {
                            range "0..255";
                          }
                          default "1";
                          description
                            "Priority of the interface that participates in the DR and BDR election. The greater the value is, the higher the priority is. The router whose priority is 0 cannot be elected as a DR or a BDR.";
                        }
    
                        leaf cost {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "To set the cost of an interface. The default value is 1. But the default of Loopback is 0.";
                        }
    
                        leaf smart-discover {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable smart discover on an interface. When the neighbor status of a router or a DR or BDR on the multi address network of the broadcast or NBMA type changes, the router can send hello packets to the neighbor actively rather than wait for the expiration of the hello timer.";
                        }
    
                        leaf p2mp-mask-ignore {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable to ignore the check of network masks on a P2MP network. On a P2MP network, when the lengths of device masks are inconsistent, the check of network masks in hello packets can be ignored through this command. In this case, the OSPF neighbor relationship can be normally established.";
                        }
    
                        leaf ldp-sync-block {
                          type boolean;
                          must
                            "../ldp-sync-block='false' or ../ldp-sync-enable='false'";
                          default "false";
                          description
                            "Enable/disable LDP sync on this interface.";
                        }
    
                        leaf ldp-sync-enable {
                          type boolean;
                          must
                            "../ldp-sync-enable='false' or ../ldp-sync-block='false'";
                          default "false";
                          description
                            "Enable/disable LDP and OSPF synchronization on an interface.";
                        }
    
                        leaf link-cost {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Link cost to be incremented when link quality is low. The default of Loopback is 0,others is 1.";
                        }
    
                        leaf suppress-reachability {
                          type suppr-reach;
                          default
                            "not-configured";
                          description
                            "Suppress its own prefixes and ignore the suppressed prefixes.";
                        }
    
                        leaf mpls-ldp-auto-flag {
                          type if-auto-cfg-state;
                          default "none";
                          description
                            "Block MPLS LDP auto configuration on the interface.";
                        }
    
                        leaf dcn-opq-blk-enable {
                          type boolean;
                          default "false";
                          description
                            "Enable/disable filter type-10 dcn opaque LSAs.";
                        }
    
                        leaf peer-hold-max-timer {
                          type uint32 {
                            range "100..1000000";
                          }
                          units "ms";
                          description
                            "Config peer hold max cost interval.";
                        }
    
                        leaf fallback-cost {
                          when
                            "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../name]/ifm:type='Eth-Trunk'";
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Fallback cost.";
                        }
    
                        leaf fallback-bw {
                          when
                            "../fallback-cost";
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          units "Mbit/s";
                          mandatory true;
                          description
                            "Fallback bandwidth threshold.";
                        }
    
                        leaf source-sub-ip-address {
                          type inet:ipv4-address-no-zone;
                          must
                            "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../name]/ifm:type='Vlanif' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../name]/ifm:type='Vbdif'";
                          description
                            "Source address indicating a subordinate IP address.";
                        }
    
                        container frr {
                          description
                            "Configure FRR.";
                          leaf frr-disable {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable not use this interface for FRR calculation.";
                          }
    
                          leaf rlfa-disable {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable remote LFA of the Interface.";
                          }
    
                          container ti-lfa {
                            description
                              "Configure topology independent loop free alternate (TILFA) computation using segment routing.";
                            leaf disable {
                              type boolean;
                              default "false";
                              description
                                "Enable/disable topology independent LFA on the interface except Loopback.";
                            }
                          }  // container ti-lfa
                        }  // container frr
    
                        container timer {
                          description
                            "Configure timer.";
                          leaf hello-interval {
                            ext:dynamic-default {
                              ext:default-value "10" {
                                when "../../network-type = 'p2p' or ../../network-type = 'broadcast'";
                                description "The default value is 10 when network-type is p2p or broadcast.";
                              }
                              ext:default-value "30" {
                                when "../../network-type = 'p2mp' or ../../network-type = 'nbma'";
                                description "The default value is 30 when network-type is p2mp or nbma.";
                              }
                            }
                            type int32 {
                              range "1..65535";
                            }
                            description
                              "Interval for sending hello packets on an interface.";
                          }
    
                          leaf hello-conser {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable the compensation mechanism of controling the deadtimer to enable.";
                          }
    
                          leaf dead-interval {
                            ext:dynamic-default {
                              ext:default-value "4*(../hello-interval)" {
                                description "The default value of dead interval is 4 times that of hello interval.";
                              }
                            }
                            type int32 {
                              range
                                "1..235926000";
                            }
                            must
                              '../hello-interval<../dead-interval';
                            description
                              "Dead interval of an OSPF neighbor.";
                          }
    
                          leaf wait-interval {
                            ext:dynamic-default {
                              ext:default-value "../dead-interval" {
                                description "The default value of wait interval is equal to dead interval.";
                              }
                            }
                            type uint32 {
                              range
                                "1..235926000";
                            }
                            description
                              "Wait time.";
                          }
    
                          leaf poll-interval {
                            type int32 {
                              range "1..3600";
                            }
                            default "120";
                            description
                              "Poll interval for sending hello packets. On the NBMA network, after the neighbor is invalid, the router sends hello packets periodically according to the interval set through the ospf timer poll command. The poll interval should be at least four times of the interval for sending hello packets.";
                          }
    
                          leaf retransmit-interval {
                            type int32 {
                              range "1..3600";
                            }
                            default "5";
                            description
                              "Interval for retransmitting LSAs on an interface.";
                          }
                        }  // container timer
    
                        container ldp-sync {
                          description
                            "Configure timer ldp sync.";
                          leaf hold-down-timer {
                            type uint16 {
                              range "0..65535";
                            }
                            units "s";
                            default "10";
                            description
                              "Hold down interval.";
                          }
    
                          choice hold-cost-max {
                            description
                              "Set timer ldp sync.";
                            case timer {
                              description
                                "Set max cost interval.";
                              leaf timer {
                                type uint16 {
                                  range
                                    "0..65535";
                                }
                                units "s";
                                description
                                  "Max cost interval range.";
                              }
                            }  // case timer
    
                            case infinite {
                              description
                                "Always advertise the maximum cost.";
                              leaf infinite {
                                type empty;
                                description
                                  "Always advertise the maximum cost.";
                              }
                            }  // case infinite
                          }  // choice hold-cost-max
                        }  // container ldp-sync
    
                        container bfd {
                          description
                            "Configure BFD.";
                          leaf enable {
                            type boolean;
                            must
                              "../enable='false' or ../block='false'";
                            default "false";
                            description
                              "Enable/disable BFD.";
                          }
    
                          leaf block {
                            type boolean;
                            must
                              "../block='false' or ../enable='false'";
                            default "false";
                            description
                              "Enable/disable to prevent the dynamic establishment of a BFD session on an interface.";
                          }
    
                          leaf detect-multiplier {
                            type uint32 {
                              range "3..50";
                            }
                            default "3";
                            description
                              "Local detection multiplier.";
                          }
    
                          leaf min-tx {
                            type uint32 {
                              range "3..20000";
                            }
                            units "ms";
                            description
                              "Minimum interval for sending BFD packets to the peer end. The ranges and the default value is determined by the PAF.";
                          }
    
                          leaf min-rx {
                            type uint32 {
                              range "3..20000";
                            }
                            units "ms";
                            description
                              "Minimum interval for receiving BFD packets from the peer end. The ranges and the default value is determined by the PAF.";
                          }
    
                          leaf frr-binding {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable bind FRR with BFD.";
                          }
    
                          choice incr-cost {
                            description
                              "Interface BFD sync cost.";
                            case incr-cost-block {
                              description
                                "Interface BFD sync cost block.";
                              leaf incr-cost-block {
                                type empty;
                                description
                                  "Interface BFD sync cost block.";
                              }
                            }  // case incr-cost-block
    
                            case incr-cost-value {
                              description
                                "Interface BFD sync cost.";
                              leaf incr-cost-value {
                                type uint32 {
                                  range
                                    "1..65535";
                                }
                                description
                                  "Interface BFD sync cost.";
                              }
                            }  // case incr-cost-value
                          }  // choice incr-cost
    
                          leaf per-link-flag {
                            type boolean;
                            must
                              "../one-arm-echo-flag=../per-link-flag and (../per-link-flag='false' or ../enable='true')";
                            default "false";
                            description
                              "Enable/disable BFD session per link, support only VLANif interface.";
                          }
    
                          leaf one-arm-echo-flag {
                            type boolean;
                            must
                              "../one-arm-echo-flag=../per-link-flag and (../one-arm-echo-flag='false' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../name]/ifm:type='Vlanif')";
                            default "false";
                            description
                              "Enable/disable echo detection mode, support only VLANif interface.";
                          }
                        }  // container bfd
    
                        container authentication {
                          description
                            "Configure authentication. The encryption algorithm MD5 has a low security, which may bring security risks. Using more secure authentication is recommended.";
                          leaf mode {
                            type intf-authen-mode;
                            default "none";
                            description
                              "Set Authentication type.";
                          }
    
                          leaf auth-text-simple {
                            when
                              "../mode='simple'";
                            type pub-type:password;
                            description
                              "Simple authentication key. The password is a string ranging from 1 to 8 characters for a unencrypted password and 24 to 128 characters for a encrypted password.";
                          }
    
                          leaf key-id {
                            when
                              "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                            type uint32 {
                              range "1..255";
                            }
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "Authentication identifier.";
                          }
    
                          leaf auth-text-md5 {
                            when
                              "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                            type pub-type:password-extend;
                            must
                              "../key-id and ../auth-text-md5";
                            description
                              "Encrypted authentication password.";
                          }
    
                          leaf key-chain-name {
                            ext:case-sensitivity "lower-only";
                            when
                              "../mode='keychain'";
                            type string {
                              length "1..47";
                              pattern "[^A-Z]+";
                            }
                            mandatory true;
                            description
                              "Keychain name.";
                          }
                        }  // container authentication
    
                        container filter-lsa-out {
                          description
                            "Configure filter lsa out.";
                          choice type {
                            description
                              "Set filter lsa out type.";
                            case total {
                              description
                                "Filter total types of LSAs.";
                              leaf all-flag {
                                type empty;
                                description
                                  "Filter all types of LSAs.";
                              }
                            }  // case total
    
                            case other {
                              description
                                "Filter other types of LSAs.";
                              leaf sum-flag {
                                type empty;
                                description
                                  "Filter type3 summary LSAs.";
                              }
    
                              choice sum-filter {
                                description
                                  "Type of a filtering rule.";
                                case acl {
                                  description
                                    "Basic ACL name or ACL number.";
                                  leaf sum-name {
                                    when
                                      '../sum-flag';
                                    type leafref {
                                      path "/acl:acl/acl:groups/acl:group/acl:identity";
                                    }
                                    must
                                      "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                                    description
                                      "Basic ACL name or ACL number.";
                                  }
                                }  // case acl
                              }  // choice sum-filter
    
                              leaf ase-flag {
                                type empty;
                                description
                                  "Filter type5 ASE LSAs.";
                              }
    
                              choice ase-filter {
                                description
                                  "Type of a filtering rule.";
                                case acl {
                                  description
                                    "Basic ACL name or ACL number.";
                                  leaf ase-name {
                                    when
                                      '../ase-flag';
                                    type leafref {
                                      path "/acl:acl/acl:groups/acl:group/acl:identity";
                                    }
                                    must
                                      "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                                    description
                                      "Basic ACL name or ACL number.";
                                  }
                                }  // case acl
                              }  // choice ase-filter
    
                              leaf nssa-flag {
                                type empty;
                                description
                                  "Filter type7 NSSA LSAs.";
                              }
    
                              choice nssa-filter {
                                description
                                  "Type of a filtering rule.";
                                case acl {
                                  description
                                    "Basic ACL name or ACL number.";
                                  leaf nssa-name {
                                    when
                                      '../nssa-flag';
                                    type leafref {
                                      path "/acl:acl/acl:groups/acl:group/acl:identity";
                                    }
                                    must
                                      "/acl:acl/acl:groups/acl:group[acl:identity=current()]/acl:type='basic'";
                                    description
                                      "Basic ACL name or ACL number.";
                                  }
                                }  // case acl
                              }  // choice nssa-filter
                            }  // case other
                          }  // choice type
                        }  // container filter-lsa-out
    
                        container suppress-flapping {
                          description
                            "Configure flapping suppression.";
                          container peer {
                            must
                              'resume-interval>detect-interval';
                            description
                              "Configure flapping suppression peer. Not support Loopback.";
                            leaf enable {
                              type boolean;
                              default "true";
                              description
                                "Enable/disable interface peer flapping suppress.";
                            }
    
                            leaf detect-interval {
                              type uint32 {
                                range "1..300";
                              }
                              default "60";
                              description
                                "Detecting interval.";
                            }
    
                            leaf threshold {
                              type uint32 {
                                range "1..1000";
                              }
                              default "10";
                              description
                                "Threshold.";
                            }
    
                            leaf resume-interval {
                              type uint32 {
                                range "2..1000";
                              }
                              default "120";
                              description
                                "Resume interval.";
                            }
    
                            leaf hold-down-interval {
                              type uint32 {
                                range "1..86400";
                              }
                              description
                                "Hold down interval.";
                            }
    
                            leaf hold-max-cost {
                              type boolean;
                              default "true";
                              description
                                "Enable/disable hold max cost.";
                            }
                          }  // container peer
                        }  // container suppress-flapping
    
                        container flush-source-trace {
                          description
                            "Configure OSPF flush source trace function.";
                          leaf block {
                            type boolean;
                            default "false";
                            description
                              "Enable/disable OSPF flush source trace.";
                          }
                        }  // container flush-source-trace
    
                        container mpls-te-peers {
                          description
                            "List of OSPF passive peer.";
                          list mpls-te-peer {
                            key "id router-id intf-ip";
                            description
                              "Configure OSPF passive peer.";
                            leaf id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Neighbor ID.";
                            }
    
                            leaf router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "Configure OSPF passive peer router ID.";
                            }
    
                            leaf intf-ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "Configure interface address of passive peer.";
                            }
    
                            container procs {
                              description
                                "List of OSPF passive peers area.";
                              list proc {
                                key "pid aid";
                                max-elements 1;
                                description
                                  "Configure OSPF passive peers area.";
                                leaf pid {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  description
                                    "Process ID.";
                                }
    
                                leaf aid {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Area ID.";
                                }
    
                                leaf cost {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  default "1";
                                  description
                                    "Configuration cost value.";
                                }
                              }  // list proc
                            }  // container procs
                          }  // list mpls-te-peer
                        }  // container mpls-te-peers
    
                        container multi-areas {
                          description
                            "List of the information about the multi-area interface enabled with OSPF.";
                          list multi-area {
                            key "area-id";
                            description
                              "Configure the interface enabled with OSPF.";
                            leaf area-id {
                              type leafref {
                                path
                                  "/ni:network-instance/ni:instances/ni:instance/ospfv2:ospfv2/ospfv2:sites/ospfv2:site/ospfv2:areas/ospfv2:area/ospfv2:area-id";
                              }
                              must
                                "../area-id!=../../../../../area-id";
                              description
                                "Multi area id.";
                            }
    
                            leaf transmit-delay {
                              type int32 {
                                range "1..500";
                              }
                              units "s";
                              default "1";
                              description
                                "Delay for transmitting LSAs on an interface.";
                            }
    
                            leaf mtu-enable {
                              type boolean;
                              default "false";
                              description
                                "Enable/disable MTU.Configure the interface to fill in the MTU field (actual MTU of the interface) when the interface sends DD packets.
                               After a virtual connection is established through the virtual template or tunnel, different vendors may use different MTUs as default settings. To ensure consistency, the MTU is set to 0 by default when the interface sends DD packets. Thus, the ospf mtu-enable command usually does not need to be configured. OSPF does not support the preceding configuration on a null interface.";
                            }
    
                            leaf cost {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "To set the cost of an interface. The default value is 1. But the default of Loopback is 0.";
                            }
    
                            leaf smart-discover {
                              type boolean;
                              default "false";
                              description
                                "Enable/disable smart discover on an interface. When the neighbor status of a router or a DR or BDR on the multi-address network of the broadcast or NBMA type changes, the router can send Hello packets to the neighbor actively rather than wait for the expiration of the Hello timer.";
                            }
    
                            leaf ldp-sync-block {
                              type boolean;
                              must
                                "../ldp-sync-block='false' or ../ldp-sync-enable='false'";
                              default "false";
                              description
                                "Enable/disable ldp sync on this interface.";
                            }
    
                            leaf ldp-sync-enable {
                              type boolean;
                              must
                                "../ldp-sync-enable='false' or ../ldp-sync-block='false'";
                              default "false";
                              description
                                "Enable/disable LDP and OSPF synchronization on an interface.";
                            }
    
                            leaf fallback-cost {
                              when
                                "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()/../../../name]/ifm:type='Eth-Trunk'";
                              type uint16 {
                                range "1..65535";
                              }
                              description
                                "Fallback cost.";
                            }
    
                            leaf fallback-bw {
                              when
                                "../fallback-cost";
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              units "Mbit/s";
                              mandatory true;
                              description
                                "Fallback bandwidth threshold.";
                            }
    
                            container frr {
                              description
                                "Configure frr.";
                              leaf frr-disable {
                                type boolean;
                                default "false";
                                description
                                  "Enable/disable use this interface for FRR calculation.";
                              }
    
                              leaf rlfa-disable {
                                type boolean;
                                default "false";
                                description
                                  "Enable/disable remote LFA of the Interface.";
                              }
    
                              leaf ti-lfa-disable {
                                type boolean;
                                default "false";
                                description
                                  "Enable/disable Topology Independent LFA on the interface except Loopback.";
                              }
                            }  // container frr
    
                            container timer {
                              description
                                "Configure timer.";
                              leaf hello-interval {
                                ext:dynamic-default {
                                  ext:default-value "10" {
                                    when "../../../../network-type = 'p2p' or ../../../../network-type = 'broadcast'";
                                    description "The default value is 10 when network-type is p2p or broadcast.";
                                  }
                                  ext:default-value "30" {
                                    when "../../../../network-type = 'p2mp' or ../../../../network-type = 'nbma'";
                                    description "The default value is 30 when network-type is p2mp or nbma.";
                                  }
                                }
                                type int32 {
                                  range
                                    "1..65535";
                                }
                                units "s";
                                description
                                  "Interval for sending Hello packets on an interface. The default value of p2p and broadcast is 10.The default of p2mp and NBMA is 30.";
                              }
    
                              leaf dead-interval {
                                ext:dynamic-default {
                                  ext:default-value "4*(../hello-interval)" {
                                    description "The default value of dead interval is 4 times that of hello interval.";
                                  }
                                }
                                type int32 {
                                  range
                                    "1..235926000";
                                }
                                units "s";
                                must
                                  "../hello-interval<../dead-interval";
                                description
                                  "Dead interval of an OSPF neighbor. The default value of p2p and broadcast is 40.The default of p2mp and NBMA is 120.";
                              }
    
                              leaf retransmit-interval {
                                type int32 {
                                  range
                                    "1..3600";
                                }
                                default "5";
                                description
                                  "Interval for Retransmitting LSAs on an Interface.";
                              }
                            }  // container timer
    
                            container ldp-sync {
                              description
                                "Configure timer ldp sync.";
                              leaf hold-down-timer {
                                type uint16 {
                                  range
                                    "0..65535";
                                }
                                units "s";
                                default "10";
                                description
                                  "Hold down interval range.";
                              }
    
                              choice hold-cost-max {
                                description
                                  "Set timer ldp-sync.";
                                case timer {
                                  description
                                    "Set max cost interval.";
                                  leaf timer {
                                    type uint16 {
                                      range
                                        "0..65535";
                                    }
                                    units "s";
                                    description
                                      "Max cost interval range.";
                                  }
                                }  // case timer
    
                                case infinite {
                                  description
                                    "Always advertise the maximum cost.";
                                  leaf infinite {
                                    type empty;
                                    description
                                      "Always advertise the maximum cost.";
                                  }
                                }  // case infinite
                              }  // choice hold-cost-max
                            }  // container ldp-sync
    
                            container bfd {
                              description
                                "Configure BFD.";
                              leaf block {
                                type boolean;
                                default "false";
                                description
                                  "Enable/disable prevent the dynamic establishment of a BFD session on an interface.";
                              }
                            }  // container bfd
    
                            container authentication {
                              must
                                "(key-id and auth-text-md5) or (not(key-id) and not(auth-text-md5))";
                              description
                                "Configure authentication. The encryption algorithm MD5 has a low security, which may bring security risks. Using more secure authentication is recommended.";
                              leaf mode {
                                type intf-authen-mode;
                                default "none";
                                description
                                  "Set Authentication type.";
                              }
    
                              leaf auth-text-simple {
                                when
                                  "../mode='simple'";
                                type pub-type:password;
                                description
                                  "Simple authentication key. The password is a string ranging from 1 to 8 characters for a unencrypted password and 24 to 128 characters for a encrypted password.";
                              }
    
                              leaf key-id {
                                when
                                  "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                                type uint32 {
                                  range "1..255";
                                }
                                description
                                  "Authentication identifier.";
                              }
    
                              leaf auth-text-md5 {
                                when
                                  "../mode='hmac-md5' or ../mode='hmac-sha256' or ../mode='md5'";
                                type pub-type:password-extend;
                                description
                                  "MD5/HMAC-MD5/HMAC-SHA256 Authentication Password.";
                              }
    
                              leaf key-chain-name {
                                ext:case-sensitivity "lower-only";
                                when
                                  "../mode='keychain'";
                                type string {
                                  length "1..47";
                                  pattern
                                    "[^A-Z]+";
                                }
                                mandatory true;
                                description
                                  "Keychain Name.";
                              }
                            }  // container authentication
    
                            container filter-lsa-out {
                              presence
                                "Enable multi area filter lsa out.";
                              description
                                "Configure filter-lsa-out.";
                              choice type {
                                mandatory true;
                                description
                                  "Set filter-lsa-out type.";
                                case total {
                                  description
                                    "Filter total types of LSAs.";
                                  leaf all-flag {
                                    type empty;
                                    description
                                      "Filter all types of LSAs.";
                                  }
                                }  // case total
    
                                case other {
                                  description
                                    "Filter other types of LSAs.";
                                  leaf sum-flag {
                                    type empty;
                                    description
                                      "Filter type-3 Summary LSAs.";
                                  }
    
                                  choice sum-filter {
                                    description
                                      "Type of a filtering rule.";
                                    case acl {
                                      description
                                        "ACL-Name or ACL-Number.";
                                      leaf sum-name {
                                        when
                                          "../sum-flag";
                                        type leafref {
                                          path "/acl:acl/acl:groups/acl:group/acl:identity";
                                        }
                                        description
                                          "ACL-Name or ACL-Number.";
                                      }
                                    }  // case acl
                                  }  // choice sum-filter
    
                                  leaf ase-flag {
                                    type empty;
                                    description
                                      "Filter type-5 ASE LSAs.";
                                  }
    
                                  choice ase-filter {
                                    description
                                      "Type of a filtering rule.";
                                    case acl {
                                      description
                                        "ACL-Name or ACL-Number.";
                                      leaf ase-name {
                                        when
                                          "../ase-flag";
                                        type leafref {
                                          path "/acl:acl/acl:groups/acl:group/acl:identity";
                                        }
                                        description
                                          "ACL-Name or ACL-Number.";
                                      }
                                    }  // case acl
                                  }  // choice ase-filter
    
                                  leaf nssa-flag {
                                    type empty;
                                    description
                                      "Filter type-7 NSSA LSAs.";
                                  }
    
                                  choice nssa-filter {
                                    description
                                      "Type of a filtering rule.";
                                    case acl {
                                      description
                                        "ACL-Name or ACL-Number.";
                                      leaf nssa-name {
                                        when
                                          "../nssa-flag";
                                        type leafref {
                                          path "/acl:acl/acl:groups/acl:group/acl:identity";
                                        }
                                        description
                                          "ACL-Name or ACL-Number.";
                                      }
                                    }  // case acl
                                  }  // choice nssa-filter
                                }  // case other
                              }  // choice type
                            }  // container filter-lsa-out
    
                            container suppress-flapping {
                              description
                                "Configure flapping suppression.";
                              container peer {
                                must
                                  "resume-interval>detect-interval";
                                description
                                  "Configure flapping suppression peer. Not support Loopback.";
                                leaf enable {
                                  type boolean;
                                  default "true";
                                  description
                                    "Enable/disable interface peer flapping suppress.";
                                }
    
                                leaf detect-interval {
                                  type uint32 {
                                    range
                                      "1..300";
                                  }
                                  default "60";
                                  description
                                    "Detecting-interval.";
                                }
    
                                leaf threshold {
                                  type uint32 {
                                    range
                                      "1..1000";
                                  }
                                  default "10";
                                  description
                                    "Threshold.";
                                }
    
                                leaf resume-interval {
                                  type uint32 {
                                    range
                                      "2..1000";
                                  }
                                  default "120";
                                  description
                                    "Resume-interval.";
                                }
    
                                leaf hold-down-interval {
                                  type uint32 {
                                    range
                                      "1..86400";
                                  }
                                  description
                                    "Hold-down-interval.";
                                }
    
                                leaf hold-max-cost {
                                  type boolean;
                                  default "true";
                                  description
                                    "Enable/disable hold max cost.";
                                }
                              }  // container peer
                            }  // container suppress-flapping
    
                            container attribute {
                              config false;
                              description
                                "Statistics of multi-area interface.";
                              leaf intf-state {
                                type intf-state;
                                description
                                  "Status of the interface.";
                              }
    
                              leaf mtu {
                                type uint32;
                                description
                                  "MTU of the interface.";
                              }
    
                              leaf intf-ip-addr {
                                type inet:ipv4-address-no-zone;
                                description
                                  "IP address of the interface.";
                              }
    
                              leaf gr-state {
                                type nbr-gr-state;
                                description
                                  "Status of GR of the interface.";
                              }
    
                              leaf intf-cost {
                                type int32;
                                description
                                  "Cost of the interface.";
                              }
    
                              leaf prev-intf-state {
                                type intf-state;
                                description
                                  "Previous status of the interface.";
                              }
    
                              leaf peer-flap-status {
                                type peer-flapping-status;
                                description
                                  "Peer flapping suppress status.";
                              }
    
                              leaf peer-flap-count {
                                type uint32;
                                description
                                  "Peer flapping suppress count.";
                              }
    
                              leaf peer-flap-threshold {
                                type uint32;
                                description
                                  "Peer flapping suppress threshold.";
                              }
    
                              leaf peer-flap-time {
                                type yang:date-and-time;
                                description
                                  "Peer suppress-flapping start time.";
                              }
    
                              leaf peer-flap-remain-timer {
                                type uint32;
                                description
                                  "Peer flapping suppress remain timer.";
                              }
    
                              leaf cur-intf-bw {
                                type uint32;
                                description
                                  "Current interface bandwidth.";
                              }
                            }  // container attribute
    
                            container nbr-statistics {
                              config false;
                              description
                                "List of OSPF multi-area peer.";
                              list nbr-statistic {
                                key "router-id ip";
                                description
                                  "Statistics of OSPF multi-area peer.";
                                leaf router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of a neighbor router.";
                                }
    
                                leaf ip {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Address of a neighbor interface.";
                                }
    
                                leaf intf-ip {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "IP address of an interface.";
                                }
    
                                leaf gr-state {
                                  type nbr-gr-state;
                                  description
                                    "GR state.";
                                }
    
                                leaf state {
                                  type nbr-state;
                                  description
                                    "Neighbor status.";
                                }
    
                                leaf mode {
                                  type nbr-mode;
                                  description
                                    "Mode of the DD. The available options are master and slave.";
                                }
    
                                leaf priority {
                                  type int32;
                                  description
                                    "Priority of a neighbor router.";
                                }
    
                                leaf dr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Designated router.";
                                }
    
                                leaf bdr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Backup designated router.";
                                }
    
                                leaf intf-mtu {
                                  type uint32;
                                  description
                                    "MTU of a neighbor.";
                                }
    
                                leaf dead-due-timer {
                                  type uint32;
                                  description
                                    "Dead due timer.";
                                }
    
                                leaf retran-intv {
                                  type uint32;
                                  description
                                    "Neighbor retranIntv.";
                                }
    
                                leaf up-time {
                                  type string {
                                    length
                                      "1..16";
                                  }
                                  description
                                    "Time when a neighbor goes up.";
                                }
    
                                leaf up-time-stamp {
                                  type yang:date-and-time;
                                  description
                                    "Neighbor up time stamp.";
                                }
    
                                leaf auth-sequence {
                                  type uint32;
                                  description
                                    "Neighbor authentication sequence number.";
                                }
    
                                leaf adj-sid {
                                  type uint32;
                                  description
                                    "Adjacency SID.";
                                }
    
                                leaf adj-weight {
                                  type uint32;
                                  description
                                    "Adjacency weight.";
                                }
    
                                leaf adj-flags {
                                  type string {
                                    length
                                      "1..20";
                                  }
                                  description
                                    "Adjacency flags.";
                                }
                              }  // list nbr-statistic
                            }  // container nbr-statistics
    
                            container request-queues {
                              config false;
                              description
                                "List of the OSPF request message.";
                              list request-queue {
                                key "nbr-router-id nbr-ip-addr lsa-type link-state-id adv-router-id";
                                description
                                  "Statistics of the OSPF request message.";
                                leaf nbr-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of a neighbor router.";
                                }
    
                                leaf nbr-ip-addr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "IP address of the neighbor interface.";
                                }
    
                                leaf lsa-type {
                                  type lsa-type;
                                  description
                                    "LSA type.";
                                }
    
                                leaf link-state-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of the link state.";
                                }
    
                                leaf adv-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Advertisement router ID.";
                                }
    
                                leaf router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of the local router.";
                                }
    
                                leaf intf-ip-addr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Interface IP address.";
                                }
    
                                leaf lsa-sequence {
                                  type pub-type:hex-binary;
                                  description
                                    "LSA sequence number.";
                                }
    
                                leaf lsa-age {
                                  type uint32;
                                  description
                                    "LSA aging time.";
                                }
                              }  // list request-queue
                            }  // container request-queues
    
                            container retrans-queues {
                              config false;
                              description
                                "List of the OSPF retrans message.";
                              list retrans-queue {
                                key "nbr-router-id nbr-ip-addr lsa-type link-state-id adv-router-id";
                                description
                                  "Statistics of the OSPF retrans message.";
                                leaf nbr-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of a neighbor router.";
                                }
    
                                leaf nbr-ip-addr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "IP address of the neighbor interface.";
                                }
    
                                leaf lsa-type {
                                  type lsa-type;
                                  description
                                    "LSA type.";
                                }
    
                                leaf link-state-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of the link state.";
                                }
    
                                leaf adv-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Advertisement router ID.";
                                }
    
                                leaf intf-ip-addr {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Interface IP address.";
                                }
    
                                leaf router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of the local router.";
                                }
    
                                leaf lsa-sequence {
                                  type pub-type:hex-binary;
                                  description
                                    "LSA sequence number.";
                                }
    
                                leaf lsa-age {
                                  type uint32;
                                  description
                                    "LSA aging time.";
                                }
                              }  // list retrans-queue
                            }  // container retrans-queues
    
                            container ldp-sync-statistic {
                              config false;
                              description
                                "Statistics of the status of LDP and OSPF synchronization.";
                              leaf max-cost-interval {
                                type uint16;
                                description
                                  "The interval when OSPF advertises the maximum metric in LSAs sent by the local device.";
                              }
    
                              leaf max-cost-infinite {
                                type boolean;
                                description
                                  "Always advertise the maximum cost.";
                              }
    
                              leaf ldp-state {
                                type ldp-state;
                                description
                                  "The status of an LDP session.";
                              }
    
                              leaf sync-state {
                                type ospf-sync-state;
                                description
                                  "The status of LDP and OSPF synchronization.";
                              }
                            }  // container ldp-sync-statistic
    
                            container bfd-statistics {
                              config false;
                              description
                                "List of the neighbors enabled with BFD.";
                              list bfd-statistic {
                                key "nbr-router-id local-ip remote-ip";
                                description
                                  "Statistics of the neighbors enabled with BFD.";
                                leaf nbr-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of a neighbor router.";
                                }
    
                                leaf local-ip {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Local IP address.";
                                }
    
                                leaf remote-ip {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Remote IP address.";
                                }
    
                                leaf state {
                                  type bfd-state;
                                  description
                                    "BFD status.";
                                }
    
                                leaf diagnostic-info {
                                  type bfd-diag-info-type;
                                  description
                                    "Diagnostic information.";
                                }
    
                                leaf local-router-id {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "ID of the local router.";
                                }
    
                                leaf rx-interval {
                                  type uint32;
                                  description
                                    "Min rx interval.";
                                }
    
                                leaf tx-interval {
                                  type uint32;
                                  description
                                    "Min tx interval.";
                                }
    
                                leaf multiplier {
                                  type uint32;
                                  description
                                    "Detect multiplier.";
                                }
    
                                leaf local-dis {
                                  type uint32;
                                  description
                                    "Local discriminator.";
                                }
                              }  // list bfd-statistic
                            }  // container bfd-statistics
    
                            container error-data {
                              config false;
                              description
                                "Statistics of error data.";
                              leaf router-id {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Router ID.";
                              }
    
                              leaf same-ip-pkt-cnt {
                                type uint32;
                                description
                                  "SameIp packet count.";
                              }
    
                              leaf bad-pkt-cnt {
                                type uint32;
                                description
                                  "Bad packet.";
                              }
    
                              leaf bad-ver-cnt {
                                type uint32;
                                description
                                  "Bad version.";
                              }
    
                              leaf bad-chksum-pkt-cnt {
                                type uint32;
                                description
                                  "Bad checksum.";
                              }
    
                              leaf bad-area-pkt-cnt {
                                type uint32;
                                description
                                  "Bad area ID.";
                              }
    
                              leaf pkt-rcv-unnumber {
                                type uint32;
                                description
                                  "Drop on unnumbered interface.";
                              }
    
                              leaf bad-virt-link-cnt {
                                type uint32;
                                description
                                  "Bad virtual link.";
                              }
    
                              leaf auth-type-fail-cnt {
                                type uint32;
                                description
                                  "Bad authentication type.";
                              }
    
                              leaf auth-key-fail-cnt {
                                type uint32;
                                description
                                  "Bad authentication key.";
                              }
    
                              leaf short-pkt-cnt {
                                type uint32;
                                description
                                  "Packet too small.";
                              }
    
                              leaf long-pkt-cnt {
                                type uint32;
                                description
                                  "Packet size > IP length.";
                              }
    
                              leaf tx-err-cnt {
                                type uint32;
                                description
                                  "Transmit error.";
                              }
    
                              leaf if-down-cnt {
                                type uint32;
                                description
                                  "Interface down.";
                              }
    
                              leaf no-nbr {
                                type uint32;
                                description
                                  "Unknown neighbor.";
                              }
    
                              leaf mis-netmask-cnt {
                                type uint32;
                                description
                                  "Netmask mismatch.";
                              }
    
                              leaf mis-hello-intl-cnt {
                                type uint32;
                                description
                                  "Hello timer mismatch.";
                              }
    
                              leaf mis-dead-intl-cnt {
                                type uint32;
                                description
                                  "Dead timer mismatch.";
                              }
    
                              leaf mis-ext-cnt {
                                type uint32;
                                description
                                  "Extern option mismatch.";
                              }
    
                              leaf router-id-confusion {
                                type uint32;
                                description
                                  "DD router ID confusion.";
                              }
    
                              leaf vlink-nbr-mis-cnt {
                                type uint32;
                                description
                                  "Virtual neighbor unknown.";
                              }
    
                              leaf nbma-nbr-err-cnt {
                                type uint32;
                                description
                                  "NBMA neighbor unknown.";
                              }
    
                              leaf inval-src-hello-cnt {
                                type uint32;
                                description
                                  "Invalid source.";
                              }
    
                              leaf dd-nbr-low-cnt {
                                type uint32;
                                description
                                  "Neighbour state low for DD.";
                              }
    
                              leaf dd-rtrid-cnt {
                                type uint32;
                                description
                                  "DD router ID confusion.";
                              }
    
                              leaf dd-opt-mismatch-cnt {
                                type uint32;
                                description
                                  "Extern option mismatch.";
                              }
    
                              leaf dd-unknwn-lsa-cnt {
                                type uint32;
                                description
                                  "DD packet unknown LSA type.";
                              }
    
                              leaf dd-mtu-mismatch-cnt {
                                type uint32;
                                description
                                  "MTU option mismatch.";
                              }
    
                              leaf ack-nbr-low-cnt {
                                type uint32;
                                description
                                  "Neighbour state low for LS acknowledgement.";
                              }
    
                              leaf ack-bad-cnt {
                                type uint32;
                                description
                                  "Bad ack.";
                              }
    
                              leaf ack-duplicate-cnt {
                                type uint32;
                                description
                                  "Duplicate ack.";
                              }
    
                              leaf ack-unknwn-lsa-cnt {
                                type uint32;
                                description
                                  "LSAck packet unknown LSA type.";
                              }
    
                              leaf req-nbr-low-cnt {
                                type uint32;
                                description
                                  "Neighbour state low for LS request.";
                              }
    
                              leaf req-empty-cnt {
                                type uint32;
                                description
                                  "Empty request.";
                              }
    
                              leaf req-bad-cnt {
                                type uint32;
                                description
                                  "Bad request.";
                              }
    
                              leaf upd-nbr-low-cnt {
                                type uint32;
                                description
                                  "Neighbour state low for LS update.";
                              }
    
                              leaf upd-self-newr-cnt {
                                type uint32;
                                description
                                  "Newer self generate LSA.";
                              }
    
                              leaf upd-min-lsarr-cnt {
                                type uint32;
                                description
                                  "Received LSA within LSA arrival interval.";
                              }
    
                              leaf upd-ls-chksum-cnt {
                                type uint32;
                                description
                                  "LSA checksum bad.";
                              }
    
                              leaf upd-les-recent-cnt {
                                type uint32;
                                description
                                  "Received less recent LSA.";
                              }
    
                              leaf upd-unknw-lsa-cnt {
                                type uint32;
                                description
                                  "LSUpdate packet unknown LSA type.";
                              }
    
                              leaf opq9-flood-cnt {
                                type uint32;
                                description
                                  "Opq9 of flooding scope.";
                              }
    
                              leaf opq10-flood-cnt {
                                type uint32;
                                description
                                  "Opq10 of flooding scope.";
                              }
    
                              leaf opq11-flood-cnt {
                                type uint32;
                                description
                                  "Opq11 of flooding scope.";
                              }
    
                              leaf rxmt-dd-err-cnt {
                                type uint32;
                                description
                                  "Number for DD packet.";
                              }
    
                              leaf rxmt-req-err-cnt {
                                type uint32;
                                description
                                  "Number for request packet.";
                              }
    
                              leaf rxmt-upd-err-cnt {
                                type uint32;
                                description
                                  "Number for update packet.";
                              }
    
                              leaf gr-invalid-lsa-cnt {
                                type uint32;
                                description
                                  "Number of invalid LSAs.";
                              }
    
                              leaf gr-invalid-pol-cnt {
                                type uint32;
                                description
                                  "Number of policy failed LSAs.";
                              }
    
                              leaf gr-invalid-prd-cnt {
                                type uint32;
                                description
                                  "Number of wrong period LSAs.";
                              }
    
                              leaf tunnel-cost-cnt {
                                type uint32;
                                description
                                  "Tunnel cost mistake.";
                              }
    
                              leaf peer-net-type-cnt {
                                type uint32;
                                description
                                  "The network type of the neighbor interface is not consistent.";
                              }
    
                              leaf hello-dr-mis-cnt {
                                type uint32;
                                description
                                  "The DR or BDR in receiving hello packet is not same with the DR or BDR.";
                              }
    
                              leaf gen-ttl-err-cnt {
                                type uint32;
                                description
                                  "The TTL of the packet is error.";
                              }
    
                              leaf over-max-buffer-length-cnt {
                                type uint32;
                                description
                                  "Number of packet that length is more than max buffer length.";
                              }
    
                              leaf bad-net-segment-packet-cnt {
                                type uint32;
                                description
                                  "Number of bad network segment packet.";
                              }
    
                              leaf bad-routerid-packet-cnt {
                                type uint32;
                                description
                                  "Number of non-hello packet that router ID is different.";
                              }
    
                              leaf destination-ip-error-packet-cnt {
                                type uint32;
                                description
                                  "Number of bad destIpAddress packet.";
                              }
    
                              leaf passive-intf-packet-cnt {
                                type uint32;
                                description
                                  "Number of packet that received from silent Interface.";
                              }
    
                              leaf hello-nbr-reach-limit-cnt {
                                type uint32;
                                description
                                  "Number of hello packet that discard because the number of neighbour reached the limit.";
                              }
    
                              leaf hello-hold-down-cnt {
                                type uint32;
                                description
                                  "Number of hello packet that discard because the neighbour is in hold-down state.";
                              }
    
                              leaf hello-memory-overload-cnt {
                                type uint32;
                                description
                                  "Number of hello packet that discard because memory is overload.";
                              }
    
                              leaf hello-cpu-overload-cnt {
                                type uint32;
                                description
                                  "Number of hello packet that discard because cpu is overload.";
                              }
    
                              leaf dd-nbr-reach-limit-cnt {
                                type uint32;
                                description
                                  "Number of dd packet that discard because the number of neighbour reached the limit.";
                              }
    
                              leaf dd-cpu-overload-cnt {
                                type uint32;
                                description
                                  "Number of dd packet that discard because cpu is overload.";
                              }
    
                              leaf ri-lsa-tlv-error-cnt {
                                type uint32;
                                description
                                  "Router information lsa TLV error.";
                              }
    
                              leaf ri-lsa-sub-tlv-error-cnt {
                                type uint32;
                                description
                                  "Router information lsa sub TLV error.";
                              }
    
                              leaf ext-prefix-lsa-tlv-error-cnt {
                                type uint32;
                                description
                                  "Extend prefix lsa TLV error.";
                              }
    
                              leaf ext-prefix-lsa-sub-tlv-error-cnt {
                                type uint32;
                                description
                                  "Extend prefix lsa sub TLV error.";
                              }
    
                              leaf ext-link-lsa-tlv-error-cnt {
                                type uint32;
                                description
                                  "Extend link lsa TLV error.";
                              }
    
                              leaf ext-link-lsa-sub-tlv-error-cnt {
                                type uint32;
                                description
                                  "Extend link lsa sub TLV error.";
                              }
    
                              leaf bad-sr-algo-cnt {
                                type uint32;
                                description
                                  "Bad SR-Algorithm TLV.";
                              }
    
                              leaf bad-sid-range-cnt {
                                type uint32;
                                description
                                  "Bad SID/Label Range TLV.";
                              }
    
                              leaf bad-sid-cnt {
                                type uint32;
                                description
                                  "Bad SID/Label Sub TLV.";
                              }
    
                              leaf bad-adj-sid-cnt {
                                type uint32;
                                description
                                  "Bad Adj-SID Sub TLV.";
                              }
    
                              leaf bad-prefix-sid-cnt {
                                type uint32;
                                description
                                  "Bad Prefix-SID Sub TLV.";
                              }
    
                              leaf bad-ext-prefix-range-cnt {
                                type uint32;
                                description
                                  "Bad Extended Prefix Range TLV.";
                              }
    
                              leaf bad-lan-adj-sid-cnt {
                                type uint32;
                                description
                                  "Bad LAN Adj-SID Sub TLV.";
                              }
    
                              leaf bad-ext-prefix-cnt {
                                type uint32;
                                description
                                  "Bad Extended Prefix TLV.";
                              }
    
                              leaf bad-ext-link-cnt {
                                type uint32;
                                description
                                  "Bad Extended Link TLV.";
                              }
                            }  // container error-data
                          }  // list multi-area
                        }  // container multi-areas
    
                        container srlgs {
                          description
                            "List of share risk link group.";
                          list srlg {
                            key "group-id";
                            description
                              "Configure share risk link group.";
                            leaf group-id {
                              type uint32 {
                                range
                                  "0..4294967295";
                              }
                              description
                                "Set the srlg group ID.";
                            }
                          }  // list srlg
                        }  // container srlgs
    
                        container disp-data {
                          config false;
                          description
                            "Statistics of OSPF interface.";
                          leaf suppress-reach-block {
                            type boolean;
                            description
                              "Reachability suppression is disabled.";
                          }
    
                          leaf silent-enable {
                            type boolean;
                            description
                              "To suppress an interface from sending or receiving OSPF packets.";
                          }
    
                          leaf dr {
                            type inet:ipv4-address-no-zone;
                            description
                              "DR of the network where an interface resides.";
                          }
    
                          leaf bdr {
                            type inet:ipv4-address-no-zone;
                            description
                              "BDR of the network where an interface resides.";
                          }
    
                          leaf state {
                            type intf-state;
                            description
                              "Status of an interface, which is determined according to the OSPF interface state machines.";
                          }
    
                          leaf mtu {
                            type uint32;
                            description
                              "MTU of an interface.";
                          }
    
                          leaf ip {
                            type inet:ipv4-address-no-zone;
                            description
                              "IP address of an interface.";
                          }
    
                          leaf cost {
                            type int32;
                            description
                              "Cost of an interface.";
                          }
    
                          leaf gr-state {
                            type gr-state;
                            description
                              "Status of GR of an interface. The available options are as follows:
                             Normal: The interface is in normal state.
                             Restarter: The interface is in GR state.
                             Helper: The interface is in helper state.";
                          }
    
                          leaf previous-state {
                            type intf-state;
                            description
                              "Previous status of the interface.";
                          }
    
                          leaf opaque-id {
                            type uint32;
                            description
                              "Oapque ID of interface.";
                          }
    
                          leaf mpls-te-link {
                            type boolean;
                            description
                              "MPLS TE link status enabled.";
                          }
    
                          leaf peer-flap-status {
                            type peer-flapping-status;
                            description
                              "Peer flapping suppress status.";
                          }
    
                          leaf peer-flap-count {
                            type uint32;
                            description
                              "Peer flapping suppress count.";
                          }
    
                          leaf peer-flap-threshold {
                            type uint32 {
                              range "1..1000";
                            }
                            description
                              "Peer flapping suppress threshold.";
                          }
    
                          leaf peer-flap-time {
                            type yang:date-and-time;
                            description
                              "Peer suppress-flapping start time.";
                          }
    
                          leaf peer-flap-remain-timer {
                            type uint32 {
                              range "0..1000";
                            }
                            units "s";
                            description
                              "Peer flapping suppress remain timer.";
                          }
    
                          leaf bandwidth {
                            type uint32;
                            description
                              "Current interface bandwidth.";
                          }
                        }  // container disp-data
    
                        container request-queues {
                          config false;
                          description
                            "List of the OSPF request message.";
                          list request-queue {
                            key "nbr-router-id nbr-ip-addr lsa-type link-state-id adv-router-id";
                            description
                              "Statistics of the OSPF request message.";
                            leaf nbr-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of a neighbor router.";
                            }
    
                            leaf nbr-ip-addr {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address of the neighbor interface.";
                            }
    
                            leaf lsa-type {
                              type lsa-type;
                              description
                                "LSA type.";
                            }
    
                            leaf link-state-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of the link state.";
                            }
    
                            leaf adv-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "Advertisement router ID.";
                            }
    
                            leaf router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of the local router.";
                            }
    
                            leaf intf-ip-addr {
                              type inet:ipv4-address-no-zone;
                              description
                                "Interface IP address.";
                            }
    
                            leaf lsa-sequence {
                              type pub-type:hex-binary;
                              description
                                "LSA sequence number.";
                            }
    
                            leaf lsa-age {
                              type uint32;
                              description
                                "LSA aging time.";
                            }
                          }  // list request-queue
                        }  // container request-queues
    
                        container retrans-queues {
                          config false;
                          description
                            "List of the OSPF retrans message.";
                          list retrans-queue {
                            key "nbr-router-id nbr-ip-addr lsa-type link-state-id adv-router-id";
                            description
                              "Statistics of the OSPF retrans message.";
                            leaf nbr-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of a neighbor router.";
                            }
    
                            leaf nbr-ip-addr {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address of the neighbor interface.";
                            }
    
                            leaf lsa-type {
                              type lsa-type;
                              description
                                "LSA type.";
                            }
    
                            leaf link-state-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of the link state.";
                            }
    
                            leaf adv-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "Advertisement router ID.";
                            }
    
                            leaf router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of the local router.";
                            }
    
                            leaf intf-ip-addr {
                              type inet:ipv4-address-no-zone;
                              description
                                "Interface IP address.";
                            }
    
                            leaf lsa-sequence {
                              type pub-type:hex-binary;
                              description
                                "LSA sequence number.";
                            }
    
                            leaf lsa-age {
                              type uint32;
                              description
                                "LSA aging time.";
                            }
                          }  // list retrans-queue
                        }  // container retrans-queues
    
                        container ldp-sync-statistic {
                          config false;
                          description
                            "Statistics of the status of LDP and OSPF synchronization.";
                          leaf max-cost-interval {
                            type uint16;
                            description
                              "The interval when OSPF advertises the maximum metric in LSAs sent by the local device.";
                          }
    
                          leaf max-cost-infinite {
                            type boolean;
                            description
                              "Always advertise the maximum cost.";
                          }
    
                          leaf ldp-state {
                            type ldp-state;
                            description
                              "The status of an LDP session.";
                          }
    
                          leaf sync-state {
                            type ospf-sync-state;
                            description
                              "The status of LDP and OSPF synchronization.";
                          }
                        }  // container ldp-sync-statistic
    
                        container nbr-statistics {
                          config false;
                          description
                            "List of OSPF peer.";
                          list nbr-statistic {
                            key "router-id ip";
                            description
                              "Statistics of OSPF peer.";
                            leaf router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of a neighbor router.";
                            }
    
                            leaf ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "Address of a neighbor interface.";
                            }
    
                            leaf intf-ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address of an interface.";
                            }
    
                            leaf gr-state {
                              type nbr-gr-state;
                              description
                                "GR state.";
                            }
    
                            leaf state {
                              type nbr-state;
                              description
                                "Neighbor status.";
                            }
    
                            leaf mode {
                              type nbr-mode;
                              description
                                "Mode of the DD. The available options are master and slave.";
                            }
    
                            leaf priority {
                              type int32;
                              description
                                "Priority of a neighbor router.";
                            }
    
                            leaf dr {
                              type inet:ipv4-address-no-zone;
                              description
                                "Designated router.";
                            }
    
                            leaf bdr {
                              type inet:ipv4-address-no-zone;
                              description
                                "Backup designated router.";
                            }
    
                            leaf intf-mtu {
                              type uint32;
                              description
                                "MTU of a neighbor.";
                            }
    
                            leaf dead-due-timer {
                              type uint32;
                              description
                                "Dead due timer.";
                            }
    
                            leaf retran-intv {
                              type uint32;
                              description
                                "Neighbor retranIntv.";
                            }
    
                            leaf up-time {
                              type string {
                                length "1..16";
                              }
                              description
                                "Time when a neighbor goes up.";
                            }
    
                            leaf up-time-stamp {
                              type yang:date-and-time;
                              description
                                "Neighbor up time stamp.";
                            }
    
                            leaf auth-sequence {
                              type uint32;
                              description
                                "Neighbor authentication sequence number.";
                            }
    
                            leaf adj-sid {
                              type uint32;
                              description
                                "Adjacency SID.";
                            }
    
                            leaf adj-weight {
                              type uint32;
                              description
                                "Adjacency weight.";
                            }
    
                            leaf adj-flags {
                              type string {
                                length "1..20";
                              }
                              description
                                "Adjacency flags.";
                            }
                          }  // list nbr-statistic
                        }  // container nbr-statistics
    
                        container bfd-statistics {
                          config false;
                          description
                            "List of the neighbors enabled with BFD.";
                          list bfd-statistic {
                            key "nbr-router-id local-ip remote-ip";
                            description
                              "Statistics of the neighbors enabled with BFD.";
                            leaf nbr-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of a neighbor router.";
                            }
    
                            leaf local-ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "Local IP address.";
                            }
    
                            leaf remote-ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "Remote IP address.";
                            }
    
                            leaf state {
                              type bfd-state;
                              description
                                "BFD status.";
                            }
    
                            leaf diagnostic-info {
                              type bfd-diag-info-type;
                              description
                                "Diagnostic information.";
                            }
    
                            leaf local-router-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "ID of the local router.";
                            }
    
                            leaf rx-interval {
                              type uint32;
                              description
                                "Min rx interval.";
                            }
    
                            leaf tx-interval {
                              type uint32;
                              description
                                "Min tx interval.";
                            }
    
                            leaf multiplier {
                              type uint32;
                              description
                                "Detect multiplier.";
                            }
    
                            leaf local-dis {
                              type uint32;
                              description
                                "Local discriminator.";
                            }
                          }  // list bfd-statistic
                        }  // container bfd-statistics
    
                        container error-data {
                          config false;
                          description
                            "Statistics of error data.";
                          leaf router-id {
                            type inet:ipv4-address-no-zone;
                            description
                              "Router ID.";
                          }
    
                          leaf same-ip-pkt-cnt {
                            type uint32;
                            description
                              "SameIp packet count.";
                          }
    
                          leaf bad-pkt-cnt {
                            type uint32;
                            description
                              "Bad packet.";
                          }
    
                          leaf bad-ver-cnt {
                            type uint32;
                            description
                              "Bad version.";
                          }
    
                          leaf bad-chksum-pkt-cnt {
                            type uint32;
                            description
                              "Bad checksum.";
                          }
    
                          leaf bad-area-pkt-cnt {
                            type uint32;
                            description
                              "Bad area ID.";
                          }
    
                          leaf pkt-rcv-unnumber {
                            type uint32;
                            description
                              "Drop on unnumbered interface.";
                          }
    
                          leaf bad-virt-link-cnt {
                            type uint32;
                            description
                              "Bad virtual link.";
                          }
    
                          leaf auth-type-fail-cnt {
                            type uint32;
                            description
                              "Bad authentication type.";
                          }
    
                          leaf auth-key-fail-cnt {
                            type uint32;
                            description
                              "Bad authentication key.";
                          }
    
                          leaf short-pkt-cnt {
                            type uint32;
                            description
                              "Packet too small.";
                          }
    
                          leaf long-pkt-cnt {
                            type uint32;
                            description
                              "Packet size > IP length.";
                          }
    
                          leaf tx-err-cnt {
                            type uint32;
                            description
                              "Transmit error.";
                          }
    
                          leaf if-down-cnt {
                            type uint32;
                            description
                              "Interface down.";
                          }
    
                          leaf no-nbr {
                            type uint32;
                            description
                              "Unknown neighbor.";
                          }
    
                          leaf mis-netmask-cnt {
                            type uint32;
                            description
                              "Netmask mismatch.";
                          }
    
                          leaf mis-hello-intl-cnt {
                            type uint32;
                            description
                              "Hello timer mismatch.";
                          }
    
                          leaf mis-dead-intl-cnt {
                            type uint32;
                            description
                              "Dead timer mismatch.";
                          }
    
                          leaf mis-ext-cnt {
                            type uint32;
                            description
                              "Extern option mismatch.";
                          }
    
                          leaf router-id-confusion {
                            type uint32;
                            description
                              "DD router ID confusion.";
                          }
    
                          leaf vlink-nbr-mis-cnt {
                            type uint32;
                            description
                              "Virtual neighbor unknown.";
                          }
    
                          leaf nbma-nbr-err-cnt {
                            type uint32;
                            description
                              "NBMA neighbor unknown.";
                          }
    
                          leaf inval-src-hello-cnt {
                            type uint32;
                            description
                              "Invalid source.";
                          }
    
                          leaf dd-nbr-low-cnt {
                            type uint32;
                            description
                              "Neighbour state low for DD.";
                          }
    
                          leaf dd-rtrid-cnt {
                            type uint32;
                            description
                              "DD router ID confusion.";
                          }
    
                          leaf dd-opt-mismatch-cnt {
                            type uint32;
                            description
                              "Extern option mismatch.";
                          }
    
                          leaf dd-unknwn-lsa-cnt {
                            type uint32;
                            description
                              "DD packet unknown LSA type.";
                          }
    
                          leaf dd-mtu-mismatch-cnt {
                            type uint32;
                            description
                              "MTU option mismatch.";
                          }
    
                          leaf ack-nbr-low-cnt {
                            type uint32;
                            description
                              "Neighbour state low for LS acknowledgement.";
                          }
    
                          leaf ack-bad-cnt {
                            type uint32;
                            description
                              "Bad ack.";
                          }
    
                          leaf ack-duplicate-cnt {
                            type uint32;
                            description
                              "Duplicate ack.";
                          }
    
                          leaf ack-unknwn-lsa-cnt {
                            type uint32;
                            description
                              "LSAck packet unknown LSA type.";
                          }
    
                          leaf req-nbr-low-cnt {
                            type uint32;
                            description
                              "Neighbour state low for LS request.";
                          }
    
                          leaf req-empty-cnt {
                            type uint32;
                            description
                              "Empty request.";
                          }
    
                          leaf req-bad-cnt {
                            type uint32;
                            description
                              "Bad request.";
                          }
    
                          leaf upd-nbr-low-cnt {
                            type uint32;
                            description
                              "Neighbour state low for LS update.";
                          }
    
                          leaf upd-self-newr-cnt {
                            type uint32;
                            description
                              "Newer self generate LSA.";
                          }
    
                          leaf upd-min-lsarr-cnt {
                            type uint32;
                            description
                              "Received LSA within LSA arrival interval.";
                          }
    
                          leaf upd-ls-chksum-cnt {
                            type uint32;
                            description
                              "LSA checksum bad.";
                          }
    
                          leaf upd-les-recent-cnt {
                            type uint32;
                            description
                              "Received less recent LSA.";
                          }
    
                          leaf upd-unknw-lsa-cnt {
                            type uint32;
                            description
                              "LSUpdate packet unknown LSA type.";
                          }
    
                          leaf opq9-flood-cnt {
                            type uint32;
                            description
                              "Opq9 of flooding scope.";
                          }
    
                          leaf opq10-flood-cnt {
                            type uint32;
                            description
                              "Opq10 of flooding scope.";
                          }
    
                          leaf opq11-flood-cnt {
                            type uint32;
                            description
                              "Opq11 of flooding scope.";
                          }
    
                          leaf rxmt-dd-err-cnt {
                            type uint32;
                            description
                              "Number for DD packet.";
                          }
    
                          leaf rxmt-req-err-cnt {
                            type uint32;
                            description
                              "Number for request packet.";
                          }
    
                          leaf rxmt-upd-err-cnt {
                            type uint32;
                            description
                              "Number for update packet.";
                          }
    
                          leaf gr-invalid-lsa-cnt {
                            type uint32;
                            description
                              "Number of invalid LSAs.";
                          }
    
                          leaf gr-invalid-pol-cnt {
                            type uint32;
                            description
                              "Number of policy failed LSAs.";
                          }
    
                          leaf gr-invalid-prd-cnt {
                            type uint32;
                            description
                              "Number of wrong period LSAs.";
                          }
    
                          leaf tunnel-cost-cnt {
                            type uint32;
                            description
                              "Tunnel cost mistake.";
                          }
    
                          leaf peer-net-type-cnt {
                            type uint32;
                            description
                              "The network type of the neighbor interface is not consistent.";
                          }
    
                          leaf hello-dr-mis-cnt {
                            type uint32;
                            description
                              "The DR or BDR in receiving hello packet is not same with the DR or BDR.";
                          }
    
                          leaf gen-ttl-err-cnt {
                            type uint32;
                            description
                              "The TTL of the packet is error.";
                          }
    
                          leaf over-max-buffer-length-cnt {
                            type uint32;
                            description
                              "Number of packet that length is more than max buffer length.";
                          }
    
                          leaf bad-net-segment-packet-cnt {
                            type uint32;
                            description
                              "Number of bad network segment packet.";
                          }
    
                          leaf bad-routerid-packet-cnt {
                            type uint32;
                            description
                              "Number of non-hello packet that router ID is different.";
                          }
    
                          leaf destination-ip-error-packet-cnt {
                            type uint32;
                            description
                              "Number of bad destIpAddress packet.";
                          }
    
                          leaf passive-intf-packet-cnt {
                            type uint32;
                            description
                              "Number of packet that received from silent Interface.";
                          }
    
                          leaf hello-nbr-reach-limit-cnt {
                            type uint32;
                            description
                              "Number of hello packet that discard because the number of neighbour reached the limit.";
                          }
    
                          leaf hello-hold-down-cnt {
                            type uint32;
                            description
                              "Number of hello packet that discard because the neighbour is in hold-down state.";
                          }
    
                          leaf hello-memory-overload-cnt {
                            type uint32;
                            description
                              "Number of hello packet that discard because memory is overload.";
                          }
    
                          leaf hello-cpu-overload-cnt {
                            type uint32;
                            description
                              "Number of hello packet that discard because CPU is overload.";
                          }
    
                          leaf dd-nbr-reach-limit-cnt {
                            type uint32;
                            description
                              "Number of dd packet that discard because the number of neighbour reached the limit.";
                          }
    
                          leaf dd-cpu-overload-cnt {
                            type uint32;
                            description
                              "Number of dd packet that discard because CPU is overload.";
                          }
    
                          leaf dd-mem-overload-cnt {
                            type uint32;
                            description
                              "Number of dd packet that discard because memory is overload.";
                          }
    
                          leaf ri-lsa-tlv-error-cnt {
                            type uint32;
                            description
                              "Router information lsa TLV error.";
                          }
    
                          leaf ri-lsa-sub-tlv-error-cnt {
                            type uint32;
                            description
                              "Router information lsa sub TLV error.";
                          }
    
                          leaf ext-prefix-lsa-tlv-error-cnt {
                            type uint32;
                            description
                              "Extend prefix lsa TLV error.";
                          }
    
                          leaf ext-prefix-lsa-sub-tlv-error-cnt {
                            type uint32;
                            description
                              "Extend prefix lsa sub TLV error.";
                          }
    
                          leaf ext-link-lsa-tlv-error-cnt {
                            type uint32;
                            description
                              "Extend link lsa TLV error.";
                          }
    
                          leaf ext-link-lsa-sub-tlv-error-cnt {
                            type uint32;
                            description
                              "Extend link lsa sub TLV error.";
                          }
    
                          leaf bad-sr-algo-cnt {
                            type uint32;
                            description
                              "Bad SR-Algorithm TLV.";
                          }
    
                          leaf bad-sid-range-cnt {
                            type uint32;
                            description
                              "Bad SID/Label Range TLV.";
                          }
    
                          leaf bad-sid-cnt {
                            type uint32;
                            description
                              "Bad SID/Label Sub TLV.";
                          }
    
                          leaf bad-adj-sid-cnt {
                            type uint32;
                            description
                              "Bad Adj-SID Sub TLV.";
                          }
    
                          leaf bad-prefix-sid-cnt {
                            type uint32;
                            description
                              "Bad Prefix-SID Sub TLV.";
                          }
    
                          leaf bad-ext-prefix-range-cnt {
                            type uint32;
                            description
                              "Bad Extended Prefix Range TLV.";
                          }
    
                          leaf bad-lan-adj-sid-cnt {
                            type uint32;
                            description
                              "Bad LAN Adj-SID Sub TLV.";
                          }
    
                          leaf bad-ext-prefix-cnt {
                            type uint32;
                            description
                              "Bad Extended Prefix TLV.";
                          }
    
                          leaf bad-ext-link-cnt {
                            type uint32;
                            description
                              "Bad Extended Link TLV.";
                          }
                        }  // container error-data
                      }  // list interface
                    }  // container interfaces
    
                    container disp-data {
                      config false;
                      description
                        "Statistics of OSPF area.";
                      leaf spf-schedule-times {
                        type uint32;
                        description
                          "Times of calculating SPF.";
                      }
    
                      leaf interface-count {
                        type uint32;
                        description
                          "Number of interfaces.";
                      }
    
                      leaf exchange-and-loading-nbr {
                        type uint32;
                        description
                          "Number of neighbors in exchange/loading state.";
                      }
    
                      leaf router-id-conflict {
                        type router-id-conflict-state;
                        description
                          "Router ID conflict state.";
                      }
    
                      leaf import-limit-status {
                        type import-limit-status;
                        description
                          "Limit status of imported routes.";
                      }
    
                      leaf self-nssa-lsa-count {
                        type uint32;
                        description
                          "Number of NSSA LSAs that are generated locally.";
                      }
    
                      leaf nssa-trans-state {
                        type nssa-trans-state;
                        description
                          "NSSA translator state.";
                      }
    
                      leaf nssa-trans-role {
                        type nssa-trans-role;
                        description
                          "NSSA translator role.";
                      }
    
                      leaf nssa-trans-stab-intv {
                        type boolean;
                        description
                          "Continuing NSSA translation duties during stability interval.";
                      }
                    }  // container disp-data
                  }  // list area
                }  // container areas
    
                container disp-data {
                  config false;
                  description
                    "Statistics of OSPF site.";
                  leaf effective-router-id {
                    type inet:ipv4-address-no-zone;
                    description
                      "Effective router ID.";
                  }
    
                  leaf border-router {
                    type border-router;
                    description "Router type.";
                  }
    
                  leaf ietf-mode {
                    type ietf-mode;
                    description
                      "Global DS TE mode.";
                  }
    
                  leaf spf-count {
                    type uint32;
                    description
                      "SPF computation count.";
                  }
    
                  leaf area-count {
                    type uint32;
                    description
                      "Number of areas.";
                  }
    
                  leaf nssa-count {
                    type uint32;
                    description
                      "Number of NSSA areas.";
                  }
    
                  leaf exchange-and-loading-nbr {
                    type uint32;
                    description
                      "Neighbor in exchange/loading state.";
                  }
    
                  leaf lsdb-overflow-status {
                    type lsdb-overflow-status;
                    description
                      "LSDB overflow status.";
                  }
    
                  leaf non-default-ase-lsa-count {
                    type uint32;
                    description
                      "Number of non default AS external LSAs.";
                  }
    
                  leaf lsdb-overflow-remain {
                    type uint32;
                    description
                      "Remaining time of the overflow state.";
                  }
    
                  leaf import-limit-status {
                    type import-limit-status;
                    description
                      "Limit status of imported external routes.";
                  }
    
                  leaf self-ase-lsa-count {
                    type uint32;
                    description
                      "Number of AS external LSAs that are generated locally.";
                  }
                }  // container disp-data
    
                container dynamic-hostnames {
                  config false;
                  description
                    "List of dynamic hostname.";
                  list dynamic-hostname {
                    key "scope area-id router-id";
                    description
                      "Statistics of dynamic hostname.";
                    leaf scope {
                      type hostname-scope;
                      description
                        "Scope of the hostname.";
                    }
    
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Area ID to which hostname belongs.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Router ID to which hostname belongs.";
                    }
    
                    leaf host-name {
                      type string {
                        length "1..256";
                      }
                      description
                        "Hostname associated with the router ID.";
                    }
                  }  // list dynamic-hostname
                }  // container dynamic-hostnames
    
                container bfd-stat-datas {
                  config false;
                  description
                    "List of BFD status data.";
                  list bfd-stat-data {
                    key "area-id nbr-router-id if-name";
                    description
                      "Statistics of BFD status data.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf nbr-router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor router ID.";
                    }
    
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf state {
                      type bfd-state;
                      description "BFD status.";
                    }
    
                    leaf rx-interval {
                      type uint32;
                      description
                        "Min rx interval.";
                    }
    
                    leaf tx-interval {
                      type uint32;
                      description
                        "Min tx interval.";
                    }
    
                    leaf multiplier {
                      type uint32;
                      description
                        "Detect multiplier.";
                    }
    
                    leaf local-dis {
                      type uint32;
                      description
                        "Local discriminator.";
                    }
    
                    leaf local-ip-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP local address.";
                    }
    
                    leaf remote-ip-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP remote address.";
                    }
    
                    leaf diagnostic-info {
                      type bfd-diag-info-type;
                      description
                        "Diagnostic information.";
                    }
                  }  // list bfd-stat-data
                }  // container bfd-stat-datas
    
                container slink-nbr-statistics {
                  config false;
                  description
                    "List of slink nbr statistics info.";
                  list slink-nbr-statistic {
                    key "area-id src-addr dest-addr nbr-id";
                    description
                      "Statistics of slink nbr info.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf src-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Scource address.";
                    }
    
                    leaf dest-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination address.";
                    }
    
                    leaf nbr-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor router ID.";
                    }
    
                    leaf nbr-state {
                      type vlink-nbr-state;
                      description
                        "Neighbor state.";
                    }
    
                    leaf state {
                      type vlink-if-state;
                      description "State.";
                    }
    
                    leaf gr-status {
                      type nbr-gr-state;
                      description "GR status.";
                    }
    
                    leaf hello-intv {
                      type int32;
                      description
                        "Hello interval.";
                    }
    
                    leaf dead-intv {
                      type int32;
                      description
                        "Dead interval.";
                    }
    
                    leaf trans-delay-intv {
                      type int32;
                      description
                        "Trans delay interval.";
                    }
    
                    leaf retrans-intv {
                      type int32;
                      description
                        "Retrans interval.";
                    }
    
                    leaf cost {
                      type uint32;
                      description "Cost.";
                    }
    
                    leaf smart-discover {
                      type boolean;
                      description
                        "Smart discover.";
                    }
                  }  // list slink-nbr-statistic
                }  // container slink-nbr-statistics
    
                container traffic-adj-stats {
                  config false;
                  description
                    "List of traffic adjust info.";
                  list traffic-adj-stat {
                    key "area-id router-id ip-addr if-name";
                    description
                      "Statistics of traffic adjust info.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description "Router ID.";
                    }
    
                    leaf ip-addr {
                      type inet:ipv4-address-no-zone;
                      description "IP Address.";
                    }
    
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf if-cost {
                      type uint32;
                      description
                        "Interface cost.";
                    }
    
                    leaf if-tnl-dest {
                      type inet:ipv4-address-no-zone;
                      description
                        "Interface tunnel destination.";
                    }
    
                    leaf if-tnl-type {
                      type if-tnl-type;
                      description
                        "Interface tunnel type.";
                    }
    
                    leaf if-tnl-nbr-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Interface tunnel neighbor ID.";
                    }
    
                    leaf if-metric {
                      type int32;
                      description
                        "Interface metric.";
                    }
    
                    leaf if-metric-type {
                      type metric-type;
                      description
                        "Interface metric type.";
                    }
    
                    leaf hold-time {
                      type uint32;
                      description
                        "Interface hold time.";
                    }
                  }  // list traffic-adj-stat
                }  // container traffic-adj-stats
    
                container migp-routings {
                  config false;
                  description
                    "List of the OSPF MIGP routing table.";
                  list migp-routing {
                    key "dest-ip mask-length";
                    description
                      "Statistics of the OSPF MIGP routing table.";
                    leaf dest-ip {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IP address.";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..32";
                      }
                      description "Mask length.";
                    }
    
                    leaf cost {
                      type uint32;
                      description
                        "Cost to the destination address.";
                    }
    
                    leaf prefix-priority {
                      type pre-priority;
                      description
                        "Prefix priority.";
                    }
    
                    leaf path-type {
                      type path-type;
                      description "Route type.";
                    }
    
                    container nexthop-datas {
                      description
                        "List of nexthop data.";
                      list nexthop-data {
                        key "ip-addr adv-router-id area-id";
                        description
                          "Statistics of nexthop data.";
                        leaf ip-addr {
                          type inet:ipv4-address-no-zone;
                          description
                            "Nexthop IP address.";
                        }
    
                        leaf adv-router-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Next hop advertising router ID.";
                        }
    
                        leaf area-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Next hop area ID.";
                        }
    
                        leaf flags-disp {
                          type string {
                            length "1..8";
                          }
                          description
                            "Next hop flags.";
                        }
    
                        leaf tag {
                          type uint32;
                          description
                            "Next hop tag.";
                        }
    
                        leaf if-name {
                          type string {
                            length "1..64";
                          }
                          description
                            "Next hop outgoing interface name.";
                        }
                      }  // list nexthop-data
                    }  // container nexthop-datas
                  }  // list migp-routing
                }  // container migp-routings
    
                container abr-asbr-statistics {
                  config false;
                  description
                    "List of the OSPF ABR and ASBR.";
                  list abr-asbr-statistic {
                    key "if-index nexthop-ip area-id destination-id";
                    description
                      "Statistics of the OSPF ABR and ASBR.";
                    leaf if-index {
                      type uint32;
                      description
                        "Abr or asbr interface index.";
                    }
    
                    leaf nexthop-ip {
                      type inet:ipv4-address-no-zone;
                      description
                        "Next hop IP address for sending packets to an ABR or ASBR.";
                    }
    
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Abr or asbr area ID.";
                    }
    
                    leaf destination-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "ID of an ABR or ASBR.";
                    }
    
                    leaf if-name {
                      type string {
                        length "0..64";
                      }
                      description
                        "Abr or asbr interface name.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "ID of the local router.";
                    }
    
                    leaf path-type {
                      type path-type;
                      description
                        "Inter area or intra area router.";
                    }
    
                    leaf cost {
                      type uint32;
                      description
                        "Cost from a router to an ABR or ASBR.";
                    }
    
                    leaf router-type {
                      type router-type;
                      description
                        "Abr or asbr router type.";
                    }
                  }  // list abr-asbr-statistic
                }  // container abr-asbr-statistics
    
                container nexthop-paras {
                  config false;
                  description
                    "List of the next hop of an OSPF process.";
                  list nexthop-para {
                    key "addr rt-source-type if-addr if-name";
                    description
                      "Statistics of the next hop of an OSPF process.";
                    leaf addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Details about the next hop.";
                    }
    
                    leaf rt-source-type {
                      type route-source-type;
                      description
                        "Type of route origination.";
                    }
    
                    leaf if-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Interface address.";
                    }
    
                    leaf if-name {
                      type string {
                        length "0..64";
                      }
                      description
                        "Interface name.";
                    }
    
                    leaf referece-count {
                      type uint32;
                      description
                        "Number of OSPF routes using the next hop.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "ID of the local router.";
                    }
                  }  // list nexthop-para
                }  // container nexthop-paras
    
                container lsdb-statistics {
                  config false;
                  description
                    "List of OSPF LSDBs.";
                  list lsdb-statistic {
                    key "area-id lsa-type link-state-id adv-router-id";
                    description
                      "Statistics of OSPF LSDBs.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf lsa-type {
                      type lsa-type;
                      description
                        "The value can be router, network, sum net, sum asbr, NSSA, external, opq link, opq area, or opq AS.";
                    }
    
                    leaf link-state-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Link state ID in the LSA header.";
                    }
    
                    leaf adv-router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Router that advertises or generates LSAs.";
                    }
    
                    leaf lsa-age {
                      type int32;
                      description
                        "LSA aging time.";
                    }
    
                    leaf lsa-sequence-num {
                      type string {
                        length "1..12";
                      }
                      description
                        "LSA sequence number (from the LSA header).";
                    }
    
                    leaf check-sum {
                      type string {
                        length "1..10";
                      }
                      description "Checksum.";
                    }
    
                    leaf lsa-length {
                      type uint32;
                      description "LSA length.";
                    }
    
                    leaf options {
                      type lsdb-option;
                      description "LSA option.";
                    }
    
                    leaf option-flag {
                      type lsdb-option-flag;
                      description
                        "LSA option flag. The available options are V, B, and E.";
                    }
    
                    leaf link-count {
                      type uint32;
                      description
                        "Number of links.";
                    }
    
                    leaf network-mask {
                      type inet:ipv4-address-no-zone;
                      description
                        "Network mask of the network LSA.";
                    }
    
                    leaf host-name {
                      type string {
                        length "1..255";
                      }
                      description "Host name.";
                    }
    
                    container lsabodys {
                      description
                        "List of lsabody.";
                      list lsabody {
                        key "link-id link-data link-type attach-router forward-ip";
                        description
                          "Statistics of lsabody.";
                        leaf link-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Link ID of the router LSA.";
                        }
    
                        leaf link-data {
                          type inet:ipv4-address-no-zone;
                          description
                            "Link data about the router LSA.";
                        }
    
                        leaf link-type {
                          type lsdb-link-type;
                          description
                            "Link type of the router LSA. The available options are Point-to-Point, TransNet, StubNet, and Virtual.";
                        }
    
                        leaf attach-router {
                          type inet:ipv4-address-no-zone;
                          description
                            "Router connected to the network.";
                        }
    
                        leaf forward-ip {
                          type inet:ipv4-address-no-zone;
                          description
                            "Forwarding IP address.";
                        }
    
                        leaf tos-id {
                          type uint8;
                          description "ToS ID.";
                        }
    
                        leaf tos-metric {
                          type uint32;
                          description
                            "ToS metric.";
                        }
    
                        leaf route-tag {
                          type uint32;
                          description
                            "Route tag, which is used to prevent route Loopback and applicable to Type5 or Type7 LSAs, of 32 bytes.";
                        }
    
                        leaf opaque-type {
                          type uint32;
                          description
                            "Opaque type.";
                        }
    
                        leaf opaque-id {
                          type uint32;
                          description
                            "Opaque LSA ID. Opaque type + Opaque ID = Link state ID in the LSA header.";
                        }
    
                        leaf ext-metric-type {
                          type uint8;
                          description
                            "E type of ASE/NSSA LSAs.";
                        }
    
                        container remote-intf-addr {
                          description
                            "Statistics of Remote IPv4 Address Sub-TLV information.";
                          leaf remote-address {
                            type inet:ipv4-address-no-zone;
                            description
                              "Remote IPv4 address.";
                          }
                        }  // container remote-intf-addr
    
                        container local-remote-intf-id {
                          description
                            "Statistics of Local Remote Interface ID Sub-TLV information.";
                          leaf local-intf-id {
                            type uint32;
                            description
                              "Local interface ID.";
                          }
    
                          leaf remote-intf-id {
                            type uint32;
                            description
                              "Remote interface ID.";
                          }
                        }  // container local-remote-intf-id
                      }  // list lsabody
                    }  // container lsabodys
    
                    container rilsa {
                      description
                        "Statistics of LSA TLV information.";
                      leaf host-name {
                        type string {
                          length "1..255";
                        }
                        description
                          "Host name TLV.";
                      }
    
                      leaf algorithm {
                        type string {
                          length "1..255";
                        }
                        description
                          "SR algorithm.";
                      }
                    }  // container rilsa
    
                    container prefix-lsas {
                      description
                        "List of prefix LSA.";
                      list prefix-lsa {
                        key "prefix";
                        description
                          "Statistics of prefix LSA.";
                        leaf prefix {
                          type inet:ipv4-address-no-zone;
                          description
                            "Prefix of the router LSA.";
                        }
    
                        leaf route-type {
                          type lsdb-route-type;
                          description
                            "Route type.";
                        }
    
                        leaf af {
                          type string {
                            length "1..256";
                          }
                          description
                            "Address family.";
                        }
    
                        leaf flags {
                          type string {
                            length "1..21";
                          }
                          description
                            "TLV flags.";
                        }
    
                        container redistribute-list {
                          description
                            "Statistics of redistribute-list information.";
                          leaf sub-tlv-flags {
                            type string {
                              length "1..22";
                            }
                            description
                              "Redistribute list sub TLV flags.";
                          }
    
                          leaf router-ids {
                            type string {
                              length "1..40";
                            }
                            description
                              "Redistribute list sub TLV router ID and process ID.";
                          }
                        }  // container redistribute-list
    
                        container prefix-sids {
                          description
                            "List of prefix SID information.";
                          list prefix-sid {
                            key "index";
                            description
                              "Statistics of prefix SID.";
                            leaf index {
                              type uint32;
                              description
                                "Index of prefix SID sub TLV.";
                            }
    
                            leaf sub-tlv-flags {
                              type string {
                                length "1..21";
                              }
                              description
                                "Flags of prefix SID sub TLV.";
                            }
    
                            leaf mt-id {
                              type uint8;
                              description
                                "MT ID of prefix SID sub TLV.";
                            }
    
                            leaf algorithm {
                              type algorithm-type;
                              description
                                "Algorithm of prefix SID sub TLV.";
                            }
                          }  // list prefix-sid
                        }  // container prefix-sids
                      }  // list prefix-lsa
                    }  // container prefix-lsas
    
                    container link-lsas {
                      description
                        "List of link LSA.";
                      list link-lsa {
                        key "link-id link-type";
                        description
                          "Statistics of link LSA.";
                        leaf link-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Link ID of the router LSA.";
                        }
    
                        leaf link-type {
                          type link-type;
                          description
                            "Link type of the router LSA.";
                        }
    
                        leaf link-data {
                          type inet:ipv4-address-no-zone;
                          description
                            "Link data of the router LSA.";
                        }
    
                        container adj-sids {
                          description
                            "List of adjacency SID information.";
                          list adj-sid {
                            key "label";
                            description
                              "Statistics of adjacency SID.";
                            leaf label {
                              type uint32;
                              description
                                "Label of adjacency SID sub TLV.";
                            }
    
                            leaf sub-tlv-flags {
                              type string {
                                length "1..21";
                              }
                              description
                                "Flags of adjacency SID sub TLV.";
                            }
    
                            leaf mt-id {
                              type uint8;
                              description
                                "MT ID of adjacency SID sub TLV.";
                            }
    
                            leaf weight {
                              type uint8;
                              description
                                "Weight of adjacency SID sub TLV.";
                            }
                          }  // list adj-sid
                        }  // container adj-sids
    
                        container lan-adj-sids {
                          description
                            "List of lan adjacency SID information.";
                          list lan-adj-sid {
                            key "neighbor-id";
                            description
                              "Statistics of lan adjacency SID.";
                            leaf neighbor-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "Neighbor ID of lan adjacency SID sub TLV.";
                            }
    
                            leaf sub-tlv-flags {
                              type string {
                                length "1..256";
                              }
                              description
                                "Flags of lan adjacency SID of sub TLV.";
                            }
    
                            leaf mt-id {
                              type uint8;
                              description
                                "MT ID of lan adjacency SID sub TLV.";
                            }
    
                            leaf weight {
                              type uint8;
                              description
                                "Weight of lan adjacency SID sub TLV.";
                            }
    
                            leaf label {
                              type uint32;
                              description
                                "Label of lan adjacency SID sub TLV.";
                            }
                          }  // list lan-adj-sid
                        }  // container lan-adj-sids
                      }  // list link-lsa
                    }  // container link-lsas
                  }  // list lsdb-statistic
                }  // container lsdb-statistics
    
                container lsdb-briefs {
                  config false;
                  description
                    "List of LSDB statistics.";
                  list lsdb-brief {
                    key "area-id";
                    description
                      "Statistics of LSDB statistics.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "ID of the local router.";
                    }
    
                    leaf stub {
                      type uint32;
                      description
                        "Number of stubs.";
                    }
    
                    leaf router {
                      type uint32;
                      description
                        "Number of router LSAs.";
                    }
    
                    leaf network {
                      type uint32;
                      description
                        "Number of network LSAs.";
                    }
    
                    leaf summary-net {
                      type uint32;
                      description
                        "Number of summary net LSAs.";
                    }
    
                    leaf asbr {
                      type uint32;
                      description
                        "Number of ASBR LSAs.";
                    }
    
                    leaf type7 {
                      type uint32;
                      description
                        "Number of Type7 LSAs.";
                    }
    
                    leaf opaque9 {
                      type uint32;
                      description
                        "Number of Type9 opaque LSAs.";
                    }
    
                    leaf opaque10 {
                      type uint32;
                      description
                        "Number of Type10 opaque LSAs.";
                    }
    
                    leaf sub-total {
                      type uint32;
                      description
                        "Sub type sum.";
                    }
                  }  // list lsdb-brief
                }  // container lsdb-briefs
    
                container last-down-nbrs {
                  config false;
                  description
                    "List of the OSPF neighbor that goes down for the last time.";
                  list last-down-nbr {
                    key "list-index area-id ip-addr router-id if-name";
                    description
                      "Statistics of the OSPF neighbor that goes down for the last time.";
                    leaf list-index {
                      type uint32;
                      description
                        "The serial number of the node for the particular last down neighbor.";
                    }
    
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Area to which the neighbor belongs.";
                    }
    
                    leaf ip-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Address of the neighbor interface.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Router ID of the neighbor.";
                    }
    
                    leaf if-name {
                      type string {
                        length "0..64";
                      }
                      description
                        "Interface that connects to the neighbor.";
                    }
    
                    leaf immediate-reason {
                      type nbr-down-imm-reason;
                      description
                        "Direct reason that the neighbor goes down.";
                    }
    
                    leaf primary-reason {
                      type nbr-down-prim-reason;
                      description
                        "Primary reason that the neighbor goes down.";
                    }
    
                    leaf time {
                      type yang:date-and-time;
                      description
                        "Time when the neighbor goes down.";
                    }
    
                    leaf local-router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "ID of the local router.";
                    }
    
                    leaf type {
                      type nbr-type;
                      description
                        "Last down neighbor type.";
                    }
                  }  // list last-down-nbr
                }  // container last-down-nbrs
    
                container disp-graceful-restart {
                  config false;
                  description
                    "Statistics of graceful restart information.";
                  leaf capability {
                    type helper-capabality;
                    description
                      "Graceful restart capability.";
                  }
    
                  leaf help-role {
                    type helper-support;
                    description
                      "Helper policy support.";
                  }
    
                  leaf current-state {
                    type gr-state;
                    description
                      "Current GR status.";
                  }
    
                  leaf on-helper {
                    type on-helper;
                    description
                      "Cause for exiting GR by the helper.";
                  }
    
                  leaf nbr-num {
                    type uint32;
                    description
                      "Re starting neighbor count.";
                  }
    
                  container gr-neighbor-infos {
                    description
                      "List of gr neighbor info.";
                    list gr-neighbor-info {
                      key "area-id intf-ip-addr nbr-router-id nbr-ip-addr";
                      description
                        "Statistics of gr neighbor info.";
                      leaf area-id {
                        type inet:ipv4-address-no-zone;
                        description "Area ID.";
                      }
    
                      leaf intf-ip-addr {
                        type inet:ipv4-address-no-zone;
                        description
                          "Interface IP address.";
                      }
    
                      leaf nbr-router-id {
                        type inet:ipv4-address-no-zone;
                        description
                          "Neighbor router ID.";
                      }
    
                      leaf nbr-ip-addr {
                        type inet:ipv4-address-no-zone;
                        description
                          "Neighbor IP address.";
                      }
    
                      leaf if-name {
                        type string {
                          length "1..64";
                        }
                        description
                          "Neighbor interface name.";
                      }
    
                      leaf gr-nbr-state {
                        type gr-nbr-state;
                        description
                          "Neighbor GR state.";
                      }
    
                      leaf gr-helper-period {
                        type uint32;
                        description
                          "GR helper period.";
                      }
    
                      leaf gr-helper-age {
                        type uint32;
                        description
                          "GR helper age.";
                      }
    
                      leaf last-exit-reason {
                        type last-exit-reason;
                        description
                          "Last exit reason.";
                      }
                    }  // list gr-neighbor-info
                  }  // container gr-neighbor-infos
    
                  container gr-vlink-neighbor-infos {
                    description
                      "List of gr vlink neighbor info.";
                    list gr-vlink-neighbor-info {
                      key "area-id nbr-router-id";
                      description
                        "Statistics of gr vlink neighbor info.";
                      leaf area-id {
                        type inet:ipv4-address-no-zone;
                        description "Area ID.";
                      }
    
                      leaf nbr-router-id {
                        type inet:ipv4-address-no-zone;
                        description
                          "Neighbor router ID.";
                      }
    
                      leaf intf-ip-addr {
                        type inet:ipv4-address-no-zone;
                        description
                          "Interface IP address.";
                      }
    
                      leaf if-name {
                        type string {
                          length "1..64";
                        }
                        description
                          "Neighbor interface name.";
                      }
    
                      leaf nbr-ip-addr {
                        type inet:ipv4-address-no-zone;
                        description
                          "Neighbor interface IP address.";
                      }
    
                      leaf gr-nbr-state {
                        type gr-nbr-state;
                        description
                          "Neighbor GR state.";
                      }
    
                      leaf vlink-if-state {
                        type vlink-if-state;
                        description
                          "Vlink interface state.";
                      }
    
                      leaf vlink-nbr-state {
                        type vlink-nbr-state;
                        description
                          "Vlink neighbor state.";
                      }
    
                      leaf last-exit-reason {
                        type last-exit-reason;
                        description
                          "Last exit reason.";
                      }
                    }  // list gr-vlink-neighbor-info
                  }  // container gr-vlink-neighbor-infos
                }  // container disp-graceful-restart
    
                container error-process-data {
                  config false;
                  description
                    "Statistics of error data.";
                  leaf router-id {
                    type inet:ipv4-address-no-zone;
                    description "Router ID.";
                  }
    
                  leaf same-ip-pkt-cnt {
                    type uint32;
                    description
                      "Same IP packet count.";
                  }
    
                  leaf bad-pkt-cnt {
                    type uint32;
                    description "Bad packet.";
                  }
    
                  leaf bad-ver-cnt {
                    type uint32;
                    description "Bad version.";
                  }
    
                  leaf bad-chk-sum-pkt-cnt {
                    type uint32;
                    description "Bad checksum.";
                  }
    
                  leaf bad-area-pkt-cnt {
                    type uint32;
                    description "Bad area ID.";
                  }
    
                  leaf pkt-rcv-unnumber {
                    type uint32;
                    description
                      "Drop on unnumbered interface.";
                  }
    
                  leaf bad-virt-link-cnt {
                    type uint32;
                    description
                      "Bad virtual link.";
                  }
    
                  leaf auth-type-fail-cnt {
                    type uint32;
                    description
                      "Bad authentication type.";
                  }
    
                  leaf auth-key-fail-cnt {
                    type uint32;
                    description
                      "Bad authentication key.";
                  }
    
                  leaf short-pkt-cnt {
                    type uint32;
                    description
                      "Packet too small.";
                  }
    
                  leaf long-pkt-cnt {
                    type uint32;
                    description
                      "Packet size > IP length.";
                  }
    
                  leaf tx-err-cnt {
                    type uint32;
                    description
                      "Transmit error.";
                  }
    
                  leaf if-down-cnt {
                    type uint32;
                    description
                      "Interface down.";
                  }
    
                  leaf no-nbr {
                    type uint32;
                    description
                      "Unknown neighbor.";
                  }
    
                  leaf mis-netmask-cnt {
                    type uint32;
                    description
                      "Netmask mismatch.";
                  }
    
                  leaf mis-hello-intl-cnt {
                    type uint32;
                    description
                      "Hello timer mismatch.";
                  }
    
                  leaf mis-dead-intl-cnt {
                    type uint32;
                    description
                      "Dead timer mismatch.";
                  }
    
                  leaf mis-ext-rou-cap-cnt {
                    type uint32;
                    description
                      "Extern option mismatch.";
                  }
    
                  leaf router-id-confusion {
                    type uint32;
                    description
                      "DD router ID confusion.";
                  }
    
                  leaf vlink-nbr-mis-cnt {
                    type uint32;
                    description
                      "Virtual neighbor unknown.";
                  }
    
                  leaf nbma-nbr-err-cnt {
                    type uint32;
                    description
                      "NBMA neighbor unknown.";
                  }
    
                  leaf inval-src-helo-cnt {
                    type uint32;
                    description
                      "Invalid source.";
                  }
    
                  leaf dd-nbr-low-cnt {
                    type uint32;
                    description
                      "Neighbour state low for DD.";
                  }
    
                  leaf dd-router-id-cnt {
                    type uint32;
                    description
                      "DD router ID confusion.";
                  }
    
                  leaf dd-opt-mismatch-cnt {
                    type uint32;
                    description
                      "Extern option mismatch.";
                  }
    
                  leaf dd-unknwn-lsa-cnt {
                    type uint32;
                    description
                      "DD packet unknown LSA type.";
                  }
    
                  leaf dd-mtu-mismatch-cnt {
                    type uint32;
                    description
                      "MTU option mismatch.";
                  }
    
                  leaf ack-nbr-low-cnt {
                    type uint32;
                    description
                      "Neighbour state low for LS acknowledgement.";
                  }
    
                  leaf ack-bad-cnt {
                    type uint32;
                    description "Bad ack.";
                  }
    
                  leaf ack-duplicate-cnt {
                    type uint32;
                    description "Duplicate ack.";
                  }
    
                  leaf ack-unknown-lsa-cnt {
                    type uint32;
                    description
                      "LSAck packet unknown LSA type.";
                  }
    
                  leaf req-nbr-low-cnt {
                    type uint32;
                    description
                      "Neighbour state low for LS request.";
                  }
    
                  leaf req-empty-cnt {
                    type uint32;
                    description "Empty request.";
                  }
    
                  leaf req-bad-cnt {
                    type uint32;
                    description "Bad request.";
                  }
    
                  leaf upd-nbr-low-cnt {
                    type uint32;
                    description
                      "Neighbour state low for LS update.";
                  }
    
                  leaf upd-self-newr-cnt {
                    type uint32;
                    description
                      "Newer self generate LSA.";
                  }
    
                  leaf upd-min-lsa-lsarr-cnt {
                    type uint32;
                    description
                      "Received LSA within LSA arrival interval.";
                  }
    
                  leaf upd-ls-checksum-cnt {
                    type uint32;
                    description
                      "LSA checksum bad.";
                  }
    
                  leaf upd-les-recent-cnt {
                    type uint32;
                    description
                      "Received less recent LSA.";
                  }
    
                  leaf upd-unknow-lsa-cnt {
                    type uint32;
                    description
                      "LSUpdate packet unknown LSA type.";
                  }
    
                  leaf opq9-flood-cnt {
                    type uint32;
                    description
                      "Opq9 of flooding scope.";
                  }
    
                  leaf opq10-flood-cnt {
                    type uint32;
                    description
                      "Opq10 of flooding scope.";
                  }
    
                  leaf opq11-flood-cnt {
                    type uint32;
                    description
                      "Opq11 of flooding scope.";
                  }
    
                  leaf unknown-tlv {
                    type uint32;
                    description
                      "Unknown TLV type.";
                  }
    
                  leaf rxmt-dd-err-cnt {
                    type uint32;
                    description
                      "Number for DD packet.";
                  }
    
                  leaf rxmt-req-err-cnt {
                    type uint32;
                    description
                      "Number for request packet.";
                  }
    
                  leaf rxmt-upd-err-cnt {
                    type uint32;
                    description
                      "Number for update packet.";
                  }
    
                  leaf gr-invalid-lsa-cnt {
                    type uint32;
                    description
                      "Number of invalid LSAs.";
                  }
    
                  leaf gr-invalid-pol-cnt {
                    type uint32;
                    description
                      "Number of policy failed LSAs.";
                  }
    
                  leaf gr-invalid-prd-cnt {
                    type uint32;
                    description
                      "Number of wrong period LSAs.";
                  }
    
                  leaf tunnel-cost-cnt {
                    type uint32;
                    description
                      "Tunnel cost mistake.";
                  }
    
                  leaf peer-net-type-cnt {
                    type uint32;
                    description
                      "The network type of the neighbor interface is not consistent.";
                  }
    
                  leaf hello-dr-mis-cnt {
                    type uint32;
                    description
                      "The DR or BDR in receiving hello packet is not same with the DR or BDR.";
                  }
    
                  leaf gen-ttl-err-cnt {
                    type uint32;
                    description
                      "The TTL of the packet is error.";
                  }
    
                  leaf over-max-buffer-length-cnt {
                    type uint32;
                    description
                      "Number of packet that length is more than max buffer length.";
                  }
    
                  leaf bad-net-segment-packet-cnt {
                    type uint32;
                    description
                      "Number of bad network segment packet.";
                  }
    
                  leaf bad-routerid-packet-cnt {
                    type uint32;
                    description
                      "Number of non-hello packet that router ID is different.";
                  }
    
                  leaf destination-ip-error-packet-cnt {
                    type uint32;
                    description
                      "Number of bad destIpAddress packet.";
                  }
    
                  leaf passive-intf-packet-cnt {
                    type uint32;
                    description
                      "Number of packet that received from silent Interface.";
                  }
    
                  leaf hello-nbr-reach-limit-cnt {
                    type uint32;
                    description
                      "Number of hello packet that discard because the number of neighbour reached the limit.";
                  }
    
                  leaf hello-hold-down-cnt {
                    type uint32;
                    description
                      "Number of hello packet that discard because the neighbour is in hold-down state.";
                  }
    
                  leaf hello-memory-overload-cnt {
                    type uint32;
                    description
                      "Number of hello packet that discard because memory is overload.";
                  }
    
                  leaf hello-cpu-overload-cnt {
                    type uint32;
                    description
                      "Number of hello packet that discard because CPU is overload.";
                  }
    
                  leaf dd-nbr-reach-limit-cnt {
                    type uint32;
                    description
                      "Number of dd packet that discard because the number of neighbour reached the limit.";
                  }
    
                  leaf dd-cpu-overload-cnt {
                    type uint32;
                    description
                      "Number of dd packet that discard because CPU is overload.";
                  }
    
                  leaf dd-mem-overload-cnt {
                    type uint32;
                    description
                      "Number of dd packet that discard because memory is overload.";
                  }
    
                  leaf ri-lsa-tlv-error-cnt {
                    type uint32;
                    description
                      "Router information lsa TLV error.";
                  }
    
                  leaf ri-lsa-sub-tlv-error-cnt {
                    type uint32;
                    description
                      "Router information lsa sub TLV error.";
                  }
    
                  leaf ext-prefix-lsa-tlv-error-cnt {
                    type uint32;
                    description
                      "Extend prefix lsa TLV error.";
                  }
    
                  leaf ext-prefix-lsa-sub-tlv-error-cnt {
                    type uint32;
                    description
                      "Extend prefix lsa sub TLV error.";
                  }
    
                  leaf ext-link-lsa-tlv-error-cnt {
                    type uint32;
                    description
                      "Extend link lsa TLV error.";
                  }
    
                  leaf ext-link-lsa-sub-tlv-error-cnt {
                    type uint32;
                    description
                      "Extend link lsa sub TLV error.";
                  }
    
                  leaf bad-sr-algo-cnt {
                    type uint32;
                    description
                      "Bad SR-Algorithm TLV.";
                  }
    
                  leaf bad-sid-range-cnt {
                    type uint32;
                    description
                      "Bad SID/Label Range TLV.";
                  }
    
                  leaf bad-sid-cnt {
                    type uint32;
                    description
                      "Bad SID/Label Sub TLV.";
                  }
    
                  leaf bad-adj-sid-cnt {
                    type uint32;
                    description
                      "Bad Adj-SID Sub TLV.";
                  }
    
                  leaf bad-prefix-sid-cnt {
                    type uint32;
                    description
                      "Bad Prefix-SID Sub TLV.";
                  }
    
                  leaf bad-ext-prefix-range-cnt {
                    type uint32;
                    description
                      "Bad Extended Prefix Range TLV.";
                  }
    
                  leaf bad-lan-adj-sid-cnt {
                    type uint32;
                    description
                      "Bad LAN Adj-SID Sub TLV.";
                  }
    
                  leaf bad-ext-prefix-cnt {
                    type uint32;
                    description
                      "Bad Extended Prefix TLV.";
                  }
    
                  leaf bad-ext-link-cnt {
                    type uint32;
                    description
                      "Bad Extended Link TLV.";
                  }
                }  // container error-process-data
    
                container as-lsdb-brief {
                  config false;
                  description
                    "Statistics of AS LSDB statistics.";
                  leaf router-id {
                    type inet:ipv4-address-no-zone;
                    description
                      "ID of the local router.";
                  }
    
                  leaf opaque11 {
                    type uint32;
                    description
                      "Number of Type11 opaque LSAs.";
                  }
    
                  leaf ase {
                    type uint32;
                    description
                      "Number of ASE LSAs.";
                  }
    
                  leaf sub-total {
                    type uint32;
                    description "Sub type sum.";
                  }
                }  // container as-lsdb-brief
    
                container neighbors {
                  config false;
                  description
                    "List of neighbor.";
                  list neighbor {
                    key "area-id if-name router-id ip-addr";
                    description
                      "Statistics of neighbor.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor area ID.";
                    }
    
                    leaf if-name {
                      type leafref {
                        path
                          "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Neighbor interface name.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor router ID.";
                    }
    
                    leaf ip-addr {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor IP address.";
                    }
    
                    leaf multi-area-flag {
                      type boolean;
                      description
                        "The symoble of multi area.";
                    }
    
                    leaf state {
                      type nbr-state;
                      description
                        "Neighbor state.";
                    }
    
                    leaf host-name {
                      type string {
                        length "1..255";
                      }
                      description
                        "Neighbor host name.";
                    }
    
                    container datas {
                      description
                        "List of neighbor data.";
                      list data {
                        key "if-ip";
                        description
                          "Statistics of neighbor data.";
                        leaf if-ip {
                          type inet:ipv4-address-no-zone;
                          description
                            "Neighbor interface IP address.";
                        }
    
                        leaf gr-state {
                          type nbr-gr-state;
                          description
                            "Neighbor GR state.";
                        }
    
                        leaf mode {
                          type nbr-mode;
                          description
                            "Neighbor mode.";
                        }
    
                        leaf priority {
                          type int32;
                          description
                            "Neighbor priority.";
                        }
    
                        leaf dr {
                          type inet:ipv4-address-no-zone;
                          description
                            "Neighbor DR.";
                        }
    
                        leaf bdr {
                          type inet:ipv4-address-no-zone;
                          description
                            "Neighbor BDR.";
                        }
    
                        leaf if-mtu {
                          type uint32;
                          description
                            "Neighbor interface MTU.";
                        }
    
                        leaf dead-due-timer {
                          type uint32;
                          description
                            "Neighbor dead due timer.";
                        }
    
                        leaf retran-interval {
                          type uint32;
                          description
                            "Neighbor retransmit interval.";
                        }
    
                        leaf up-time {
                          type string {
                            length "1..16";
                          }
                          description
                            "Neighbor up time.";
                        }
    
                        leaf up-time-stamp {
                          type yang:date-and-time;
                          description
                            "Neighbor up time stamp.";
                        }
    
                        leaf auth-sequence {
                          type uint32;
                          description
                            "Neighbor authentication sequence number.";
                        }
                      }  // list data
                    }  // container datas
                  }  // list neighbor
                }  // container neighbors
    
                container routings {
                  config false;
                  description
                    "List of the OSPF routing table.";
                  list routing {
                    key "dest-ip mask-length path-type";
                    description
                      "Statistics of the OSPF routing table.";
                    leaf dest-ip {
                      type inet:ipv4-address-no-zone;
                      description
                        "Destination IP address.";
                    }
    
                    leaf mask-length {
                      type uint32 {
                        range "0..32";
                      }
                      description "Mask length.";
                    }
    
                    leaf path-type {
                      type path-type;
                      description "Route type.";
                    }
    
                    leaf cost {
                      type uint32;
                      description
                        "Cost to the destination address.";
                    }
    
                    leaf prefix-priority {
                      type pre-priority;
                      description
                        "Prefix priority.";
                    }
    
                    container nexthop-datas {
                      description
                        "List of nexthop data.";
                      list nexthop-data {
                        key "ip-addr adv-router-id area-id";
                        description
                          "Statistics of nexthop data.";
                        leaf ip-addr {
                          type inet:ipv4-address-no-zone;
                          description
                            "Nexthop IP address.";
                        }
    
                        leaf adv-router-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Next hop advertising router ID.";
                        }
    
                        leaf area-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "Next hop area ID.";
                        }
    
                        leaf if-name {
                          type string {
                            length "1..64";
                          }
                          description
                            "Next hop outgoing interface name.";
                        }
    
                        leaf flags-disp {
                          type string {
                            length "1..8";
                          }
                          description
                            "Next hop flags.";
                        }
    
                        leaf tag {
                          type uint32;
                          description
                            "Next hop tag.";
                        }
    
                        leaf bak-if-name {
                          type string {
                            length "1..64";
                          }
                          description
                            "Backup outgoing interface name.";
                        }
    
                        leaf bak-next-ip {
                          type inet:ipv4-address-no-zone;
                          description
                            "Backup nexthop IP address.";
                        }
    
                        leaf backup-type {
                          type backup-type;
                          description
                            "Type of backup.";
                        }
    
                        leaf tunnel-dest {
                          type inet:ipv4-address-no-zone;
                          description
                            "Tunnel destination.";
                        }
    
                        leaf tunnel-type {
                          type tunnel-type;
                          description
                            "Type of tunnel.";
                        }
                      }  // list nexthop-data
                    }  // container nexthop-datas
                  }  // list routing
                }  // container routings
    
                container vlink-nbr-statistics {
                  config false;
                  description
                    "List of virtual link information.";
                  list vlink-nbr-statistic {
                    key "area-id router-id";
                    description
                      "Statistics of virtual link information.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "The transit area identifier.";
                    }
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "A 32-bit integer uniquely identifying the neighboring router in the autonomous system.";
                    }
    
                    leaf if-ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Self/Source IP address of the out going interface.";
                    }
    
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "The IP address this virtual neighbor is using.";
                    }
    
                    leaf state {
                      type nbr-state;
                      description
                        "The state of the virtual neighbor relationship.";
                    }
    
                    leaf interface-state {
                      type intf-state;
                      description
                        "OSPF virtual interface states.";
                    }
    
                    leaf type {
                      type network-type;
                      description
                        "Interface type.";
                    }
    
                    leaf gr-state {
                      type nbr-gr-state;
                      description
                        "Status of GR of an interface.";
                    }
    
                    leaf hello-interval {
                      type uint32;
                      units "s";
                      description
                        "Time between hello packets.";
                    }
    
                    leaf dead-interval {
                      type uint32;
                      units "s";
                      description
                        "Interval after which a neighbor is declared dead.";
                    }
    
                    leaf trans-delay-interval {
                      type uint32;
                      units "s";
                      description
                        "Delay for transmitting LSAs.";
                    }
    
                    leaf retransmit-interval {
                      type uint32;
                      units "s";
                      description
                        "Interval for retransmitting LSAs.";
                    }
    
                    leaf cost {
                      type uint32;
                      description
                        "Cost to reach the end point of this virtual link or cost to reach the virtual neighbor.";
                    }
    
                    leaf smart-discover {
                      type boolean;
                      description
                        "Indicates whether smart discover feature is enabled or not.";
                    }
    
                    leaf options {
                      type inet:ipv4-address-no-zone;
                      description
                        "Neighbor options.";
                    }
    
                    leaf events {
                      type uint32;
                      description
                        "Neighbor events.";
                    }
    
                    leaf ls-rxq-len {
                      type uint32;
                      description
                        "Neighbor retransmission queue length.";
                    }
    
                    leaf hello-suppress {
                      type boolean;
                      description
                        "Indicates whether Hellos are being suppressed to the neighbor.";
                    }
    
                    leaf gr-helper-age {
                      type uint32;
                      description
                        "Neighbor helper age.";
                    }
    
                    leaf helper-ext-reason {
                      type helper-extreason;
                      description
                        "Neighbor helper exit reason.";
                    }
    
                    leaf gr-helper-status {
                      type nbr-gr-helper-status;
                      description
                        "Neighbor helper status.";
                    }
                  }  // list vlink-nbr-statistic
                }  // container vlink-nbr-statistics
    
                container mpls-te-statistics {
                  config false;
                  description
                    "List of the MPLS TE statistics.";
                  list mpls-te-statistic {
                    key "area-id opaque-id adv-router-id link-state-id";
                    description
                      "Statistics of the MPLS TE.";
                    leaf area-id {
                      type inet:ipv4-address-no-zone;
                      description "Area ID.";
                    }
    
                    leaf opaque-id {
                      type uint32;
                      description "Opaque ID.";
                    }
    
                    leaf adv-router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Advertisement router ID.";
                    }
    
                    leaf link-state-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "Link state ID.";
                    }
    
                    leaf lsa-length {
                      type uint32;
                      description "Lsa length.";
                    }
    
                    leaf lsa-options {
                      type uint32;
                      description "Lsa options.";
                    }
    
                    leaf time-stamp {
                      type yang:date-and-time;
                      description
                        "Prefix address.";
                    }
    
                    container router-tlv-datas {
                      description
                        "List of the router TLV datas.";
                      list router-tlv-data {
                        key "te-router-id";
                        description
                          "Statistics of the router TLV data.";
                        leaf te-router-id {
                          type inet:ipv4-address-no-zone;
                          description
                            "MPLS TE router ID.";
                        }
                      }  // list router-tlv-data
                    }  // container router-tlv-datas
    
                    container link-tlv-datas {
                      description
                        "List of the link TLV datas.";
                      list link-tlv-data {
                        key "link-id";
                        description
                          "Statistics of the link TLV data.";
                        leaf link-id {
                          type inet:ipv4-address-no-zone;
                          description "Link ID.";
                        }
    
                        leaf link-type {
                          type te-link-type;
                          description
                            "Link type.";
                        }
    
                        leaf remote-ip {
                          type inet:ipv4-address-no-zone;
                          description
                            "Remote IP address.";
                        }
    
                        leaf te-metric {
                          type uint32;
                          description
                            "Te metric.";
                        }
    
                        leaf ospf-metric {
                          type uint32;
                          description
                            "OSPF metric.";
                        }
    
                        leaf max-link-bw {
                          type uint64;
                          description
                            "Maximum link bandwidth.";
                        }
    
                        leaf max-reserved-bw {
                          type uint64;
                          description
                            "Maximum reserved bandwidth.";
                        }
    
                        leaf admin-group {
                          type pub-type:hex-binary;
                          description
                            "Admin group.";
                        }
    
                        leaf bc0 {
                          type uint64;
                          description
                            "Bandwidth constraints 0.";
                        }
    
                        leaf bc1 {
                          type uint64;
                          description
                            "Bandwidth constraints 1.";
                        }
    
                        leaf bc2 {
                          type uint64;
                          description
                            "Bandwidth constraints 2.";
                        }
    
                        leaf bc3 {
                          type uint64;
                          description
                            "Bandwidth constraints 3.";
                        }
    
                        leaf bc4 {
                          type uint64;
                          description
                            "Bandwidth constraints 4.";
                        }
    
                        leaf bc5 {
                          type uint64;
                          description
                            "Bandwidth constraints 5.";
                        }
    
                        leaf bc6 {
                          type uint64;
                          description
                            "Bandwidth constraints 6.";
                        }
    
                        leaf bc7 {
                          type uint64;
                          description
                            "Bandwidth constraints 7.";
                        }
    
                        leaf un-reserved-bw0 {
                          type uint64;
                          description
                            "Unreserved bandwidth 0.";
                        }
    
                        leaf un-reserved-bw1 {
                          type uint64;
                          description
                            "Unreserved bandwidth 1.";
                        }
    
                        leaf un-reserved-bw2 {
                          type uint64;
                          description
                            "Unreserved bandwidth 2.";
                        }
    
                        leaf un-reserved-bw3 {
                          type uint64;
                          description
                            "Unreserved bandwidth 3.";
                        }
    
                        leaf un-reserved-bw4 {
                          type uint64;
                          description
                            "Unreserved bandwidth 4.";
                        }
    
                        leaf un-reserved-bw5 {
                          type uint64;
                          description
                            "Unreserved bandwidth 5.";
                        }
    
                        leaf un-reserved-bw6 {
                          type uint64;
                          description
                            "Unreserved bandwidth 6.";
                        }
    
                        leaf un-reserved-bw7 {
                          type uint64;
                          description
                            "Unreserved bandwidth 7.";
                        }
    
                        container local-ips {
                          description
                            "List of the local IP address.";
                          list local-ip {
                            key "local-ip";
                            description
                              "Statistics of the local IP address.";
                            leaf local-ip {
                              type inet:ipv4-address-no-zone;
                              description
                                "Local IP address.";
                            }
                          }  // list local-ip
                        }  // container local-ips
    
                        container srlgs {
                          description
                            "List of the shared risk link group (SRLG).";
                          list srlg {
                            key "srlg";
                            description
                              "Statistics of the shared risk link group (SRLG).";
                            leaf srlg {
                              type uint32;
                              description
                                "Shared risk link group (SRLG).";
                            }
                          }  // list srlg
                        }  // container srlgs
                      }  // list link-tlv-data
                    }  // container link-tlv-datas
                  }  // list mpls-te-statistic
                }  // container mpls-te-statistics
              }  // list site
            }  // container sites
          }  // container ospfv2
        }
      }  // module huawei-ospfv2
    

© 2023 YumaWorks, Inc. All rights reserved.