openconfig-ospfv2-lsdb

An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)

  • Version: 2017-02-28

    openconfig-ospfv2-lsdb@2017-02-28


    
      submodule openconfig-ospfv2-lsdb {
    
        yang-version 1;
    
        belongs-to openconfig-ospfv2 {
            prefix oc-ospfv2;
        }
    
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import openconfig-types {
          prefix oc-types;
        }
        import openconfig-extensions {
          prefix oc-ext;
        }
        import openconfig-ospf-types {
          prefix oc-ospf-types;
        }
    
        organization "OpenConfig working group";
    
        contact
          "OpenConfig working group
        www.openconfig.net";
    
        description
          "An OpenConfig model for the Open Shortest Path First (OSPF)
        version 2 link-state database (LSDB)";
    
        revision "2017-02-28" {
          description
            "Initial public release of OSPFv2";
          reference
            "0.1.0";
    
        }
    
        revision "2016-06-24" {
          description "Initial revision";
          reference
            "0.0.1";
    
        }
    
        oc-ext:openconfig-version "0.1.0";
    
        grouping ospfv2-lsdb-common-prefix-properties {
          description
            "Common properties used in the LSDB that relate to IPv4 prefixes";
          leaf prefix-length {
            type uint8 {
              range "0..32";
            }
            description
              "The length of the IPv4 prefix contained in the Extended Prefix LSA";
          }
    
          leaf address-family {
            type enumeration {
              enum "IPV4_UNICAST" {
                value 0;
                description
                  "The prefix contained within the Extended Prefix LSA is an IPv4
                unicast prefix";
              }
            }
            description
              "The address family of the prefix contained in the Extended Prefix
            LSA";
          }
        }  // grouping ospfv2-lsdb-common-prefix-properties
    
        grouping ospfv2-lsdb-common-link-specification {
          description
            "Generic attributes used to identify links within OSPFv2";
          leaf link-id {
            type yang:dotted-quad;
            description
              "The identifier for the link specified. The value of the link
            identifier is dependent upon the type of the LSA. The value is
            specified to be, per sub-type:
              1) Neighbouring router's router ID.
              2) IP address of DR.
              3) IP network address.
              4) Neighbouring router router's ID.";
          }
    
          leaf link-data {
            type union {
              type yang:dotted-quad;
              type uint32;
            }
            description
              "The data associated with the link type. The value is
            dependent upon the subtype of the LSA. When the connection is
            to a stub network it represents the mask; for p2p connections
            that are unnumbered it represents the ifIndex value of the
            router's interface; for all other connections it represents
            the local system's IP address";
          }
        }  // grouping ospfv2-lsdb-common-link-specification
    
        grouping ospfv2-lsdb-common-unknown-tlv {
          description
            "A generic specification of a TLV to be used when the
          value cannot be decoded by the local system";
          leaf type {
            type uint16;
            description
              "The type value of the unknown TLV";
          }
    
          leaf length {
            type uint16;
            description
              "The length value of the unknown TLV";
          }
    
          leaf value {
            type binary;
            description
              "The value portion of the unknwon TLV";
          }
        }  // grouping ospfv2-lsdb-common-unknown-tlv
    
        grouping ospfv2-lsdb-common-unknown-tlv-structure {
          description
            "A generic specification of an unknown TLV";
          container unknown-tlv {
            description
              "An unknown TLV within the context. Unknown TLVs are
            defined to be the set of TLVs that are not modelled
            within the OpenConfig model, or are unknown to the
            local system such that it cannot decode their value.";
            container state {
              description
                "Contents of an unknown TLV within the LSA";
              uses ospfv2-lsdb-common-unknown-tlv;
            }  // container state
          }  // container unknown-tlv
        }  // grouping ospfv2-lsdb-common-unknown-tlv-structure
    
        grouping ospfv2-lsdb-common-unknown-subtlv-structure {
          description
            "A generic specification of an unknown TLV";
          container unknown-subtlv {
            description
              "An unknown SubTLV within the context. Unknown Sub-TLV
            are defined to be the set of SubTLVs that are not modelled
            by the OpenConfig schema, or are unknown to the local system
            such that it cannot decode their value.";
            container state {
              description
                "Contents of an unknown TLV within the LSA";
              uses ospfv2-lsdb-common-unknown-tlv;
            }  // container state
          }  // container unknown-subtlv
        }  // grouping ospfv2-lsdb-common-unknown-subtlv-structure
    
        grouping ospfv2-lsdb-common-tos-metric {
          description
            "Common LSDB LSA parameters for type of service and metric";
          leaf tos {
            type uint8;
            description
              "OSPF encoding of the type of service referred to by this
            LSA. Encoding for OSPF TOS are described in RFC2328.";
          }
    
          leaf metric {
            type oc-ospf-types:ospf-metric;
            description
              "The metric value to be used for the TOS specified. This value
            represents the cost of use of the link for the specific type
            of service.";
          }
        }  // grouping ospfv2-lsdb-common-tos-metric
    
        grouping ospfv2-lsdb-common-sr-sid-spec {
          description
            "Re-usable specification of a segment routing SID";
          leaf sid-type {
            type oc-ospf-types:sr-sid-type;
            description
              "The type of the value contained within the sub-TLV";
          }
    
          leaf sid-value {
            type uint32;
            description
              "The value of the binding included within the sub-TLV. The type of
            this binding is indicated by the type leaf.";
          }
        }  // grouping ospfv2-lsdb-common-sr-sid-spec
    
        grouping ospfv2-lsdb-area-state {
          description
            "Per-area operational state parameters for an OSPFv2 area";
          leaf identifier {
            type oc-ospf-types:ospf-area-identifier;
            description
              "An identifier for the area, expressed as a dotted quad or
            an unsigned 32-bit integer";
          }
        }  // grouping ospfv2-lsdb-area-state
    
        grouping ospfv2-lsdb-area-lsa-type-state {
          description
            "Per-LSA type operational state parameters for an OSPFv2 area";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPF_LSA_TYPE;
            }
            description
              "The type of LSA being described. The type of the LSA is
            expressed as a canonical name.";
          }
        }  // grouping ospfv2-lsdb-area-lsa-type-state
    
        grouping ospfv2-lsdb-area-lsa-state {
          description
            "Generic parameters of an OSPFv2 LSA";
          leaf link-state-id {
            type yang:dotted-quad;
            description
              "The Link State ID for the specified LSA type. The exact
            defined value of the Link State ID is dependent on the LSA
            type.";
          }
    
          leaf advertising-router {
            type yang:dotted-quad;
            description
              "The router ID of the router that originated the LSA";
          }
    
          leaf sequence-number {
            type int32;
            description
              "A signed 32-bit integer used to detect old and duplicate
            LSAs. The greater the sequence number the more recent the
            LSA.";
          }
    
          leaf checksum {
            type uint16;
            description
              "The checksum of the complete contents of the LSA excluding
            the age field.";
          }
    
          leaf age {
            type uint16;
            units "seconds";
            description
              "The time since the LSA's generation in seconds";
          }
        }  // grouping ospfv2-lsdb-area-lsa-state
    
        grouping ospfv2-lsdb-router-lsa-structure {
          description
            "Structural grouping for Router LSA contents within the LSDB";
          container router-lsa {
            description
              "Contents of the router LSA";
            container state {
              description
                "State parameters of the router LSA";
              uses ospfv2-lsdb-router-lsa-state;
            }  // container state
    
            uses ospfv2-lsdb-generic-lsa-tos-metric-structure;
          }  // container router-lsa
        }  // grouping ospfv2-lsdb-router-lsa-structure
    
        grouping ospfv2-lsdb-generic-lsa-tos-metric-structure {
          description
            "Grouping including a generic TOS/metric structure for an
          LSA";
          container types-of-service {
            description
              "Breakdown of LSA contents specifying multiple
            TOS values";
            list type-of-service {
              key "tos";
              description
                "Per-type of service parameters for the LSA";
              leaf tos {
                type leafref {
                  path "../state/tos";
                }
                description
                  "Reference to the type of service identifier which is
                specified in the LSA";
              }
    
              container state {
                description
                  "Per-TOS parameters for the LSA";
                uses ospfv2-lsdb-generic-lsa-tos-metric-state;
              }  // container state
            }  // list type-of-service
          }  // container types-of-service
        }  // grouping ospfv2-lsdb-generic-lsa-tos-metric-structure
    
        grouping ospfv2-lsdb-network-lsa-structure {
          description
            "Structural grouping for Network LSA contents within the LSDB";
          container network-lsa {
            description
              "Contents of the network LSA";
            container state {
              description
                "State parameters of the network LSA";
              uses ospfv2-lsdb-network-lsa-state;
            }  // container state
          }  // container network-lsa
        }  // grouping ospfv2-lsdb-network-lsa-structure
    
        grouping ospfv2-lsdb-summary-lsa-structure {
          description
            "Structural grouping for the Summary LSA contents within the
          LSDB";
          container summary-lsa {
            description
              "Contents of the summary LSA";
            container state {
              description
                "State parameters of the summary LSA";
              uses ospfv2-lsdb-summary-lsa-state;
            }  // container state
    
            uses ospfv2-lsdb-generic-lsa-tos-metric-structure;
          }  // container summary-lsa
        }  // grouping ospfv2-lsdb-summary-lsa-structure
    
        grouping ospfv2-lsdb-asexternal-lsa-structure {
          description
            "Structural grouping for the AS External LSA contents within
          the LSDB";
          container as-external-lsa {
            description
              "Contents of the AS External LSA";
            container state {
              description
                "State parameters for the AS external LSA";
              uses ospfv2-lsdb-asexternal-lsa-state;
            }  // container state
    
            container types-of-service {
              description
                "Breakdown of External LSA contents specifying multiple
              TOS values";
              list type-of-service {
                key "tos";
                description
                  "Per-type of service parameters for the AS External LSA";
                leaf tos {
                  type leafref {
                    path "../state/tos";
                  }
                  description
                    "Reference to the type of service identifier which is
                  specified in the AS External LSA";
                }
    
                container state {
                  description
                    "Per-TOS parameters for the LSA";
                  uses ospfv2-lsdb-asexternal-tos-state;
                }  // container state
              }  // list type-of-service
            }  // container types-of-service
          }  // container as-external-lsa
        }  // grouping ospfv2-lsdb-asexternal-lsa-structure
    
        grouping ospfv2-lsdb-nssa-external-lsa-structure {
          description
            "Structural grouping for the NSSA External LSA contents within
          the LSDB";
          container nssa-external-lsa {
            description
              "Contents of the NSSA External LSA";
            container state {
              description
                "State parameters for the AS external LSA";
              uses ospfv2-lsdb-asexternal-lsa-state;
    
              uses ospfv2-lsdb-nssa-external-lsa-state;
            }  // container state
    
            container types-of-service {
              description
                "Breakdown of the NSSA External LSA contents specifying multiple
              TOS values";
              list type-of-service {
                key "tos";
                description
                  "Per-type of service parameters for the NSSA external LSA";
                leaf tos {
                  type leafref {
                    path "../state/tos";
                  }
                  description
                    "Reference to the type of services identifier which is specified
                  in the NSSA External LSA";
                }
    
                container state {
                  description
                    "Per-TOS parameters for the LSA";
                  uses ospfv2-lsdb-asexternal-tos-state;
                }  // container state
              }  // list type-of-service
            }  // container types-of-service
          }  // container nssa-external-lsa
        }  // grouping ospfv2-lsdb-nssa-external-lsa-structure
    
        grouping ospfv2-lsdb-opaque-lsa-structure {
          description
            "Structural grouping for Opaque LSA contents within the LSDB";
          container opaque-lsa {
            description
              "Contents of the opaque LSA";
            container state {
              description
                "State parameters for the opaque LSA";
              uses ospfv2-lsdb-opaque-lsa-state;
            }  // container state
    
            container traffic-engineering {
              when
                "../state/type = 'TRAFFIC_ENGINEERING'" {
                description
                  "Include the traffic-engineering information when
                the Opaque LSA being described is a Traffic Engineering
                LSA";
              }
              description
                "Contents of the Traffic Engineering Opaque LSA";
              container tlvs {
                description
                  "The TLVs contained in the TE Opaque LSA";
                list tlv {
                  description
                    "The Type-Length-Value tuples included in the TE LSA";
                  container state {
                    description
                      "The contents of the TLV tuple within the TE LSA";
                    uses ospfv2-lsdb-opaque-lsa-te-tlv-state;
                  }  // container state
    
                  uses ospfv2-lsdb-common-unknown-tlv-structure;
    
                  container router-address {
                    when
                      "../state/type = 'TE_ROUTER_ADDRESS'" {
                      description
                        "Include the router address container only when the type
                      of the TLV is Router Address";
                    }
                    description
                      "Parameters included in the Router Address TLV";
                    container state {
                      description
                        "State parameters of the router address TLV";
                      uses ospfv2-lsdb-opaque-te-router-address-state;
                    }  // container state
                  }  // container router-address
    
                  container link {
                    when
                      "../state/type = 'TE_ROUTER_LINK'" {
                      description
                        "Include the link container only when the type of the
                      TLV describes a traffic engineering link";
                    }
                    description
                      "Parameters included in the Link TLV";
                    container sub-tlvs {
                      description
                        "Sub-TLVs included in the Link TLV";
                      list sub-tlv {
                        description
                          "The Sub-TLVs included within the Traffic Engineering
                        LSA's sub-TLV";
                        container state {
                          description
                            "State parameters of the Link Sub-TLV";
                          uses ospfv2-lsdb-opaque-te-link-state;
                        }  // container state
    
                        uses ospfv2-lsdb-common-unknown-subtlv-structure;
    
                        container unreserved-bandwidths {
                          description
                            "The unreserved link bandwidths for the Traffic
                          Engineering LSA - utilised when the sub-TLV type
                          indicates that the sub-TLV describes unreserved
                          bandwidth";
                          list unreserved-bandwidth {
                            key "priority";
                            description
                              "The unreserved bandwidth at each priority level";
                            leaf priority {
                              type leafref {
                                path
                                  "../state/priority";
                              }
                              description
                                "A reference to the priority level being described";
                            }
    
                            container state {
                              description
                                "State parameters relating to the unreserved
                              bandwidth of the link being described";
                              uses ospfv2-lsdb-opaque-te-link-unreserved-bw-state;
                            }  // container state
                          }  // list unreserved-bandwidth
                        }  // container unreserved-bandwidths
    
                        container administrative-groups {
                          description
                            "The administrative groups that are set for the
                          Traffic Engineering LSA - utilised when the sub-TLV type
                          indicates that the sub-TLV describes administrative
                          groups";
                          list admin-group {
                            key "bit-index";
                            description
                              "The administrative group described within the
                            sub-TLV";
                            leaf bit-index {
                              type leafref {
                                path
                                  "../state/bit-index";
                              }
                              description
                                "A reference to the bit index being described";
                            }
    
                            container state {
                              description
                                "State parameters relating to the administrative
                              groups being described for the link";
                              uses ospfv2-lsdb-opaque-te-link-admin-group-state;
                            }  // container state
                          }  // list admin-group
                        }  // container administrative-groups
                      }  // list sub-tlv
                    }  // container sub-tlvs
                  }  // container link
    
                  container node-attribute {
                    when
                      "../state/type = 'TE_NODE_ATTRIBUTE'" {
                      description
                        "Include the node-attribute container only when the type of
                      the TLV describes a node attribute";
                    }
                    description
                      "Parameters included in the Node Attribute TLV";
                    container sub-tlvs {
                      description
                        "Sub-TLVs of the Node Attribute TLV of the Traffic
                      Engineering LSA";
                      list sub-tlv {
                        description
                          "List of the Sub-TLVs contained within the Node Attribute
                        TLV";
                        container state {
                          description
                            "State parameters of the Node Attribute TLV sub-TLV";
                          uses ospfv2-lsdb-opaque-te-node-attribute-state;
                        }  // container state
    
                        uses ospfv2-lsdb-common-unknown-subtlv-structure;
                      }  // list sub-tlv
                    }  // container sub-tlvs
                  }  // container node-attribute
                }  // list tlv
              }  // container tlvs
            }  // container traffic-engineering
    
            container grace-lsa {
              when "../state/type = 'GRACE_LSA'" {
                description
                  "Include the grace-lsa container when the opaque LSA is specified
                to be of that type.";
              }
              description
                "The Grace LSA is utilised when a remote system is undergoing
              graceful restart";
              container tlvs {
                description
                  "TLVs of the Grace LSA";
                list tlv {
                  description
                    "TLV entry in the Grace LSA, advertised by a system undergoing
                  graceful restart";
                  container state {
                    description
                      "Per-TLV state parameters of the Grace LSA";
                    uses ospfv2-lsdb-opaque-grace-state;
                  }  // container state
    
                  uses ospfv2-lsdb-common-unknown-tlv-structure;
                }  // list tlv
              }  // container tlvs
            }  // container grace-lsa
    
            container router-information {
              when
                "../state/type = 'ROUTER_INFORMATION_LSA'" {
                description
                  "Include the router-information container when the opaque LSA
                type is specified to be an RI LSA";
              }
              description
                "The router information LSA is utilised to advertise capabilities
              of a system to other systems who receive the LSA";
              container tlvs {
                description
                  "The TLVs included within the Router Information LSA.";
                list tlv {
                  description
                    "TLV entry in the Router Information LSA";
                  container state {
                    description
                      "Per-TLV state parameters of the RI LSA";
                    uses ospfv2-lsdb-opaque-ri-state;
                  }  // container state
    
                  uses ospfv2-lsdb-common-unknown-tlv-structure;
    
                  container informational-capabilities {
                    when
                      "../state/type = 'RI_INFORMATIONAL_CAPABILITIES'" {
                      description
                        "Include the informational capabilities specification when
                      the TLV of the RI LSA is specified to be of this type";
                    }
                    description
                      "Information related to the capabilities of the advertising
                    router within the scope that the opaque RI LSA is being
                    advertised";
                    container state {
                      description
                        "State parameters of the informational capabilitis of the
                      RI LSA";
                      uses ospfv2-lsdb-opaque-ri-informational-state;
                    }  // container state
                  }  // container informational-capabilities
    
                  container node-administrative-tags {
                    when
                      "../state/type = 'RI_NODE_ADMIN_TAG'" {
                      description
                        "Include the node administrative tags specification when
                      the TLV of the RI LSA is specified to be of this type";
                    }
                    description
                      "Per-node administrative tags associated with the local system
                    specified by the operator";
                    container state {
                      description
                        "State parameters of the node administrative tags advertised
                      in the RI LSA";
                      uses ospfv2-lsdb-opaque-ri-admintag-state;
                    }  // container state
                  }  // container node-administrative-tags
    
                  container segment-routing-algorithm {
                    when
                      "../state/type = 'RI_SR_ALGORITHM'" {
                      description
                        "Include the segment routing algorithm specific parameters when
                      the TLV of the RI LSA is specified to be of this type";
                    }
                    description
                      "The algorithms supported for Segment Routing by the local system";
                    container state {
                      description
                        "State parameters of the Segment Routing algorithm advertised in
                      the RI LSA";
                      uses ospfv2-lsdb-opaque-ri-sralgo-state;
                    }  // container state
                  }  // container segment-routing-algorithm
    
                  container segment-routing-sid-label-range {
                    when
                      "../state/type = 'RI_SR_SID_LABEL_RANGE'" {
                      description
                        "Include the segment routing SID/Label range TLV specific state when
                      the TLV of the RI LSA is specified to be of this type";
                    }
                    description
                      "The Segment Identifier (SID) or label ranges that are supported by
                    the local system for Segment Routing";
                    container tlvs {
                      description
                        "Sub-TLVs of the SID/Label range TLV of the RI LSA";
                      list tlv {
                        description
                          "Sub-TLVs of the SID/Label range TLV";
                        uses ospfv2-lsdb-common-unknown-tlv-structure;
    
                        container state {
                          description
                            "State parameters of the sub-TLVs of the SR/Label range TLV";
                          uses ospfv2-lsdb-opaque-ri-srrange-tlv-state;
                        }  // container state
    
                        container sid-label {
                          description
                            "Sub-TLV used to advertise the SID or label associated with the
                          subset of the SRGB being advertised";
                          container state {
                            description
                              "State parameters of the SID/Label sub-TLV of the SR/Label
                            range TLV of the RI LSA";
                            uses ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state;
                          }  // container state
                        }  // container sid-label
                      }  // list tlv
                    }  // container tlvs
                  }  // container segment-routing-sid-label-range
                }  // list tlv
              }  // container tlvs
            }  // container router-information
    
            container extended-prefix {
              when
                "../state/type = 'OSPFV2_EXTENDED_PREFIX'" {
                description
                  "Include the extended-prefix container when the opaque LSA
                type is specified to be an extended prefix LSA";
              }
              description
                "An OSPFv2 Extended Prefix Opaque LSA, used to encapsulate
              TLV attributes associated with a prefix advertised in OSPF.";
              reference
                "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement";
    
              container state {
                description
                  "State parameters of the Extended Prefix LSA";
                uses ospfv2-lsdb-extended-prefix-state;
              }  // container state
    
              container tlvs {
                description
                  "TLVs contained within the Extended Prefix LSA";
                list tlv {
                  description
                    "A TLV contained within the extended prefix LSA";
                  container state {
                    description
                      "State parameters relating to the sub-TLV of the extended
                    prefix LSA";
                    uses ospfv2-lsdb-extended-prefix-tlv-state;
                  }  // container state
    
                  container extended-prefix-range {
                    when
                      "../state/type = 'EXTENDED_PREFIX_RANGE'" {
                      description
                        "Include the prefix range sub-TLV when the type of the
                      sub-TLV is specified as such";
                    }
                    description
                      "State parameters relating to the extended prefix range
                    sub-TLV of the extended prefix LSA";
                    container state {
                      description
                        "State parameters relating to the Extended Prefix Range
                      sub-TLV of the Extended Prefix LSA";
                      uses ospfv2-lsdb-extended-prefix-range-state;
                    }  // container state
                  }  // container extended-prefix-range
    
                  container prefix-sid {
                    when
                      "../state/type = 'PREFIX_SID'" {
                      description
                        "Include parameters relating to the Prefix SID when the type
                      of the sub-TLV is indicated as such";
                    }
                    description
                      "State parameters relating to the Prefix SID sub-TLV of the
                    extended prefix LSA";
                    container state {
                      description
                        "State parameters relating to the Prefix SID sub-TLV of the
                      extended prefix LSA";
                      uses ospfv2-lsdb-extended-prefix-prefix-sid-state;
                    }  // container state
                  }  // container prefix-sid
    
                  container sid-label-binding {
                    when
                      "../state/type = 'SID_LABEL_BINDING'" {
                      description
                        "Include parameters relating to the SID/Label binding sub-TLV
                      only when the type is indicated as such";
                    }
                    description
                      "State parameters relating to the SID/Label binding sub-TLV
                    of the extended prefix LSA";
                    container state {
                      description
                        "State parameters relating to the SID/Label binding sub-TLV
                      of the extended prefix LSA";
                      uses ospfv2-lsdb-extended-prefix-sid-label-binding-state;
                    }  // container state
    
                    container tlvs {
                      description
                        "TLVs contained within the SID/Label Binding sub-TLV of the
                      SID/Label Binding TLV";
                      list tlv {
                        description
                          "A TLV contained within the SID/Label Binding sub-TLV";
                        container state {
                          description
                            "State parameters relating to the SID/Label Binding
                          sub-TLV";
                          uses ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state;
                        }  // container state
    
                        container sid-label-binding {
                          when
                            "../state/type = 'SID_LABEL_BINDING'" {
                            description
                              "Include the SID/Label Binding sub-TLV parameters only
                            when the type is indicated as such";
                          }
                          description
                            "Parameters for the SID/Label Binding sub-TLV of the
                          SID/Label binding TLV";
                          container state {
                            description
                              "State parameteres relating to the SID/Label Binding
                            sub-TLV";
                            uses ospfv2-lsdb-extprefix-sid-label-binding-state;
                          }  // container state
                        }  // container sid-label-binding
    
                        container ero-metric {
                          when
                            "../state/type = 'ERO_METRIC'" {
                            description
                              "Include the ERO Metric sub-TLV parameters only when
                            the type is indicated as such";
                          }
                          description
                            "Parameters for the ERO Metric Sub-TLV of the SID/Label
                          binding TLV";
                          container state {
                            description
                              "State parameters relating to the ERO Metric Sub-TLV of
                            the SID/Label binding TLV";
                            uses ospfv2-lsdb-extprefix-sid-label-ero-metric-state;
                          }  // container state
                        }  // container ero-metric
    
                        container ero-path {
                          when
                            "../state/type = 'ERO_PATH'" {
                            description
                              "Include the ERO Path sub-TLV parameters only when the
                            type is indicated as such";
                          }
                          description
                            "Parameters for the ERO Path Sub-TLV of the SID/Label
                          binding TLV";
                          container segments {
                            description
                              "Segments of the path described within the SID/Label
                            Binding sub-TLV";
                            list segment {
                              description
                                "A segment of the path described within the sub-TLV";
                              container state {
                                description
                                  "State parameters relating to the path segment
                                contained within the sub-TLV";
                                uses ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state;
                              }  // container state
    
                              container ipv4-segment {
                                when
                                  "../state/type = 'IPV4_SEGMENT'" {
                                  description
                                    "Include the IPv4 segment only when the type is
                                  indicated as such";
                                }
                                description
                                  "Details of the IPv4 segment interface of the ERO";
                                container state {
                                  description
                                    "State parameters of the IPv4 segment of the ERO";
                                  uses ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state;
                                }  // container state
                              }  // container ipv4-segment
    
                              container unnumbered-hop {
                                when
                                  "../state/type = 'UNNUMBERED_INTERFACE_SEGMENT'" {
                                  description
                                    "Include the unnumbered segment only when the
                                  type is indicated as such";
                                }
                                description
                                  "Details of the unnumbered interface segment of the
                                ERO";
                                container state {
                                  description
                                    "State parameters of the unnumbered interface
                                  segment of the ERO";
                                  uses ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state;
                                }  // container state
                              }  // container unnumbered-hop
                            }  // list segment
                          }  // container segments
                        }  // container ero-path
                      }  // list tlv
                    }  // container tlvs
                  }  // container sid-label-binding
    
                  uses ospfv2-lsdb-common-unknown-tlv-structure;
                }  // list tlv
              }  // container tlvs
            }  // container extended-prefix
    
            container extended-link {
              description
                "The OSPFv2 Extended Link Opaque LSA, used to encapsulate TLV
              attributes associated with a link advertised in OSPF.";
              reference
                "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement";
    
              container state {
                description
                  "State parameters of the Extended Link LSA";
                uses ospfv2-lsdb-extended-link-state;
              }  // container state
    
              container tlvs {
                description
                  "TLVs contained within the Extended Link LSA";
                list tlv {
                  description
                    "List of TLVs within the Extended Link LSA";
                  container state {
                    description
                      "State parameters relating to the sub-TLV of the extended link
                    LSA";
                    uses ospfv2-lsdb-extended-link-tlv-state;
                  }  // container state
    
                  uses ospfv2-lsdb-common-unknown-tlv-structure;
    
                  container adjacency-sid {
                    when
                      "../state/type = 'ADJACENCY_SID'" {
                      description
                        "Include the Adjacency SID parameters only when the type of
                      the sub-TLV is indicated as such";
                    }
                    description
                      "Parameters relating to an Adjacency SID sub-TLV of the
                    extended link LSA";
                    container state {
                      description
                        "State parameters relating to an Adjacency SID";
                      uses ospfv2-lsdb-extended-link-adj-sid-state;
                    }  // container state
                  }  // container adjacency-sid
                }  // list tlv
              }  // container tlvs
            }  // container extended-link
    
            uses ospfv2-lsdb-common-unknown-tlv-structure;
          }  // container opaque-lsa
        }  // grouping ospfv2-lsdb-opaque-lsa-structure
    
        grouping ospfv2-lsdb-generic-lsa-tos-metric-state {
          description
            "Per-TOS state parameters for the Router LSA";
          uses ospfv2-lsdb-common-tos-metric;
        }  // grouping ospfv2-lsdb-generic-lsa-tos-metric-state
    
        grouping ospfv2-lsdb-router-lsa-state {
          description
            "Parameters of the router LSA";
          leaf type {
            type identityref {
              base oc-ospf-types:ROUTER_LSA_TYPES;
            }
            description
              "The sub-type of the Router LSA.";
          }
    
          uses ospfv2-lsdb-common-link-specification;
    
          leaf metric {
            type oc-ospf-types:ospf-metric;
            description
              "The cost of utilising the link specified independent of TOS";
          }
    
          leaf number-links {
            type uint16;
            description
              "The number of links that are described within the LSA";
          }
    
          leaf number-tos-metrics {
            type uint16;
            description
              "The number of different TOS metrics given for this link, not
            including the link metric (which is referred to as TOS 0).";
          }
        }  // grouping ospfv2-lsdb-router-lsa-state
    
        grouping ospfv2-lsdb-network-lsa-state {
          description
            "Parameters of the Network LSA";
          leaf network-mask {
            type uint8 {
              range "0..32";
            }
            description
              "The mask of the network described by the Network LSA
            represented as a CIDR mask.";
          }
    
          leaf-list attached-router {
            type yang:dotted-quad;
            description
              "A list of the router ID of the routers that are attached to
            the network described by the Network LSA";
          }
        }  // grouping ospfv2-lsdb-network-lsa-state
    
        grouping ospfv2-lsdb-summary-lsa-state {
          description
            "Parameters of the Summary LSA";
          leaf network-mask {
            type uint8 {
              range "0..32";
            }
            description
              "The mask of the network described by the Summary LSA
            represented as a CIDR mask.";
          }
        }  // grouping ospfv2-lsdb-summary-lsa-state
    
        grouping ospfv2-lsdb-asexternal-lsa-common-parameters {
          description
            "Common parameters that are used for OSPFv2 AS External LSAs";
          leaf forwarding-address {
            type inet:ipv4-address-no-zone;
            description
              "The destination to which traffic for the external prefix
            should be advertised. When this value is set to 0.0.0.0 then
            traffic should be forwarded to the LSA's originator";
          }
    
          leaf external-route-tag {
            type uint32;
            description
              "An opaque tag that set by the LSA originator to carry
            information relating to the external route";
          }
        }  // grouping ospfv2-lsdb-asexternal-lsa-common-parameters
    
        grouping ospfv2-lsdb-asexternal-lsa-state {
          description
            "Parameters for the AS External LSA";
          leaf mask {
            type uint8 {
              range "0..32";
            }
            description
              "The subnet mask for the advertised destination";
          }
    
          leaf metric-type {
            type enumeration {
              enum "TYPE_1" {
                value 0;
                description
                  "When the metric of a prefix is specified as Type 1
                then it is considered to be expressed in the same units as
                the link-state metrics carried in OSPF. That is to say
                that the metric advertised is directly compared to the
                internal cost";
              }
              enum "TYPE_2" {
                value 1;
                description
                  "When the metric of a prefix is specified as Type 2 then
                it is considered to be expressed as a cost in addition to
                that of the link-state metric to the advertising router.
                That is to say that the metric is considered to be the
                cost to the advertising router plus the advertised metric
                for the external entity";
              }
            }
            description
              "The type of metric included within the AS External LSA.";
          }
    
          leaf metric {
            type oc-ospf-types:ospf-metric;
            description
              "The cost to reach the external network specified. The exact
            interpretation of this cost is dependent on the type of
            metric specified";
          }
    
          uses ospfv2-lsdb-asexternal-lsa-common-parameters;
        }  // grouping ospfv2-lsdb-asexternal-lsa-state
    
        grouping ospfv2-lsdb-asexternal-tos-state {
          description
            "Per-TOS parameters for the AS External LSA";
          uses ospfv2-lsdb-asexternal-lsa-common-parameters;
    
          uses ospfv2-lsdb-common-tos-metric;
        }  // grouping ospfv2-lsdb-asexternal-tos-state
    
        grouping ospfv2-lsdb-nssa-external-lsa-state {
          description
            "Operational state parameters specific to the NSSA External
          LSA";
          leaf propagate {
            type boolean;
            description
              "When this bit is set to true, an NSSA border router will
            translate a Type 7 LSA (NSSA External) to a Type 5 LSA
            (AS External).";
            reference
              "RFC3101, Section 2.3";
    
          }
        }  // grouping ospfv2-lsdb-nssa-external-lsa-state
    
        grouping ospfv2-lsdb-opaque-lsa-state {
          description
            "Operational state parameters specific to an Opaque LSA";
          leaf scope {
            type enumeration {
              enum "LINK" {
                value 0;
                description
                  "The scope of the LSA is the current link. The LSA
                is not flooded beyond the local network. This
                enumeration denotes a Type 9 LSA.";
              }
              enum "AREA" {
                value 1;
                description
                  "The scope of the LSA is the local area. The LSA
                is not flooded beyond the area of origin. This
                enumeration denotes a Type 10 LSA.";
              }
              enum "AS" {
                value 2;
                description
                  "The scope of the LSA is the local autonomous
                system (AS). The flooding domain is the same
                as a Type 5 LSA - it is not flooded into
                stub areas or NSSAs. This enumeration denotes a
                Type 11 LSA.";
              }
            }
            description
              "The scope of the opaque LSA. The type of the LSA
            indicates its scope - the value of this leaf
            determines both the flooding domain, and the type
            of the LSA.";
          }
    
          leaf type {
            type identityref {
              base oc-ospf-types:OSPF_OPAQUE_LSA_TYPE;
            }
            description
              "The Opaque Type of the LSA. This value is used to
            indicate the type of data carried by the opaque LSA";
          }
        }  // grouping ospfv2-lsdb-opaque-lsa-state
    
        grouping ospfv2-lsdb-opaque-lsa-te-tlv-state {
          description
            "The contents of the Traffic Engineering LSA";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPF_TE_LSA_TLV_TYPE;
            }
            description
              "The type of TLV within the Traffic Engineering LSA";
          }
        }  // grouping ospfv2-lsdb-opaque-lsa-te-tlv-state
    
        grouping ospfv2-lsdb-opaque-te-unknown-state {
          description
            "The contents of the unknown TLV within the Traffic Engineering LSA";
          uses ospfv2-lsdb-common-unknown-tlv;
        }  // grouping ospfv2-lsdb-opaque-te-unknown-state
    
        grouping ospfv2-lsdb-opaque-te-link-state {
          description
            "The contents of the sub-TLVs of a Traffic Engineering LSA Link TLV";
          leaf type {
            type union {
              type identityref {
                base oc-ospf-types:OSPF_TE_LINK_TLV_TYPE;
              }
              type enumeration {
                enum "UNKNOWN" {
                  value 0;
                  description
                    "The sub-TLV received in the LSA is unknown to the local
                  system";
                }
              }
            }
            description
              "The sub-TLV type specified in the Link TLV. When the value is
            known by the local system, a canonical name of the sub-TLV is utilised
            - the special UNKNOWN value indicates that the system did not
            support the sub-TLV type received in the LSA.";
          }
    
          leaf unknown-type {
            when "../type = 'UNKNOWN'" {
              description
                "Include the unknown type field only when the sub-TLV was not
              known to the local system";
            }
            type uint16;
            description
              "The value of the type field of an unknown sub-TLV";
          }
    
          leaf unknown-value {
            when "../type = 'UNKNOWN'" {
              description
                "Include the unknown value field only when the sub-TLV was not
              known to the local system";
            }
            type binary;
            description
              "The binary contents of the unknown TLV";
          }
    
          leaf link-type {
            when "../type = 'TE_LINK_TYPE'" {
              description
                "Include the link-type field only when the sub-TLV type was a TE
              link type";
            }
            type enumeration {
              enum "POINT_TO_POINT" {
                value 0;
                description
                  "The link being described by the TE LSA Link sub-TLV is a
                point-to-point link to exactly one other system";
              }
              enum "MULTI_ACCESS" {
                value 1;
                description
                  "The link being described by the TE LSA Link sub-TLV is a
                multi-access link that supports connectivity to multiple remote
                systems";
              }
              enum "UNKNOWN" {
                value 2;
                description
                  "The link type received was unknown to the local system";
              }
            }
            description
              "The type of the link that is being described by the TE LSA Link
            sub-TLV";
          }
    
          leaf link-id {
            when "../type = 'TE_LINK_ID'" {
              description
                "Include the link ID field only when the sub-TLV type was a TE
              Link identifier";
            }
            type yang:dotted-quad;
            description
              "The ID of the remote system. For point-to-point links, this is the
            router ID of the neighbor. For multi-access links it is the address
            of the designated router.";
          }
    
          leaf-list local-ip-address {
            when "../type = 'TE_LINK_LOCAL_IP'" {
              description
                "Include the local IP address field only when the sub-TLV type was
              a local IP address";
            }
            type inet:ipv4-address-no-zone;
            description
              "The IP address(es) of the local system that correspond to the
            specified TE link";
          }
    
          leaf-list remote-ip-address {
            when "../type = 'TE_LINK_REMOTE_IP'" {
              description
                "Include the remote IP address field only when the sub-TLV type was
              a remote IP address";
            }
            type inet:ipv4-address-no-zone;
            description
              "The IP address(es) of the remote systems that are attached to the
            specified TE link";
          }
    
          leaf metric {
            when "../type = 'TE_LINK_METRIC'" {
              description
                "Include the traffic engineering metric only when the sub-TLV type
              is a TE metric";
            }
            type uint32;
            description
              "The metric of the link that should be used for traffic engineering
            purposes. This link may be different than the standard OSPF link
            metric.";
          }
    
          leaf maximum-bandwidth {
            when
              "../type = 'TE_LINK_MAXIMUM_BANDWIDTH'" {
              description
                "Include the traffic engineering metric only when the sub-TLV type
              is the maximum bandwidth";
            }
            type oc-types:ieeefloat32;
            units "bps";
            description
              "The maximum bandwidth of the link. This value reflects the actual
            bandwidth of the link expressed asn IEEE 32-bit floating point
            number";
          }
    
          leaf maximum-reservable-bandwidth {
            when
              "../type = 'TE_LINK_MAXIUMUM_RESERVABLE_BANDWIDTH'" {
              description
                "Include the maximum reservable bandwidth field only when the
              sub-TLV type is the maximum reservable bandwidth";
            }
            type oc-types:ieeefloat32;
            units "bps";
            description
              "The maximum reservable bandwidth for the link. This value represents
            the total bandwidth which may be used for traffic engineering
            purposes. The value may exceed the maximum-bandwidth value
            in cases where the link is oversubscribed. The value is reflected as
            a 32-bit IEEE floating-point number";
          }
        }  // grouping ospfv2-lsdb-opaque-te-link-state
    
        grouping ospfv2-lsdb-opaque-te-link-unreserved-bw-state {
          description
            "The per-priority unreserved bandwidth described within the unreserved
          bandwidth sub-TLV of the Link TLV of the Traffic Engineering LSA";
          leaf priority {
            type uint8 {
              range "0..7";
            }
            description
              "The priority level being described";
          }
    
          leaf unreserved-bandwidth {
            type oc-types:ieeefloat32;
            description
              "The unreserved bandwidth for at priority level P, where P is
            equal to the priority of the current list entry. The reservable
            bandwidth at priority P is equal to the sum of the reservable
            bandwidth at all levels 0..P.";
          }
        }  // grouping ospfv2-lsdb-opaque-te-link-unreserved-bw-state
    
        grouping ospfv2-lsdb-opaque-te-link-admin-group-state {
          description
            "Per bit administrative group status";
          leaf bit-index {
            type uint8 {
              range "0..31";
            }
            description
              "The index of the bit within the 32-bit administrative group field
            of the Administrative Group sub-TLV of the Traffic Engineering LSA";
          }
    
          leaf set {
            type boolean;
            default 'false';
            description
              "Whether the bit is set within the administrative group field";
          }
        }  // grouping ospfv2-lsdb-opaque-te-link-admin-group-state
    
        grouping ospfv2-lsdb-opaque-te-node-attribute-state {
          description
            "State parameters relating to the Traffic Engineering Node Attribute
          TLV of the Traffic Engineering LSA";
          leaf type {
            type union {
              type identityref {
                base oc-ospf-types:TE_NODE_ATTRIBUTE_TLV_TYPE;
              }
              type enumeration {
                enum "UNKNOWN" {
                  value 0;
                  description
                    "The sub-TLV type received within the TE LSA Node Attribute TLV
                  was unknown the the local system";
                }
              }
            }
            description
              "The type of the sub-TLV of the Node Attribute TLV contained within
            the TE LSA. If the local system can interpret the value received the
            canonical name of the type is utilised, otherwise the special UNKNOWN
            value is used";
          }
    
          leaf-list local-ipv4-addresses {
            when
              "../type = 'NODE_IPV4_LOCAL_ADDRESS'" {
              description
                "Include the local IPv4 addresses when the type of the sub-TLV
              indicates that this is the contained data";
            }
            type inet:ipv4-prefix;
            description
              "The local IPv4 addresses of the node expressed in CIDR notation";
          }
    
          leaf-list local-ipv6-addresses {
            when
              "../type = 'NODE_LOCAL_IPV6_ADDRESS'" {
              description
                "Include the local IPv6 addresses when the type of the sub-TLV
              indicfates that this is the contained data";
            }
            type inet:ipv6-prefix;
            description
              "The local IPv6 addreses of the node";
          }
        }  // grouping ospfv2-lsdb-opaque-te-node-attribute-state
    
        grouping ospfv2-lsdb-opaque-te-router-address-state {
          description
            "The contents of the value field of the Router Address TLV of the
          Traffic Engineering LSA.";
          leaf address {
            type inet:ipv4-address-no-zone;
            description
              "A stable IP address of the advertising router, that is always
            reachable when the router is connected to the network. Typically this
            is a loopback address.";
          }
        }  // grouping ospfv2-lsdb-opaque-te-router-address-state
    
        grouping ospfv2-lsdb-opaque-grace-state {
          description
            "State parameters on a per-TLV basis of the Grace LSA";
          leaf type {
            type identityref {
              base oc-ospf-types:GRACE_LSA_TLV_TYPES;
            }
            description
              "The type of the sub-TLV received within the Grace LSA";
          }
    
          leaf period {
            when "../type = 'GRACE_PERIOD'" {
              description
                "Include the period specification when the sub-TLV type is indicated
              to be of this type";
            }
            type uint32;
            units "seconds";
            description
              "The number of seconds that the router's neighbors should advertise
            the local system as fully adjacent regardless of database
            synchronization state";
            reference
              "RFC3623";
    
          }
    
          leaf reason {
            when
              "../type = 'GRACE_RESTART_REASON'" {
              description
                "Include the restart reason when the sub-TLV type specifies this
              is included";
            }
            type enumeration {
              enum "UNKNOWN" {
                value 0;
                description
                  "The reason for the graceful restart is unknown";
              }
              enum "SOFTWARE_RESTART" {
                value 1;
                description
                  "The local system is restarting due to a software component
                restart";
              }
              enum "SOFTWARE_RELOAD_UPGRADE" {
                value 2;
                description
                  "The local system is restarting due to a software reload or
                upgrade";
              }
              enum "CONTROL_PROCESSOR_SWITCH" {
                value 3;
                description
                  "The local system is restarting due to a switch to a redundant
                control plane element";
              }
            }
            description
              "The reason for the graceful restart event occurring, as advertised
            by the restarting system";
            reference
              "RFC3623";
    
          }
    
          leaf ip-interface-address {
            when
              "../type = 'GRACE_IP_INTERFACE_ADDRESS'" {
              description
                "Include the interface address when the sub-TLV type specifies that
              it is included";
            }
            type inet:ipv4-address-no-zone;
            description
              "The restarting system's IP address on the interface via which the
            Grace LSA is being advertised.";
          }
        }  // grouping ospfv2-lsdb-opaque-grace-state
    
        grouping ospfv2-lsdb-opaque-ri-state {
          description
            "State parameters of the Router Information Opaque LSA";
          leaf type {
            type union {
              type identityref {
                base oc-ospf-types:RI_LSA_TLV_TYPES;
              }
              type enumeration {
                enum "UNKNOWN" {
                  value 0;
                  description
                    "The TLV received within the RI LSA is unknown";
                }
              }
            }
            description
              "The type of sub-TLV of the Router Information opaque LSA";
          }
        }  // grouping ospfv2-lsdb-opaque-ri-state
    
        grouping ospfv2-lsdb-opaque-ri-informational-state {
          description
            "State parmaeters of the Router Information Informational Capabilities
          sub-TLV";
          leaf graceful-restart-capable {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, the advertising system is capable of
            OSPF graceful restart.";
          }
    
          leaf graceful-restart-helper {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, the advertising system is capable of
            being a helper for OSPF graceful restart";
          }
    
          leaf stub-router {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, the advertising system is able to
            advertise its status as a stub router";
            reference
              "RFC6987";
    
          }
    
          leaf traffic-engineering {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, the advertising system supports OSPFv2
            traffic engineering capabilities";
          }
    
          leaf point-to-point-over-lan {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, the advertising system supports treating
            LAN adjacencies as though they were point to point";
            reference
              "RFC5309";
    
          }
    
          leaf experimental-te {
            type boolean;
            default 'false';
            description
              "When this leaf is set to ture, the advertising system supports the
            experimental extensions to OSPF for TE described in RFC4973";
            reference
              "RFC4973";
    
          }
        }  // grouping ospfv2-lsdb-opaque-ri-informational-state
    
        grouping ospfv2-lsdb-opaque-ri-admintag-state {
          description
            "State parameters relating to the administrative tags specified for
          a node within the RI LSA";
          leaf-list administrative-tags {
            type uint32;
            description
              "The set of administrative tags assigned to the local system by
            the network operator. The meaning of these tags is opaque to OSPF
            - and their interpretation is per-domain specific";
            reference
              "RFC7777";
    
          }
        }  // grouping ospfv2-lsdb-opaque-ri-admintag-state
    
        grouping ospfv2-lsdb-opaque-ri-unknown-state {
          description
            "State parameters relating to an unknown TLV within the RI LSA";
          uses ospfv2-lsdb-common-unknown-tlv;
        }  // grouping ospfv2-lsdb-opaque-ri-unknown-state
    
        grouping ospfv2-lsdb-opaque-ri-sralgo-state {
          description
            "State parameters relating to the SR Algorithms TLV of the RI LSA";
          leaf-list supported-algorithms {
            type identityref {
              base oc-ospf-types:SR_ALGORITHM;
            }
            description
              "A list of the algorithms that are supported for segment routing
            by the advertising system";
          }
        }  // grouping ospfv2-lsdb-opaque-ri-sralgo-state
    
        grouping ospfv2-lsdb-opaque-ri-srrange-tlv-state {
          description
            "State parameters relating to the SR SID/Label range TLV of the
          RI LSA";
          leaf type {
            type union {
              type identityref {
                base oc-ospf-types:OSPF_RI_SR_SID_LABEL_TLV_TYPES;
              }
              type enumeration {
                enum "UNKNOWN" {
                  value 0;
                  description
                    "The type of the sub-TLV advertised with the SID/Label range
                  TLV of the RI LSA is unknown to the receiving system";
                }
              }
            }
            description
              "The type of the sub-TLV received by the local system within the
            SR SID/Label Range TLV of the RI LSA";
          }
    
          leaf range-size {
            type uint32 {
              range "0..16777216";
            }
            description
              "The number of entries within the range being described within the
            SID/Label range TLV";
          }
        }  // grouping ospfv2-lsdb-opaque-ri-srrange-tlv-state
    
        grouping ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state {
          description
            "State parameters relating to the SR SID/Label sub-TLV of the SR SID/Label
          range TLV of the RI LSA";
          leaf entry-type {
            type oc-ospf-types:sr-sid-type;
            description
              "The type of entry that is contained within the sub-TLV. The range may
            be represented as either a range of MPLS labels, or numeric segment
            identifiers";
          }
    
          leaf first-value {
            type uint32;
            description
              "The first value within the SRGB range being specified. The type of the
            entry is determined based on the value of the entry type as this value
            may represent either a segment identifier or an MPLS label.";
          }
        }  // grouping ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state
    
        grouping ospfv2-lsdb-extended-prefix-state {
          description
            "State parameters relating to an Extended Prefix LSA";
          leaf route-type {
            type enumeration {
              enum "UNSPECIFIED" {
                value 0;
                description
                  "The prefix described in the extended prefix LSA is of an
                unspecified type";
              }
              enum "INTRA_AREA" {
                value 1;
                description
                  "The prefix described in the extended prefix LSA is an intra-area
                prefix for the advertising system";
              }
              enum "INTER_AREA" {
                value 3;
                description
                  "The prefix described in the extended prefix LSA is an inter-area
                prefix for the advertising system";
              }
              enum "AS_EXTERNAL" {
                value 5;
                description
                  "The prefix described in the extended prefix LSA is external to the
                autonomous system of the advertising system";
              }
              enum "NSSA_EXTERNAL" {
                value 7;
                description
                  "The prefix described in the extended prefix LSA externally
                advertised from an NSSA area visibile to the advertising system";
              }
            }
            description
              "The type of prefix that is contained within the Extended Prefix LSA.
            The information contained in sub-TLVs of the attribute is applicable
            regardless of this value.";
          }
    
          uses ospfv2-lsdb-common-prefix-properties;
    
          leaf attached {
            type boolean;
            default 'false';
            description
              "If this value is set to true, the prefix being advertised was
            generated by an ABR for an inter-area prefix. The value corresponds
            to the A-flag of the flags field of the Extended Prefix LSA";
          }
    
          leaf node {
            type boolean;
            default 'false';
            description
              "If this value is set to true, the prefix being advertised represents
            the advertising router. Typically, the prefix within the LSA is
            expected to be globally-reachable prefix associated with a loopback
            interface";
          }
    
          leaf prefix {
            type inet:ipv4-address-no-zone;
            description
              "The IPv4 prefix contained within the extended prefix LSA";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-state
    
        grouping ospfv2-lsdb-extended-link-state {
          description
            "State parameters related to an extended link LSA";
          leaf link-type {
            type identityref {
              base oc-ospf-types:OSPFV2_ROUTER_LINK_TYPE;
            }
            description
              "The type of link with which extended attributes are associated";
          }
    
          uses ospfv2-lsdb-common-link-specification;
        }  // grouping ospfv2-lsdb-extended-link-state
    
        grouping ospfv2-lsdb-extended-link-tlv-state {
          description
            "State parameters relating to a sub-TLV of the extended link LSA";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPFV2_EXTENDED_LINK_SUBTLV_TYPE;
            }
            description
              "The type of the sub-TLV contained within the extended link TLV";
          }
        }  // grouping ospfv2-lsdb-extended-link-tlv-state
    
        grouping ospfv2-lsdb-extended-prefix-tlv-state {
          description
            "State parameters related to a sub-TLV of an Extended Prefix LSA";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE;
            }
            description
              "The type of sub-TLV as indicated by the Extended Prefix LSA";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-tlv-state
    
        grouping ospfv2-lsdb-extended-prefix-range-state {
          description
            "Parameters of the Extended Prefix Range SubTLV";
          uses ospfv2-lsdb-common-prefix-properties;
    
          leaf range-size {
            type uint16;
            description
              "The number of prefixes that are covered by the advertisement.";
          }
    
          leaf inter-area {
            type boolean;
            default 'false';
            description
              "When this leaf is set to true, then the prefix range is inter-area -
            the flag is set by the ABR that advertises the Extended Prefix Range
            TLV";
          }
    
          leaf prefix {
            type inet:ipv4-prefix;
            description
              "The first prefix in the range of prefixes being described by the
            extended prefix range sub-TLV";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-range-state
    
        grouping ospfv2-lsdb-extended-prefix-prefix-sid-state {
          description
            "Parameters of the Prefix-SID sub-TLV";
          leaf no-php {
            type boolean;
            default 'false';
            description
              "If this leaf is set the advertising system has indicated that the
            prefix SID must not be popped before delivering packets to it";
          }
    
          leaf mapping-server {
            type boolean;
            default 'false';
            description
              "If this leaf is set the SID was advertised by a Segment Routing
            mapping server";
          }
    
          leaf explicit-null {
            type boolean;
            default 'false';
            description
              "If this leaf is set, the advertising system has requested that the
            prefix SID value should be replaced with the explicit null label
            value";
          }
    
          leaf sid-value-type {
            type enumeration {
              enum "ABSOLUTE" {
                value 0;
                description
                  "The SID contained in the Prefix-SID sub-TLV is an absolute
                value";
              }
              enum "INDEX" {
                value 1;
                description
                  "The SID contained in the Prefix-SID sub-TLV is an index to the
                SRGB";
              }
            }
            description
              "Specifies the type of the value specified within the Prefix SID
            sub-TLV - in particular, whether the value is an index or an
            absolute value. This value corresponds with the V-flag of the Prefix
            SID sub-TLV";
          }
    
          leaf sid-scope {
            type enumeration {
              enum "LOCAL" {
                value 0;
                description
                  "The value of the SID is
                significant only to the advertising system";
              }
              enum "GLOBAL" {
                value 1;
                description
                  "The value of the SID is globally significant";
              }
            }
            description
              "Specifies the scope of the SID advertisement within the Prefix SID
            sub-TLV. The scope of the SID is independent of whether the SID
            contained is an index, or an absolute value";
          }
    
          leaf multi-topology-identifier {
            type uint8;
            description
              "The identifier for the topology to which the Prefix SID relates. The
            value of this leaf is a MT-ID as defined in RFC4915";
          }
    
          leaf algorithm {
            type uint8;
            description
              "The algorithm that computes the path associated with the Prefix SID";
          }
    
          leaf sid-value {
            type uint32;
            description
              "The value of the Prefix SID. The meaning of this value is dependent
            upon the type of SID, and its scope. The value contained is either a
            32-bit value indicating the index of the SID, or a 24-bit label where
            the 20 right-most bits are used for encoding the label value";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-prefix-sid-state
    
        grouping ospfv2-lsdb-extended-prefix-sid-label-binding-state {
          description
            "State parameters relating to the extended prefix SID SID/Label binding
          sub-TLV";
          leaf mirroring {
            type boolean;
            default 'false';
            description
              "When set to true, this indicates that the SID/Label Binding sub-TLV
            entries contained within this TLV are indicative of a mirroring
            context";
          }
    
          leaf multi-topology-identifier {
            type uint8;
            description
              "The identifier for the topology to which the SID/Label Binding
            sub-TLV is associated. The value of this leaf is a MT-ID as defined
            in RFC4915";
          }
    
          leaf weight {
            type uint8;
            description
              "The weight of the advertised binding when used for load-balancing
            purposes";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-sid-label-binding-state
    
        grouping ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state {
          description
            "State parameters directly relating to the SID/Label Binding TLV";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE;
            }
            description
              "The type of sub-TLV that is being contained within the SID/Label
            sub-TLV";
          }
        }  // grouping ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state
    
        grouping ospfv2-lsdb-extprefix-sid-label-binding-state {
          description
            "State parameters relating to the SID/Label binding sub-TLV of the
          SID/Label/Binding TLV";
          uses ospfv2-lsdb-common-sr-sid-spec;
        }  // grouping ospfv2-lsdb-extprefix-sid-label-binding-state
    
        grouping ospfv2-lsdb-extprefix-sid-label-ero-metric-state {
          description
            "State parameters relating to the ERO Metric Sub-TLV of the SID/Label
          Binding TLV";
          leaf metric {
            type uint32;
            description
              "The metric representing the aggregate IGP or TE path cost for the
            binding included within the SID/Label Binding TLV";
          }
        }  // grouping ospfv2-lsdb-extprefix-sid-label-ero-metric-state
    
        grouping ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state {
          description
            "State parameters relating to the a segment included within the
          ERO Path Sub-TLV of the SID/Label Binding TLV";
          leaf type {
            type identityref {
              base oc-ospf-types:OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE;
            }
            description
              "The type of the segment being specified as part of the ERO";
          }
    
          leaf loose {
            type boolean;
            default 'false';
            description
              "If this leaf is set the segment is identifier as a loose path
            segment, otherwise the path strictly follows the path specified";
          }
        }  // grouping ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state
    
        grouping ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state {
          description
            "State parameters relating to an IPv4 address segment included within
          the ERO path";
          leaf address {
            type inet:ipv4-address-no-zone;
            description
              "The IPv4 address of the hop within the ERO";
          }
        }  // grouping ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state
    
        grouping ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state {
          description
            "State parameters relating to an unnumbered hop within the ERO path";
          leaf router-id {
            type inet:ipv4-address-no-zone;
            description
              "The IPv4 router identtifier of the remote system";
          }
    
          leaf interface-id {
            type uint32;
            description
              "The identifier assigned to the link by the remote system";
          }
        }  // grouping ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state
    
        grouping ospfv2-lsdb-extended-link-adj-sid-state {
          description
            "State parameters relating to the Adjacency SID sub-TLV of the
          Extended Link LSA";
          leaf backup {
            type boolean;
            default 'false';
            description
              "When this flag is set, it indicates that the adjacency SID refers to
            an adjacency which is eligible for protection";
          }
    
          leaf group {
            type boolean;
            default 'false';
            description
              "When this flag is set it indicates that the adjacency SID refers to
            a group of adjacencies that have a common value";
          }
    
          uses ospfv2-lsdb-common-sr-sid-spec;
    
          leaf weight {
            type uint8;
            description
              "The weight of the Adjacency SID when used for load-balancing";
          }
    
          leaf multi-topology-identifier {
            type uint8;
            description
              "The multi-topology identifier with which the adjacency SID is
            associated";
          }
        }  // grouping ospfv2-lsdb-extended-link-adj-sid-state
    
        grouping ospfv2-lsdb-structure {
          description
            "Structural grouping for per-area LSDB contents";
          container lsdb {
            config false;
            description
              "The link-state database for the OSPFv2 area";
            container state {
              description
                "Operational state parameters relating to the OSPFv2
              area";
              uses ospfv2-lsdb-area-state;
            }  // container state
    
            container lsa-types {
              description
                "Enclosing container for a list of LSA types that are
              in the LSDB for the specified area";
              list lsa-type {
                key "type";
                description
                  "List of LSA types in the LSDB for the specified
                area";
                leaf type {
                  type leafref {
                    path "../state/type";
                  }
                  description
                    "A reference for the LSA type being described within
                  the LSDB";
                }
    
                container state {
                  description
                    "Top-level operational state parameters relating to
                  an LSA within the area";
                  uses ospfv2-lsdb-area-lsa-type-state;
                }  // container state
    
                container lsas {
                  description
                    "Enclosing container for a list of the LSAs of
                  the specified type received by the system";
                  list lsa {
                    key "link-state-id";
                    description
                      "List of the LSAs of a specified type in the
                    LSDB for the specified area";
                    leaf link-state-id {
                      type leafref {
                        path
                          "../state/link-state-id";
                      }
                      description
                        "Reference to the Link State ID of the LSA";
                    }
    
                    container state {
                      description
                        "Operational state parameters relating to all
                      LSA types";
                      uses ospfv2-lsdb-area-lsa-state;
                    }  // container state
    
                    uses ospfv2-lsdb-router-lsa-structure {
                      when
                        "../../../state/type = 'ROUTER_LSA'" {
                        description
                          "Include the router LSA hierarchy solely when
                        that LSA type is being described";
                      }
                    }
    
                    uses ospfv2-lsdb-network-lsa-structure {
                      when
                        "../../../state/type = 'NETWORK_LSA'" {
                        description
                          "Include the network LSA hierarchy solely when
                        that LSA type is being described";
                      }
                    }
    
                    uses ospfv2-lsdb-summary-lsa-structure {
                      when
                        "../../../state/type = "
                          + "'SUMMARY_IP_NETWORK_LSA' or "
                          + "../../../state/type = 'SUMMARY_ASBR_LSA'" {
                        description
                          "Include the summary LSA hierarchy solely when
                        that LSA type is being described";
                      }
                    }
    
                    uses ospfv2-lsdb-asexternal-lsa-structure {
                      when
                        "../../../state/type = 'AS_EXTERNAL_LSA'" {
                        description
                          "Include the AS external LSA hierarchy solely when
                        that LSA type is being described";
                      }
                    }
    
                    uses ospfv2-lsdb-nssa-external-lsa-structure {
                      when
                        "../../../state/type = 'NSSA_AS_EXTERNAL_LSA'" {
                        description
                          "Include the NSSA External LSA hierarchy solely
                        when that LSA type is being described";
                      }
                    }
    
                    uses ospfv2-lsdb-opaque-lsa-structure {
                      when
                        "../../../state/type = 'OSPFV2_LINK_SCOPE_OPAQUE_LSA'
                      or ../../../state/type = 'OSPFV2_AREA_SCOPE_OPAQUE_LSA'
                      or ../../../state/type = 'OSPFV2_AS_SCOPE_OPAQUE_LSA'" {
                        description
                          "Include the Opaque LSA structure when type of entry
                        being described in an opaque LSA";
                      }
                    }
                  }  // list lsa
                }  // container lsas
              }  // list lsa-type
            }  // container lsa-types
          }  // container lsdb
        }  // grouping ospfv2-lsdb-structure
      }  // submodule openconfig-ospfv2-lsdb
    

© 2023 YumaWorks, Inc. All rights reserved.