Cisco-IOS-XR-um-router-ospf-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR router-ospf package configuration. This YANG module augm...

  • Version: 2021-03-26

    Cisco-IOS-XR-um-router-ospf-cfg@2021-03-26


    
      module Cisco-IOS-XR-um-router-ospf-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-router-ospf-cfg";
    
        prefix um-router-ospf-cfg;
    
        import cisco-semver {
          prefix semver;
        }
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import Cisco-IOS-XR-um-snmp-server-cfg {
          prefix a1;
        }
        import tailf-common {
          prefix tailf;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
         
         Postal: 170 West Tasman Drive
         San Jose, CA 95134
         
         Tel: +1 800 553-NETS
         
         E-mail: cs-yang@cisco.com";
    
        description
          "This module contains a collection of YANG definitions
         for Cisco IOS-XR router-ospf package configuration.
         
         This YANG module augments the
         modules with configuration data.
         
         Copyright (c) 2019-2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-03-26" {
          description
            "Added leaf dead-interval-minimal-hello-multiplier
           2021-02-10
             Added disable container in area_scope link-down fast-detect container
           2021-01-08
             Added microloop avoidance disable in flex-algos container
           2020-12-24
             Added cost-fallback anomaly container
           2020-09-28
             - Changed log/adjacency/changes container as presence
           2020-05-22
             - Added container fast-reroute and its child nodes";
        }
    
        revision "2020-05-21" {
          description
            "- Added container srlg-protection and its child nodes
           2020-05-06
           - Added container srlg and delay and its child nodes
           - Added container advertise to its child nodes
           2020-03-10
           Made separate nodes for avoidance-rib-update-delay and ietf-helper";
        }
    
        revision "2019-06-10" {
          description
            "Establish semantic version baseline.";
        }
    
        revision "2019-03-30" {
          description "Initial version";
        }
    
        semver:module-version "3.0.0";
        semver:module-version "2.0.0";
        semver:module-version "1.0.0";
    
        augment /a1:snmp-server/a1:traps {
          container ospf {
            description "Enable SNMP ospf traps";
            container errors {
              description
                "Enable SNMP traps for ospf errors";
              container authentication-failure {
                presence
                  "Indicates a authentication-failure node is configured.";
                description
                  "Enable SNMP traps for authentication failure errors on non-virtual interfaces";
              }  // container authentication-failure
    
              container bad-packet {
                presence
                  "Indicates a bad-packet node is configured.";
                description
                  "Enable SNMP traps for bad packet errors on non-virtual interfaces";
              }  // container bad-packet
    
              container config-error {
                presence
                  "Indicates a config-error node is configured.";
                description
                  "Enable SNMP traps for config errors on non-virtual interfaces";
              }  // container config-error
    
              container virt-authentication-failure {
                presence
                  "Indicates a virt-authentication-failure node is configured.";
                description
                  "Enable SNMP traps for authentication failure errors on virtual interfaces";
              }  // container virt-authentication-failure
    
              container virt-bad-packet {
                presence
                  "Indicates a virt-bad-packet node is configured.";
                description
                  "Enable SNMP traps for bad packet errors on virtual interfaces";
              }  // container virt-bad-packet
    
              container virt-config-error {
                presence
                  "Indicates a virt-config-error node is configured.";
                description
                  "Enable SNMP traps for config errors on virtual interfaces";
              }  // container virt-config-error
            }  // container errors
    
            container lsa {
              description
                "Enable SNMP traps related to lsas";
              container lsa-maxage {
                presence
                  "Indicates a lsa-maxage node is configured.";
                description
                  "Enable SNMP traps for lsa maxage";
              }  // container lsa-maxage
    
              container lsa-originate {
                presence
                  "Indicates a lsa-originate node is configured.";
                description
                  "Enable SNMP traps for new lsa origination";
              }  // container lsa-originate
            }  // container lsa
    
            container retransmit {
              description
                "Enable SNMP traps for packet retransmissions";
              container packets {
                presence
                  "Indicates a packets node is configured.";
                description
                  "Enable SNMP traps for packet retransmissions on non-virtual interfaces";
              }  // container packets
    
              container virt-packets {
                presence
                  "Indicates a virt-packets node is configured.";
                description
                  "Enable SNMP traps for packet retransmissions on virtual interfaces";
              }  // container virt-packets
            }  // container retransmit
    
            container state-change {
              description
                "Enable SNMP traps for ospf state change";
              container if-state-change {
                presence
                  "Indicates a if-state-change node is configured.";
                description
                  "Enable SNMP traps for ospf non-virtual interface state change";
              }  // container if-state-change
    
              container neighbor-state-change {
                presence
                  "Indicates a neighbor-state-change node is configured.";
                description
                  "Enable SNMP traps for ospf neighbor state change";
              }  // container neighbor-state-change
    
              container virtif-state-change {
                presence
                  "Indicates a virtif-state-change node is configured.";
                description
                  "Enable SNMP traps for ospf virtual interface state change";
              }  // container virtif-state-change
    
              container virtneighbor-state-change {
                presence
                  "Indicates a virtneighbor-state-change node is configured.";
                description
                  "Enable SNMP traps for ospf virtual neighbor state change";
              }  // container virtneighbor-state-change
            }  // container state-change
          }  // container ospf
        }
    
        container ospf {
          description
            "Global OSPF configuration commands";
          container name-lookup {
            presence
              "Indicates a name-lookup node is configured.";
            description
              "Display OSPF router ids as DNS names";
          }  // container name-lookup
        }  // container ospf
    
        container router {
          description "Enable a routing process";
          container ospf {
            description
              "OSPF configuration subcommands";
            container processes {
              description
                "Name for this OSPF process";
              list process {
                key "process-name";
                description
                  "Name for this OSPF process";
                leaf process-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "Name for this OSPF process";
                }
    
                container mpls {
                  description
                    "Configure MPLS routing protocol parameters";
                  container traffic-eng {
                    description
                      "Routing protocol commands for MPLS Traffic Engineering";
                    container router-id {
                      description
                        "Traffic Engineering stable IP address for system";
                      leaf ip-address {
                        type inet:ipv4-address-no-zone;
                        must "not(../interface)";
                        description
                          "configure this node";
                      }
    
                      leaf interface {
                        type xr:Interface-name;
                        must
                          "not(../ip-address)";
                        description
                          "MPLS TE interface configuration for this OSPF process";
                      }
                    }  // container router-id
    
                    container multicast-intact {
                      presence
                        "Indicates a multicast-intact node is configured.";
                      description
                        "Publish multicast-intact paths to RIB";
                    }  // container multicast-intact
    
                    container autoroute-exclude {
                      description
                        "Exclude IP address destinations from using TE tunnels";
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Route Policy to exclude TE paths from routes";
                      }
                    }  // container autoroute-exclude
    
                    container igp-intact {
                      presence
                        "Indicates a igp-intact node is configured.";
                      description
                        "Retain one or more IPv4 nexthops with tunnel nexthops";
                    }  // container igp-intact
    
                    container ldp-sync-update {
                      presence
                        "Indicates a ldp-sync-update node is configured.";
                      description
                        "Enable LDP sync induced metric propagation";
                    }  // container ldp-sync-update
                  }  // container traffic-eng
    
                  container ldp {
                    description
                      "Configure LDP parameters";
                    container sync {
                      presence
                        "Indicates a sync node is configured.";
                      description
                        "Enable LDP IGP synchronization";
                    }  // container sync
    
                    container sync-igp-shortcuts {
                      presence
                        "Indicates a sync-igp-shortcuts node is configured.";
                      description
                        "LDP sync for igp-shortcut tunnels";
                    }  // container sync-igp-shortcuts
    
                    container auto-config {
                      presence
                        "Indicates a auto-config node is configured.";
                      description
                        "Enable LDP IGP interface auto-configuration";
                    }  // container auto-config
                  }  // container ldp
                }  // container mpls
    
                leaf cost {
                  type uint32 {
                    range "1..65535";
                  }
                  description "Interface cost";
                }
    
                container cost-fallback {
                  description
                    "Cost fallback when anomaly is detected";
                  container anomaly {
                    description
                      "Penalty when a delay or loss is notified";
                    container delay {
                      description
                        "Penalty when a delay is notified";
                      container igp-metric {
                        description
                          "Penalty on IGP metric";
                        leaf increment {
                          type uint32 {
                            range "1..65534";
                          }
                          must
                            "not(../multiplier or ../value)";
                          description
                            "Increment the IGP cost by the specified value";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "1..255";
                          }
                          must
                            "not(../increment or ../value)";
                          description
                            "Multiply the IGP cost by the specified value";
                        }
    
                        leaf value {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../increment or ../multiplier)";
                          description
                            "Set the IGP cost to the specified value";
                        }
                      }  // container igp-metric
    
                      container te-metric {
                        description
                          "Penalty on TE metric";
                        leaf increment {
                          type uint32 {
                            range
                              "1..4294967294";
                          }
                          must
                            "not(../multiplier or ../value)";
                          description
                            "Increment the TE metric by the specified value";
                        }
    
                        leaf multiplier {
                          type uint32 {
                            range "1..255";
                          }
                          must
                            "not(../increment or ../value)";
                          description
                            "Multiply the TE metric by the specified value";
                        }
    
                        leaf value {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../increment or ../multiplier)";
                          description
                            "Set the TE cost to the specified value";
                        }
                      }  // container te-metric
                    }  // container delay
                  }  // container anomaly
                }  // container cost-fallback
    
                leaf hello-interval {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "Time between HELLO packets";
                }
    
                leaf dead-interval {
                  type uint32 {
                    range "1..65535";
                  }
                  must
                    "not(../dead-interval-minimal-hello-multiplier)";
                  description
                    "Interval after which a neighbor is declared dead";
                }
    
                leaf dead-interval-minimal-hello-multiplier {
                  type uint32 {
                    range "3..20";
                  }
                  must "not(../dead-interval)";
                  description
                    "Set multiplier for Hellos";
                }
    
                leaf priority {
                  type uint32 {
                    range "0..255";
                  }
                  description "Router priority";
                }
    
                leaf retransmit-interval {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "Time between retransmitting lost link state advertisements";
                }
    
                leaf transmit-delay {
                  type uint32 {
                    range "1..65535";
                  }
                  description
                    "Estimated time needed to send link-state update packet";
                }
    
                container flood-reduction {
                  description
                    "Enable/Disable OSPF Flood Reduction";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable OSPF Flood Reduction";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable OSPF Flood Reduction";
                  }  // container disable
                }  // container flood-reduction
    
                container demand-circuit {
                  description
                    "Enable/Disable OSPF demand circuit";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable OSPF demand circuit";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable OSPF demand circuit";
                  }  // container disable
                }  // container demand-circuit
    
                container mtu-ignore {
                  description
                    "Enable/Disable ignoring of MTU in DBD packets";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Ignores the MTU in DBD packets";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable ignoring the MTU in DBD packets";
                  }  // container disable
                }  // container mtu-ignore
    
                container database-filter {
                  description
                    "Filter OSPF LSA during synchronization and flooding";
                  container all {
                    description "Filter all LSA";
                    container out {
                      presence
                        "Indicates a out node is configured.";
                      description "Outgoing LSA";
                      container enable {
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable filtering";
                      }  // container enable
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable filtering";
                      }  // container disable
                    }  // container out
                  }  // container all
                }  // container database-filter
    
                container passive {
                  description
                    "Enable/Disable passive";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description "Enable passive";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable passive";
                  }  // container disable
                }  // container passive
    
                container log {
                  description "Log ospf info";
                  container adjacency {
                    description
                      "Log adjacency state info";
                    container changes {
                      presence
                        "Indicates a detail node is configured.";
                      description "Log changes";
                      container detail {
                        must "not(../disable)";
                        presence
                          "Indicates a detail node is configured.";
                        description
                          "Log all state changes";
                      }  // container detail
    
                      container disable {
                        must "not(../detail)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable logging";
                      }  // container disable
                    }  // container changes
                  }  // container adjacency
                }  // container log
    
                leaf router-id {
                  type inet:ipv4-address-no-zone;
                  description
                    "configure this node";
                }
    
                container redistribute {
                  description
                    "Redistribute information from another routing protocol";
                  container connected {
                    presence
                      "Indicates a connected node is configured.";
                    description
                      "Connected routes";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container connected
    
                  container static {
                    presence
                      "Indicates a static node is configured.";
                    description "Static routes";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container static
    
                  container dagr {
                    presence
                      "Indicates a dagr node is configured.";
                    description
                      "Directed-attached gateway redundancy (DAGR)";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container dagr
    
                  container subscriber {
                    presence
                      "Indicates a subscriber node is configured.";
                    description
                      "Subscriber routes";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container subscriber
    
                  container mobile {
                    presence
                      "Indicates a mobile node is configured.";
                    description "Mobile routes";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container mobile
    
                  list eigrp {
                    key "as-number";
                    description
                      "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                    leaf as-number {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                    }
    
                    container match {
                      description
                        "Redistribution of EIGRP routes";
                      container internal {
                        presence
                          "Indicates a internal node is configured.";
                        description
                          "Redistribute EIGRP internal routes";
                      }  // container internal
    
                      container external {
                        presence
                          "Indicates a external node is configured.";
                        description
                          "Redistribute EIGRP external routes";
                      }  // container external
                    }  // container match
    
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // list eigrp
    
                  container rip {
                    presence
                      "Indicates a rip node is configured.";
                    description
                      "Routing Information Protocol (RIP)";
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // container rip
    
                  container bgp {
                    description
                      "Border Gateway Protocol (BGP)";
                    list as {
                      key "as-number";
                      description
                        "bgp as-number";
                      leaf as-number {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      container preserve-med {
                        presence
                          "Indicates a preserve-med node is configured.";
                        description
                          "Preserve med of BGP routes";
                      }  // container preserve-med
    
                      container metric {
                        description
                          "Metric for redistributed routes";
                        leaf default-metric {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "OSPF default metric";
                        }
    
                        container use-rib-metric {
                          presence
                            "Indicates a use-rib-metric node is configured.";
                          description
                            "Use metric from RIB";
                        }  // container use-rib-metric
                      }  // container metric
    
                      leaf tag {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Set tag for routes redistributed into OSPF";
                      }
    
                      leaf metric-type {
                        type enumeration {
                          enum "1" {
                            value 1;
                            description
                              "Set OSPF External Type 1 metrics";
                          }
                          enum "2" {
                            value 2;
                            description
                              "Set OSPF External Type 2 metrics";
                          }
                        }
                        description
                          "OSPF exterior metric type for redistributed routes";
                      }
    
                      container lsa-type {
                        description
                          "LSA type for redistributed routes";
                        container summary {
                          presence
                            "Indicates a summary node is configured.";
                          description
                            "LSA type 3";
                        }  // container summary
                      }  // container lsa-type
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Apply route-policy to redistribution";
                      }
    
                      container nssa-only {
                        presence
                          "Indicates a nssa-only node is configured.";
                        description
                          "Redistribute to NSSA areas only";
                      }  // container nssa-only
                    }  // list as
                  }  // container bgp
    
                  list isis {
                    key "instance-name";
                    description "ISO IS-IS";
                    leaf instance-name {
                      type string {
                        length "1..1024";
                      }
                      description "ISO IS-IS";
                    }
    
                    container level-1 {
                      presence
                        "Indicates a level-1 node is configured.";
                      description
                        "IS-IS level-1 routes only";
                    }  // container level-1
    
                    container level-2 {
                      presence
                        "Indicates a level-2 node is configured.";
                      description
                        "IS-IS level-2 routes only";
                    }  // container level-2
    
                    container level-1-2 {
                      presence
                        "Indicates a level-1-2 node is configured.";
                      description
                        "IS-IS level-1 and level-2 routes";
                    }  // container level-1-2
    
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // list isis
    
                  list ospf {
                    key "instance-name";
                    description
                      "Open Shortest Path First (OSPF)";
                    leaf instance-name {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Open Shortest Path First (OSPF)";
                    }
    
                    container match {
                      description
                        "Redistribution of OSPF routes";
                      container internal {
                        presence
                          "Indicates a internal node is configured.";
                        description
                          "Redistribute OSPF internal routes";
                      }  // container internal
    
                      container external {
                        presence
                          "Indicates a external node is configured.";
                        description
                          "Redistribute OSPF external routes";
                        container one {
                          presence
                            "Indicates a one node is configured.";
                          description
                            "Redistribute external type 1 routes";
                        }  // container one
    
                        container two {
                          presence
                            "Indicates a two node is configured.";
                          description
                            "Redistribute external type 2 routes";
                        }  // container two
                      }  // container external
    
                      container nssa-external {
                        presence
                          "Indicates a nssa-external node is configured.";
                        description
                          "Redistribute OSPF NSSA external routes";
                        container one {
                          presence
                            "Indicates a one node is configured.";
                          description
                            "Redistribute NSSA external type 1 routes";
                        }  // container one
    
                        container two {
                          presence
                            "Indicates a two node is configured.";
                          description
                            "Redistribute NSSA external type 2 routes";
                        }  // container two
                      }  // container nssa-external
                    }  // container match
    
                    container metric {
                      description
                        "Metric for redistributed routes";
                      leaf default-metric {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "OSPF default metric";
                      }
    
                      container use-rib-metric {
                        presence
                          "Indicates a use-rib-metric node is configured.";
                        description
                          "Use metric from RIB";
                      }  // container use-rib-metric
                    }  // container metric
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set tag for routes redistributed into OSPF";
                    }
    
                    leaf metric-type {
                      type enumeration {
                        enum "1" {
                          value 1;
                          description
                            "Set OSPF External Type 1 metrics";
                        }
                        enum "2" {
                          value 2;
                          description
                            "Set OSPF External Type 2 metrics";
                        }
                      }
                      description
                        "OSPF exterior metric type for redistributed routes";
                    }
    
                    container lsa-type {
                      description
                        "LSA type for redistributed routes";
                      container summary {
                        presence
                          "Indicates a summary node is configured.";
                        description "LSA type 3";
                      }  // container summary
                    }  // container lsa-type
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to redistribution";
                    }
    
                    container nssa-only {
                      presence
                        "Indicates a nssa-only node is configured.";
                      description
                        "Redistribute to NSSA areas only";
                    }  // container nssa-only
                  }  // list ospf
    
                  container applications {
                    description
                      "OnePK Application routes";
                    list application {
                      key "application-name";
                      description
                        "OnePK Application routes";
                      leaf application-name {
                        type string {
                          length "1..1024";
                        }
                        description
                          "OnePK Application routes";
                      }
    
                      container metric {
                        description
                          "Metric for redistributed routes";
                        leaf default-metric {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "OSPF default metric";
                        }
    
                        container use-rib-metric {
                          presence
                            "Indicates a use-rib-metric node is configured.";
                          description
                            "Use metric from RIB";
                        }  // container use-rib-metric
                      }  // container metric
    
                      leaf tag {
                        type uint32 {
                          range "0..4294967295";
                        }
                        description
                          "Set tag for routes redistributed into OSPF";
                      }
    
                      leaf metric-type {
                        type enumeration {
                          enum "1" {
                            value 1;
                            description
                              "Set OSPF External Type 1 metrics";
                          }
                          enum "2" {
                            value 2;
                            description
                              "Set OSPF External Type 2 metrics";
                          }
                        }
                        description
                          "OSPF exterior metric type for redistributed routes";
                      }
    
                      container lsa-type {
                        description
                          "LSA type for redistributed routes";
                        container summary {
                          presence
                            "Indicates a summary node is configured.";
                          description
                            "LSA type 3";
                        }  // container summary
                      }  // container lsa-type
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        description
                          "Apply route-policy to redistribution";
                      }
    
                      container nssa-only {
                        presence
                          "Indicates a nssa-only node is configured.";
                        description
                          "Redistribute to NSSA areas only";
                      }  // container nssa-only
                    }  // list application
                  }  // container applications
                }  // container redistribute
    
                container distribute-list {
                  description
                    "Filter networks in routing updates";
                  container in {
                    description
                      "Filter incoming routing updates";
                    leaf access-list {
                      type string {
                        length "1..1024";
                      }
                      description
                        "In-bound access-list name";
                    }
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Route Policy to filter OSPF prefixes";
                    }
                  }  // container in
    
                  container out {
                    description
                      "Filter outgoing routing updates";
                    leaf access-list {
                      type string {
                        length "1..1024";
                      }
                      description
                        "access-list name";
                    }
    
                    container connected {
                      description "Connected";
                      leaf access-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "access-list name";
                      }
                    }  // container connected
    
                    container static {
                      description
                        "Static routes";
                      leaf access-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "access-list name";
                      }
                    }  // container static
    
                    container dagr {
                      description
                        "Directed-attached gateway redundancy (DAGR)";
                      leaf access-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "access-list name";
                      }
                    }  // container dagr
    
                    container bgp {
                      description
                        "Border Gateway Protocol (BGP)";
                      leaf as {
                        type xr:Bgp-as-number;
                        description
                          "bgp as-number";
                      }
    
                      leaf access-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "access-list name";
                      }
                    }  // container bgp
    
                    container ospf {
                      description
                        "Open Shortest Path First (OSPF)";
                      leaf instance-name {
                        type string {
                          length "1..1024";
                        }
                      }
    
                      leaf access-list {
                        type string {
                          length "1..1024";
                        }
                        description
                          "access-list name";
                      }
                    }  // container ospf
                  }  // container out
                }  // container distribute-list
    
                leaf packet-size {
                  type uint32 {
                    range "576..10000";
                  }
                  description
                    "Customize size of OSPF packets upto MTU";
                }
    
                container bfd {
                  description
                    "Configure BFD parameters";
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable Fast detection";
                    container strict-mode {
                      presence
                        "Indicates a strict-mode node is configured.";
                      description
                        "Hold down neighbor session until BFD session is up";
                    }  // container strict-mode
                  }  // container fast-detect
    
                  leaf minimum-interval {
                    type uint32 {
                      range "3..30000";
                    }
                    description
                      "Minimum interval";
                  }
    
                  leaf multiplier {
                    type uint32 {
                      range "2..50";
                    }
                    description
                      "Detect multiplier";
                  }
                }  // container bfd
    
                container security {
                  description "Enable security";
                  container ttl {
                    presence
                      "Indicates a ttl node is configured.";
                    description
                      "Enable ttl security";
                    leaf hops {
                      type uint32 {
                        range "1..254";
                      }
                      description "IP hops";
                    }
                  }  // container ttl
                }  // container security
    
                container prefix-suppression {
                  description
                    "Suppress advertisement of the prefixes";
                  container enable {
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable primary address suppression";
                  }  // container enable
    
                  container secondary-address {
                    description
                      "Enable/Disable secondary address suppression";
                    container enable {
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable secondary address suppression";
                    }  // container enable
                  }  // container secondary-address
                }  // container prefix-suppression
    
                container default-information {
                  description
                    "Control distribution of default information";
                  container originate {
                    presence
                      "Indicates a originate node is configured.";
                    description
                      "Distribute a default route";
                    container always {
                      presence
                        "Indicates a always node is configured.";
                      description
                        "Always advertise default route";
                    }  // container always
    
                    leaf metric {
                      type uint32 {
                        range "1..16777214";
                      }
                      description
                        "OSPF default metric";
                    }
    
                    leaf metric-type {
                      type uint32 {
                        range "1..2";
                      }
                      description
                        "OSPF metric type for default routes";
                    }
    
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Apply route-policy to default-information origination";
                    }
                  }  // container originate
                }  // container default-information
    
                leaf default-metric {
                  type uint32 {
                    range "1..16777214";
                  }
                  description "Default metric";
                }
    
                container distance {
                  description
                    "Define an administrative distance";
                  container administrative-distance {
                    description
                      "Administrative distance";
                    leaf administrative-distance {
                      type uint32 {
                        range "1..255";
                      }
                      default "110";
                      description
                        "Administrative distance";
                    }
    
                    container source-addresses {
                      description
                        "configure this node";
                      list source-address {
                        key "address wildcard";
                        description
                          "source address";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP Source address";
                        }
    
                        leaf wildcard {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP wild card bits -- inverted mask";
                        }
    
                        leaf distance {
                          type uint32 {
                            range "1..255";
                          }
                          mandatory true;
                          description
                            "Administrative distance";
                        }
    
                        leaf access-list-name {
                          type string;
                          description
                            "Access Control List name";
                        }
                      }  // list source-address
                    }  // container source-addresses
                  }  // container administrative-distance
    
                  container ospf {
                    description "OSPF distance";
                    leaf intra-area {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Intra-area routes";
                    }
    
                    leaf inter-area {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Inter-area routes";
                    }
    
                    leaf external {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "External type 5 and type 7 routes";
                    }
                  }  // container ospf
                }  // container distance
    
                container auto-cost {
                  description
                    "Calculate OSPF interface cost according to bandwidth";
                  leaf reference-bandwidth {
                    type uint32 {
                      range "1..4294967";
                    }
                    description
                      "Specify reference bandwidth for OSPF cost computations";
                  }
    
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Assign OSPF cost based on interface type";
                  }  // container disable
                }  // container auto-cost
    
                container ignore {
                  description
                    "Do not complain about specific event";
                  container lsa {
                    description
                      "Do not complain upon receiving LSA of the specified type";
                    container mospf {
                      presence
                        "Indicates a mospf node is configured.";
                      description
                        "MOSPF Type 6 LSA";
                    }  // container mospf
                  }  // container lsa
                }  // container ignore
    
                container capability {
                  description
                    "Enable specific OSPF feature";
                  container opaque {
                    description "Opaque LSA";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable Opaque LSA capability";
                    }  // container disable
                  }  // container opaque
    
                  container type7 {
                    description
                      "NSSA capability";
                    container prefer {
                      presence
                        "Indicates a prefer node is configured.";
                      description
                        "Prefer type7 externals over type5";
                    }  // container prefer
                  }  // container type7
                }  // container capability
    
                container max-metric {
                  description
                    "Set maximum metric";
                  container router-lsa {
                    presence
                      "Indicates a router-lsa node is configured.";
                    description
                      "Maximum metric in self-originated router-LSAs";
                    container include-stub {
                      presence
                        "Indicates a include-stub node is configured.";
                      description
                        "Set maximum metric for stub links in router-LSAs";
                    }  // container include-stub
    
                    container summary-lsa {
                      presence
                        "Indicates a summary-lsa node is configured.";
                      description
                        "Override summary-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override summary-lsa metric with max-metric value";
                      }
                    }  // container summary-lsa
    
                    container external-lsa {
                      presence
                        "Indicates a external-lsa node is configured.";
                      description
                        "Override external-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override external-lsa metric with max-metric value";
                      }
                    }  // container external-lsa
                  }  // container router-lsa
    
                  container router-lsa-no-abr-off {
                    presence
                      "Indicates a no-abr-off node is configured.";
                    description
                      "Do not temporarily suspend ABR duties in max-metric mode";
                  }  // container router-lsa-no-abr-off
    
                  container router-lsa-on-startup {
                    description "On startup";
                    leaf originate-time {
                      type uint32 {
                        range "5..86400";
                      }
                      must
                        "not(../wait-for-bgp)";
                      description
                        "Time in seconds to originate router-LSA with max-metric";
                    }
    
                    container wait-for-bgp {
                      must
                        "not(../originate-time)";
                      presence
                        "Indicates a wait-for-bgp node is configured.";
                      description
                        "Let BGP decide when to originate router-LSA with normal metric";
                    }  // container wait-for-bgp
    
                    container include-stub {
                      presence
                        "Indicates a include-stub node is configured.";
                      description
                        "Set maximum metric for stub links in router-LSAs";
                    }  // container include-stub
    
                    container summary-lsa {
                      presence
                        "Indicates a summary-lsa node is configured.";
                      description
                        "Overriding metric in summary-LSAs (default 16711680)";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Overriding metric in summary-LSAs (default 16711680)";
                      }
                    }  // container summary-lsa
    
                    container external-lsa {
                      presence
                        "Indicates a external-lsa node is configured.";
                      description
                        "Override external-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override external-lsa metric with max-metric value";
                      }
                    }  // container external-lsa
                  }  // container router-lsa-on-startup
    
                  container router-lsa-on-switchover {
                    description "On switchover";
                    leaf originate-time {
                      type uint32 {
                        range "5..86400";
                      }
                      must
                        "not(../wait-for-bgp)";
                      description
                        "Time in seconds to originate router-LSA with max-metric";
                    }
    
                    container wait-for-bgp {
                      must
                        "not(../originate-time)";
                      presence
                        "Indicates a wait-for-bgp node is configured.";
                      description
                        "Let BGP decide when to originate router-LSA with normal metric";
                    }  // container wait-for-bgp
    
                    container include-stub {
                      presence
                        "Indicates a include-stub node is configured.";
                      description
                        "Set maximum metric for stub links in router-LSAs";
                    }  // container include-stub
    
                    container summary-lsa {
                      presence
                        "Indicates a summary-lsa node is configured.";
                      description
                        "Overriding metric in summary-LSAs (default 16711680)";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Overriding metric in summary-LSAs (default 16711680)";
                      }
                    }  // container summary-lsa
    
                    container external-lsa {
                      presence
                        "Indicates a external-lsa node is configured.";
                      description
                        "Override external-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override external-lsa metric with max-metric value";
                      }
                    }  // container external-lsa
                  }  // container router-lsa-on-switchover
    
                  container router-lsa-on-proc-restart {
                    description
                      "On process restart";
                    leaf originate-time {
                      type uint32 {
                        range "5..86400";
                      }
                      must
                        "not(../wait-for-bgp)";
                      description
                        "Time in seconds to originate router-LSA with max-metric";
                    }
    
                    container wait-for-bgp {
                      must
                        "not(../originate-time)";
                      presence
                        "Indicates a wait-for-bgp node is configured.";
                      description
                        "Let BGP decide when to originate router-LSA with normal metric";
                    }  // container wait-for-bgp
    
                    container include-stub {
                      presence
                        "Indicates a include-stub node is configured.";
                      description
                        "Set maximum metric for stub links in router-LSAs";
                    }  // container include-stub
    
                    container summary-lsa {
                      presence
                        "Indicates a summary-lsa node is configured.";
                      description
                        "Overriding metric in summary-LSAs (default 16711680)";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Overriding metric in summary-LSAs (default 16711680)";
                      }
                    }  // container summary-lsa
    
                    container external-lsa {
                      presence
                        "Indicates a external-lsa node is configured.";
                      description
                        "Override external-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override external-lsa metric with max-metric value";
                      }
                    }  // container external-lsa
                  }  // container router-lsa-on-proc-restart
    
                  container router-lsa-on-proc-migration {
                    description
                      "On process migration";
                    leaf originate-time {
                      type uint32 {
                        range "5..86400";
                      }
                      must
                        "not(../wait-for-bgp)";
                      description
                        "Time in seconds to originate router-LSA with max-metric";
                    }
    
                    container wait-for-bgp {
                      must
                        "not(../originate-time)";
                      presence
                        "Indicates a wait-for-bgp node is configured.";
                      description
                        "Let BGP decide when to originate router-LSA with normal metric";
                    }  // container wait-for-bgp
    
                    container include-stub {
                      presence
                        "Indicates a include-stub node is configured.";
                      description
                        "Set maximum metric for stub links in router-LSAs";
                    }  // container include-stub
    
                    container summary-lsa {
                      presence
                        "Indicates a summary-lsa node is configured.";
                      description
                        "Overriding metric in summary-LSAs (default 16711680)";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Overriding metric in summary-LSAs (default 16711680)";
                      }
                    }  // container summary-lsa
    
                    container external-lsa {
                      presence
                        "Indicates a external-lsa node is configured.";
                      description
                        "Override external-lsa metric with max-metric value";
                      leaf metric {
                        type uint32 {
                          range "1..16777215";
                        }
                        description
                          "Override external-lsa metric with max-metric value";
                      }
                    }  // container external-lsa
                  }  // container router-lsa-on-proc-migration
                }  // container max-metric
    
                container max-lsa {
                  presence
                    "Indicates a max-lsa node is configured.";
                  description
                    "Maximum number of LSAs OSPF process will receive";
                  leaf max-lsa {
                    type uint32 {
                      range "1..4294967294";
                    }
                    mandatory true;
                    description
                      "Maximum number of LSAs OSPF process will receive";
                  }
    
                  leaf threshold {
                    type uint32 {
                      range "1..100";
                    }
                    description
                      "Threshold value (%) at which to generate a warning msg";
                  }
    
                  container warning-only {
                    presence
                      "Indicates a warning-only node is configured.";
                    description
                      "Only give warning message when limit is exceeded";
                  }  // container warning-only
    
                  leaf ignore-time {
                    type uint32 {
                      range "1..35791394";
                    }
                    must "not(../warning-only)";
                    description
                      "time during which all adjacencies are suppressed";
                  }
    
                  leaf ignore-count {
                    type uint32 {
                      range "1..4294967294";
                    }
                    must "not(../warning-only)";
                    description
                      "maximum number of times adjacencies can be suppressed";
                  }
    
                  leaf reset-time {
                    type uint32 {
                      range "2..71582788";
                    }
                    must "not(../warning-only)";
                    description
                      "time after which ignore-count is reset to zero";
                  }
                }  // container max-lsa
    
                container timers {
                  description
                    "Adjust routing timers";
                  container throttle {
                    description
                      "OSPF throttle timers";
                    container spf {
                      presence
                        "Indicates a spf node is configured.";
                      description
                        "OSPF SPF throttle timers";
                      leaf initial-delay {
                        type uint32 {
                          range "1..600000";
                        }
                        mandatory true;
                        description
                          "OSPF SPF throttle timers";
                      }
    
                      leaf second-delay {
                        type uint32 {
                          range "1..600000";
                        }
                        mandatory true;
                        description
                          "Delay between first and second SPF calculation in milliseconds";
                      }
    
                      leaf maximum-delay {
                        type uint32 {
                          range "1..600000";
                        }
                        mandatory true;
                        description
                          "Maximum wait time in milliseconds for SPF calculations";
                      }
                    }  // container spf
    
                    container lsa {
                      description
                        "LSA throttle timers";
                      container all {
                        presence
                          "Indicates a all node is configured.";
                        description
                          "For all types of OSPF LSAs";
                        leaf initial-delay {
                          type uint32 {
                            range "0..600000";
                          }
                          mandatory true;
                          description
                            "For all types of OSPF LSAs";
                        }
    
                        leaf minimum-delay {
                          type uint32 {
                            range "1..600000";
                          }
                          mandatory true;
                          description
                            "Minimum delay between originating the same LSA in milliseconds";
                        }
    
                        leaf maximum-delay {
                          type uint32 {
                            range "1..600000";
                          }
                          mandatory true;
                          description
                            "Maximum delay between originating the same LSA in milliseconds";
                        }
                      }  // container all
                    }  // container lsa
    
                    leaf fast-reroute {
                      type uint32 {
                        range "50..600000";
                      }
                      description
                        "Fast-reroute throttle timer";
                    }
                  }  // container throttle
    
                  container lsa {
                    description
                      "OSPF global LSA timers";
                    leaf group-pacing {
                      type uint32 {
                        range "10..1800";
                      }
                      description
                        "OSPF LSA group pacing timer";
                    }
    
                    leaf min-arrival {
                      type uint32 {
                        range "0..600000";
                      }
                      description
                        "OSPF MinLSArrival timer";
                    }
    
                    leaf refresh {
                      type uint32 {
                        range "1800..2700";
                      }
                      description
                        "OSPF LSA refresh interval";
                    }
                  }  // container lsa
    
                  container pacing {
                    description
                      "OSPF pacing timers";
                    leaf flood {
                      type uint32 {
                        range "5..100";
                      }
                      description
                        "OSPF flood pacing timer";
                    }
                  }  // container pacing
    
                  container graceful-shutdown {
                    description
                      "Timers for graceful shutdown";
                    container retain {
                      description
                        "Time to keep routes active after graceful shutdown";
                      leaf routes {
                        type uint32 {
                          range "0..90";
                        }
                        description
                          "Time to keep routes active after graceful shutdown";
                      }
                    }  // container retain
    
                    container initial {
                      description
                        "Delay before starting graceful shutdown";
                      leaf delay {
                        type uint32 {
                          range "0..90";
                        }
                        description
                          "Delay before starting graceful shutdown";
                      }
                    }  // container initial
                  }  // container graceful-shutdown
                }  // container timers
    
                container nsf {
                  description
                    "Enable Cisco Non Stop Forwarding";
                  container cisco {
                    presence
                      "Indicates a cisco node is configured.";
                    description
                      "Enable Cisco Non Stop Forwarding";
                    container enforce {
                      description
                        "Cancel NSF restart when non-NSF-aware neighbors detected";
                      container global {
                        presence
                          "Indicates a global node is configured.";
                        description
                          "For the whole OSPF process";
                      }  // container global
                    }  // container enforce
                  }  // container cisco
    
                  leaf interval {
                    type uint32 {
                      range "90..3600";
                    }
                    description
                      "Minimum interval between NSF restarts (seconds)";
                  }
    
                  container ietf {
                    presence
                      "Indicates a ietf node is configured.";
                    description
                      "Enable ietf graceful restart";
                  }  // container ietf
    
                  container ietf-helper {
                    description
                      "router's helper support level";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "router's helper support disabled";
                    }  // container disable
                  }  // container ietf-helper
    
                  leaf lifetime {
                    type uint32 {
                      range "90..1800";
                    }
                    description
                      "Maximum route lifetime following restart (seconds)";
                  }
    
                  leaf flush-delay-time {
                    type uint32 {
                      range "1..3600";
                    }
                    description
                      "Maximum time allowed for external route learning (seconds)";
                  }
                }  // container nsf
    
                container address-family {
                  description
                    "OSPF address family";
                  container ipv4 {
                    presence
                      "Indicates a ipv4 node is configured.";
                    description
                      "IPV4 address family";
                    container unicast {
                      presence
                        "Indicates a unicast node is configured.";
                      description
                        "unicast topology";
                    }  // container unicast
                  }  // container ipv4
                }  // container address-family
    
                container maximum {
                  description "Set OSPF limits";
                  leaf interfaces {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "Limit number of interfaces";
                  }
    
                  leaf paths {
                    type uint32 {
                      range "1..64";
                    }
                    description
                      "Limit number of paths";
                  }
    
                  container redistributed-prefixes {
                    presence
                      "Indicates a redistributed-prefixes node is configured.";
                    description
                      "Limit number of redistributed prefixes";
                    leaf prefixes {
                      type uint32 {
                        range "1..4294967295";
                      }
                      mandatory true;
                      description
                        "Limit number of redistributed prefixes";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "1..100";
                      }
                      description
                        "Threshold value (%) at which to generate a warning msg";
                    }
    
                    container warning-only {
                      presence
                        "Indicates a warning-only node is configured.";
                      description
                        "Only give warning messsage when limit is exceeded";
                    }  // container warning-only
                  }  // container redistributed-prefixes
                }  // container maximum
    
                container queue {
                  description
                    "Adjust OSPF input queue";
                  container limit {
                    description
                      "High watermark for incoming priority events";
                    leaf high {
                      type uint32 {
                        range "1000..30000";
                      }
                      description
                        "High watermark for incoming high priority events (hello)";
                    }
    
                    leaf medium {
                      type uint32 {
                        range "1000..30000";
                      }
                      description
                        "High watermark for incoming medium priority events (LSA ACK)";
                    }
    
                    leaf low {
                      type uint32 {
                        range "1000..30000";
                      }
                      description
                        "High watermark for incoming low priority events (DBD/LSUpd/Req)";
                    }
                  }  // container limit
    
                  container dispatch {
                    description
                      "Number of continuous events processed by type";
                    leaf incoming {
                      type uint32 {
                        range "30..3000";
                      }
                      description
                        "Number of continuous incoming events processed";
                    }
    
                    leaf rate-limited-lsa {
                      type uint32 {
                        range "30..3000";
                      }
                      description
                        "Number of rate-limited LSAs processed";
                    }
    
                    leaf flush-lsa {
                      type uint32 {
                        range "30..3000";
                      }
                      description
                        "Number of LSAs flushed";
                    }
    
                    leaf spf-lsa-limit {
                      type uint32 {
                        range "30..3000";
                      }
                      description
                        "Number of summary or external LSAs processed per run";
                    }
                  }  // container dispatch
                }  // container queue
    
                container summary-prefixes {
                  description
                    "Configure IP address summaries";
                  list summary-prefix {
                    key "address mask";
                    leaf address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP summary prefix address";
                    }
    
                    leaf mask {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP smmary address mask";
                    }
    
                    container not-advertise {
                      presence
                        "Indicates a not-advertise node is configured.";
                      description
                        "Suppress routes that match the specified prefix/mask pair";
                    }  // container not-advertise
    
                    leaf tag {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description "Set tag";
                    }
                  }  // list summary-prefix
                }  // container summary-prefixes
    
                container spf {
                  description
                    "SPF configuration";
                  container prefix-priority {
                    description
                      "Configure SPF prefix priority route policy";
                    leaf route-policy {
                      type xr:Route-policy-name;
                      description
                        "Specify the route-policy to prioritize route install";
                    }
                  }  // container prefix-priority
                }  // container spf
    
                container fast-reroute {
                  description "IP Fast Reroute";
                  container per-prefix {
                    description
                      "Per-prefix Computation";
                    container enable {
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable per-prefix Computation";
                    }  // container enable
    
                    container priority-limit {
                      description
                        "Limit backup computation upto the prefix priority";
                      container critical {
                        must
                          "not(../high) and not(../medium)";
                        presence
                          "Indicates a critical node is configured.";
                        description
                          "Compute for critical priority prefixes only";
                      }  // container critical
    
                      container high {
                        must
                          "not(../critical) and not(../medium)";
                        presence
                          "Indicates a high node is configured.";
                        description
                          "Compute for critical & high priority prefixes ";
                      }  // container high
    
                      container medium {
                        must
                          "not(../high) and not(../critical)";
                        presence
                          "Indicates a medium node is configured.";
                        description
                          "Compute for critical, high & medium priority prefixes ";
                      }  // container medium
                    }  // container priority-limit
    
                    container tiebreaker {
                      description
                        "Configure tiebreaker for multiple backups";
                      container downstream {
                        description
                          "Prefer backup path via downstream node";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container downstream
    
                      container lc-disjoint {
                        description
                          "Prefer line card disjoint backup path";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container lc-disjoint
    
                      container lowest-backup-metric {
                        description
                          "Prefer backup path with lowest total metric";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container lowest-backup-metric
    
                      container node-protecting {
                        description
                          "Prefer node protecting backup path";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container node-protecting
    
                      container primary-path {
                        description
                          "Prefer backup path from ECMP set";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container primary-path
    
                      container secondary-path {
                        description
                          "Prefer non-ECMP backup path";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container secondary-path
    
                      container interface-disjoint {
                        description
                          "Prefer Interface disjoint backup path";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container interface-disjoint
    
                      container srlg-disjoint {
                        description
                          "Prefer SRLG disjoint backup path";
                        leaf index {
                          type uint32 {
                            range "1..255";
                          }
                          must "not(../disable)";
                          description
                            "Set preference order among tiebreakers";
                        }
    
                        container disable {
                          must "not(../index)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable tiebreaker";
                        }  // container disable
                      }  // container srlg-disjoint
                    }  // container tiebreaker
    
                    container load-sharing {
                      description
                        "Load share prefixes across multiple backups";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable load sharing";
                      }  // container disable
                    }  // container load-sharing
    
                    container srlg-protection {
                      description
                        "select SRLG protection mode (default: local)";
                      container weighted-global {
                        presence
                          "Indicates a weighted-global node is configured.";
                        description
                          "weighted global srlg protection";
                      }  // container weighted-global
                    }  // container srlg-protection
    
                    container exclude {
                      description
                        "Per-prefix LFA exclusion information";
                      container interfaces {
                        description
                          "Exclude an interface from Per-prefix LFA";
                        list interface {
                          key "interface-name";
                          description
                            "Exclude an interface from Per-prefix LFA";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Exclude an interface from Per-prefix LFA";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container exclude
    
                    container lfa-candidate {
                      description
                        "FRR LFA candidate information";
                      container interfaces {
                        description
                          "Include an interface to LFA candidate in computation";
                        list interface {
                          key "interface-name";
                          description
                            "Include an interface to LFA candidate in computation";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Include an interface to LFA candidate in computation";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container lfa-candidate
    
                    container use-candidate-only {
                      description
                        "Enable/Disable backup selection from candidate-list only";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable backup selection from candidate-list only";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable backup selection from candidate-list only";
                      }  // container disable
                    }  // container use-candidate-only
    
                    container remote-lfa {
                      description
                        "Remote LFA computation";
                      container tunnel {
                        description
                          "Enable remote LFA computation using tunnels";
                        container mpls-ldp {
                          must
                            "not(../../disable)";
                          presence
                            "Indicates a mpls-ldp node is configured.";
                          description
                            "MPLS LDP tunnel";
                        }  // container mpls-ldp
                      }  // container tunnel
    
                      container disable {
                        must
                          "not(../tunnel/mpls-ldp)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable remote LFA computation";
                      }  // container disable
    
                      leaf maximum-cost {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Maximum path cost to remote LFA";
                      }
                    }  // container remote-lfa
    
                    container ti-lfa {
                      description
                        "Topology Independent LFA computation";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable TI LFA computation";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable TI LFA computation";
                      }  // container disable
                    }  // container ti-lfa
                  }  // container per-prefix
    
                  container per-link {
                    description
                      "Per-link Computation";
                    container enable {
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable per-link Computation";
                    }  // container enable
    
                    container priority-limit {
                      description
                        "Limit backup computation upto the prefix priority";
                      container critical {
                        must
                          "not(../high) and not(../medium)";
                        presence
                          "Indicates a critical node is configured.";
                        description
                          "Compute for critical priority prefixes only";
                      }  // container critical
    
                      container high {
                        must
                          "not(../critical) and not(../medium)";
                        presence
                          "Indicates a high node is configured.";
                        description
                          "Compute for critical & high priority prefixes ";
                      }  // container high
    
                      container medium {
                        must
                          "not(../high) and not(../critical)";
                        presence
                          "Indicates a medium node is configured.";
                        description
                          "Compute for critical, high & medium priority prefixes ";
                      }  // container medium
                    }  // container priority-limit
    
                    container exclude {
                      description
                        "Per-link LFA exclusion information";
                      container interfaces {
                        description
                          "Exclude an interface from Per-link LFA";
                        list interface {
                          key "interface-name";
                          description
                            "Exclude an interface from Per-link LFA";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Exclude an interface from Per-link LFA";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container exclude
    
                    container lfa-candidate {
                      description
                        "FRR LFA candidate information";
                      container interfaces {
                        description
                          "Include an interface to LFA candidate in computation";
                        list interface {
                          key "interface-name";
                          description
                            "Include an interface to LFA candidate in computation";
                          leaf interface-name {
                            type xr:Interface-name;
                            description
                              "Include an interface to LFA candidate in computation";
                          }
                        }  // list interface
                      }  // container interfaces
                    }  // container lfa-candidate
    
                    container use-candidate-only {
                      description
                        "Enable/Disable backup selection from candidate-list only";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable backup selection from candidate-list only";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable backup selection from candidate-list only";
                      }  // container disable
                    }  // container use-candidate-only
                  }  // container per-link
    
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable IP Fast Reroute";
                  }  // container disable
                }  // container fast-reroute
    
                container loopback {
                  description
                    "OSPF loopback configuration";
                  container stub-network {
                    description
                      "Advertise loopback as a stub network";
                    container enable {
                      must "not(../disable)";
                      presence
                        "Indicates a enable node is configured.";
                      description
                        "Enable advertising loopback as a stub network";
                    }  // container enable
    
                    container disable {
                      must "not(../enable)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable advertising loopback as a stub network";
                    }  // container disable
                  }  // container stub-network
                }  // container loopback
    
                container link-down {
                  description
                    "Configure interface down parameters";
                  container fast-detect {
                    presence
                      "Indicates a fast-detect node is configured.";
                    description
                      "Enable fast or early detection of link-down events";
                  }  // container fast-detect
                }  // container link-down
    
                leaf weight {
                  type uint32 {
                    range "1..16777214";
                  }
                  description "Interface weight";
                }
    
                container delay {
                  description
                    "Delay configuration setting";
                  container normalize {
                    description
                      "Delay normalization setting";
                    leaf interval {
                      type uint32 {
                        range "1..16777215";
                      }
                      must "../offset";
                      description
                        "Normalization interval";
                    }
    
                    leaf offset {
                      type uint32 {
                        range "0..16777215";
                      }
                      must "../interval";
                      description
                        "Normalization offset";
                    }
                  }  // container normalize
                }  // container delay
    
                container microloop {
                  description
                    "Microloop configuration";
                  container avoidance {
                    must
                      "not(protected and segment-routing)";
                    presence
                      "Indicates a avoidance node is configured.";
                    description
                      "Avoid microloops";
                    container protected {
                      presence
                        "Indicates a protected node is configured.";
                      description
                        "Avoid microloops for protected prefixes only";
                    }  // container protected
    
                    container segment-routing {
                      presence
                        "Indicates a segment-routing node is configured.";
                      description
                        "Enable segment routing microloop avoidance";
                    }  // container segment-routing
                  }  // container avoidance
    
                  leaf avoidance-rib-update-delay {
                    type uint32 {
                      range "1..600000";
                    }
                    description
                      "Delay to introduce between SPF and RIB update";
                  }
                }  // container microloop
    
                container areas {
                  description
                    "Enter the OSPF area configuration submode";
                  list area {
                    key "area-id";
                    description
                      "Enter the OSPF area configuration submode";
                    leaf area-id {
                      type xr:Ospf-area-id;
                      description
                        "Enter the OSPF area configuration submode";
                    }
    
                    container ranges {
                      description
                        "Summarize routes matching address/mask (border routers only)";
                      list range {
                        key "address mask";
                        description
                          "Summarize routes matching address/mask (border routers only)";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          must
                            "(../advertise and not(../not-advertise)) or (../not-advertise and not(../advertise))";
                          description
                            "IP address";
                        }
    
                        leaf mask {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP address mask";
                        }
    
                        container advertise {
                          presence
                            "Indicates a advertise node is configured.";
                          description
                            "Advertise this range (default)";
                        }  // container advertise
    
                        container not-advertise {
                          presence
                            "Indicates a not-advertise node is configured.";
                          description
                            "DoNotAdvertise this range";
                        }  // container not-advertise
                      }  // list range
                    }  // container ranges
    
                    leaf default-cost {
                      type uint32 {
                        range "1..16777215";
                      }
                      description
                        "Set the summary default-cost of a NSSA/stub area";
                    }
    
                    container stub {
                      presence
                        "Indicates a stub node is configured.";
                      description
                        "Specify the area as a stub area";
                      container no-summary {
                        presence
                          "Indicates a no-summary node is configured.";
                        description
                          "Do not send summary LSA into stub area";
                      }  // container no-summary
                    }  // container stub
    
                    container nssa {
                      presence
                        "Indicates a nssa node is configured.";
                      description
                        "Specify area as a NSSA area";
                      container no-redistribution {
                        presence
                          "Indicates a no-redistribution node is configured.";
                        description
                          "No redistribution into this NSSA area";
                      }  // container no-redistribution
    
                      container default-information-originate {
                        presence
                          "Indicates a default-information-originate node is configured.";
                        description
                          "Originate Type 7 default into NSSA area";
                        leaf metric {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "OSPF default metric";
                        }
    
                        leaf metric-type {
                          type uint32 {
                            range "1..2";
                          }
                          description
                            "OSPF metric type for default routes";
                        }
                      }  // container default-information-originate
    
                      container no-summary {
                        presence
                          "Indicates a no-summary node is configured.";
                        description
                          "Do not send summary LSA into NSSA";
                      }  // container no-summary
                    }  // container nssa
    
                    container nssa-translate {
                      description
                        "Translate NSSA LSA";
                      container type7 {
                        description
                          "Translate type 7 to type 5";
                        container always {
                          presence
                            "Indicates a always node is configured.";
                          description
                            "Always translate NSSA LSAs on this ABR";
                        }  // container always
                      }  // container type7
                    }  // container nssa-translate
    
                    container multi-area-interfaces {
                      description
                        "Enable multi-area adjacency on this interface";
                      list multi-area-interface {
                        key "multi-area-interface-name";
                        description
                          "Enable multi-area adjacency on this interface";
                        leaf multi-area-interface-name {
                          type xr:Interface-name;
                          description
                            "Enable multi-area adjacency on this interface";
                        }
    
                        container authentication-key {
                          description
                            "Authentication password (key)";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container authentication-key
    
                        container message-digest-keys {
                          description
                            "Message digest authentication password (key)";
                          list message-digest-key {
                            key "message-digest-key-id";
                            description
                              "Message digest authentication password (key)";
                            leaf message-digest-key-id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Message digest authentication password (key)";
                            }
    
                            container md5 {
                              description
                                "Use MD5 algorithm";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                mandatory true;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container md5
                          }  // list message-digest-key
                        }  // container message-digest-keys
    
                        container authentication {
                          presence
                            "Indicates a authentication node is configured.";
                          description
                            "Enable authentication";
                          container message-digest {
                            must
                              "not(../null or ../keychain)";
                            presence
                              "Indicates a message-digest node is configured.";
                            description
                              "Use message-digest authentication";
                          }  // container message-digest
    
                          container keychain {
                            must
                              "../keychain-name";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Use keychain";
                          }  // container keychain
    
                          leaf keychain-name {
                            type string {
                              length "1..32";
                            }
                            must
                              "(../message-digest or ../keychain) and not(../null)";
                            description
                              "Specify keychain name";
                          }
    
                          container null {
                            must
                              "not(../message-digest or ../keychain)";
                            presence
                              "Indicates a null node is configured.";
                            description
                              "Use no authentication";
                          }  // container null
                        }  // container authentication
    
                        leaf cost {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Interface cost";
                        }
    
                        container cost-fallback {
                          presence
                            "Indicates a cost-fallback node is configured.";
                          description
                            "Cost when cumulative bandwidth goes below the theshold";
                          leaf cost {
                            type uint32 {
                              range "1..65535";
                            }
                            mandatory true;
                            description
                              "Cost when cumulative bandwidth goes below the theshold";
                          }
    
                          leaf threshold {
                            type uint32 {
                              range "1..4294967";
                            }
                            description
                              "Threshold bandwidth when cost-fallback is applied";
                          }
                        }  // container cost-fallback
    
                        leaf hello-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between HELLO packets";
                        }
    
                        leaf dead-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../dead-interval-minimal-hello-multiplier)";
                          description "Seconds";
                        }
    
                        leaf dead-interval-minimal-hello-multiplier {
                          type uint32 {
                            range "3..20";
                          }
                          must
                            "not(../dead-interval)";
                          description
                            "Set multiplier for Hellos";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between retransmitting lost link state advertisements";
                        }
    
                        leaf transmit-delay {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Estimated time needed to send link-state update packet";
                        }
    
                        container mtu-ignore {
                          description
                            "Enable/Disable ignoring of MTU in DBD packets";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Ignores the MTU in DBD packets";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable ignoring of MTU in DBD packets";
                          }  // container disable
                        }  // container mtu-ignore
    
                        container database-filter {
                          description
                            "Filter OSPF LSA during synchronization and flooding";
                          container all {
                            description
                              "Filter all LSA";
                            container out {
                              description
                                "Outgoing LSA";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable filtering";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable filtering";
                              }  // container disable
                            }  // container out
                          }  // container all
                        }  // container database-filter
    
                        container distribute-list {
                          description
                            "Filter networks in routing updates";
                          leaf access-list {
                            type string;
                            must
                              "not(../route-policy)";
                            description
                              "In-bound access-list name.";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../access-list)";
                            description
                              "Route Policy to filter OSPF prefixes";
                          }
                        }  // container distribute-list
    
                        leaf packet-size {
                          type uint32 {
                            range "576..10000";
                          }
                          description
                            "Customize size of OSPF packets upto MTU";
                        }
    
                        container fast-reroute {
                          description
                            "IP Fast Reroute";
                          container per-link {
                            description
                              "Per-link Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable per-link Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-link LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-link LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-link LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-link LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
                          }  // container per-link
    
                          container per-prefix {
                            description
                              "Per-prefix Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable per-prefix Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-prefix LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-prefix LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-prefix LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-prefix LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
    
                            container remote-lfa {
                              description
                                "Remote LFA computation";
                              container tunnel {
                                description
                                  "Enable remote LFA computation using tunnels";
                                container mpls-ldp {
                                  must
                                    "not(../../disable)";
                                  presence
                                    "Indicates a mpls-ldp node is configured.";
                                  description
                                    "MPLS LDP tunnel";
                                }  // container mpls-ldp
                              }  // container tunnel
    
                              container disable {
                                must
                                  "not(../tunnel/mpls-ldp)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable remote LFA computation";
                              }  // container disable
    
                              leaf maximum-cost {
                                type uint32 {
                                  range
                                    "1..4294967295";
                                }
                                description
                                  "Maximum path cost to remote LFA";
                              }
                            }  // container remote-lfa
    
                            container ti-lfa {
                              description
                                "Topology Independent LFA computation";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable TI LFA computation";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable TI LFA computation";
                              }  // container disable
                            }  // container ti-lfa
    
                            container tiebreaker {
                              description
                                "Configure tiebreaker for multiple backups";
                              container downstream {
                                description
                                  "Prefer backup path via downstream node";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container downstream
    
                              container lc-disjoint {
                                description
                                  "Prefer line card disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lc-disjoint
    
                              container lowest-backup-metric {
                                description
                                  "Prefer backup path with lowest total metric";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lowest-backup-metric
    
                              container node-protecting {
                                description
                                  "Prefer node protecting backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container node-protecting
    
                              container primary-path {
                                description
                                  "Prefer backup path from ECMP set";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container primary-path
    
                              container secondary-path {
                                description
                                  "Prefer non-ECMP backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container secondary-path
    
                              container interface-disjoint {
                                description
                                  "Prefer Interface disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container interface-disjoint
    
                              container srlg-disjoint {
                                description
                                  "Prefer SRLG disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container srlg-disjoint
                            }  // container tiebreaker
                          }  // container per-prefix
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable IP Fast Reroute";
                          }  // container disable
                        }  // container fast-reroute
    
                        container passive {
                          description
                            "Enable/Disable passive";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable passive";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable passive";
                          }  // container disable
                        }  // container passive
    
                        container delay {
                          description
                            "Delay configuration setting";
                          container normalize {
                            description
                              "Delay normalization setting";
                            leaf interval {
                              type uint32 {
                                range
                                  "1..16777215";
                              }
                              must "../offset";
                              description
                                "Normalization interval";
                            }
    
                            leaf offset {
                              type uint32 {
                                range
                                  "0..16777215";
                              }
                              must "../interval";
                              description
                                "Normalization offset";
                            }
                          }  // container normalize
                        }  // container delay
                      }  // list multi-area-interface
                    }  // container multi-area-interfaces
    
                    container mpls {
                      description
                        "Configure MPLS routing protocol parameters";
                      container traffic-eng {
                        presence
                          "Indicates a traffic-eng node is configured.";
                        description
                          "Configure an ospf area to run MPLS Traffic Engineering";
                      }  // container traffic-eng
    
                      container ldp {
                        description
                          "Configure LDP parameters";
                        container sync {
                          presence
                            "Indicates a sync node is configured.";
                          description
                            "Enable LDP IGP synchronization";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MPLS LDP sync";
                          }  // container disable
                        }  // container sync
    
                        container sync-igp-shortcuts {
                          presence
                            "Indicates a sync-igp-shortcuts node is configured.";
                          description
                            "LDP sync for igp-shortcut tunnels";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable MPLS LDP sync igp-shortcuts";
                          }  // container disable
                        }  // container sync-igp-shortcuts
    
                        container auto-config {
                          presence
                            "Indicates a auto-config node is configured.";
                          description
                            "Enable LDP IGP interface auto-configuration";
                        }  // container auto-config
                      }  // container ldp
                    }  // container mpls
    
                    container route-policy {
                      description
                        "Specify the route-policy to filter type 3 LSAs";
                      leaf in {
                        type xr:Route-policy-name;
                        description
                          "route-policy to filter inbound";
                      }
    
                      leaf out {
                        type xr:Route-policy-name;
                        description
                          "route-policy to filter outbound";
                      }
                    }  // container route-policy
    
                    container external-out {
                      description
                        "Enable/Disable advertisement of intra-area prefixes as external";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable advertisement of intra-area routes as external";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable advertisement of intra-area routes as external";
                      }  // container disable
                    }  // container external-out
    
                    container summary-in {
                      description
                        "Enable/Disable advertisement of external prefixes as inter-area";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable advertisement of external prefixes as inter-area";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable advertisement of external prefixes as inter-area";
                      }  // container disable
                    }  // container summary-in
    
                    container segment-routing {
                      description
                        "Segment Routing configuration";
                      container mpls {
                        must "not(../disable)";
                        presence
                          "Indicates a mpls node is configured.";
                        description
                          "SR using MPLS dataplane";
                      }  // container mpls
    
                      container disable {
                        must "not(../mpls)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable Segment Routing ";
                      }  // container disable
    
                      container forwarding {
                        description
                          "Enable Segment-routing forwarding on interfaces";
                        container mpls {
                          must "not(../disable)";
                          presence
                            "Indicates a mpls node is configured.";
                          description
                            "Use MPLS for Segment-routing forwarding";
                        }  // container mpls
    
                        container disable {
                          must "not(../mpls)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Segment-routing on Area interfaces";
                        }  // container disable
                      }  // container forwarding
                    }  // container segment-routing
    
                    container interfaces {
                      description
                        "Enable routing on an interface ";
                      list interface {
                        key "interface-name";
                        description
                          "Enable routing on an interface ";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Enable routing on an interface ";
                        }
    
                        container affinity {
                          description
                            "Interface affinity configuration";
                          container flex-algo {
                            description
                              "Flexible Algorithm";
                            container affinity-attributes {
                              description
                                "Affinity attribute name";
                              list affinity-attribute {
                                key "affinity-attribute-name";
                                description
                                  "Affinity attribute name";
                                leaf affinity-attribute-name {
                                  type string {
                                    length
                                      "1..32";
                                  }
                                  description
                                    "Affinity attribute name";
                                }
                              }  // list affinity-attribute
                            }  // container affinity-attributes
                          }  // container flex-algo
                        }  // container affinity
    
                        container neighbors {
                          description
                            "Specify a neighbor router";
                          list neighbor {
                            key "neighbor-address";
                            description
                              "Specify a neighbor router";
                            leaf neighbor-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Specify a neighbor router";
                            }
    
                            container database-filter {
                              description
                                "Filter OSPF LSA during synchronization and flooding for point-to-multipoint neighbor";
                              container all {
                                description
                                  "Filter all LSA";
                                container out {
                                  presence
                                    "Indicates a out node is configured.";
                                  description
                                    "Outgoing LSA";
                                }  // container out
                              }  // container all
                            }  // container database-filter
    
                            leaf priority {
                              type uint32 {
                                range "0..255";
                              }
                              description
                                "OSPF priority of non-broadcast neighbor";
                            }
    
                            leaf poll-interval {
                              type uint32 {
                                range "0..65535";
                              }
                              description
                                "OSPF dead-router polling interval";
                            }
    
                            leaf cost {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "OSPF cost for point-to-multipoint neighbor";
                            }
                          }  // list neighbor
                        }  // container neighbors
    
                        container authentication-key {
                          description
                            "Authentication password (key)";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container authentication-key
    
                        container message-digest-keys {
                          description
                            "Message digest authentication password (key)";
                          list message-digest-key {
                            key "message-digest-key-id";
                            description
                              "Message digest authentication password (key)";
                            leaf message-digest-key-id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Message digest authentication password (key)";
                            }
    
                            container md5 {
                              description
                                "Use MD5 algorithm";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                mandatory true;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container md5
                          }  // list message-digest-key
                        }  // container message-digest-keys
    
                        container authentication {
                          presence
                            "Indicates a authentication node is configured.";
                          description
                            "Enable authentication";
                          container message-digest {
                            must
                              "not(../null or ../keychain)";
                            presence
                              "Indicates a message-digest node is configured.";
                            description
                              "Use message-digest authentication";
                          }  // container message-digest
    
                          container keychain {
                            must
                              "../keychain-name";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Use keychain";
                          }  // container keychain
    
                          leaf keychain-name {
                            type string {
                              length "1..32";
                            }
                            must
                              "(../message-digest or ../keychain) and not(../null)";
                            description
                              "Specify keychain name";
                          }
    
                          container null {
                            must
                              "not(../message-digest or ../keychain)";
                            presence
                              "Indicates a null node is configured.";
                            description
                              "Use no authentication";
                          }  // container null
                        }  // container authentication
    
                        container network {
                          description
                            "Network type";
                          container broadcast {
                            presence
                              "Indicates a broadcast node is configured.";
                            description
                              "Specify OSPF broadcast multi-access network";
                          }  // container broadcast
    
                          container non-broadcast {
                            presence
                              "Indicates a non-broadcast node is configured.";
                            description
                              "Specify OSPF NBMA network";
                          }  // container non-broadcast
    
                          container point-to-point {
                            presence
                              "Indicates a point-to-point node is configured.";
                            description
                              "Specify OSPF point-to-point network";
                          }  // container point-to-point
    
                          container point-to-multipoint {
                            presence
                              "Indicates a point-to-multipoint node is configured.";
                            description
                              "Specify OSPF point-to-multipoint network";
                          }  // container point-to-multipoint
                        }  // container network
    
                        container mpls {
                          description
                            "Configure MPLS routing protocol parameters";
                          container ldp {
                            description
                              "Configure LDP parameters";
                            container sync {
                              tailf:dependency "../../../interface-name";
                              when
                                "(../../../interface-name[not(starts-with(text(),'tunnel-te'))])";
                              presence
                                "Indicates a sync node is configured.";
                              description
                                "LDP IGP synchronization for interfaces";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MPLS LDP sync on interfaces";
                              }  // container disable
                            }  // container sync
    
                            container sync-igp-shortcuts {
                              tailf:dependency "../../../interface-name";
                              when
                                "../../../interface-name[starts-with(text(),'tunnel-te')]";
                              presence
                                "Indicates a sync-igp-shortcuts node is configured.";
                              description
                                "LDP sync for igp-shortcuts on tunnel interfaces";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MPLS LDP sync igp-shortcuts";
                              }  // container disable
                            }  // container sync-igp-shortcuts
                          }  // container ldp
                        }  // container mpls
    
                        leaf cost {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Interface cost";
                        }
    
                        container cost-fallback {
                          presence
                            "Indicates a cost-fallback node is configured.";
                          description
                            "Cost when cumulative bandwidth goes below the theshold";
                          leaf cost {
                            type uint32 {
                              range "1..65535";
                            }
                            must "../threshold";
                            description
                              "Cost when cumulative bandwidth goes below the theshold";
                          }
    
                          leaf threshold {
                            type uint32 {
                              range "1..4294967";
                            }
                            must "../cost";
                            description
                              "Threshold bandwidth when cost-fallback is applied";
                          }
    
                          container anomaly {
                            description
                              "Penalty when a delay or loss is notified";
                            container delay {
                              description
                                "Penalty when a delay is notified";
                              container igp-metric {
                                description
                                  "Penalty on IGP metric";
                                leaf increment {
                                  type uint32 {
                                    range
                                      "1..65534";
                                  }
                                  must
                                    "not(../multiplier or ../value
                                   or ../disable)";
                                  description
                                    "Increment the IGP cost by the specified value";
                                }
    
                                leaf multiplier {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../increment or ../value
                                   or ../disable)";
                                  description
                                    "Multiply the IGP cost by the specified value";
                                }
    
                                leaf value {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  must
                                    "not(../increment or ../multiplier
                                   or ../disable)";
                                  description
                                    "Set the IGP cost to the specified value";
                                }
    
                                container disable {
                                  must
                                    "not(../increment or ../multiplier
                                   or ../value)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable igp-metric";
                                }  // container disable
                              }  // container igp-metric
    
                              container te-metric {
                                description
                                  "Penalty on TE metric";
                                leaf increment {
                                  type uint32 {
                                    range
                                      "1..4294967294";
                                  }
                                  must
                                    "not(../multiplier or ../value
                                   or ../disable)";
                                  description
                                    "Increment the TE metric by the specified value";
                                }
    
                                leaf multiplier {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../increment or ../value
                                   or ../disable)";
                                  description
                                    "Multiply the TE metric by the specified value";
                                }
    
                                leaf value {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  must
                                    "not(../increment or ../multiplier
                                   or ../disable)";
                                  description
                                    "Set the TE cost to the specified value";
                                }
    
                                container disable {
                                  must
                                    "not(../increment or ../multiplier
                                   or ../value)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable te-metric";
                                }  // container disable
                              }  // container te-metric
                            }  // container delay
                          }  // container anomaly
                        }  // container cost-fallback
    
                        leaf hello-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between HELLO packets";
                        }
    
                        leaf dead-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../dead-interval-minimal-hello-multiplier)";
                          description "Seconds";
                        }
    
                        leaf dead-interval-minimal-hello-multiplier {
                          type uint32 {
                            range "3..20";
                          }
                          must
                            "not(../dead-interval)";
                          description
                            "Set multiplier for Hellos";
                        }
    
                        leaf priority {
                          type uint32 {
                            range "0..255";
                          }
                          description
                            "Router priority";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between retransmitting lost link state advertisements";
                        }
    
                        leaf transmit-delay {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Estimated time needed to send link-state update packet";
                        }
    
                        container flood-reduction {
                          description
                            "OSPF Flood Reduction";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable flooding reduction";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable flooding reduction";
                          }  // container disable
                        }  // container flood-reduction
    
                        container demand-circuit {
                          description
                            "Enable/Disable demand circuits";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable demand circuits";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable demand circuits";
                          }  // container disable
                        }  // container demand-circuit
    
                        container mtu-ignore {
                          description
                            "Enable/Disable ignoring of MTU in DBD packets";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Ignores the MTU in DBD packets";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable ignoring of MTU in DBD packets";
                          }  // container disable
                        }  // container mtu-ignore
    
                        container database-filter {
                          description
                            "Filter OSPF LSA during synchronization and flooding";
                          container all {
                            description
                              "Filter all LSA";
                            container out {
                              description
                                "Outgoing LSA";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable filtering";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable filtering";
                              }  // container disable
                            }  // container out
                          }  // container all
                        }  // container database-filter
    
                        container passive {
                          description
                            "Enable/Disable passive";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable passive";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable passive";
                          }  // container disable
                        }  // container passive
    
                        container distribute-list {
                          description
                            "Filter networks in routing updates";
                          leaf access-list {
                            type string;
                            must
                              "not(../route-policy)";
                            description
                              "In-bound access-list name.";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../access-list)";
                            description
                              "Route Policy to filter OSPF prefixes";
                          }
                        }  // container distribute-list
    
                        leaf packet-size {
                          type uint32 {
                            range "576..10000";
                          }
                          description
                            "Customize size of OSPF packets upto MTU";
                        }
    
                        container bfd {
                          description
                            "Configure BFD parameters";
                          container fast-detect {
                            must
                              "not(strict-mode and disable)";
                            presence
                              "Indicates a fast-detect node is configured.";
                            description
                              "Enable Fast detection";
                            container strict-mode {
                              presence
                                "Indicates a strict-mode node is configured.";
                              description
                                "Hold down neighbor session until BFD session is up";
                            }  // container strict-mode
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Prevent bfd settings from being inherited from the parent";
                            }  // container disable
                          }  // container fast-detect
    
                          leaf minimum-interval {
                            type uint32 {
                              range "3..30000";
                            }
                            description
                              "Minimum interval";
                          }
    
                          leaf multiplier {
                            type uint32 {
                              range "2..50";
                            }
                            description
                              "Detect multiplier";
                          }
                        }  // container bfd
    
                        container security {
                          description
                            "Enable security";
                          container ttl {
                            must
                              "not(hops and disable)";
                            presence
                              "Indicates a ttl node is configured.";
                            description
                              "Enable ttl security";
                            leaf hops {
                              type uint32 {
                                range "1..254";
                              }
                              description
                                "IP hops";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable TTL security";
                            }  // container disable
                          }  // container ttl
                        }  // container security
    
                        container prefix-suppression {
                          description
                            "Suppress advertisement of the prefixes";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable primary address suppression";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable primary address suppression";
                          }  // container disable
    
                          container secondary-address {
                            description
                              "Enable/Disable secondary address suppression";
                            container enable {
                              must
                                "not(../disable)";
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable secondary address suppression";
                            }  // container enable
    
                            container disable {
                              must
                                "not(../enable)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable secondary address suppression";
                            }  // container disable
                          }  // container secondary-address
                        }  // container prefix-suppression
    
                        container fast-reroute {
                          description
                            "IP Fast Reroute";
                          container per-link {
                            description
                              "Per-link Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable per-link Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-link LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-link LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-link LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-link LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
                          }  // container per-link
    
                          container per-prefix {
                            description
                              "Per-prefix Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable per-prefix Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-prefix LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-prefix LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-prefix LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-prefix LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
    
                            container remote-lfa {
                              description
                                "Remote LFA computation";
                              container tunnel {
                                description
                                  "Enable remote LFA computation using tunnels";
                                container mpls-ldp {
                                  must
                                    "not(../../disable)";
                                  presence
                                    "Indicates a mpls-ldp node is configured.";
                                  description
                                    "MPLS LDP tunnel";
                                }  // container mpls-ldp
                              }  // container tunnel
    
                              container disable {
                                must
                                  "not(../tunnel/mpls-ldp)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable remote LFA computation";
                              }  // container disable
    
                              leaf maximum-cost {
                                type uint32 {
                                  range
                                    "1..4294967295";
                                }
                                description
                                  "Maximum path cost to remote LFA";
                              }
                            }  // container remote-lfa
    
                            container ti-lfa {
                              description
                                "Topology Independent LFA computation";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable TI LFA computation";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable TI LFA computation";
                              }  // container disable
                            }  // container ti-lfa
    
                            container tiebreaker {
                              description
                                "Configure tiebreaker for multiple backups";
                              container downstream {
                                description
                                  "Prefer backup path via downstream node";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container downstream
    
                              container lc-disjoint {
                                description
                                  "Prefer line card disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lc-disjoint
    
                              container lowest-backup-metric {
                                description
                                  "Prefer backup path with lowest total metric";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lowest-backup-metric
    
                              container node-protecting {
                                description
                                  "Prefer node protecting backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container node-protecting
    
                              container primary-path {
                                description
                                  "Prefer backup path from ECMP set";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container primary-path
    
                              container secondary-path {
                                description
                                  "Prefer non-ECMP backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container secondary-path
    
                              container interface-disjoint {
                                description
                                  "Prefer Interface disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container interface-disjoint
    
                              container srlg-disjoint {
                                description
                                  "Prefer SRLG disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container srlg-disjoint
                            }  // container tiebreaker
                          }  // container per-prefix
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable IP Fast Reroute";
                          }  // container disable
                        }  // container fast-reroute
    
                        container loopback {
                          description
                            "OSPF loopback configuration";
                          container stub-network {
                            description
                              "Advertise loopback as a stub network";
                            container enable {
                              must
                                "not(../disable)";
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable advertising loopback as a stub network";
                            }  // container enable
    
                            container disable {
                              must
                                "not(../enable)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable advertising loopback as a stub network";
                            }  // container disable
                          }  // container stub-network
                        }  // container loopback
    
                        container link-down {
                          description
                            "Configure interface down parameters";
                          container fast-detect {
                            presence
                              "Indicates a fast-detect node is configured.";
                            description
                              "Enable fast or early detection of link-down events";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable fast or early detection of link-down events";
                            }  // container disable
                          }  // container fast-detect
                        }  // container link-down
    
                        container prefix-sid {
                          tailf:dependency "../interface-name";
                          when
                            "../interface-name[starts-with(text(),'Loopback')]";
                          description
                            "Prefix SID Configuration";
                          container index {
                            presence
                              "Indicates a index node is configured.";
                            description
                              "SID Index";
                            leaf sid-index {
                              type uint32 {
                                range
                                  "0..1048575";
                              }
                              mandatory true;
                              description
                                "SID Index";
                            }
    
                            container explicit-null {
                              presence
                                "Indicates a explicit-null node is configured.";
                              description
                                "Force penultimate hop to send explicit-null label";
                            }  // container explicit-null
    
                            container n-flag-clear {
                              presence
                                "Indicates a n-flag-clear node is configured.";
                              description
                                "Not a node SID (e.g. for anycast SID use)";
                            }  // container n-flag-clear
                          }  // container index
    
                          container absolute {
                            presence
                              "Indicates a absolute node is configured.";
                            description
                              "SID value";
                            leaf sid-label {
                              type uint32 {
                                range
                                  "16000..1048575";
                              }
                              mandatory true;
                              description
                                "SID value";
                            }
    
                            container explicit-null {
                              presence
                                "Indicates a explicit-null node is configured.";
                              description
                                "Force penultimate hop to send explicit-null label";
                            }  // container explicit-null
    
                            container n-flag-clear {
                              presence
                                "Indicates a n-flag-clear node is configured.";
                              description
                                "Not a node SID (e.g. for anycast SID use)";
                            }  // container n-flag-clear
                          }  // container absolute
    
                          container strict-spf {
                            description
                              "Strict-SPF Prefix SID Configuration";
                            container index {
                              must
                                "not(../absolute)";
                              presence
                                "Indicates a index node is configured.";
                              description
                                "SID Index";
                              leaf sid-index {
                                type uint32 {
                                  range
                                    "0..1048575";
                                }
                                mandatory true;
                                description
                                  "SID Index";
                              }
    
                              container explicit-null {
                                presence
                                  "Indicates a explicit-null node is configured.";
                                description
                                  "Force penultimate hop to send explicit-null label";
                              }  // container explicit-null
    
                              container n-flag-clear {
                                presence
                                  "Indicates a n-flag-clear node is configured.";
                                description
                                  "Not a node SID (e.g. for anycast SID use)";
                              }  // container n-flag-clear
                            }  // container index
    
                            container absolute {
                              must
                                "not(../index)";
                              presence
                                "Indicates a absolute node is configured.";
                              description
                                "SID value";
                              leaf sid-label {
                                type uint32 {
                                  range
                                    "16000..1048575";
                                }
                                mandatory true;
                                description
                                  "SID value";
                              }
    
                              container explicit-null {
                                presence
                                  "Indicates a explicit-null node is configured.";
                                description
                                  "Force penultimate hop to send explicit-null label";
                              }  // container explicit-null
    
                              container n-flag-clear {
                                presence
                                  "Indicates a n-flag-clear node is configured.";
                                description
                                  "Not a node SID (e.g. for anycast SID use)";
                              }  // container n-flag-clear
                            }  // container absolute
                          }  // container strict-spf
    
                          container algorithms {
                            description
                              "Algorithm Specific Prefix SID Configuration";
                            list algorithm {
                              must
                                "index or absolute";
                              key "algorithm-number";
                              description
                                "Algorithm Specific Prefix SID Configuration";
                              leaf algorithm-number {
                                type uint32 {
                                  range
                                    "128..255";
                                }
                                description
                                  "Algorithm Specific Prefix SID Configuration";
                              }
    
                              container index {
                                presence
                                  "Indicates a index node is configured.";
                                description
                                  "SID Index";
                                leaf sid-index {
                                  type uint32 {
                                    range
                                      "0..1048575";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "SID Index";
                                }
    
                                container explicit-null {
                                  presence
                                    "Indicates a explicit-null node is configured.";
                                  description
                                    "Force penultimate hop to send explicit-null label";
                                }  // container explicit-null
    
                                container n-flag-clear {
                                  presence
                                    "Indicates a n-flag-clear node is configured.";
                                  description
                                    "Not a node SID (e.g. for anycast SID use)";
                                }  // container n-flag-clear
                              }  // container index
    
                              container absolute {
                                presence
                                  "Indicates a absolute node is configured.";
                                description
                                  "SID value";
                                leaf sid-label {
                                  type uint32 {
                                    range
                                      "16000..1048575";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "SID value";
                                }
    
                                container explicit-null {
                                  presence
                                    "Indicates a explicit-null node is configured.";
                                  description
                                    "Force penultimate hop to send explicit-null label";
                                }  // container explicit-null
    
                                container n-flag-clear {
                                  presence
                                    "Indicates a n-flag-clear node is configured.";
                                  description
                                    "Not a node SID (e.g. for anycast SID use)";
                                }  // container n-flag-clear
                              }  // container absolute
                            }  // list algorithm
                          }  // container algorithms
                        }  // container prefix-sid
    
                        container segment-routing {
                          description
                            "Configure Segment-routing interface parameters";
                          container forwarding {
                            description
                              "Enable Segment-routing forwarding on interfaces";
                            container mpls {
                              must
                                "not(../disable)";
                              presence
                                "Indicates a mpls node is configured.";
                              description
                                "Use MPLS for Segment-routing forwarding";
                            }  // container mpls
    
                            container disable {
                              must
                                "not(../mpls)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable Segment-routing on interface";
                            }  // container disable
                          }  // container forwarding
                        }  // container segment-routing
    
                        container adjacency-sid {
                          description
                            "Adjacency SID Configuration";
                          container indexes {
                            description
                              "SID Index";
                            list index {
                              key "sid-index";
                              description
                                "SID Index";
                              leaf sid-index {
                                type uint32 {
                                  range
                                    "0..1048575";
                                }
                                description
                                  "SID Index";
                              }
    
                              container protected {
                                presence
                                  "Indicates a protected node is configured.";
                                description
                                  "Protect the static adjacency SID";
                              }  // container protected
    
                              leaf neighbor-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Provide Neighbor IP address associated with this SID";
                              }
                            }  // list index
                          }  // container indexes
    
                          container absolutes {
                            description
                              "SID value";
                            list absolute {
                              key "sid-value";
                              description
                                "SID value";
                              leaf sid-value {
                                type uint32 {
                                  range
                                    "15000..1048575";
                                }
                                description
                                  "SID value";
                              }
    
                              container protected {
                                presence
                                  "Indicates a protected node is configured.";
                                description
                                  "Protect the static adjacency SID";
                              }  // container protected
    
                              leaf neighbor-address {
                                type inet:ipv4-address-no-zone;
                                description
                                  "Provide Neighbor IP address associated with this SID";
                              }
                            }  // list absolute
                          }  // container absolutes
                        }  // container adjacency-sid
    
                        leaf weight {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "Interface weight";
                        }
    
                        container advertise {
                          tailf:dependency "../interface-name";
                          when
                            "../interface-name[starts-with(text(),'Loopback')]";
                          description
                            "Conditionally advertise";
                          container prefix {
                            description
                              "Conditionally advertise this prefix";
                            leaf route-policy {
                              type xr:Route-policy-name;
                              description
                                "Specify the route-policy for conditional advertising";
                            }
                          }  // container prefix
                        }  // container advertise
    
                        container delay {
                          description
                            "Delay configuration setting";
                          container normalize {
                            description
                              "Delay normalization setting";
                            leaf interval {
                              type uint32 {
                                range
                                  "1..16777215";
                              }
                              must "../offset";
                              description
                                "Normalization interval";
                            }
    
                            leaf offset {
                              type uint32 {
                                range
                                  "0..16777215";
                              }
                              must "../interval";
                              description
                                "Normalization offset";
                            }
                          }  // container normalize
                        }  // container delay
                      }  // list interface
                    }  // container interfaces
    
                    container authentication-key {
                      description
                        "Authentication password (key)";
                      leaf encrypted {
                        type xr:Proprietary-password;
                        description
                          "Specifies an ENCRYPTED password (key) will follow";
                      }
                    }  // container authentication-key
    
                    container message-digest-keys {
                      description
                        "Message digest authentication password (key)";
                      list message-digest-key {
                        key "message-digest-key-id";
                        description
                          "Message digest authentication password (key)";
                        leaf message-digest-key-id {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "Message digest authentication password (key)";
                        }
    
                        container md5 {
                          description
                            "Use MD5 algorithm";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container md5
                      }  // list message-digest-key
                    }  // container message-digest-keys
    
                    container authentication {
                      presence
                        "Indicates a authentication node is configured.";
                      description
                        "Enable authentication";
                      container message-digest {
                        must
                          "not(../null or ../keychain)";
                        presence
                          "Indicates a message-digest node is configured.";
                        description
                          "Use message-digest authentication";
                      }  // container message-digest
    
                      container keychain {
                        must "../keychain-name";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Use keychain";
                      }  // container keychain
    
                      leaf keychain-name {
                        type string {
                          length "1..32";
                        }
                        must
                          "(../message-digest or ../keychain) and not(../null)";
                        description
                          "Specify keychain name";
                      }
    
                      container null {
                        must
                          "not(../message-digest or ../keychain)";
                        presence
                          "Indicates a null node is configured.";
                        description
                          "Use no authentication";
                      }  // container null
                    }  // container authentication
    
                    container network {
                      description "Network type";
                      container broadcast {
                        presence
                          "Indicates a broadcast node is configured.";
                        description
                          "Specify OSPF broadcast multi-access network";
                      }  // container broadcast
    
                      container non-broadcast {
                        presence
                          "Indicates a non-broadcast node is configured.";
                        description
                          "Specify OSPF NBMA network";
                      }  // container non-broadcast
    
                      container point-to-point {
                        presence
                          "Indicates a point-to-point node is configured.";
                        description
                          "Specify OSPF point-to-point network";
                      }  // container point-to-point
    
                      container point-to-multipoint {
                        presence
                          "Indicates a point-to-multipoint node is configured.";
                        description
                          "Specify OSPF point-to-multipoint network";
                      }  // container point-to-multipoint
                    }  // container network
    
                    leaf cost {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Interface cost";
                    }
    
                    container cost-fallback {
                      description
                        "Cost fallback when anomaly is detected";
                      container anomaly {
                        description
                          "Penalty when a delay or loss is notified";
                        container delay {
                          description
                            "Penalty when a delay is notified";
                          container igp-metric {
                            description
                              "Penalty on IGP metric";
                            leaf increment {
                              type uint32 {
                                range "1..65534";
                              }
                              must
                                "not(../multiplier or ../value
                               or ../disable)";
                              description
                                "Increment the IGP cost by the specified value";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../increment or ../value
                               or ../disable)";
                              description
                                "Multiply the IGP cost by the specified value";
                            }
    
                            leaf value {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../increment or ../multiplier
                               or ../disable)";
                              description
                                "Set the IGP cost to the specified value";
                            }
    
                            container disable {
                              must
                                "not(../increment or ../multiplier
                               or ../value)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable igp-metric";
                            }  // container disable
                          }  // container igp-metric
    
                          container te-metric {
                            description
                              "Penalty on TE metric";
                            leaf increment {
                              type uint32 {
                                range
                                  "1..4294967294";
                              }
                              must
                                "not(../multiplier or ../value
                               or ../disable)";
                              description
                                "Increment the TE metric by the specified value";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../increment or ../value
                               or ../disable)";
                              description
                                "Multiply the TE metric by the specified value";
                            }
    
                            leaf value {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              must
                                "not(../increment or ../multiplier
                               or ../disable)";
                              description
                                "Set the TE cost to the specified value";
                            }
    
                            container disable {
                              must
                                "not(../increment or ../multiplier
                               or ../value)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable te-metric";
                            }  // container disable
                          }  // container te-metric
                        }  // container delay
                      }  // container anomaly
                    }  // container cost-fallback
    
                    leaf hello-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Time between HELLO packets";
                    }
    
                    leaf dead-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../dead-interval-minimal-hello-multiplier)";
                      description "Seconds";
                    }
    
                    leaf dead-interval-minimal-hello-multiplier {
                      type uint32 {
                        range "3..20";
                      }
                      must
                        "not(../dead-interval)";
                      description
                        "Set multiplier for Hellos";
                    }
    
                    leaf priority {
                      type uint32 {
                        range "0..255";
                      }
                      description
                        "Router priority";
                    }
    
                    leaf retransmit-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Time between retransmitting lost link state advertisements";
                    }
    
                    leaf transmit-delay {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Estimated time needed to send link-state update packet";
                    }
    
                    container flood-reduction {
                      description
                        "OSPF Flood Reduction";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable flooding reduction";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable flooding reduction";
                      }  // container disable
                    }  // container flood-reduction
    
                    container demand-circuit {
                      description
                        "Enable/Disable demand circuits";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable demand circuits";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable demand circuits";
                      }  // container disable
                    }  // container demand-circuit
    
                    container mtu-ignore {
                      description
                        "Enable/Disable ignoring of MTU in DBD packets";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Ignores the MTU in DBD packets";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable ignoring of MTU in DBD packets";
                      }  // container disable
                    }  // container mtu-ignore
    
                    container database-filter {
                      description
                        "Filter OSPF LSA during synchronization and flooding";
                      container all {
                        description
                          "Filter all LSA";
                        container out {
                          description
                            "Outgoing LSA";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable filtering";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable filtering";
                          }  // container disable
                        }  // container out
                      }  // container all
                    }  // container database-filter
    
                    container passive {
                      description
                        "Enable/Disable passive";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable passive";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable passive";
                      }  // container disable
                    }  // container passive
    
                    container distribute-list {
                      description
                        "Filter networks in routing updates";
                      leaf access-list {
                        type string;
                        must
                          "not(../route-policy)";
                        description
                          "In-bound access-list name.";
                      }
    
                      leaf route-policy {
                        type xr:Route-policy-name;
                        must
                          "not(../access-list)";
                        description
                          "Route Policy to filter OSPF prefixes";
                      }
                    }  // container distribute-list
    
                    leaf packet-size {
                      type uint32 {
                        range "576..10000";
                      }
                      description
                        "Customize size of OSPF packets upto MTU";
                    }
    
                    container bfd {
                      description
                        "Configure BFD parameters";
                      container fast-detect {
                        must
                          "not(strict-mode and disable)";
                        presence
                          "Indicates a fast-detect node is configured.";
                        description
                          "Enable Fast detection";
                        container strict-mode {
                          presence
                            "Indicates a strict-mode node is configured.";
                          description
                            "Hold down neighbor session until BFD session is up";
                        }  // container strict-mode
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Prevent bfd settings from being inherited from the parent";
                        }  // container disable
                      }  // container fast-detect
    
                      leaf minimum-interval {
                        type uint32 {
                          range "3..30000";
                        }
                        description
                          "Minimum interval";
                      }
    
                      leaf multiplier {
                        type uint32 {
                          range "2..50";
                        }
                        description
                          "Detect multiplier";
                      }
                    }  // container bfd
    
                    container security {
                      description
                        "Enable/Disable security";
                      container ttl {
                        must
                          "not(hops and disable)";
                        presence
                          "Indicates a ttl node is configured.";
                        description
                          "TTL security";
                        leaf hops {
                          type uint32 {
                            range "1..254";
                          }
                          description "IP hops";
                        }
    
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable TTL security";
                        }  // container disable
                      }  // container ttl
                    }  // container security
    
                    container prefix-suppression {
                      description
                        "Suppress advertisement of the prefixes";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable primary address suppression";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable primary address suppression";
                      }  // container disable
    
                      container secondary-address {
                        description
                          "Enable/Disable secondary address suppression";
                        container enable {
                          must "not(../disable)";
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable secondary address suppression";
                        }  // container enable
    
                        container disable {
                          must "not(../enable)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable secondary address suppression";
                        }  // container disable
                      }  // container secondary-address
                    }  // container prefix-suppression
    
                    container fast-reroute {
                      description
                        "IP Fast Reroute";
                      container per-link {
                        description
                          "Per-link Computation";
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable per-link Computation";
                        }  // container enable
    
                        container exclude {
                          description
                            "Per-link LFA exclusion information";
                          container interfaces {
                            description
                              "Exclude an interface from Per-link LFA";
                            list interface {
                              key "interface-name";
                              description
                                "Exclude an interface from Per-link LFA";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Exclude an interface from Per-link LFA";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container exclude
    
                        container lfa-candidate {
                          description
                            "FRR LFA candidate information";
                          container interfaces {
                            description
                              "Include an interface to LFA candidate in computation";
                            list interface {
                              key "interface-name";
                              description
                                "Include an interface to LFA candidate in computation";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Include an interface to LFA candidate in computation";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container lfa-candidate
    
                        container use-candidate-only {
                          description
                            "Enable/Disable backup selection from candidate-list only";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable backup selection from candidate-list only";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable backup selection from candidate-list only";
                          }  // container disable
                        }  // container use-candidate-only
                      }  // container per-link
    
                      container per-prefix {
                        description
                          "Per-prefix Computation";
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable per-prefix Computation";
                        }  // container enable
    
                        container exclude {
                          description
                            "Per-prefix LFA exclusion information";
                          container interfaces {
                            description
                              "Exclude an interface from Per-prefix LFA";
                            list interface {
                              key "interface-name";
                              description
                                "Exclude an interface from Per-prefix LFA";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Exclude an interface from Per-prefix LFA";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container exclude
    
                        container lfa-candidate {
                          description
                            "FRR LFA candidate information";
                          container interfaces {
                            description
                              "Include an interface to LFA candidate in computation";
                            list interface {
                              key "interface-name";
                              description
                                "Include an interface to LFA candidate in computation";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Include an interface to LFA candidate in computation";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container lfa-candidate
    
                        container use-candidate-only {
                          description
                            "Enable/Disable backup selection from candidate-list only";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable backup selection from candidate-list only";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable backup selection from candidate-list only";
                          }  // container disable
                        }  // container use-candidate-only
    
                        container remote-lfa {
                          description
                            "Remote LFA computation";
                          container tunnel {
                            description
                              "Enable remote LFA computation using tunnels";
                            container mpls-ldp {
                              must
                                "not(../../disable)";
                              presence
                                "Indicates a mpls-ldp node is configured.";
                              description
                                "MPLS LDP tunnel";
                            }  // container mpls-ldp
                          }  // container tunnel
    
                          container disable {
                            must
                              "not(../tunnel/mpls-ldp)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable remote LFA computation";
                          }  // container disable
    
                          leaf maximum-cost {
                            type uint32 {
                              range
                                "1..4294967295";
                            }
                            description
                              "Maximum path cost to remote LFA";
                          }
                        }  // container remote-lfa
    
                        container ti-lfa {
                          description
                            "Topology Independent LFA computation";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable TI LFA computation";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable TI LFA computation";
                          }  // container disable
                        }  // container ti-lfa
    
                        container tiebreaker {
                          description
                            "Configure tiebreaker for multiple backups";
                          container downstream {
                            description
                              "Prefer backup path via downstream node";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container downstream
    
                          container lc-disjoint {
                            description
                              "Prefer line card disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container lc-disjoint
    
                          container lowest-backup-metric {
                            description
                              "Prefer backup path with lowest total metric";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container lowest-backup-metric
    
                          container node-protecting {
                            description
                              "Prefer node protecting backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container node-protecting
    
                          container primary-path {
                            description
                              "Prefer backup path from ECMP set";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container primary-path
    
                          container secondary-path {
                            description
                              "Prefer non-ECMP backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container secondary-path
    
                          container interface-disjoint {
                            description
                              "Prefer Interface disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container interface-disjoint
    
                          container srlg-disjoint {
                            description
                              "Prefer SRLG disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container srlg-disjoint
                        }  // container tiebreaker
                      }  // container per-prefix
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable IP Fast Reroute";
                      }  // container disable
                    }  // container fast-reroute
    
                    container loopback {
                      description
                        "OSPF loopback configuration";
                      container stub-network {
                        description
                          "Advertise loopback as a stub network";
                        container enable {
                          must "not(../disable)";
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable advertising loopback as a stub network";
                        }  // container enable
    
                        container disable {
                          must "not(../enable)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable advertising loopback as a stub network";
                        }  // container disable
                      }  // container stub-network
                    }  // container loopback
    
                    container link-down {
                      description
                        "Configure interface down parameters";
                      container fast-detect {
                        presence
                          "Indicates a fast-detect node is configured.";
                        description
                          "Enable fast or early detection of link-down events";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable fast or early detection of link-down events";
                        }  // container disable
                      }  // container fast-detect
                    }  // container link-down
    
                    leaf weight {
                      type uint32 {
                        range "1..16777214";
                      }
                      description
                        "Interface weight";
                    }
    
                    container delay {
                      description
                        "Delay configuration setting";
                      container normalize {
                        description
                          "Delay normalization setting";
                        leaf interval {
                          type uint32 {
                            range "1..16777215";
                          }
                          must "../offset";
                          description
                            "Normalization interval";
                        }
    
                        leaf offset {
                          type uint32 {
                            range "0..16777215";
                          }
                          must "../interval";
                          description
                            "Normalization offset";
                        }
                      }  // container normalize
                    }  // container delay
    
                    container virtual-links {
                      description
                        "Define a virtual link";
                      list virtual-link {
                        key "virtual-link-address";
                        description
                          "Define a virtual link";
                        leaf virtual-link-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Define a virtual link";
                        }
    
                        leaf hello-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between HELLO packets";
                        }
    
                        leaf dead-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../dead-interval-minimal-hello-multiplier)";
                          description "Seconds";
                        }
    
                        leaf dead-interval-minimal-hello-multiplier {
                          type uint32 {
                            range "3..20";
                          }
                          must
                            "not(../dead-interval)";
                          description
                            "Set multiplier for Hellos";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Delay between LSA retransmissions";
                        }
    
                        leaf transmit-delay {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Link state transmit delay";
                        }
    
                        container authentication-key {
                          description
                            "Authentication password (key)";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container authentication-key
    
                        container message-digest-keys {
                          description
                            "Message digest authentication password (key)";
                          list message-digest-key {
                            key "message-digest-key-id";
                            description
                              "Message digest authentication password (key)";
                            leaf message-digest-key-id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Message digest authentication password (key)";
                            }
    
                            container md5 {
                              description
                                "Use MD5 algorithm";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container md5
                          }  // list message-digest-key
                        }  // container message-digest-keys
    
                        container authentication {
                          presence
                            "Indicates a authentication node is configured.";
                          description
                            "Enable authentication";
                          container message-digest {
                            must
                              "not(../null or ../keychain)";
                            presence
                              "Indicates a message-digest node is configured.";
                            description
                              "Use message-digest authentication";
                          }  // container message-digest
    
                          container keychain {
                            must
                              "../keychain-name";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Use keychain";
                          }  // container keychain
    
                          leaf keychain-name {
                            type string {
                              length "1..32";
                            }
                            must
                              "(../message-digest or ../keychain) and not(../null)";
                            description
                              "Specify keychain name";
                          }
    
                          container null {
                            must
                              "not(../message-digest or ../keychain)";
                            presence
                              "Indicates a null node is configured.";
                            description
                              "Use no authentication";
                          }  // container null
                        }  // container authentication
                      }  // list virtual-link
                    }  // container virtual-links
                  }  // list area
                }  // container areas
    
                container segment-routing {
                  description
                    "Segment Routing configuration";
                  container global-block {
                    presence
                      "Indicates a global-block node is configured.";
                    description
                      "MPLS label range for SID allocation";
                    leaf minimum-mpls-label {
                      type uint32 {
                        range "16000..1048575";
                      }
                      mandatory true;
                      description
                        "MPLS label range for SID allocation";
                    }
    
                    leaf maximum-mpls-label {
                      type uint32 {
                        range "1..1048575";
                      }
                      mandatory true;
                      description
                        "Maximum MPLS label value for Segment Routing";
                    }
                  }  // container global-block
    
                  container prefix-sid-map {
                    description
                      "Configuring segment routing mapping server";
                    container advertise-local {
                      presence
                        "Indicates a advertise-local node is configured.";
                      description
                        "Advertise and use local mapping server entries";
                    }  // container advertise-local
    
                    container receive {
                      description
                        "Control the usage of remote mapping server advertisements";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable the usage of remote mapping server advertisements";
                      }  // container disable
                    }  // container receive
                  }  // container prefix-sid-map
    
                  container sr-prefer {
                    presence
                      "Indicates a sr-prefer node is configured.";
                    description
                      "Prefer segment routing labels over LDP labels";
                    leaf prefix-list {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Filter prefixes for which SR preference is applied";
                    }
                  }  // container sr-prefer
    
                  container forwarding {
                    must "mpls or disable";
                    presence
                      "Indicates a forwarding node is configured.";
                    description
                      "Enable Segment-routing forwarding on interfaces";
                    container mpls {
                      presence
                        "Indicates a mpls node is configured.";
                      description
                        "Use MPLS for Segment-routing forwarding";
                    }  // container mpls
    
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable Segment-routing on process interfaces";
                    }  // container disable
                  }  // container forwarding
    
                  container mpls {
                    must "not(../disable)";
                    presence
                      "Indicates a mpls node is configured.";
                    description
                      "SR using MPLS dataplane";
                  }  // container mpls
    
                  container disable {
                    must "not(../mpls)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable Segment Routing ";
                  }  // container disable
                }  // container segment-routing
    
                container affinity-map {
                  description
                    "Affinity map configuration";
                  container affinity-attributes {
                    description
                      "Affinity attribute name";
                    list affinity-attribute {
                      key "affinity-attribute-name";
                      description
                        "Affinity attribute name";
                      leaf affinity-attribute-name {
                        type string {
                          length "1..32";
                        }
                        description
                          "Affinity attribute name";
                      }
    
                      leaf bit-position {
                        type uint32 {
                          range "0..255";
                        }
                        description
                          "Bit position for affinity attribute value";
                      }
                    }  // list affinity-attribute
                  }  // container affinity-attributes
                }  // container affinity-map
    
                container flex-algos {
                  description
                    "Flex Algorithm definition";
                  list flex-algo {
                    key "algorithm-number";
                    description
                      "Flex Algorithm definition";
                    leaf algorithm-number {
                      type uint32 {
                        range "128..255";
                      }
                      description
                        "Flex Algorithm definition";
                    }
    
                    leaf priority {
                      type uint32 {
                        range "0..255";
                      }
                      description
                        "Flex-Algo definition priority";
                    }
    
                    container microloop {
                      description
                        "Microloop configuration";
                      container avoidance {
                        presence
                          "Indicates a avoidance node is configured.";
                        description
                          "Microloop avoidance state";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable microloop avoidance for Flex-Algo";
                        }  // container disable
                      }  // container avoidance
                    }  // container microloop
    
                    container metric-type {
                      description
                        "Metric-type used by flex-algo calculation";
                      container delay {
                        presence
                          "Indicates a delay node is configured.";
                        description
                          "Use delay as metric";
                      }  // container delay
    
                      container te-metric {
                        presence
                          "Indicates a te-metric node is configured.";
                        description
                          "Use te-metric";
                      }  // container te-metric
                    }  // container metric-type
    
                    container advertise-definition {
                      presence
                        "Indicates a advertise-definition node is configured.";
                      description
                        "Advertise the Flex-Algo Definition";
                    }  // container advertise-definition
    
                    container fast-reroute {
                      description
                        "Configure Fast ReRoute";
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable Fast ReRoute for Flex-Algo";
                      }  // container disable
                    }  // container fast-reroute
    
                    container affinity {
                      description
                        "Specify affinity name";
                      container exclude-any {
                        description
                          "Exclude objects in flex-algo calculation";
                        container affinity-attributes {
                          description
                            "Affinity attribute name";
                          list affinity-attribute {
                            key "affinity-attribute-name";
                            description
                              "Affinity attribute name";
                            leaf affinity-attribute-name {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Affinity attribute name";
                            }
                          }  // list affinity-attribute
                        }  // container affinity-attributes
                      }  // container exclude-any
    
                      container include-any {
                        description
                          "Include any objects in flex-algo calculation";
                        container affinity-attributes {
                          description
                            "Affinity attribute name";
                          list affinity-attribute {
                            key "affinity-attribute-name";
                            description
                              "Affinity attribute name";
                            leaf affinity-attribute-name {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Affinity attribute name";
                            }
                          }  // list affinity-attribute
                        }  // container affinity-attributes
                      }  // container include-any
    
                      container include-all {
                        description
                          "Include all objects in flex-algo calculation";
                        container affinity-attributes {
                          description
                            "Affinity attribute name";
                          list affinity-attribute {
                            key "affinity-attribute-name";
                            description
                              "Affinity attribute name";
                            leaf affinity-attribute-name {
                              type xr:Cisco-ios-xr-string {
                                length "1..32";
                              }
                              description
                                "Affinity attribute name";
                            }
                          }  // list affinity-attribute
                        }  // container affinity-attributes
                      }  // container include-all
                    }  // container affinity
                  }  // list flex-algo
                }  // container flex-algos
    
                container authentication-key {
                  description
                    "Authentication password (key)";
                  leaf encrypted {
                    type xr:Proprietary-password;
                    description
                      "Specifies an ENCRYPTED password (key) will follow";
                  }
                }  // container authentication-key
    
                container message-digest-keys {
                  description
                    "Message digest authentication password (key)";
                  list message-digest-key {
                    key "message-digest-key-id";
                    description
                      "Message digest authentication password (key)";
                    leaf message-digest-key-id {
                      type uint32 {
                        range "1..255";
                      }
                      description
                        "Message digest authentication password (key)";
                    }
    
                    container md5 {
                      description
                        "Use MD5 algorithm";
                      leaf encrypted {
                        type xr:Proprietary-password;
                        description
                          "Specifies an ENCRYPTED password (key) will follow";
                      }
                    }  // container md5
                  }  // list message-digest-key
                }  // container message-digest-keys
    
                container authentication {
                  presence
                    "Indicates a authentication node is configured.";
                  description
                    "Enable authentication";
                  container message-digest {
                    must
                      "not(../null or ../keychain)";
                    presence
                      "Indicates a message-digest node is configured.";
                    description
                      "Use message-digest authentication";
                  }  // container message-digest
    
                  container keychain {
                    must "../keychain-name";
                    presence
                      "Indicates a keychain node is configured.";
                    description "Use keychain";
                  }  // container keychain
    
                  leaf keychain-name {
                    type string {
                      length "1..32";
                    }
                    must
                      "(../message-digest or ../keychain) and not(../null)";
                    description
                      "Specify keychain name";
                  }
    
                  container null {
                    must
                      "not(../message-digest or ../keychain)";
                    presence
                      "Indicates a null node is configured.";
                    description
                      "Use no authentication";
                  }  // container null
                }  // container authentication
    
                container network {
                  description "Network type";
                  container broadcast {
                    presence
                      "Indicates a broadcast node is configured.";
                    description
                      "Specify OSPF broadcast multi-access network";
                  }  // container broadcast
    
                  container non-broadcast {
                    presence
                      "Indicates a non-broadcast node is configured.";
                    description
                      "Specify OSPF NBMA network";
                  }  // container non-broadcast
    
                  container point-to-point {
                    presence
                      "Indicates a point-to-point node is configured.";
                    description
                      "Specify OSPF point-to-point network";
                  }  // container point-to-point
    
                  container point-to-multipoint {
                    presence
                      "Indicates a point-to-multipoint node is configured.";
                    description
                      "Specify OSPF point-to-multipoint network";
                  }  // container point-to-multipoint
                }  // container network
    
                container external-out {
                  description
                    "Enable/Disable advertisement of intra-area prefixes as external";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable advertisement of intra-area routes as external";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable advertisement of intra-area routes as external";
                  }  // container disable
                }  // container external-out
    
                container summary-in {
                  description
                    "Enable/Disable advertisement of external prefixes as inter-area";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable advertisement of external prefixes as inter-area";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable advertisement of external prefixes as inter-area";
                  }  // container disable
                }  // container summary-in
    
                container adjacency {
                  description
                    "OSPF adjacency bring up";
                  container stagger {
                    description
                      "Stagger OSPF adjacency bring up";
                    container disable {
                      must
                        "not(../initial-number-of-neighbors)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable stagger OSPF adjacency bring up";
                    }  // container disable
    
                    leaf initial-number-of-neighbors {
                      type uint32 {
                        range "1..65535";
                      }
                      must "not(../disable)";
                      description
                        "Initial number of neighbors to bring up per area (default 2)";
                    }
    
                    leaf maximum-simultaneous-neighbors {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "../initial-number-of-neighbors";
                      description
                        "Maximum simultaneous neighbors to bring up (default 64)";
                    }
                  }  // container stagger
                }  // container adjacency
    
                container snmp {
                  description
                    "SNMP configuration";
                  leaf context {
                    type string {
                      length "1..32";
                      pattern "[a-zA-Z0-9*/_]+";
                    }
                    description
                      "Specified SNMP context for OSPF instance";
                  }
    
                  container trap {
                    description
                      "Adjust snmp trap parameters";
                    leaf rate-limit {
                      type uint32 {
                        range "2..60";
                      }
                      description
                        "Adjust trap rate-limit parameters";
                    }
    
                    leaf max-number-of-traps {
                      type uint32 {
                        range "0..300";
                      }
                      description
                        "Max number of traps sent in window time";
                    }
                  }  // container trap
                }  // container snmp
    
                container monitor-convergence {
                  presence
                    "Indicates a monitor-convergence node is configured.";
                  description
                    "Enables OSPF route convergence monitoring";
                  leaf prefix-list {
                    type string {
                      length "1..1024";
                    }
                    description
                      "Enables Individual Prefix Monitoring";
                  }
    
                  container track-summary-routes {
                    presence
                      "Indicates a track-summary-routes node is configured.";
                    description
                      "Enables Tracking Summary(Inter-Area) Prefix Monitoring";
                  }  // container track-summary-routes
    
                  container track-external-routes {
                    presence
                      "Indicates a track-external-routes node is configured.";
                    description
                      "Enables Tracking External(Type-5/7) Prefix Monitoring";
                  }  // container track-external-routes
    
                  container track-ip-frr {
                    presence
                      "Indicates a track-ip-frr node is configured.";
                    description
                      "Enables Tracking IP-Frr Convergence";
                  }  // container track-ip-frr
                }  // container monitor-convergence
    
                container ucmp {
                  description
                    "Unequal Cost Load Balancing";
                  container enable {
                    presence
                      "Indicates a ucmp node is configured.";
                    description "Enable ucmp";
                    leaf variance {
                      type uint32 {
                        range "101..10000";
                      }
                      default "200";
                      description
                        "Set the Variance for UCMP path metric";
                    }
    
                    leaf prefix-list {
                      type string {
                        length "1..1024";
                      }
                      description
                        "Filter prefixes for which UCMP path are calculated";
                    }
                  }  // container enable
    
                  container exclude {
                    description
                      "UCMP exclusion information";
                    container interfaces {
                      description
                        "Exclude an interface during UCMP computation";
                      list interface {
                        key "interface-name";
                        description
                          "Exclude an interface during UCMP computation";
                        leaf interface-name {
                          type xr:Interface-name;
                          description
                            "Exclude an interface during UCMP computation";
                        }
                      }  // list interface
                    }  // container interfaces
                  }  // container exclude
    
                  leaf delay-interval {
                    type uint32 {
                      range "1..5000";
                    }
                    description
                      "Interval between SPF and start of the UCMP calculation";
                  }
                }  // container ucmp
    
                container apply-weight {
                  description
                    "Enable weights configured under interfaces for load sharing";
                  leaf bandwidth {
                    type uint32 {
                      range "1..4294967";
                    }
                    description
                      "Use interface bandwidth when calculating weights";
                  }
    
                  leaf default-weight {
                    type uint32 {
                      range "1..16777214";
                    }
                    description
                      "Specify default weight value";
                  }
                }  // container apply-weight
    
                container srlg {
                  description
                    "Weighted SRLG configurations";
                  leaf admin-weight {
                    type uint32 {
                      range "0..65535";
                    }
                    description
                      "Default admin weight for all SRLG values";
                  }
    
                  container names {
                    description
                      "Weighted SRLG name configuration";
                    list name {
                      key "srlg-name";
                      description
                        "Weighted SRLG name configuration";
                      leaf srlg-name {
                        type xr:Cisco-ios-xr-string {
                          length "1..64";
                        }
                        description
                          "Weighted SRLG name configuration";
                      }
    
                      leaf admin-weight {
                        type uint32 {
                          range "0..65535";
                        }
                        description
                          "Default admin weight for all SRLG values";
                      }
                    }  // list name
                  }  // container names
                }  // container srlg
    
                container distribute {
                  description
                    "Enable Distribution of LSAs to external services";
                  container link-state {
                    presence
                      "Indicates a link-state node is configured.";
                    description
                      "Distribute the link-state database to external services";
                    leaf instance-id {
                      type uint32 {
                        range "0..4294967295";
                      }
                      description
                        "Set distribution process instance identifier";
                    }
    
                    leaf throttle {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "Throttle time between successive LSA updates";
                    }
                  }  // container link-state
                }  // container distribute
    
                container nsr {
                  presence
                    "Indicates a nsr node is configured.";
                  description
                    "Enable NSR for all VRFs in this process";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable NSR for all VRFs in this process";
                  }  // container disable
                }  // container nsr
    
                container trace {
                  description
                    "OSPF tracing options";
                  list size {
                    key "trace-buffer-name";
                    description
                      "Delete existing buffer and create one with N entries";
                    leaf trace-buffer-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..1024";
                      }
                      description
                        "Delete existing buffer and create one with N entries";
                    }
    
                    leaf trace-entry-size {
                      type enumeration {
                        enum "0" {
                          value 0;
                          description
                            "disable trace";
                        }
                        enum "256" {
                          value 256;
                          description
                            "trace entries";
                        }
                        enum "512" {
                          value 512;
                          description
                            "trace entries";
                        }
                        enum "1024" {
                          value 1024;
                          description
                            "trace entries";
                        }
                        enum "2048" {
                          value 2048;
                          description
                            "trace entries";
                        }
                        enum "4096" {
                          value 4096;
                          description
                            "trace entries";
                        }
                        enum "8192" {
                          value 8192;
                          description
                            "trace entries";
                        }
                        enum "16384" {
                          value 16384;
                          description
                            "trace entries";
                        }
                        enum "32768" {
                          value 32768;
                          description
                            "trace entries";
                        }
                        enum "65536" {
                          value 65536;
                          description
                            "trace entries";
                        }
                      }
                      description
                        "Number of trece entries";
                    }
                  }  // list size
                }  // container trace
    
                container protocol {
                  description
                    "Protocol specific configuration";
                  container shutdown {
                    presence
                      "Indicates a shutdown node is configured.";
                    description
                      "Shutdown the OSPF protocol";
                    container host-mode {
                      presence
                        "Indicates a host-mode node is configured.";
                      description
                        "Only traffic destined for this box allowed";
                    }  // container host-mode
    
                    container on-reload {
                      presence
                        "Indicates a on-reload node is configured.";
                      description
                        "Shutdown post reload only";
                    }  // container on-reload
                  }  // container shutdown
                }  // container protocol
    
                container vrfs {
                  description
                    "Enter the OSPF vrf configuration submode";
                  list vrf {
                    key "vrf-name";
                    description
                      "Name for this OSPF vrf";
                    leaf vrf-name {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "Name for this OSPF vrf";
                    }
    
                    container domain-id {
                      description
                        "Specify domain id";
                      leaf type {
                        type enumeration {
                          enum "0005" {
                            value 5;
                            description
                              " Type 0x0005";
                          }
                          enum "0105" {
                            value 261;
                            description
                              " Type 0x0105";
                          }
                          enum "0205" {
                            value 517;
                            description
                              " Type 0x0205";
                          }
                          enum "8005" {
                            value 32773;
                            description
                              " Type 0x8005";
                          }
                        }
                        description
                          "Primary OSPF domain ID type in Hex format";
                      }
    
                      leaf value {
                        type string {
                          length "1..1024";
                        }
                        description
                          "OSPF domain ID value in Hex format";
                      }
    
                      container secondaries {
                        description
                          "OSPF secondary domain-id";
                        list secondary {
                          key "type value";
                          description
                            "OSPF domain ID type in Hex format";
                          leaf type {
                            type enumeration {
                              enum "0005" {
                                value 5;
                                description
                                  " Type 0x0005";
                              }
                              enum "0105" {
                                value 261;
                                description
                                  " Type 0x0105";
                              }
                              enum "0205" {
                                value 517;
                                description
                                  " Type 0x0205";
                              }
                              enum "8005" {
                                value 32773;
                                description
                                  " Type 0x8005";
                              }
                            }
                            description
                              "OSPF domain ID type in Hex format";
                          }
    
                          leaf value {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "OSPF domain ID value in Hex format";
                          }
                        }  // list secondary
                      }  // container secondaries
                    }  // container domain-id
    
                    leaf domain-tag {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "OSPF domain tag";
                    }
    
                    container disable-dn-bit-check {
                      presence
                        "Indicates a disable-dn-bit-check node is configured.";
                      description
                        "Disable DN bit check";
                    }  // container disable-dn-bit-check
    
                    container log {
                      description
                        "Log ospf info";
                      container adjacency {
                        description
                          "Log adjacency state info";
                        container changes {
                          description
                            "Log changes";
                          container detail {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a detail node is configured.";
                            description
                              "Log all state changes";
                          }  // container detail
    
                          container disable {
                            must
                              "not(../detail)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable logging";
                          }  // container disable
                        }  // container changes
                      }  // container adjacency
                    }  // container log
    
                    leaf router-id {
                      type inet:ipv4-address-no-zone;
                      description
                        "configure this node";
                    }
    
                    container redistribute {
                      description
                        "Redistribute information from another routing protocol";
                      container connected {
                        presence
                          "Indicates a connected node is configured.";
                        description
                          "Connected routes";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container connected
    
                      container static {
                        presence
                          "Indicates a static node is configured.";
                        description
                          "Static routes";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container static
    
                      container dagr {
                        presence
                          "Indicates a dagr node is configured.";
                        description
                          "Directed-attached gateway redundancy (DAGR)";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container dagr
    
                      container subscriber {
                        presence
                          "Indicates a subscriber node is configured.";
                        description
                          "Subscriber routes";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container subscriber
    
                      container mobile {
                        presence
                          "Indicates a mobile node is configured.";
                        description
                          "Mobile routes";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container mobile
    
                      container applications {
                        description
                          "OnePK application routes";
                        list application {
                          key "application-name";
                          description
                            "OnePK application routes";
                          leaf application-name {
                            type xr:Cisco-ios-xr-string {
                              length "1..1024";
                            }
                            description
                              "OnePK application routes";
                          }
    
                          container metric {
                            description
                              "Metric for redistributed routes";
                            leaf default-metric {
                              type uint32 {
                                range
                                  "1..16777214";
                              }
                              description
                                "OSPF default metric";
                            }
    
                            container use-rib-metric {
                              presence
                                "Indicates a use-rib-metric node is configured.";
                              description
                                "Use metric from RIB";
                            }  // container use-rib-metric
                          }  // container metric
    
                          leaf tag {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Set tag for routes redistributed into OSPF";
                          }
    
                          leaf metric-type {
                            type enumeration {
                              enum "1" {
                                value 1;
                                description
                                  "Set OSPF External Type 1 metrics";
                              }
                              enum "2" {
                                value 2;
                                description
                                  "Set OSPF External Type 2 metrics";
                              }
                            }
                            description
                              "OSPF exterior metric type for redistributed routes";
                          }
    
                          container lsa-type {
                            description
                              "LSA type for redistributed routes";
                            container summary {
                              presence
                                "Indicates a summary node is configured.";
                              description
                                "LSA type 3";
                            }  // container summary
                          }  // container lsa-type
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Apply route-policy to redistribution";
                          }
    
                          container nssa-only {
                            presence
                              "Indicates a nssa-only node is configured.";
                            description
                              "Redistribute to NSSA areas only";
                          }  // container nssa-only
                        }  // list application
                      }  // container applications
    
                      list eigrp {
                        key "as-number";
                        description
                          "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                        leaf as-number {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Enhanced Interior Gateway Routing Protocol (EIGRP)";
                        }
    
                        container match {
                          description
                            "Redistribution of EIGRP routes";
                          container internal {
                            presence
                              "Indicates a internal node is configured.";
                            description
                              "Redistribute EIGRP internal routes";
                          }  // container internal
    
                          container external {
                            presence
                              "Indicates a external node is configured.";
                            description
                              "Redistribute EIGRP external routes";
                          }  // container external
                        }  // container match
    
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // list eigrp
    
                      container rip {
                        presence
                          "Indicates a rip node is configured.";
                        description
                          "Routing Information Protocol (RIP)";
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // container rip
    
                      container bgp {
                        description
                          "Border Gateway Protocol (BGP)";
                        list as {
                          key "as-number";
                          description
                            "bgp as-number";
                          leaf as-number {
                            type xr:Bgp-as-number;
                            description
                              "bgp as-number";
                          }
    
                          container preserve-med {
                            presence
                              "Indicates a preserve-med node is configured.";
                            description
                              "Preserve med of BGP routes";
                          }  // container preserve-med
    
                          container preserve-bgp-default-info {
                            presence
                              "Indicates a preserve-bgp-default-info node is configured.";
                            description
                              "Preserve metric and metric-type of BGP default route";
                          }  // container preserve-bgp-default-info
    
                          container metric {
                            description
                              "Metric for redistributed routes";
                            leaf default-metric {
                              type uint32 {
                                range
                                  "1..16777214";
                              }
                              description
                                "OSPF default metric";
                            }
    
                            container use-rib-metric {
                              presence
                                "Indicates a use-rib-metric node is configured.";
                              description
                                "Use metric from RIB";
                            }  // container use-rib-metric
                          }  // container metric
    
                          leaf tag {
                            type uint32 {
                              range
                                "0..4294967295";
                            }
                            description
                              "Set tag for routes redistributed into OSPF";
                          }
    
                          leaf metric-type {
                            type enumeration {
                              enum "1" {
                                value 1;
                                description
                                  "Set OSPF External Type 1 metrics";
                              }
                              enum "2" {
                                value 2;
                                description
                                  "Set OSPF External Type 2 metrics";
                              }
                            }
                            description
                              "OSPF exterior metric type for redistributed routes";
                          }
    
                          container lsa-type {
                            description
                              "LSA type for redistributed routes";
                            container summary {
                              presence
                                "Indicates a summary node is configured.";
                              description
                                "LSA type 3";
                            }  // container summary
                          }  // container lsa-type
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            description
                              "Apply route-policy to redistribution";
                          }
    
                          container nssa-only {
                            presence
                              "Indicates a nssa-only node is configured.";
                            description
                              "Redistribute to NSSA areas only";
                          }  // container nssa-only
                        }  // list as
                      }  // container bgp
    
                      list isis {
                        key "instance-name";
                        description "ISO IS-IS";
                        leaf instance-name {
                          type string {
                            length "1..1024";
                          }
                          description
                            "ISO IS-IS";
                        }
    
                        container level-1 {
                          presence
                            "Indicates a level-1 node is configured.";
                          description
                            "IS-IS level-1 routes only";
                        }  // container level-1
    
                        container level-2 {
                          presence
                            "Indicates a level-2 node is configured.";
                          description
                            "IS-IS level-2 routes only";
                        }  // container level-2
    
                        container level-1-2 {
                          presence
                            "Indicates a level-1-2 node is configured.";
                          description
                            "IS-IS level-1 and level-2 routes";
                        }  // container level-1-2
    
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // list isis
    
                      list ospf {
                        key "instance-name";
                        description
                          "Open Shortest Path First (OSPF)";
                        leaf instance-name {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Open Shortest Path First (OSPF)";
                        }
    
                        container match {
                          description
                            "Redistribution of OSPF routes";
                          container internal {
                            presence
                              "Indicates a internal node is configured.";
                            description
                              "Redistribute OSPF internal routes";
                          }  // container internal
    
                          container external {
                            presence
                              "Indicates a external node is configured.";
                            description
                              "Redistribute OSPF external routes";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute external type 1 routes";
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute external type 2 routes";
                            }  // container two
                          }  // container external
    
                          container nssa-external {
                            presence
                              "Indicates a nssa-external node is configured.";
                            description
                              "Redistribute OSPF NSSA external routes";
                            container one {
                              presence
                                "Indicates a one node is configured.";
                              description
                                "Redistribute NSSA external type 1 routes";
                            }  // container one
    
                            container two {
                              presence
                                "Indicates a two node is configured.";
                              description
                                "Redistribute NSSA external type 2 routes";
                            }  // container two
                          }  // container nssa-external
                        }  // container match
    
                        container metric {
                          description
                            "Metric for redistributed routes";
                          leaf default-metric {
                            type uint32 {
                              range
                                "1..16777214";
                            }
                            description
                              "OSPF default metric";
                          }
    
                          container use-rib-metric {
                            presence
                              "Indicates a use-rib-metric node is configured.";
                            description
                              "Use metric from RIB";
                          }  // container use-rib-metric
                        }  // container metric
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          description
                            "Set tag for routes redistributed into OSPF";
                        }
    
                        leaf metric-type {
                          type enumeration {
                            enum "1" {
                              value 1;
                              description
                                "Set OSPF External Type 1 metrics";
                            }
                            enum "2" {
                              value 2;
                              description
                                "Set OSPF External Type 2 metrics";
                            }
                          }
                          description
                            "OSPF exterior metric type for redistributed routes";
                        }
    
                        container lsa-type {
                          description
                            "LSA type for redistributed routes";
                          container summary {
                            presence
                              "Indicates a summary node is configured.";
                            description
                              "LSA type 3";
                          }  // container summary
                        }  // container lsa-type
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to redistribution";
                        }
    
                        container nssa-only {
                          presence
                            "Indicates a nssa-only node is configured.";
                          description
                            "Redistribute to NSSA areas only";
                        }  // container nssa-only
                      }  // list ospf
                    }  // container redistribute
    
                    container distribute-list {
                      presence
                        "Indicates a distribute-list node is configured.";
                      description
                        "Filter networks in routing updates";
                      container in {
                        description
                          "Filter incoming routing updates";
                        leaf access-list {
                          type string {
                            length "1..1024";
                          }
                          description
                            "In-bound access-list name";
                        }
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Route Policy to filter OSPF prefixes";
                        }
                      }  // container in
    
                      container out {
                        description
                          "Filter outgoing routing updates";
                        leaf access-list {
                          type string {
                            length "1..1024";
                          }
                          description
                            "access-list name";
                        }
    
                        container connected {
                          description
                            "Connected";
                          leaf access-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "access-list name";
                          }
                        }  // container connected
    
                        container static {
                          description
                            "Static routes";
                          leaf access-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "access-list name";
                          }
                        }  // container static
    
                        container dagr {
                          description
                            "Directed-attached gateway redundancy (DAGR)";
                          leaf access-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "access-list name";
                          }
                        }  // container dagr
    
                        container bgp {
                          description
                            "Border Gateway Protocol (BGP)";
                          leaf as {
                            type xr:Bgp-as-number;
                            description
                              "bgp as-number";
                          }
    
                          leaf access-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "access-list name";
                          }
                        }  // container bgp
    
                        container ospf {
                          description
                            "Open Shortest Path First (OSPF)";
                          leaf instance-name {
                            type string {
                              length "1..1024";
                            }
                          }
    
                          leaf access-list {
                            type string {
                              length "1..1024";
                            }
                            description
                              "access-list name";
                          }
                        }  // container ospf
                      }  // container out
                    }  // container distribute-list
    
                    leaf packet-size {
                      type uint32 {
                        range "576..10000";
                      }
                      description
                        "Customize size of OSPF packets upto MTU";
                    }
    
                    container bfd {
                      description
                        "Configure BFD parameters";
                      container fast-detect {
                        presence
                          "Indicates a fast-detect node is configured.";
                        description
                          "Enable Fast detection";
                        container strict-mode {
                          presence
                            "Indicates a strict-mode node is configured.";
                          description
                            "Hold down neighbor session until BFD session is up";
                        }  // container strict-mode
                      }  // container fast-detect
    
                      leaf minimum-interval {
                        type uint32 {
                          range "3..30000";
                        }
                        description
                          "Minimum interval";
                      }
    
                      leaf multiplier {
                        type uint32 {
                          range "2..50";
                        }
                        description
                          "Detect multiplier";
                      }
                    }  // container bfd
    
                    container security {
                      description
                        "Enable security";
                      container ttl {
                        presence
                          "Indicates a ttl node is configured.";
                        description
                          "Enable ttl security";
                        leaf hops {
                          type uint32 {
                            range "1..254";
                          }
                          description "IP hops";
                        }
                      }  // container ttl
                    }  // container security
    
                    container prefix-suppression {
                      description
                        "Suppress advertisement of the prefixes";
                      container enable {
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable primary address suppression";
                      }  // container enable
    
                      container secondary-address {
                        description
                          "Enable/Disable secondary address suppression";
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable secondary address suppression";
                        }  // container enable
                      }  // container secondary-address
                    }  // container prefix-suppression
    
                    container default-information {
                      description
                        "Control distribution of default information";
                      container originate {
                        presence
                          "Indicates a originate node is configured.";
                        description
                          "Distribute a default route";
                        container always {
                          presence
                            "Indicates a always node is configured.";
                          description
                            "Always advertise default route";
                        }  // container always
    
                        leaf metric {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "OSPF default metric";
                        }
    
                        leaf metric-type {
                          type uint32 {
                            range "1..2";
                          }
                          description
                            "OSPF metric type for default routes";
                        }
    
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Apply route-policy to default-information origination";
                        }
                      }  // container originate
                    }  // container default-information
    
                    leaf default-metric {
                      type uint32 {
                        range "1..16777214";
                      }
                      description
                        "Default metric";
                    }
    
                    container distance {
                      description
                        "Define an administrative distance";
                      container administrative-distance {
                        description
                          "Administrative distance";
                        leaf administrative-distance {
                          type uint32 {
                            range "1..255";
                          }
                          default "110";
                          description
                            "Administrative distance";
                        }
    
                        container source-addresses {
                          description
                            "Administrative distance source address";
                          list source-address {
                            key "address wildcard";
                            description
                              "source address";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP Source address";
                            }
    
                            leaf wildcard {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP wild card bits -- inverted mask";
                            }
    
                            leaf distance {
                              type uint32 {
                                range "1..255";
                              }
                              mandatory true;
                              description
                                "Administrative distance";
                            }
    
                            leaf access-list-name {
                              type string;
                              description
                                "Access Control List name";
                            }
                          }  // list source-address
                        }  // container source-addresses
                      }  // container administrative-distance
    
                      container ospf {
                        description
                          "OSPF distance";
                        leaf intra-area {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "Intra-area routes";
                        }
    
                        leaf inter-area {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "Inter-area routes";
                        }
    
                        leaf external {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "External type 5 and type 7 routes";
                        }
                      }  // container ospf
                    }  // container distance
    
                    container auto-cost {
                      description
                        "Calculate OSPF interface cost according to bandwidth";
                      leaf reference-bandwidth {
                        type uint32 {
                          range "1..4294967";
                        }
                        description
                          "Specify reference bandwidth for OSPF cost computations";
                      }
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Assign OSPF cost based on interface type";
                      }  // container disable
                    }  // container auto-cost
    
                    container ignore {
                      description
                        "Do not complain about specific event";
                      container lsa {
                        description
                          "Do not complain upon receiving LSA of the specified type";
                        container mospf {
                          presence
                            "Indicates a mospf node is configured.";
                          description
                            "MOSPF Type 6 LSA";
                        }  // container mospf
                      }  // container lsa
                    }  // container ignore
    
                    container capability {
                      description
                        "Enable specific OSPF feature";
                      container opaque {
                        description "Opaque LSA";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable Opaque LSA capability";
                        }  // container disable
                      }  // container opaque
    
                      container type7 {
                        description
                          "NSSA capability";
                        container prefer {
                          presence
                            "Indicates a prefer node is configured.";
                          description
                            "Prefer type7 externals over type5";
                        }  // container prefer
                      }  // container type7
    
                      container vrf-lite {
                        presence
                          "Indicates a vrf-lite node is configured.";
                        description
                          "Enable VRF-lite support";
                      }  // container vrf-lite
                    }  // container capability
    
                    container max-metric {
                      description
                        "Set maximum metric";
                      container router-lsa {
                        presence
                          "Indicates a router-lsa node is configured.";
                        description
                          "Maximum metric in self-originated router-LSAs";
                        container include-stub {
                          presence
                            "Indicates a include-stub node is configured.";
                          description
                            "Set maximum metric for stub links in router-LSAs";
                        }  // container include-stub
    
                        container summary-lsa {
                          presence
                            "Indicates a summary-lsa node is configured.";
                          description
                            "Overriding metric in summary-LSAs (default 16711680)";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Overriding metric in summary-LSAs (default 16711680)";
                          }
                        }  // container summary-lsa
    
                        container external-lsa {
                          presence
                            "Indicates a external-lsa node is configured.";
                          description
                            "Override external-lsa metric with max-metric value";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Override external-lsa metric with max-metric value";
                          }
                        }  // container external-lsa
                      }  // container router-lsa
    
                      container router-lsa-no-abr-off {
                        presence
                          "Indicates a no-abr-off node is configured.";
                        description
                          "Do not temporarily suspend ABR duties in max-metric mode";
                      }  // container router-lsa-no-abr-off
    
                      container router-lsa-on-startup {
                        description "On startup";
                        leaf originate-time {
                          type uint32 {
                            range "5..86400";
                          }
                          must
                            "not(../wait-for-bgp)";
                          description
                            "Time in seconds to originate router-LSA with max-metric";
                        }
    
                        container wait-for-bgp {
                          must
                            "not(../originate-time)";
                          presence
                            "Indicates a wait-for-bgp node is configured.";
                          description
                            "Let BGP decide when to originate router-LSA with normal metric";
                        }  // container wait-for-bgp
    
                        container include-stub {
                          presence
                            "Indicates a include-stub node is configured.";
                          description
                            "Set maximum metric for stub links in router-LSAs";
                        }  // container include-stub
    
                        container summary-lsa {
                          presence
                            "Indicates a summary-lsa node is configured.";
                          description
                            "Overriding metric in summary-LSAs (default 16711680)";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Overriding metric in summary-LSAs (default 16711680)";
                          }
                        }  // container summary-lsa
    
                        container external-lsa {
                          presence
                            "Indicates a external-lsa node is configured.";
                          description
                            "Override external-lsa metric with max-metric value";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Override external-lsa metric with max-metric value";
                          }
                        }  // container external-lsa
                      }  // container router-lsa-on-startup
    
                      container router-lsa-on-switchover {
                        description
                          "On switchover";
                        leaf originate-time {
                          type uint32 {
                            range "5..86400";
                          }
                          must
                            "not(../wait-for-bgp)";
                          description
                            "Time in seconds to originate router-LSA with max-metric";
                        }
    
                        container wait-for-bgp {
                          must
                            "not(../originate-time)";
                          presence
                            "Indicates a wait-for-bgp node is configured.";
                          description
                            "Let BGP decide when to originate router-LSA with normal metric";
                        }  // container wait-for-bgp
    
                        container include-stub {
                          presence
                            "Indicates a include-stub node is configured.";
                          description
                            "Set maximum metric for stub links in router-LSAs";
                        }  // container include-stub
    
                        container summary-lsa {
                          presence
                            "Indicates a summary-lsa node is configured.";
                          description
                            "Overriding metric in summary-LSAs (default 16711680)";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Overriding metric in summary-LSAs (default 16711680)";
                          }
                        }  // container summary-lsa
    
                        container external-lsa {
                          presence
                            "Indicates a external-lsa node is configured.";
                          description
                            "Override external-lsa metric with max-metric value";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Override external-lsa metric with max-metric value";
                          }
                        }  // container external-lsa
                      }  // container router-lsa-on-switchover
    
                      container router-lsa-on-proc-restart {
                        description
                          "On process restart";
                        leaf originate-time {
                          type uint32 {
                            range "5..86400";
                          }
                          must
                            "not(../wait-for-bgp)";
                          description
                            "Time in seconds to originate router-LSA with max-metric";
                        }
    
                        container wait-for-bgp {
                          must
                            "not(../originate-time)";
                          presence
                            "Indicates a wait-for-bgp node is configured.";
                          description
                            "Let BGP decide when to originate router-LSA with normal metric";
                        }  // container wait-for-bgp
    
                        container include-stub {
                          presence
                            "Indicates a include-stub node is configured.";
                          description
                            "Set maximum metric for stub links in router-LSAs";
                        }  // container include-stub
    
                        container summary-lsa {
                          presence
                            "Indicates a summary-lsa node is configured.";
                          description
                            "Overriding metric in summary-LSAs (default 16711680)";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Overriding metric in summary-LSAs (default 16711680)";
                          }
                        }  // container summary-lsa
    
                        container external-lsa {
                          presence
                            "Indicates a external-lsa node is configured.";
                          description
                            "Override external-lsa metric with max-metric value";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Override external-lsa metric with max-metric value";
                          }
                        }  // container external-lsa
                      }  // container router-lsa-on-proc-restart
    
                      container router-lsa-on-proc-migration {
                        description
                          "On process migration";
                        leaf originate-time {
                          type uint32 {
                            range "5..86400";
                          }
                          must
                            "not(../wait-for-bgp)";
                          description
                            "Time in seconds to originate router-LSA with max-metric";
                        }
    
                        container wait-for-bgp {
                          must
                            "not(../originate-time)";
                          presence
                            "Indicates a wait-for-bgp node is configured.";
                          description
                            "Let BGP decide when to originate router-LSA with normal metric";
                        }  // container wait-for-bgp
    
                        container include-stub {
                          presence
                            "Indicates a include-stub node is configured.";
                          description
                            "Set maximum metric for stub links in router-LSAs";
                        }  // container include-stub
    
                        container summary-lsa {
                          presence
                            "Indicates a summary-lsa node is configured.";
                          description
                            "Overriding metric in summary-LSAs (default 16711680)";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Overriding metric in summary-LSAs (default 16711680)";
                          }
                        }  // container summary-lsa
    
                        container external-lsa {
                          presence
                            "Indicates a external-lsa node is configured.";
                          description
                            "Override external-lsa metric with max-metric value";
                          leaf metric {
                            type uint32 {
                              range
                                "1..16777215";
                            }
                            description
                              "Override external-lsa metric with max-metric value";
                          }
                        }  // container external-lsa
                      }  // container router-lsa-on-proc-migration
                    }  // container max-metric
    
                    container max-lsa {
                      presence
                        "Indicates a max-lsa node is configured.";
                      description
                        "Maximum number of LSAs OSPF process will receive";
                      leaf max-lsa {
                        type uint32 {
                          range "1..4294967294";
                        }
                        mandatory true;
                        description
                          "Maximum number of LSAs OSPF process will receive";
                      }
    
                      leaf threshold {
                        type uint32 {
                          range "1..100";
                        }
                        description
                          "Threshold value (%) at which to generate a warning msg";
                      }
    
                      container warning-only {
                        presence
                          "Indicates a warning-only node is configured.";
                        description
                          "Only give warning message when limit is exceeded";
                      }  // container warning-only
    
                      leaf ignore-time {
                        type uint32 {
                          range "1..35791394";
                        }
                        must
                          "not(../warning-only)";
                        description
                          "time during which all adjacencies are suppressed";
                      }
    
                      leaf ignore-count {
                        type uint32 {
                          range "1..4294967294";
                        }
                        must
                          "not(../warning-only)";
                        description
                          "maximum number of times adjacencies can be suppressed";
                      }
    
                      leaf reset-time {
                        type uint32 {
                          range "2..71582788";
                        }
                        must
                          "not(../warning-only)";
                        description
                          "time after which ignore-count is reset to zero";
                      }
                    }  // container max-lsa
    
                    container timers {
                      description
                        "Adjust routing timers";
                      container throttle {
                        description
                          "OSPF throttle timers";
                        container spf {
                          presence
                            "Indicates a spf node is configured.";
                          description
                            "OSPF SPF throttle timers";
                          leaf initial-delay {
                            type uint32 {
                              range "1..600000";
                            }
                            mandatory true;
                            description
                              "OSPF SPF throttle timers";
                          }
    
                          leaf second-delay {
                            type uint32 {
                              range "1..600000";
                            }
                            mandatory true;
                            description
                              "Delay between first and second SPF calculation in milliseconds";
                          }
    
                          leaf maximum-delay {
                            type uint32 {
                              range "1..600000";
                            }
                            mandatory true;
                            description
                              "Maximum wait time in milliseconds for SPF calculations";
                          }
                        }  // container spf
    
                        container lsa {
                          description
                            "LSA throttle timers";
                          container all {
                            presence
                              "Indicates a all node is configured.";
                            description
                              "For all types of OSPF LSAs";
                            leaf initial-delay {
                              type uint32 {
                                range
                                  "0..600000";
                              }
                              mandatory true;
                              description
                                "For all types of OSPF LSAs";
                            }
    
                            leaf minimum-delay {
                              type uint32 {
                                range
                                  "1..600000";
                              }
                              mandatory true;
                              description
                                "Minimum delay between originating the same LSA in milliseconds";
                            }
    
                            leaf maximum-delay {
                              type uint32 {
                                range
                                  "1..600000";
                              }
                              mandatory true;
                              description
                                "Maximum delay between originating the same LSA in milliseconds";
                            }
                          }  // container all
                        }  // container lsa
    
                        leaf fast-reroute {
                          type uint32 {
                            range "50..600000";
                          }
                          description
                            "Fast-reroute throttle timer";
                        }
                      }  // container throttle
    
                      container lsa {
                        description
                          "OSPF global LSA timers";
                        leaf group-pacing {
                          type uint32 {
                            range "10..1800";
                          }
                          description
                            "OSPF LSA group pacing timer";
                        }
    
                        leaf min-arrival {
                          type uint32 {
                            range "0..600000";
                          }
                          description
                            "OSPF MinLSArrival timer";
                        }
    
                        leaf refresh {
                          type uint32 {
                            range "1800..2700";
                          }
                          description
                            "OSPF LSA refresh interval";
                        }
                      }  // container lsa
    
                      container pacing {
                        description
                          "OSPF pacing timers";
                        leaf flood {
                          type uint32 {
                            range "5..100";
                          }
                          description
                            "OSPF flood pacing timer";
                        }
                      }  // container pacing
                    }  // container timers
    
                    container nsf {
                      description
                        "Enable Cisco Non Stop Forwarding";
                      container cisco {
                        presence
                          "Indicates a cisco node is configured.";
                        description
                          "Enable Cisco Non Stop Forwarding";
                        container enforce {
                          description
                            "Cancel NSF restart when non-NSF-aware neighbors detected";
                          container global {
                            presence
                              "Indicates a global node is configured.";
                            description
                              "For the whole OSPF process";
                          }  // container global
                        }  // container enforce
                      }  // container cisco
    
                      leaf interval {
                        type uint32 {
                          range "90..3600";
                        }
                        description
                          "Minimum interval between NSF restarts (seconds)";
                      }
    
                      container ietf {
                        presence
                          "Indicates a ietf node is configured.";
                        description
                          "Enable ietf graceful restart";
                      }  // container ietf
    
                      container ietf-helper {
                        description
                          "router's helper support level";
                        container disable {
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "router's helper support disabled";
                        }  // container disable
                      }  // container ietf-helper
    
                      leaf lifetime {
                        type uint32 {
                          range "90..1800";
                        }
                        description
                          "Maximum route lifetime following restart (seconds)";
                      }
    
                      leaf flush-delay-time {
                        type uint32 {
                          range "1..3600";
                        }
                        description
                          "Maximum time allowed for external route learning (seconds)";
                      }
                    }  // container nsf
    
                    container address-family {
                      description
                        "OSPF address family";
                      container ipv4 {
                        presence
                          "Indicates a ipv4 node is configured.";
                        description
                          "IPV4 address family";
                        container unicast {
                          presence
                            "Indicates a unicast node is configured.";
                          description
                            "unicast topology";
                        }  // container unicast
                      }  // container ipv4
                    }  // container address-family
    
                    container maximum {
                      description
                        "Set OSPF limits";
                      leaf interfaces {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "Limit number of interfaces";
                      }
    
                      leaf paths {
                        type uint32 {
                          range "1..64";
                        }
                        description
                          "Limit number of paths";
                      }
    
                      container redistributed-prefixes {
                        presence
                          "Indicates a redistributed-prefixes node is configured.";
                        description
                          "Limit number of redistributed prefixes";
                        leaf prefixes {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          mandatory true;
                          description
                            "Limit number of redistributed prefixes";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..100";
                          }
                          description
                            "Threshold value (%) at which to generate a warning msg";
                        }
    
                        container warning-only {
                          presence
                            "Indicates a warning-only node is configured.";
                          description
                            "Only give warning messsage when limit is exceeded";
                        }  // container warning-only
                      }  // container redistributed-prefixes
                    }  // container maximum
    
                    container queue {
                      description
                        "Adjust OSPF input queue";
                      container limit {
                        description
                          "High watermark for incoming priority events";
                        leaf high {
                          type uint32 {
                            range "1000..30000";
                          }
                          description
                            "High watermark for incoming high priority events (hello)";
                        }
    
                        leaf medium {
                          type uint32 {
                            range "1000..30000";
                          }
                          description
                            "High watermark for incoming medium priority events (LSA ACK)";
                        }
    
                        leaf low {
                          type uint32 {
                            range "1000..30000";
                          }
                          description
                            "High watermark for incoming low priority events (DBD/LSUpd/Req)";
                        }
                      }  // container limit
    
                      container dispatch {
                        description
                          "Number of continuous events processed by type";
                        leaf incoming {
                          type uint32 {
                            range "30..3000";
                          }
                          description
                            "Number of continuous incoming events processed";
                        }
    
                        leaf rate-limited-lsa {
                          type uint32 {
                            range "30..3000";
                          }
                          description
                            "Number of rate-limited LSAs processed";
                        }
    
                        leaf flush-lsa {
                          type uint32 {
                            range "30..3000";
                          }
                          description
                            "Number of LSAs flushed";
                        }
    
                        leaf spf-lsa-limit {
                          type uint32 {
                            range "30..3000";
                          }
                          description
                            "Number of summary or external LSAs processed per run";
                        }
                      }  // container dispatch
                    }  // container queue
    
                    container summary-prefixes {
                      description
                        "Configure IP address summaries";
                      list summary-prefix {
                        key "address mask";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP summary prefix address";
                        }
    
                        leaf mask {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP smmary address mask";
                        }
    
                        container not-advertise {
                          must "not(../tag)";
                          presence
                            "Indicates a not-advertise node is configured.";
                          description
                            "Suppress routes that match the specified prefix/mask pair";
                        }  // container not-advertise
    
                        leaf tag {
                          type uint32 {
                            range
                              "0..4294967295";
                          }
                          must
                            "not(../not-advertise)";
                          description "Set tag";
                        }
                      }  // list summary-prefix
                    }  // container summary-prefixes
    
                    container spf {
                      description
                        "SPF configuration";
                      container prefix-priority {
                        description
                          "Configure SPF prefix priority route policy";
                        leaf route-policy {
                          type xr:Route-policy-name;
                          description
                            "Specify the route-policy to prioritize route install";
                        }
                      }  // container prefix-priority
                    }  // container spf
    
                    container fast-reroute {
                      description
                        "IP Fast Reroute";
                      container per-prefix {
                        description
                          "Per-prefix Computation";
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable per-prefix Computation";
                        }  // container enable
    
                        container priority-limit {
                          description
                            "Limit backup computation upto the prefix priority";
                          container critical {
                            must
                              "not(../high) and not(../medium)";
                            presence
                              "Indicates a critical node is configured.";
                            description
                              "Compute for critical priority prefixes only";
                          }  // container critical
    
                          container high {
                            must
                              "not(../critical) and not(../medium)";
                            presence
                              "Indicates a high node is configured.";
                            description
                              "Compute for critical & high priority prefixes ";
                          }  // container high
    
                          container medium {
                            must
                              "not(../high) and not(../critical)";
                            presence
                              "Indicates a medium node is configured.";
                            description
                              "Compute for critical, high & medium priority prefixes ";
                          }  // container medium
                        }  // container priority-limit
    
                        container tiebreaker {
                          description
                            "Configure tiebreaker for multiple backups";
                          container downstream {
                            description
                              "Prefer backup path via downstream node";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container downstream
    
                          container lc-disjoint {
                            description
                              "Prefer line card disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container lc-disjoint
    
                          container lowest-backup-metric {
                            description
                              "Prefer backup path with lowest total metric";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container lowest-backup-metric
    
                          container node-protecting {
                            description
                              "Prefer node protecting backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container node-protecting
    
                          container primary-path {
                            description
                              "Prefer backup path from ECMP set";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container primary-path
    
                          container secondary-path {
                            description
                              "Prefer non-ECMP backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container secondary-path
    
                          container interface-disjoint {
                            description
                              "Prefer Interface disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container interface-disjoint
    
                          container srlg-disjoint {
                            description
                              "Prefer SRLG disjoint backup path";
                            leaf index {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../disable)";
                              description
                                "Set preference order among tiebreakers";
                            }
    
                            container disable {
                              must
                                "not(../index)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable tiebreaker";
                            }  // container disable
                          }  // container srlg-disjoint
                        }  // container tiebreaker
    
                        container load-sharing {
                          description
                            "Load share prefixes across multiple backups";
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable load sharing";
                          }  // container disable
                        }  // container load-sharing
    
                        container exclude {
                          description
                            "Per-prefix LFA exclusion information";
                          container interfaces {
                            description
                              "Exclude an interface from Per-prefix LFA";
                            list interface {
                              key "interface-name";
                              description
                                "Exclude an interface from Per-prefix LFA";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Exclude an interface from Per-prefix LFA";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container exclude
    
                        container lfa-candidate {
                          description
                            "FRR LFA candidate information";
                          container interfaces {
                            description
                              "Include an interface to LFA candidate in computation";
                            list interface {
                              key "interface-name";
                              description
                                "Include an interface to LFA candidate in computation";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Include an interface to LFA candidate in computation";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container lfa-candidate
    
                        container use-candidate-only {
                          description
                            "Enable/Disable backup selection from candidate-list only";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable backup selection from candidate-list only";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable backup selection from candidate-list only";
                          }  // container disable
                        }  // container use-candidate-only
                      }  // container per-prefix
    
                      container per-link {
                        description
                          "Per-link Computation";
                        container enable {
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable per-link Computation";
                        }  // container enable
    
                        container priority-limit {
                          description
                            "Limit backup computation upto the prefix priority";
                          container critical {
                            must
                              "not(../high) and not(../medium)";
                            presence
                              "Indicates a critical node is configured.";
                            description
                              "Compute for critical priority prefixes only";
                          }  // container critical
    
                          container high {
                            must
                              "not(../critical) and not(../medium)";
                            presence
                              "Indicates a high node is configured.";
                            description
                              "Compute for critical & high priority prefixes ";
                          }  // container high
    
                          container medium {
                            must
                              "not(../high) and not(../critical)";
                            presence
                              "Indicates a medium node is configured.";
                            description
                              "Compute for critical, high & medium priority prefixes ";
                          }  // container medium
                        }  // container priority-limit
    
                        container exclude {
                          description
                            "Per-link LFA exclusion information";
                          container interfaces {
                            description
                              "Exclude an interface from Per-link LFA";
                            list interface {
                              key "interface-name";
                              description
                                "Exclude an interface from Per-link LFA";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Exclude an interface from Per-link LFA";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container exclude
    
                        container lfa-candidate {
                          description
                            "FRR LFA candidate information";
                          container interfaces {
                            description
                              "Include an interface to LFA candidate in computation";
                            list interface {
                              key "interface-name";
                              description
                                "Include an interface to LFA candidate in computation";
                              leaf interface-name {
                                type xr:Interface-name;
                                description
                                  "Include an interface to LFA candidate in computation";
                              }
                            }  // list interface
                          }  // container interfaces
                        }  // container lfa-candidate
    
                        container use-candidate-only {
                          description
                            "Enable/Disable backup selection from candidate-list only";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable backup selection from candidate-list only";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable backup selection from candidate-list only";
                          }  // container disable
                        }  // container use-candidate-only
                      }  // container per-link
    
                      container disable {
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable IP Fast Reroute";
                      }  // container disable
                    }  // container fast-reroute
    
                    container loopback {
                      description
                        "OSPF loopback configuration";
                      container stub-network {
                        description
                          "Advertise loopback as a stub network";
                        container enable {
                          must "not(../disable)";
                          presence
                            "Indicates a enable node is configured.";
                          description
                            "Enable advertising loopback as a stub network";
                        }  // container enable
    
                        container disable {
                          must "not(../enable)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable advertising loopback as a stub network";
                        }  // container disable
                      }  // container stub-network
                    }  // container loopback
    
                    container link-down {
                      description
                        "Configure interface down parameters";
                      container fast-detect {
                        presence
                          "Indicates a fast-detect node is configured.";
                        description
                          "Enable fast or early detection of link-down events";
                      }  // container fast-detect
                    }  // container link-down
    
                    leaf weight {
                      type uint32 {
                        range "1..16777214";
                      }
                      description
                        "Interface weight";
                    }
    
                    container delay {
                      description
                        "Delay configuration setting";
                      container normalize {
                        description
                          "Delay normalization setting";
                        leaf interval {
                          type uint32 {
                            range "1..16777215";
                          }
                          must "../offset";
                          description
                            "Normalization interval";
                        }
    
                        leaf offset {
                          type uint32 {
                            range "0..16777215";
                          }
                          must "../interval";
                          description
                            "Normalization offset";
                        }
                      }  // container normalize
                    }  // container delay
    
                    container microloop {
                      description
                        "Microloop configuration";
                      container avoidance {
                        presence
                          "Indicates a avoidance node is configured.";
                        description
                          "Avoid microloops";
                        container protected {
                          presence
                            "Indicates a protected node is configured.";
                          description
                            "Avoid microloops for protected prefixes only";
                        }  // container protected
    
                        container segment-routing {
                          presence
                            "Indicates a segment-routing node is configured.";
                          description
                            "Enable segment routing microloop avoidance";
                        }  // container segment-routing
                      }  // container avoidance
    
                      leaf avoidance-rib-update-delay {
                        type uint32 {
                          range "1..600000";
                        }
                        description
                          "Delay to introduce between SPF and RIB update";
                      }
                    }  // container microloop
    
                    container areas {
                      description
                        "Enter the OSPF area configuration submode";
                      list area {
                        key "area-id";
                        description
                          "Enter the OSPF area configuration submode";
                        leaf area-id {
                          type xr:Ospf-area-id;
                          description
                            "Enter the OSPF area configuration submode";
                        }
    
                        container ranges {
                          description
                            "Summarize routes matching address/mask (border routers only)";
                          list range {
                            key "address mask";
                            description
                              "Summarize routes matching address/mask (border routers only)";
                            leaf address {
                              type inet:ipv4-address-no-zone;
                              must
                                "(../advertise and not(../not-advertise)) or (../not-advertise and not(../advertise))";
                              description
                                "IP address";
                            }
    
                            leaf mask {
                              type inet:ipv4-address-no-zone;
                              description
                                "IP address mask";
                            }
    
                            container advertise {
                              presence
                                "Indicates a advertise node is configured.";
                              description
                                "Advertise this range (default)";
                            }  // container advertise
    
                            container not-advertise {
                              presence
                                "Indicates a not-advertise node is configured.";
                              description
                                "DoNotAdvertise this range";
                            }  // container not-advertise
                          }  // list range
                        }  // container ranges
    
                        leaf default-cost {
                          type uint32 {
                            range "1..16777215";
                          }
                          description
                            "Set the summary default-cost of a NSSA/stub area";
                        }
    
                        container stub {
                          presence
                            "Indicates a stub node is configured.";
                          description
                            "Specify the area as a stub area";
                          container no-summary {
                            presence
                              "Indicates a no-summary node is configured.";
                            description
                              "Do not send summary LSA into stub area";
                          }  // container no-summary
                        }  // container stub
    
                        container nssa {
                          presence
                            "Indicates a nssa node is configured.";
                          description
                            "Specify area as a NSSA area";
                          container no-redistribution {
                            presence
                              "Indicates a no-redistribution node is configured.";
                            description
                              "No redistribution into this NSSA area";
                          }  // container no-redistribution
    
                          container default-information-originate {
                            presence
                              "Indicates a default-information-originate node is configured.";
                            description
                              "Originate Type 7 default into NSSA area";
                            leaf metric {
                              type uint32 {
                                range
                                  "1..16777214";
                              }
                              description
                                "OSPF default metric";
                            }
    
                            leaf metric-type {
                              type uint32 {
                                range "1..2";
                              }
                              description
                                "OSPF metric type for default routes";
                            }
                          }  // container default-information-originate
    
                          container no-summary {
                            presence
                              "Indicates a no-summary node is configured.";
                            description
                              "Do not send summary LSA into NSSA";
                          }  // container no-summary
                        }  // container nssa
    
                        container nssa-translate {
                          description
                            "Translate NSSA LSA";
                          container type7 {
                            description
                              "Translate type 7 to type 5";
                            container always {
                              presence
                                "Indicates a always node is configured.";
                              description
                                "Always translate NSSA LSAs on this ABR";
                            }  // container always
                          }  // container type7
                        }  // container nssa-translate
    
                        container route-policy {
                          description
                            "Specify the route-policy to filter type 3 LSAs";
                          leaf in {
                            type xr:Route-policy-name;
                            description
                              "route-policy to filter inbound";
                          }
    
                          leaf out {
                            type xr:Route-policy-name;
                            description
                              "route-policy to filter outbound";
                          }
                        }  // container route-policy
    
                        container external-out {
                          description
                            "Enable/Disable advertisement of intra-area prefixes as external";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable advertisement of intra-area routes as external";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable advertisement of intra-area routes as external";
                          }  // container disable
                        }  // container external-out
    
                        container summary-in {
                          description
                            "Enable/Disable advertisement of external prefixes as inter-area";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable advertisement of external prefixes as inter-area";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable advertisement of external prefixes as inter-area";
                          }  // container disable
                        }  // container summary-in
    
                        container interfaces {
                          description
                            "Enable routing on an interface ";
                          list interface {
                            key "interface-name";
                            description
                              "Enable routing on an interface ";
                            leaf interface-name {
                              type xr:Interface-name;
                              description
                                "Enable routing on an interface ";
                            }
    
                            container neighbors {
                              description
                                "Specify a neighbor router";
                              list neighbor {
                                key "neighbor-address";
                                description
                                  "Specify a neighbor router";
                                leaf neighbor-address {
                                  type inet:ipv4-address-no-zone;
                                  description
                                    "Specify a neighbor router";
                                }
    
                                container database-filter {
                                  description
                                    "Filter OSPF LSA during synchronization and flooding for point-to-multipoint neighbor";
                                  container all {
                                    description
                                      "Filter all LSA";
                                    container out {
                                      presence
                                        "Indicates a out node is configured.";
                                      description
                                        "Outgoing LSA";
                                    }  // container out
                                  }  // container all
                                }  // container database-filter
    
                                leaf priority {
                                  type uint32 {
                                    range
                                      "0..255";
                                  }
                                  description
                                    "OSPF priority of non-broadcast neighbor";
                                }
    
                                leaf poll-interval {
                                  type uint32 {
                                    range
                                      "0..65535";
                                  }
                                  description
                                    "OSPF dead-router polling interval";
                                }
    
                                leaf cost {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  description
                                    "OSPF cost for point-to-multipoint neighbor";
                                }
                              }  // list neighbor
                            }  // container neighbors
    
                            container authentication-key {
                              description
                                "Authentication password (key)";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container authentication-key
    
                            container message-digest-keys {
                              description
                                "Message digest authentication password (key)";
                              list message-digest-key {
                                key "message-digest-key-id";
                                description
                                  "Message digest authentication password (key)";
                                leaf message-digest-key-id {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  description
                                    "Message digest authentication password (key)";
                                }
    
                                container md5 {
                                  description
                                    "Use MD5 algorithm";
                                  leaf encrypted {
                                    type xr:Proprietary-password;
                                    mandatory
                                      true;
                                    description
                                      "Specifies an ENCRYPTED password (key) will follow";
                                  }
                                }  // container md5
                              }  // list message-digest-key
                            }  // container message-digest-keys
    
                            container authentication {
                              presence
                                "Indicates a authentication node is configured.";
                              description
                                "Enable authentication";
                              container message-digest {
                                must
                                  "not(../null or ../keychain)";
                                presence
                                  "Indicates a message-digest node is configured.";
                                description
                                  "Use message-digest authentication";
                              }  // container message-digest
    
                              container keychain {
                                must
                                  "../keychain-name";
                                presence
                                  "Indicates a keychain node is configured.";
                                description
                                  "Use keychain";
                              }  // container keychain
    
                              leaf keychain-name {
                                type string {
                                  length "1..32";
                                }
                                must
                                  "(../message-digest or ../keychain) and not(../null)";
                                description
                                  "Specify keychain name";
                              }
    
                              container null {
                                must
                                  "not(../message-digest or ../keychain)";
                                presence
                                  "Indicates a null node is configured.";
                                description
                                  "Use no authentication";
                              }  // container null
                            }  // container authentication
    
                            container network {
                              description
                                "Network type";
                              container broadcast {
                                presence
                                  "Indicates a broadcast node is configured.";
                                description
                                  "Specify OSPF broadcast multi-access network";
                              }  // container broadcast
    
                              container non-broadcast {
                                presence
                                  "Indicates a non-broadcast node is configured.";
                                description
                                  "Specify OSPF NBMA network";
                              }  // container non-broadcast
    
                              container point-to-point {
                                presence
                                  "Indicates a point-to-point node is configured.";
                                description
                                  "Specify OSPF point-to-point network";
                              }  // container point-to-point
    
                              container point-to-multipoint {
                                presence
                                  "Indicates a point-to-multipoint node is configured.";
                                description
                                  "Specify OSPF point-to-multipoint network";
                              }  // container point-to-multipoint
                            }  // container network
    
                            container mpls {
                              description
                                "Configure MPLS routing protocol parameters";
                              container ldp {
                                description
                                  "Configure LDP parameters";
                                container sync {
                                  presence
                                    "Indicates a sync node is configured.";
                                  description
                                    "Enable LDP IGP synchronization on interfaces";
                                  container disable {
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable MPLS LDP sync";
                                  }  // container disable
                                }  // container sync
                              }  // container ldp
                            }  // container mpls
    
                            leaf cost {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Interface cost";
                            }
    
                            container cost-fallback {
                              presence
                                "Indicates a cost-fallback node is configured.";
                              description
                                "Cost when cumulative bandwidth goes below the theshold";
                              leaf cost {
                                type uint32 {
                                  range
                                    "1..65535";
                                }
                                must
                                  "(../threshold)";
                                description
                                  "Cost when cumulative bandwidth goes below the theshold";
                              }
    
                              leaf threshold {
                                type uint32 {
                                  range
                                    "1..4294967";
                                }
                                must "(../cost)";
                                description
                                  "Threshold bandwidth when cost-fallback is applied";
                              }
    
                              container anomaly {
                                description
                                  "Penalty when a delay or loss is notified";
                                container delay {
                                  description
                                    "Penalty when a delay is notified";
                                  container igp-metric {
                                    description
                                      "Penalty on IGP metric";
                                    leaf increment {
                                      type uint32 {
                                        range
                                          "1..65534";
                                      }
                                      must
                                        "not(../multiplier or ../value
                                       or ../disable)";
                                      description
                                        "Increment the IGP cost by the specified value";
                                    }
    
                                    leaf multiplier {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../increment or ../value
                                       or ../disable)";
                                      description
                                        "Multiply the IGP cost by the specified value";
                                    }
    
                                    leaf value {
                                      type uint32 {
                                        range
                                          "1..65535";
                                      }
                                      must
                                        "not(../increment or ../multiplier
                                       or ../disable)";
                                      description
                                        "Set the IGP cost to the specified value";
                                    }
    
                                    container disable {
                                      must
                                        "not(../increment or ../multiplier
                                       or ../value)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable igp-metric";
                                    }  // container disable
                                  }  // container igp-metric
    
                                  container te-metric {
                                    description
                                      "Penalty on TE metric";
                                    leaf increment {
                                      type uint32 {
                                        range
                                          "1..4294967294";
                                      }
                                      must
                                        "not(../multiplier or ../value
                                       or ../disable)";
                                      description
                                        "Increment the TE metric by the specified value";
                                    }
    
                                    leaf multiplier {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../increment or ../value
                                       or ../disable)";
                                      description
                                        "Multiply the TE metric by the specified value";
                                    }
    
                                    leaf value {
                                      type uint32 {
                                        range
                                          "1..4294967295";
                                      }
                                      must
                                        "not(../increment or ../multiplier
                                       or ../disable)";
                                      description
                                        "Set the TE cost to the specified value";
                                    }
    
                                    container disable {
                                      must
                                        "not(../increment or ../multiplier
                                       or ../value)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable te-metric";
                                    }  // container disable
                                  }  // container te-metric
                                }  // container delay
                              }  // container anomaly
                            }  // container cost-fallback
    
                            leaf hello-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Time between HELLO packets";
                            }
    
                            leaf dead-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../dead-interval-minimal-hello-multiplier)";
                              description
                                "Seconds";
                            }
    
                            leaf dead-interval-minimal-hello-multiplier {
                              type uint32 {
                                range "3..20";
                              }
                              must
                                "not(../dead-interval)";
                              description
                                "Set multiplier for Hellos";
                            }
    
                            leaf priority {
                              type uint32 {
                                range "0..255";
                              }
                              description
                                "Router priority";
                            }
    
                            leaf retransmit-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Time between retransmitting lost link state advertisements";
                            }
    
                            leaf transmit-delay {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Estimated time needed to send link-state update packet";
                            }
    
                            container flood-reduction {
                              description
                                "OSPF Flood Reduction";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable flooding reduction";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable flooding reduction";
                              }  // container disable
                            }  // container flood-reduction
    
                            container demand-circuit {
                              description
                                "Enable/Disable demand circuits";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable demand circuits";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable demand circuits";
                              }  // container disable
                            }  // container demand-circuit
    
                            container mtu-ignore {
                              description
                                "Enable/Disable ignoring of MTU in DBD packets";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Ignores the MTU in DBD packets";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable ignoring of MTU in DBD packets";
                              }  // container disable
                            }  // container mtu-ignore
    
                            container database-filter {
                              description
                                "Filter OSPF LSA during synchronization and flooding";
                              container all {
                                description
                                  "Filter all LSA";
                                container out {
                                  description
                                    "Outgoing LSA";
                                  container enable {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a enable node is configured.";
                                    description
                                      "Enable filtering";
                                  }  // container enable
    
                                  container disable {
                                    must
                                      "not(../enable)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable filtering";
                                  }  // container disable
                                }  // container out
                              }  // container all
                            }  // container database-filter
    
                            container passive {
                              description
                                "Enable/Disable passive";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable passive";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable passive";
                              }  // container disable
                            }  // container passive
    
                            container distribute-list {
                              description
                                "Filter networks in routing updates";
                              leaf access-list {
                                type string;
                                must
                                  "not(../route-policy)";
                                description
                                  "In-bound access-list name.";
                              }
    
                              leaf route-policy {
                                type xr:Route-policy-name;
                                must
                                  "not(../access-list)";
                                description
                                  "Route Policy to filter OSPF prefixes";
                              }
                            }  // container distribute-list
    
                            leaf packet-size {
                              type uint32 {
                                range
                                  "576..10000";
                              }
                              description
                                "Customize size of OSPF packets upto MTU";
                            }
    
                            container bfd {
                              description
                                "Configure BFD parameters";
                              container fast-detect {
                                must
                                  "not(strict-mode and disable)";
                                presence
                                  "Indicates a fast-detect node is configured.";
                                description
                                  "Enable Fast detection";
                                container strict-mode {
                                  presence
                                    "Indicates a strict-mode node is configured.";
                                  description
                                    "Hold down neighbor session until BFD session is up";
                                }  // container strict-mode
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Prevent bfd settings from being inherited from the parent";
                                }  // container disable
                              }  // container fast-detect
    
                              leaf minimum-interval {
                                type uint32 {
                                  range
                                    "3..30000";
                                }
                                description
                                  "Minimum interval";
                              }
    
                              leaf multiplier {
                                type uint32 {
                                  range "2..50";
                                }
                                description
                                  "Detect multiplier";
                              }
                            }  // container bfd
    
                            container security {
                              description
                                "Enable security";
                              container ttl {
                                must
                                  "not(hops and disable)";
                                presence
                                  "Indicates a ttl node is configured.";
                                description
                                  "Enable ttl security";
                                leaf hops {
                                  type uint32 {
                                    range
                                      "1..254";
                                  }
                                  description
                                    "IP hops";
                                }
    
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable TTL security";
                                }  // container disable
                              }  // container ttl
                            }  // container security
    
                            container prefix-suppression {
                              description
                                "Suppress advertisement of the prefixes";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable primary address suppression";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable primary address suppression";
                              }  // container disable
    
                              container secondary-address {
                                description
                                  "Enable/Disable secondary address suppression";
                                container enable {
                                  must
                                    "not(../disable)";
                                  presence
                                    "Indicates a enable node is configured.";
                                  description
                                    "Enable secondary address suppression";
                                }  // container enable
    
                                container disable {
                                  must
                                    "not(../enable)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable secondary address suppression";
                                }  // container disable
                              }  // container secondary-address
                            }  // container prefix-suppression
    
                            container fast-reroute {
                              description
                                "IP Fast Reroute";
                              container per-link {
                                description
                                  "Per-link Computation";
                                container enable {
                                  presence
                                    "Indicates a enable node is configured.";
                                  description
                                    "Enable per-link Computation";
                                }  // container enable
    
                                container exclude {
                                  description
                                    "Per-link LFA exclusion information";
                                  container interfaces {
                                    description
                                      "Exclude an interface from Per-link LFA";
                                    list interface {
                                      key "interface-name";
                                      description
                                        "Exclude an interface from Per-link LFA";
                                      leaf interface-name {
                                        type xr:Interface-name;
                                        description
                                          "Exclude an interface from Per-link LFA";
                                      }
                                    }  // list interface
                                  }  // container interfaces
                                }  // container exclude
    
                                container lfa-candidate {
                                  description
                                    "FRR LFA candidate information";
                                  container interfaces {
                                    description
                                      "Include an interface to LFA candidate in computation";
                                    list interface {
                                      key "interface-name";
                                      description
                                        "Include an interface to LFA candidate in computation";
                                      leaf interface-name {
                                        type xr:Interface-name;
                                        description
                                          "Include an interface to LFA candidate in computation";
                                      }
                                    }  // list interface
                                  }  // container interfaces
                                }  // container lfa-candidate
    
                                container use-candidate-only {
                                  description
                                    "Enable/Disable backup selection from candidate-list only";
                                  container enable {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a enable node is configured.";
                                    description
                                      "Enable backup selection from candidate-list only";
                                  }  // container enable
    
                                  container disable {
                                    must
                                      "not(../enable)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable backup selection from candidate-list only";
                                  }  // container disable
                                }  // container use-candidate-only
                              }  // container per-link
    
                              container per-prefix {
                                description
                                  "Per-prefix Computation";
                                container enable {
                                  presence
                                    "Indicates a enable node is configured.";
                                  description
                                    "Enable per-prefix Computation";
                                }  // container enable
    
                                container exclude {
                                  description
                                    "Per-prefix LFA exclusion information";
                                  container interfaces {
                                    description
                                      "Exclude an interface from Per-prefix LFA";
                                    list interface {
                                      key "interface-name";
                                      description
                                        "Exclude an interface from Per-prefix LFA";
                                      leaf interface-name {
                                        type xr:Interface-name;
                                        description
                                          "Exclude an interface from Per-prefix LFA";
                                      }
                                    }  // list interface
                                  }  // container interfaces
                                }  // container exclude
    
                                container lfa-candidate {
                                  description
                                    "FRR LFA candidate information";
                                  container interfaces {
                                    description
                                      "Include an interface to LFA candidate in computation";
                                    list interface {
                                      key "interface-name";
                                      description
                                        "Include an interface to LFA candidate in computation";
                                      leaf interface-name {
                                        type xr:Interface-name;
                                        description
                                          "Include an interface to LFA candidate in computation";
                                      }
                                    }  // list interface
                                  }  // container interfaces
                                }  // container lfa-candidate
    
                                container use-candidate-only {
                                  description
                                    "Enable/Disable backup selection from candidate-list only";
                                  container enable {
                                    must
                                      "not(../disable)";
                                    presence
                                      "Indicates a enable node is configured.";
                                    description
                                      "Enable backup selection from candidate-list only";
                                  }  // container enable
    
                                  container disable {
                                    must
                                      "not(../enable)";
                                    presence
                                      "Indicates a disable node is configured.";
                                    description
                                      "Disable backup selection from candidate-list only";
                                  }  // container disable
                                }  // container use-candidate-only
    
                                container tiebreaker {
                                  description
                                    "Configure tiebreaker for multiple backups";
                                  container downstream {
                                    description
                                      "Prefer backup path via downstream node";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container downstream
    
                                  container lc-disjoint {
                                    description
                                      "Prefer line card disjoint backup path";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container lc-disjoint
    
                                  container lowest-backup-metric {
                                    description
                                      "Prefer backup path with lowest total metric";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container lowest-backup-metric
    
                                  container node-protecting {
                                    description
                                      "Prefer node protecting backup path";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container node-protecting
    
                                  container primary-path {
                                    description
                                      "Prefer backup path from ECMP set";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container primary-path
    
                                  container secondary-path {
                                    description
                                      "Prefer non-ECMP backup path";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container secondary-path
    
                                  container interface-disjoint {
                                    description
                                      "Prefer Interface disjoint backup path";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container interface-disjoint
    
                                  container srlg-disjoint {
                                    description
                                      "Prefer SRLG disjoint backup path";
                                    leaf index {
                                      type uint32 {
                                        range
                                          "1..255";
                                      }
                                      must
                                        "not(../disable)";
                                      description
                                        "Set preference order among tiebreakers";
                                    }
    
                                    container disable {
                                      must
                                        "not(../index)";
                                      presence
                                        "Indicates a disable node is configured.";
                                      description
                                        "Disable tiebreaker";
                                    }  // container disable
                                  }  // container srlg-disjoint
                                }  // container tiebreaker
                              }  // container per-prefix
    
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable IP Fast Reroute";
                              }  // container disable
                            }  // container fast-reroute
    
                            container loopback {
                              description
                                "OSPF loopback configuration";
                              container stub-network {
                                description
                                  "Advertise loopback as a stub network";
                                container enable {
                                  must
                                    "not(../disable)";
                                  presence
                                    "Indicates a enable node is configured.";
                                  description
                                    "Enable advertising loopback as a stub network";
                                }  // container enable
    
                                container disable {
                                  must
                                    "not(../enable)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable advertising loopback as a stub network";
                                }  // container disable
                              }  // container stub-network
                            }  // container loopback
    
                            container link-down {
                              description
                                "Configure interface down parameters";
                              container fast-detect {
                                presence
                                  "Indicates a fast-detect node is configured.";
                                description
                                  "Enable fast or early detection of link-down events";
                                container disable {
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable fast or early detection of link-down events";
                                }  // container disable
                              }  // container fast-detect
                            }  // container link-down
    
                            container prefix-sid {
                              tailf:dependency "../interface-name";
                              when
                                "../interface-name[starts-with(text(),'Loopback')]";
                              description
                                "Prefix SID Configuration";
                              container index {
                                presence
                                  "Indicates a index node is configured.";
                                description
                                  "SID Index";
                                leaf sid-index {
                                  type uint32 {
                                    range
                                      "0..1048575";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "SID Index";
                                }
    
                                container explicit-null {
                                  presence
                                    "Indicates a explicit-null node is configured.";
                                  description
                                    "Force penultimate hop to send explicit-null label";
                                }  // container explicit-null
    
                                container n-flag-clear {
                                  presence
                                    "Indicates a n-flag-clear node is configured.";
                                  description
                                    "Not a node SID (e.g. for anycast SID use)";
                                }  // container n-flag-clear
                              }  // container index
    
                              container absolute {
                                presence
                                  "Indicates a absolute node is configured.";
                                description
                                  "SID value";
                                leaf sid-label {
                                  type uint32 {
                                    range
                                      "16000..1048575";
                                  }
                                  mandatory
                                    true;
                                  description
                                    "SID value";
                                }
    
                                container explicit-null {
                                  presence
                                    "Indicates a explicit-null node is configured.";
                                  description
                                    "Force penultimate hop to send explicit-null label";
                                }  // container explicit-null
    
                                container n-flag-clear {
                                  presence
                                    "Indicates a n-flag-clear node is configured.";
                                  description
                                    "Not a node SID (e.g. for anycast SID use)";
                                }  // container n-flag-clear
                              }  // container absolute
    
                              container strict-spf {
                                description
                                  "Strict-SPF Prefix SID Configuration";
                                container index {
                                  must
                                    "not(../absolute)";
                                  presence
                                    "Indicates a index node is configured.";
                                  description
                                    "SID Index";
                                  leaf sid-index {
                                    type uint32 {
                                      range
                                        "0..1048575";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "SID Index";
                                  }
    
                                  container explicit-null {
                                    presence
                                      "Indicates a explicit-null node is configured.";
                                    description
                                      "Force penultimate hop to send explicit-null label";
                                  }  // container explicit-null
    
                                  container n-flag-clear {
                                    presence
                                      "Indicates a n-flag-clear node is configured.";
                                    description
                                      "Not a node SID (e.g. for anycast SID use)";
                                  }  // container n-flag-clear
                                }  // container index
    
                                container absolute {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a absolute node is configured.";
                                  description
                                    "SID value";
                                  leaf sid-label {
                                    type uint32 {
                                      range
                                        "16000..1048575";
                                    }
                                    mandatory
                                      true;
                                    description
                                      "SID value";
                                  }
    
                                  container explicit-null {
                                    presence
                                      "Indicates a explicit-null node is configured.";
                                    description
                                      "Force penultimate hop to send explicit-null label";
                                  }  // container explicit-null
    
                                  container n-flag-clear {
                                    presence
                                      "Indicates a n-flag-clear node is configured.";
                                    description
                                      "Not a node SID (e.g. for anycast SID use)";
                                  }  // container n-flag-clear
                                }  // container absolute
                              }  // container strict-spf
    
                              container algorithms {
                                description
                                  "Algorithm Specific Prefix SID Configuration";
                                list algorithm {
                                  must
                                    "index or absolute";
                                  key "algorithm-number";
                                  description
                                    "Algorithm Specific Prefix SID Configuration";
                                  leaf algorithm-number {
                                    type uint32 {
                                      range
                                        "128..255";
                                    }
                                    description
                                      "Algorithm Specific Prefix SID Configuration";
                                  }
    
                                  container index {
                                    presence
                                      "Indicates a index node is configured.";
                                    description
                                      "SID Index";
                                    leaf sid-index {
                                      type uint32 {
                                        range
                                          "0..1048575";
                                      }
                                      mandatory
                                        true;
                                      description
                                        "SID Index";
                                    }
    
                                    container explicit-null {
                                      presence
                                        "Indicates a explicit-null node is configured.";
                                      description
                                        "Force penultimate hop to send explicit-null label";
                                    }  // container explicit-null
    
                                    container n-flag-clear {
                                      presence
                                        "Indicates a n-flag-clear node is configured.";
                                      description
                                        "Not a node SID (e.g. for anycast SID use)";
                                    }  // container n-flag-clear
                                  }  // container index
    
                                  container absolute {
                                    presence
                                      "Indicates a absolute node is configured.";
                                    description
                                      "SID value";
                                    leaf sid-label {
                                      type uint32 {
                                        range
                                          "16000..1048575";
                                      }
                                      mandatory
                                        true;
                                      description
                                        "SID value";
                                    }
    
                                    container explicit-null {
                                      presence
                                        "Indicates a explicit-null node is configured.";
                                      description
                                        "Force penultimate hop to send explicit-null label";
                                    }  // container explicit-null
    
                                    container n-flag-clear {
                                      presence
                                        "Indicates a n-flag-clear node is configured.";
                                      description
                                        "Not a node SID (e.g. for anycast SID use)";
                                    }  // container n-flag-clear
                                  }  // container absolute
                                }  // list algorithm
                              }  // container algorithms
                            }  // container prefix-sid
    
                            container adjacency-sid {
                              description
                                "Adjacency SID Configuration";
                              container indexes {
                                description
                                  "SID Index";
                                list index {
                                  key "sid-index";
                                  description
                                    "SID Index";
                                  leaf sid-index {
                                    type uint32 {
                                      range
                                        "0..1048575";
                                    }
                                    description
                                      "SID Index";
                                  }
    
                                  container protected {
                                    presence
                                      "Indicates a protected node is configured.";
                                    description
                                      "Protect the static adjacency SID";
                                  }  // container protected
    
                                  leaf neighbor-address {
                                    type inet:ipv4-address-no-zone;
                                    description
                                      "Provide Neighbor IP address associated with this SID";
                                  }
                                }  // list index
                              }  // container indexes
    
                              container absolutes {
                                description
                                  "SID value";
                                list absolute {
                                  key "sid-label";
                                  description
                                    "SID value";
                                  leaf sid-label {
                                    type uint32 {
                                      range
                                        "15000..1048575";
                                    }
                                    description
                                      "SID value";
                                  }
    
                                  container protected {
                                    presence
                                      "Indicates a protected node is configured.";
                                    description
                                      "Protect the static adjacency SID";
                                  }  // container protected
    
                                  leaf neighbor-address {
                                    type inet:ipv4-address-no-zone;
                                    description
                                      "Provide Neighbor IP address associated with this SID";
                                  }
                                }  // list absolute
                              }  // container absolutes
                            }  // container adjacency-sid
    
                            leaf weight {
                              type uint32 {
                                range
                                  "1..16777214";
                              }
                              description
                                "Interface weight";
                            }
    
                            container advertise {
                              tailf:dependency "../interface-name";
                              when
                                "../interface-name[starts-with(text(),'Loopback')]";
                              description
                                "Conditionally advertise";
                              container prefix {
                                description
                                  "Conditionally advertise this prefix";
                                leaf route-policy {
                                  type xr:Route-policy-name;
                                  description
                                    "Specify the route-policy for conditional advertising";
                                }
                              }  // container prefix
                            }  // container advertise
    
                            container delay {
                              description
                                "Delay configuration setting";
                              container normalize {
                                description
                                  "Delay normalization setting";
                                leaf interval {
                                  type uint32 {
                                    range
                                      "1..16777215";
                                  }
                                  must
                                    "../offset";
                                  description
                                    "Normalization interval";
                                }
    
                                leaf offset {
                                  type uint32 {
                                    range
                                      "0..16777215";
                                  }
                                  must
                                    "../interval";
                                  description
                                    "Normalization offset";
                                }
                              }  // container normalize
                            }  // container delay
                          }  // list interface
                        }  // container interfaces
    
                        container authentication-key {
                          description
                            "Authentication password (key)";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container authentication-key
    
                        container message-digest-keys {
                          description
                            "Message digest authentication password (key)";
                          list message-digest-key {
                            key "message-digest-key-id";
                            description
                              "Message digest authentication password (key)";
                            leaf message-digest-key-id {
                              type uint32 {
                                range "1..255";
                              }
                              description
                                "Message digest authentication password (key)";
                            }
    
                            container md5 {
                              description
                                "Use MD5 algorithm";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                mandatory true;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container md5
                          }  // list message-digest-key
                        }  // container message-digest-keys
    
                        container authentication {
                          presence
                            "Indicates a authentication node is configured.";
                          description
                            "Enable authentication";
                          container message-digest {
                            must
                              "not(../null or ../keychain)";
                            presence
                              "Indicates a message-digest node is configured.";
                            description
                              "Use message-digest authentication";
                          }  // container message-digest
    
                          container keychain {
                            must
                              "../keychain-name";
                            presence
                              "Indicates a keychain node is configured.";
                            description
                              "Use keychain";
                          }  // container keychain
    
                          leaf keychain-name {
                            type string {
                              length "1..32";
                            }
                            must
                              "(../message-digest or ../keychain) and not(../null)";
                            description
                              "Specify keychain name";
                          }
    
                          container null {
                            must
                              "not(../message-digest or ../keychain)";
                            presence
                              "Indicates a null node is configured.";
                            description
                              "Use no authentication";
                          }  // container null
                        }  // container authentication
    
                        container network {
                          description
                            "Network type";
                          container broadcast {
                            presence
                              "Indicates a broadcast node is configured.";
                            description
                              "Specify OSPF broadcast multi-access network";
                          }  // container broadcast
    
                          container non-broadcast {
                            presence
                              "Indicates a non-broadcast node is configured.";
                            description
                              "Specify OSPF NBMA network";
                          }  // container non-broadcast
    
                          container point-to-point {
                            presence
                              "Indicates a point-to-point node is configured.";
                            description
                              "Specify OSPF point-to-point network";
                          }  // container point-to-point
    
                          container point-to-multipoint {
                            presence
                              "Indicates a point-to-multipoint node is configured.";
                            description
                              "Specify OSPF point-to-multipoint network";
                          }  // container point-to-multipoint
                        }  // container network
    
                        container mpls {
                          description
                            "Configure MPLS routing protocol parameters";
                          container ldp {
                            description
                              "Configure LDP parameters";
                            container sync {
                              presence
                                "Indicates a sync node is configured.";
                              description
                                "Enable LDP IGP synchronization";
                              container disable {
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable MPLS LDP sync";
                              }  // container disable
                            }  // container sync
                          }  // container ldp
                        }  // container mpls
    
                        leaf cost {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Interface cost";
                        }
    
                        container cost-fallback {
                          description
                            "Cost fallback when anomaly is detected";
                          container anomaly {
                            description
                              "Penalty when a delay or loss is notified";
                            container delay {
                              description
                                "Penalty when a delay is notified";
                              container igp-metric {
                                description
                                  "Penalty on IGP metric";
                                leaf increment {
                                  type uint32 {
                                    range
                                      "1..65534";
                                  }
                                  must
                                    "not(../multiplier or ../value
                                   or ../disable)";
                                  description
                                    "Increment the IGP cost by the specified value";
                                }
    
                                leaf multiplier {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../increment or ../value
                                   or ../disable)";
                                  description
                                    "Multiply the IGP cost by the specified value";
                                }
    
                                leaf value {
                                  type uint32 {
                                    range
                                      "1..65535";
                                  }
                                  must
                                    "not(../increment or ../multiplier
                                   or ../disable)";
                                  description
                                    "Set the IGP cost to the specified value";
                                }
    
                                container disable {
                                  must
                                    "not(../increment or ../multiplier
                                   or ../value)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable igp-metric";
                                }  // container disable
                              }  // container igp-metric
    
                              container te-metric {
                                description
                                  "Penalty on TE metric";
                                leaf increment {
                                  type uint32 {
                                    range
                                      "1..4294967294";
                                  }
                                  must
                                    "not(../multiplier or ../value
                                   or ../disable)";
                                  description
                                    "Increment the TE metric by the specified value";
                                }
    
                                leaf multiplier {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../increment or ../value
                                   or ../disable)";
                                  description
                                    "Multiply the TE metric by the specified value";
                                }
    
                                leaf value {
                                  type uint32 {
                                    range
                                      "1..4294967295";
                                  }
                                  must
                                    "not(../increment or ../multiplier
                                   or ../disable)";
                                  description
                                    "Set the TE cost to the specified value";
                                }
    
                                container disable {
                                  must
                                    "not(../increment or ../multiplier
                                   or ../value)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable te-metric";
                                }  // container disable
                              }  // container te-metric
                            }  // container delay
                          }  // container anomaly
                        }  // container cost-fallback
    
                        leaf hello-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between HELLO packets";
                        }
    
                        leaf dead-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "not(../dead-interval-minimal-hello-multiplier)";
                          description "Seconds";
                        }
    
                        leaf dead-interval-minimal-hello-multiplier {
                          type uint32 {
                            range "3..20";
                          }
                          must
                            "not(../dead-interval)";
                          description
                            "Set multiplier for Hellos";
                        }
    
                        leaf priority {
                          type uint32 {
                            range "0..255";
                          }
                          description
                            "Router priority";
                        }
    
                        leaf retransmit-interval {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Time between retransmitting lost link state advertisements";
                        }
    
                        leaf transmit-delay {
                          type uint32 {
                            range "1..65535";
                          }
                          description
                            "Estimated time needed to send link-state update packet";
                        }
    
                        container flood-reduction {
                          description
                            "OSPF Flood Reduction";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable flooding reduction";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable flooding reduction";
                          }  // container disable
                        }  // container flood-reduction
    
                        container demand-circuit {
                          description
                            "Enable/Disable demand circuits";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable demand circuits";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable demand circuits";
                          }  // container disable
                        }  // container demand-circuit
    
                        container mtu-ignore {
                          description
                            "Enable/Disable ignoring of MTU in DBD packets";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Ignores the MTU in DBD packets";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable ignoring of MTU in DBD packets";
                          }  // container disable
                        }  // container mtu-ignore
    
                        container database-filter {
                          description
                            "Filter OSPF LSA during synchronization and flooding";
                          container all {
                            description
                              "Filter all LSA";
                            container out {
                              description
                                "Outgoing LSA";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable filtering";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable filtering";
                              }  // container disable
                            }  // container out
                          }  // container all
                        }  // container database-filter
    
                        container passive {
                          description
                            "Enable/Disable passive";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable passive";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable passive";
                          }  // container disable
                        }  // container passive
    
                        container distribute-list {
                          description
                            "Filter networks in routing updates";
                          leaf access-list {
                            type string;
                            must
                              "not(../route-policy)";
                            description
                              "In-bound access-list name.";
                          }
    
                          leaf route-policy {
                            type xr:Route-policy-name;
                            must
                              "not(../access-list)";
                            description
                              "Route Policy to filter OSPF prefixes";
                          }
                        }  // container distribute-list
    
                        leaf packet-size {
                          type uint32 {
                            range "576..10000";
                          }
                          description
                            "Customize size of OSPF packets upto MTU";
                        }
    
                        container bfd {
                          description
                            "Configure BFD parameters";
                          container fast-detect {
                            must
                              "not(strict-mode and disable)";
                            presence
                              "Indicates a fast-detect node is configured.";
                            description
                              "Enable Fast detection";
                            container strict-mode {
                              presence
                                "Indicates a strict-mode node is configured.";
                              description
                                "Hold down neighbor session until BFD session is up";
                            }  // container strict-mode
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Prevent bfd settings from being inherited from the parent";
                            }  // container disable
                          }  // container fast-detect
    
                          leaf minimum-interval {
                            type uint32 {
                              range "3..30000";
                            }
                            description
                              "Minimum interval";
                          }
    
                          leaf multiplier {
                            type uint32 {
                              range "2..50";
                            }
                            description
                              "Detect multiplier";
                          }
                        }  // container bfd
    
                        container security {
                          description
                            "Enable/Disable security";
                          container ttl {
                            must
                              "not(hops and disable)";
                            presence
                              "Indicates a ttl node is configured.";
                            description
                              "TTL security";
                            leaf hops {
                              type uint32 {
                                range "1..254";
                              }
                              description
                                "IP hops";
                            }
    
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable TTL security";
                            }  // container disable
                          }  // container ttl
                        }  // container security
    
                        container prefix-suppression {
                          description
                            "Suppress advertisement of the prefixes";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable primary address suppression";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable primary address suppression";
                          }  // container disable
    
                          container secondary-address {
                            description
                              "Enable/Disable secondary address suppression";
                            container enable {
                              must
                                "not(../disable)";
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable secondary address suppression";
                            }  // container enable
    
                            container disable {
                              must
                                "not(../enable)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable secondary address suppression";
                            }  // container disable
                          }  // container secondary-address
                        }  // container prefix-suppression
    
                        container fast-reroute {
                          description
                            "IP Fast Reroute";
                          container per-link {
                            description
                              "Per-link Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Per-link Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-link LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-link LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-link LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-link LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
                          }  // container per-link
    
                          container per-prefix {
                            description
                              "Per-prefix Computation";
                            container enable {
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable per-prefix Computation";
                            }  // container enable
    
                            container exclude {
                              description
                                "Per-prefix LFA exclusion information";
                              container interfaces {
                                description
                                  "Exclude an interface from Per-prefix LFA";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Exclude an interface from Per-prefix LFA";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Exclude an interface from Per-prefix LFA";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container exclude
    
                            container lfa-candidate {
                              description
                                "FRR LFA candidate information";
                              container interfaces {
                                description
                                  "Include an interface to LFA candidate in computation";
                                list interface {
                                  key "interface-name";
                                  description
                                    "Include an interface to LFA candidate in computation";
                                  leaf interface-name {
                                    type xr:Interface-name;
                                    description
                                      "Include an interface to LFA candidate in computation";
                                  }
                                }  // list interface
                              }  // container interfaces
                            }  // container lfa-candidate
    
                            container use-candidate-only {
                              description
                                "Enable/Disable backup selection from candidate-list only";
                              container enable {
                                must
                                  "not(../disable)";
                                presence
                                  "Indicates a enable node is configured.";
                                description
                                  "Enable backup selection from candidate-list only";
                              }  // container enable
    
                              container disable {
                                must
                                  "not(../enable)";
                                presence
                                  "Indicates a disable node is configured.";
                                description
                                  "Disable backup selection from candidate-list only";
                              }  // container disable
                            }  // container use-candidate-only
    
                            container tiebreaker {
                              description
                                "Configure tiebreaker for multiple backups";
                              container downstream {
                                description
                                  "Prefer backup path via downstream node";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container downstream
    
                              container lc-disjoint {
                                description
                                  "Prefer line card disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lc-disjoint
    
                              container lowest-backup-metric {
                                description
                                  "Prefer backup path with lowest total metric";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container lowest-backup-metric
    
                              container node-protecting {
                                description
                                  "Prefer node protecting backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container node-protecting
    
                              container primary-path {
                                description
                                  "Prefer backup path from ECMP set";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container primary-path
    
                              container secondary-path {
                                description
                                  "Prefer non-ECMP backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container secondary-path
    
                              container interface-disjoint {
                                description
                                  "Prefer Interface disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container interface-disjoint
    
                              container srlg-disjoint {
                                description
                                  "Prefer SRLG disjoint backup path";
                                leaf index {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  must
                                    "not(../disable)";
                                  description
                                    "Set preference order among tiebreakers";
                                }
    
                                container disable {
                                  must
                                    "not(../index)";
                                  presence
                                    "Indicates a disable node is configured.";
                                  description
                                    "Disable tiebreaker";
                                }  // container disable
                              }  // container srlg-disjoint
                            }  // container tiebreaker
                          }  // container per-prefix
    
                          container disable {
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable IP Fast Reroute";
                          }  // container disable
                        }  // container fast-reroute
    
                        container loopback {
                          description
                            "OSPF loopback configuration";
                          container stub-network {
                            description
                              "Advertise loopback as a stub network";
                            container enable {
                              must
                                "not(../disable)";
                              presence
                                "Indicates a enable node is configured.";
                              description
                                "Enable advertising loopback as a stub network";
                            }  // container enable
    
                            container disable {
                              must
                                "not(../enable)";
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable advertising loopback as a stub network";
                            }  // container disable
                          }  // container stub-network
                        }  // container loopback
    
                        container link-down {
                          description
                            "Configure interface down parameters";
                          container fast-detect {
                            presence
                              "Indicates a fast-detect node is configured.";
                            description
                              "Enable fast or early detection of link-down events";
                            container disable {
                              presence
                                "Indicates a disable node is configured.";
                              description
                                "Disable fast or early detection of link-down events";
                            }  // container disable
                          }  // container fast-detect
                        }  // container link-down
    
                        leaf weight {
                          type uint32 {
                            range "1..16777214";
                          }
                          description
                            "Interface weight";
                        }
    
                        container delay {
                          description
                            "Delay configuration setting";
                          container normalize {
                            description
                              "Delay normalization setting";
                            leaf interval {
                              type uint32 {
                                range
                                  "1..16777215";
                              }
                              must "../offset";
                              description
                                "Normalization interval";
                            }
    
                            leaf offset {
                              type uint32 {
                                range
                                  "0..16777215";
                              }
                              must "../interval";
                              description
                                "Normalization offset";
                            }
                          }  // container normalize
                        }  // container delay
    
                        container virtual-links {
                          description
                            "Define a virtual link";
                          list virtual-link {
                            key "virtual-link-id";
                            description
                              "Define a virtual link";
                            leaf virtual-link-id {
                              type inet:ipv4-address-no-zone;
                              description
                                "Define a virtual link";
                            }
    
                            leaf hello-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Time between HELLO packets";
                            }
    
                            leaf dead-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../dead-interval-minimal-hello-multiplier)";
                              description
                                "Seconds";
                            }
    
                            leaf dead-interval-minimal-hello-multiplier {
                              type uint32 {
                                range "3..20";
                              }
                              must
                                "not(../dead-interval)";
                              description
                                "Set multiplier for Hellos";
                            }
    
                            leaf retransmit-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Delay between LSA retransmissions";
                            }
    
                            leaf transmit-delay {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Link state transmit delay";
                            }
    
                            container authentication-key {
                              description
                                "Authentication password (key)";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container authentication-key
    
                            container message-digest-keys {
                              description
                                "Message digest authentication password (key)";
                              list message-digest-key {
                                key "message-digest-key-id";
                                description
                                  "Message digest authentication password (key)";
                                leaf message-digest-key-id {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  description
                                    "Message digest authentication password (key)";
                                }
    
                                container md5 {
                                  description
                                    "Use MD5 algorithm";
                                  leaf encrypted {
                                    type xr:Proprietary-password;
                                    description
                                      "Specifies an ENCRYPTED password (key) will follow";
                                  }
                                }  // container md5
                              }  // list message-digest-key
                            }  // container message-digest-keys
    
                            container authentication {
                              presence
                                "Indicates a authentication node is configured.";
                              description
                                "Enable authentication";
                              container message-digest {
                                must
                                  "not(../null or ../keychain)";
                                presence
                                  "Indicates a message-digest node is configured.";
                                description
                                  "Use message-digest authentication";
                              }  // container message-digest
    
                              container keychain {
                                must
                                  "../keychain-name";
                                presence
                                  "Indicates a keychain node is configured.";
                                description
                                  "Use keychain";
                              }  // container keychain
    
                              leaf keychain-name {
                                type string {
                                  length "1..32";
                                }
                                must
                                  "(../message-digest or ../keychain) and not(../null)";
                                description
                                  "Specify keychain name";
                              }
    
                              container null {
                                must
                                  "not(../message-digest or ../keychain)";
                                presence
                                  "Indicates a null node is configured.";
                                description
                                  "Use no authentication";
                              }  // container null
                            }  // container authentication
                          }  // list virtual-link
                        }  // container virtual-links
    
                        container sham-links {
                          description
                            "Define a sham link";
                          list sham-link {
                            key "local-address remote-address";
                            description
                              "Define a sham link";
                            leaf local-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Address of the local sham-link endpoint";
                            }
    
                            leaf remote-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Address of the remote sham-link endpoint";
                            }
    
                            leaf cost {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Sham-link cost";
                            }
    
                            leaf hello-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Time between HELLO packets";
                            }
    
                            leaf dead-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../dead-interval-minimal-hello-multiplier)";
                              description
                                "Seconds";
                            }
    
                            leaf dead-interval-minimal-hello-multiplier {
                              type uint32 {
                                range "3..20";
                              }
                              must
                                "not(../dead-interval)";
                              description
                                "Set multiplier for Hellos";
                            }
    
                            leaf retransmit-interval {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Delay between LSA retransmissions";
                            }
    
                            leaf transmit-delay {
                              type uint32 {
                                range "1..65535";
                              }
                              description
                                "Link state transmit delay";
                            }
    
                            container authentication-key {
                              description
                                "Authentication password (key)";
                              leaf encrypted {
                                type xr:Proprietary-password;
                                description
                                  "Specifies an ENCRYPTED password (key) will follow";
                              }
                            }  // container authentication-key
    
                            container message-digest-keys {
                              description
                                "Message digest authentication password (key)";
                              list message-digest-key {
                                key "message-digest-key-id";
                                description
                                  "Message digest authentication password (key)";
                                leaf message-digest-key-id {
                                  type uint32 {
                                    range
                                      "1..255";
                                  }
                                  description
                                    "Message digest authentication password (key)";
                                }
    
                                container md5 {
                                  description
                                    "Use MD5 algorithm";
                                  leaf encrypted {
                                    type xr:Proprietary-password;
                                    description
                                      "Specifies an ENCRYPTED password (key) will follow";
                                  }
                                }  // container md5
                              }  // list message-digest-key
                            }  // container message-digest-keys
    
                            container authentication {
                              presence
                                "Indicates a authentication node is configured.";
                              description
                                "Enable authentication";
                              container message-digest {
                                must
                                  "not(../null or ../keychain)";
                                presence
                                  "Indicates a message-digest node is configured.";
                                description
                                  "Use message-digest authentication";
                              }  // container message-digest
    
                              container keychain {
                                must
                                  "../keychain-name";
                                presence
                                  "Indicates a keychain node is configured.";
                                description
                                  "Use keychain";
                              }  // container keychain
    
                              leaf keychain-name {
                                type string {
                                  length "1..32";
                                }
                                must
                                  "(../message-digest or ../keychain) and not(../null)";
                                description
                                  "Specify keychain name";
                              }
    
                              container null {
                                must
                                  "not(../message-digest or ../keychain)";
                                presence
                                  "Indicates a null node is configured.";
                                description
                                  "Use no authentication";
                              }  // container null
                            }  // container authentication
                          }  // list sham-link
                        }  // container sham-links
                      }  // list area
                    }  // container areas
    
                    container authentication-key {
                      description
                        "Authentication password (key)";
                      leaf encrypted {
                        type xr:Proprietary-password;
                        description
                          "Specifies an ENCRYPTED password (key) will follow";
                      }
                    }  // container authentication-key
    
                    container message-digest-keys {
                      description
                        "Message digest authentication password (key)";
                      list message-digest-key {
                        key "message-digest-key-id";
                        description
                          "Message digest authentication password (key)";
                        leaf message-digest-key-id {
                          type uint32 {
                            range "1..255";
                          }
                          description
                            "Message digest authentication password (key)";
                        }
    
                        container md5 {
                          description
                            "Use MD5 algorithm";
                          leaf encrypted {
                            type xr:Proprietary-password;
                            mandatory true;
                            description
                              "Specifies an ENCRYPTED password (key) will follow";
                          }
                        }  // container md5
                      }  // list message-digest-key
                    }  // container message-digest-keys
    
                    container authentication {
                      presence
                        "Indicates a authentication node is configured.";
                      description
                        "Enable authentication";
                      container message-digest {
                        must
                          "not(../null or ../keychain)";
                        presence
                          "Indicates a message-digest node is configured.";
                        description
                          "Use message-digest authentication";
                      }  // container message-digest
    
                      container keychain {
                        must "../keychain-name";
                        presence
                          "Indicates a keychain node is configured.";
                        description
                          "Use keychain";
                      }  // container keychain
    
                      leaf keychain-name {
                        type string {
                          length "1..32";
                        }
                        must
                          "(../message-digest or ../keychain) and not(../null)";
                        description
                          "Specify keychain name";
                      }
    
                      container null {
                        must
                          "not(../message-digest or ../keychain)";
                        presence
                          "Indicates a null node is configured.";
                        description
                          "Use no authentication";
                      }  // container null
                    }  // container authentication
    
                    container network {
                      description "Network type";
                      container broadcast {
                        presence
                          "Indicates a broadcast node is configured.";
                        description
                          "Specify OSPF broadcast multi-access network";
                      }  // container broadcast
    
                      container non-broadcast {
                        presence
                          "Indicates a non-broadcast node is configured.";
                        description
                          "Specify OSPF NBMA network";
                      }  // container non-broadcast
    
                      container point-to-point {
                        presence
                          "Indicates a point-to-point node is configured.";
                        description
                          "Specify OSPF point-to-point network";
                      }  // container point-to-point
    
                      container point-to-multipoint {
                        presence
                          "Indicates a point-to-multipoint node is configured.";
                        description
                          "Specify OSPF point-to-multipoint network";
                      }  // container point-to-multipoint
                    }  // container network
    
                    container mpls {
                      description
                        "Configure MPLS routing protocol parameters";
                      container ldp {
                        description
                          "Configure LDP parameters";
                        container sync {
                          presence
                            "Indicates a sync node is configured.";
                          description
                            "Enable LDP IGP synchronization";
                        }  // container sync
                      }  // container ldp
                    }  // container mpls
    
                    leaf cost {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Interface cost";
                    }
    
                    container cost-fallback {
                      description
                        "Cost fallback when anomaly is detected";
                      container anomaly {
                        description
                          "Penalty when a delay or loss is notified";
                        container delay {
                          description
                            "Penalty when a delay is notified";
                          container igp-metric {
                            description
                              "Penalty on IGP metric";
                            leaf increment {
                              type uint32 {
                                range "1..65534";
                              }
                              must
                                "not(../multiplier or ../value)";
                              description
                                "Increment the IGP cost by the specified value";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../increment or ../value)";
                              description
                                "Multiply the IGP cost by the specified value";
                            }
    
                            leaf value {
                              type uint32 {
                                range "1..65535";
                              }
                              must
                                "not(../increment or ../multiplier)";
                              description
                                "Set the IGP cost to the specified value";
                            }
                          }  // container igp-metric
    
                          container te-metric {
                            description
                              "Penalty on TE metric";
                            leaf increment {
                              type uint32 {
                                range
                                  "1..4294967294";
                              }
                              must
                                "not(../multiplier or ../value)";
                              description
                                "Increment the TE metric by the specified value";
                            }
    
                            leaf multiplier {
                              type uint32 {
                                range "1..255";
                              }
                              must
                                "not(../increment or ../value)";
                              description
                                "Multiply the TE metric by the specified value";
                            }
    
                            leaf value {
                              type uint32 {
                                range
                                  "1..4294967295";
                              }
                              must
                                "not(../increment or ../multiplier)";
                              description
                                "Set the TE cost to the specified value";
                            }
                          }  // container te-metric
                        }  // container delay
                      }  // container anomaly
                    }  // container cost-fallback
    
                    leaf hello-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Time between HELLO packets";
                    }
    
                    leaf dead-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      must
                        "not(../dead-interval-minimal-hello-multiplier)";
                      description "Seconds";
                    }
    
                    leaf dead-interval-minimal-hello-multiplier {
                      type uint32 {
                        range "3..20";
                      }
                      must
                        "not(../dead-interval)";
                      description
                        "Set multiplier for Hellos";
                    }
    
                    leaf priority {
                      type uint32 {
                        range "0..255";
                      }
                      description
                        "Router priority";
                    }
    
                    leaf retransmit-interval {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Time between retransmitting lost link state advertisements";
                    }
    
                    leaf transmit-delay {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Estimated time needed to send link-state update packet";
                    }
    
                    container flood-reduction {
                      description
                        "Enable/Disable OSPF Flood Reduction";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable OSPF Flood Reduction";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable OSPF Flood Reduction";
                      }  // container disable
                    }  // container flood-reduction
    
                    container demand-circuit {
                      description
                        "Enable/Disable OSPF demand circuit";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable OSPF demand circuit";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable OSPF demand circuit";
                      }  // container disable
                    }  // container demand-circuit
    
                    container mtu-ignore {
                      description
                        "Enable/Disable ignoring of MTU in DBD packets";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Ignores the MTU in DBD packets";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable ignoring the MTU in DBD packets";
                      }  // container disable
                    }  // container mtu-ignore
    
                    container database-filter {
                      description
                        "Filter OSPF LSA during synchronization and flooding";
                      container all {
                        description
                          "Filter all LSA";
                        container out {
                          description
                            "Outgoing LSA";
                          container enable {
                            must
                              "not(../disable)";
                            presence
                              "Indicates a enable node is configured.";
                            description
                              "Enable filtering";
                          }  // container enable
    
                          container disable {
                            must
                              "not(../enable)";
                            presence
                              "Indicates a disable node is configured.";
                            description
                              "Disable filtering";
                          }  // container disable
                        }  // container out
                      }  // container all
                    }  // container database-filter
    
                    container passive {
                      description
                        "Enable/Disable passive";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable passive";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable passive";
                      }  // container disable
                    }  // container passive
    
                    container external-out {
                      description
                        "Enable/Disable advertisement of intra-area prefixes as external";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable advertisement of intra-area routes as external";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable advertisement of intra-area routes as external";
                      }  // container disable
                    }  // container external-out
    
                    container summary-in {
                      description
                        "Enable/Disable advertisement of external prefixes as inter-area";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable advertisement of external prefixes as inter-area";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable advertisement of external prefixes as inter-area";
                      }  // container disable
                    }  // container summary-in
    
                    container adjacency {
                      description
                        "OSPF adjacency bring up";
                      container stagger {
                        description
                          "Stagger OSPF adjacency bring up";
                        container disable {
                          must
                            "not(../initial-number-of-neighbors)";
                          presence
                            "Indicates a disable node is configured.";
                          description
                            "Disable stagger OSPF adjacency bring up";
                        }  // container disable
    
                        leaf initial-number-of-neighbors {
                          type uint32 {
                            range "1..65535";
                          }
                          must "not(../disable)";
                          description
                            "Initial number of neighbors to bring up per area (default 2)";
                        }
    
                        leaf maximum-simultaneous-neighbors {
                          type uint32 {
                            range "1..65535";
                          }
                          must
                            "../initial-number-of-neighbors";
                          description
                            "Maximum simultaneous neighbors to bring up (default 64)";
                        }
                      }  // container stagger
                    }  // container adjacency
    
                    container snmp {
                      description
                        "SNMP configuration";
                      leaf context {
                        type string {
                          length "1..32";
                          pattern
                            "[a-zA-Z0-9*/_]+";
                        }
                        description
                          "Specified SNMP context for OSPF instance";
                      }
    
                      container trap {
                        presence
                          "Indicates a trap node is configured.";
                        description
                          "Enable SNMP trap for OSPF instance";
                      }  // container trap
                    }  // container snmp
    
                    container ucmp {
                      description
                        "Unequal Cost Load Balancing";
                      container enable {
                        presence
                          "Indicates a ucmp node is configured.";
                        description
                          "Enable ucmp";
                        leaf variance {
                          type uint32 {
                            range "101..10000";
                          }
                          default "200";
                          description
                            "Set the Variance for UCMP path metric";
                        }
    
                        leaf prefix-list {
                          type string {
                            length "1..1024";
                          }
                          description
                            "Filter prefixes for which UCMP path are calculated";
                        }
                      }  // container enable
    
                      container exclude {
                        description
                          "UCMP exclusion information";
                        container interfaces {
                          description
                            "Exclude an interface during UCMP computation";
                          list interface {
                            key "interface-name";
                            description
                              "Exclude an interface during UCMP computation";
                            leaf interface-name {
                              type xr:Interface-name;
                              description
                                "Exclude an interface during UCMP computation";
                            }
                          }  // list interface
                        }  // container interfaces
                      }  // container exclude
    
                      leaf delay-interval {
                        type uint32 {
                          range "1..5000";
                        }
                        description
                          "Interval between SPF and start of the UCMP calculation";
                      }
                    }  // container ucmp
    
                    container apply-weight {
                      description
                        "Enable weights configured under interfaces for load sharing";
                      leaf bandwidth {
                        type uint32 {
                          range "1..4294967";
                        }
                        description
                          "Use interface bandwidth when calculating weights";
                      }
    
                      leaf default-weight {
                        type uint32 {
                          range "1..16777214";
                        }
                        description
                          "Specify default weight value";
                      }
                    }  // container apply-weight
                  }  // list vrf
                }  // container vrfs
              }  // list process
            }  // container processes
          }  // container ospf
        }  // container router
      }  // module Cisco-IOS-XR-um-router-ospf-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.