<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  consensus="true"
  docName="draft-ietf-lsvr-bgp-ls-yang-05"
  ipr="trust200902"
  obsoletes=""
  submissionType="IETF"
  updates=""
  xml:lang="en"
  version="3">

  <front>
    <title abbrev="BGP LS, LS-VPN, LS-SPF YANG Model">A YANG Model for BGP-LS, BGP-LS-VPN, and BGP-LS-SPF</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lsvr-bgp-ls-yang-05"/>

    <author fullname="Mahesh Jethanandani" initials="M." role="editor" surname="Jethanandani">
      <organization>Arrcus, Inc</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country/>
        </postal>
        <phone/>
        <email>mjethanandani@gmail.com</email>
        <uri/>
      </address>
    </author>
    <author fullname="Keyur Patel" initials="K." surname="Patel">
      <organization>Arrcus, Inc</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country/>
        </postal>
        <phone/>
        <email>keyur@arrcus.com</email>
        <uri/>
      </address>
    </author>
    <author fullname="Aravind Babu MahendraBabu" initials="A." surname="MahendraBabu">
      <organization>Cisco, Inc</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>India</country>
        </postal>
        <phone/>
        <email>aramahen@cisco.com</email>
        <uri/>
      </address>
    </author>

    <date/>
    <area>Routing</area>
    <workgroup>LSVR</workgroup>
    <keyword>bgp</keyword>
    <keyword>bgp-ls</keyword>
    <keyword>bgp-ls-vpn</keyword>
    <keyword>bgp-ls-spf</keyword>
    <keyword>yang</keyword>

    <abstract>
      <t>This document defines a YANG data model for configuration
      and management of BGP-LS, BGP-LS-VPN, and BGP-LS-SPF.</t>
    </abstract>
  </front>

  <middle>

    <section>
      <name>Introduction</name>
      <t><xref target="RFC9552"/> describes a mechanism by which
      Link-State (LS) and Traffic Engineering (TE) topology information
      can be collected from Interior Gateway Protocols (IGPs) and
      distributed to external components using the Border Gateway
      Protocol (BGP).  When combined with the Shortest Path First (SPF)
      algorithm, this mechanism allows BGP to compute routes directly
      from the distributed topology.  <xref target="RFC9815"/> describes
      BGP Link-State Shortest Path First (BGP-LS-SPF) routing, a mode
      that enables BGP to serve as both the underlay and overlay protocol
      in Massively Scaled Data Centers (MSDCs).  This document defines a
      <xref target="RFC7950">YANG 1.1</xref> data model for configuring
      BGP-LS, BGP-LS-VPN, and BGP-LS-SPF on a router.  It also defines
      a read-only model for the Link-State Database (LSDB), which stores
      the Node, Link, Prefix, and SRv6 Segment Identifier (SID) Network
      Layer Reachability Information (NLRI) received via BGP-LS.</t>

      <t>The data model is organized across five YANG modules.  The
      <tt>ietf-bgp-ls</tt> module augments the BGP configuration model
      to add the three new address families: BGP-LS, BGP-LS-VPN, and
      BGP-LS-SPF.  The <tt>ietf-bgp-lsdb</tt> module provides the
      read-only Link-State Database, together with submodules that define
      the Node, Link, Prefix, and SRv6 SID NLRI types and their
      associated attributes.  The attribute definitions in those
      submodules cover the IGP topology attributes from
      <xref target="RFC9552"/>, the Segment Routing extensions from
      <xref target="RFC9085"/>, the BGP Peering Segment extensions from
      <xref target="RFC9086"/>, the Flexible Algorithm extensions from
      <xref target="RFC9351"/>, and the SRv6 extensions from
      <xref target="RFC9514"/>.</t>

      <section>
	<name>Requirements Language</name>
	<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
	"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
	RECOMMENDED", "MAY", and "OPTIONAL" in this document are to
	be interpreted as described in BCP 14 <xref
	target="RFC2119"/> <xref target="RFC8174"/> when, and
	only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>

    <section>
      <name>Terminology</name>
      <t>This section defines terms and acronyms used throughout this
      document.  Terms imported from other specifications are listed
      with their source.</t>

      <dl newline="true" spacing="normal">
        <dt>BGP SPF Routing Domain:</dt>
        <dd>A BGP routing domain operating in BGP-LS-SPF mode, as
        defined in Section 2 of <xref target="RFC9815"/>.  All routers
        in the domain exchange BGP-LS-SPF NLRIs and independently run
        SPF to compute their routing tables.</dd>

        <dt>BGP-LS-SPF NLRI:</dt>
        <dd>A BGP-LS NLRI type used to carry Node, Link, and Prefix
        reachability information in a BGP-LS-SPF routing domain, as
        defined in <xref target="RFC9815"/>.</dd>
      </dl>

      <section>
	<name>Acronyms</name>
	<t>This document uses the following acronyms.</t>
	<table>
	  <name>Acronyms</name>
          <thead>
            <tr><th>Acronym</th><th>Definition</th></tr>
          </thead>
          <tbody>
	    <tr><td>AFI</td><td>Address Family Indicator</td></tr>
	    <tr><td>BGP</td><td>Border Gateway Protocol</td></tr>
	    <tr><td>BGP-LS</td><td>BGP Link-State</td></tr>
	    <tr><td>BGP-LS-SPF</td><td>BGP Link-State Shortest Path First</td></tr>
	    <tr><td>EPE</td><td>Egress Peer Engineering</td></tr>
	    <tr><td>FAD</td><td>Flexible Algorithm Definition</td></tr>
	    <tr><td>IS-IS</td><td>Intermediate System to Intermediate System</td></tr>
	    <tr><td>LS</td><td>Link-State</td></tr>
	    <tr><td>LSA</td><td>Link-State Advertisement</td></tr>
	    <tr><td>LSDB</td><td>Link-State Database</td></tr>
	    <tr><td>MSD</td><td>Maximum SID Depth</td></tr>
	    <tr><td>MSDC</td><td>Massively Scaled Data Center</td></tr>
	    <tr><td>NLRI</td><td>Network Layer Reachability Information</td></tr>
	    <tr><td>OSPF</td><td>Open Shortest Path First</td></tr>
	    <tr><td>SAFI</td><td>Subsequent Address Family Indicator</td></tr>
	    <tr><td>SID</td><td>Segment Identifier</td></tr>
	    <tr><td>SPF</td><td>Shortest Path First</td></tr>
	    <tr><td>SR</td><td>Segment Routing</td></tr>
	    <tr><td>SRGB</td><td>Segment Routing Global Block</td></tr>
	    <tr><td>SRLB</td><td>Segment Routing Local Block</td></tr>
	    <tr><td>SRLG</td><td>Shared Risk Link Group</td></tr>
	    <tr><td>SRv6</td><td>Segment Routing over IPv6</td></tr>
	    <tr><td>TE</td><td>Traffic Engineering</td></tr>
	    <tr><td>TLV</td><td>Type-Length-Value</td></tr>
	    <tr><td>VRF</td><td>Virtual Routing and Forwarding</td></tr>
          </tbody>
	</table>
      </section>
    </section>

    <section>
      <name>Tree Diagram</name>
      <t>The tree diagram below shows an abridged view of the
      <tt>ietf-bgp-ls</tt> module and the top-level containers of the
      <tt>ietf-bgp-lsdb</tt> module.  The <tt>bgp-ls-topology</tt>
      container holds one or more instances, each identified by a VRF
      name, protocol (IS-IS Level 1 or Level 2, OSPFv2, OSPFv3, or
      BGP), and a 64-bit domain identifier.  Within each instance,
      separate containers hold the Node, Link, Prefix, and SRv6 SID
      NLRIs indexed by their protocol-specific key fields.  A complete
      tree diagram is provided in <xref target="appendix-tree"/>.
      Annotations used in the diagram are defined in
      <xref target="RFC8340"/>.</t>
      <figure>
	<name>Tree Diagram for BGP-LS, BGP-LS-SPF YANG Model</name>
        <artwork><![CDATA[
module: ietf-bgp-ls

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:global
            /bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?          uint32
    |  +--rw max-number?        uint32
    |  +--ro bgp-ls-topology
    |     +--ro instances
    |           ...
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw instance-identifier?   uint64
       +--rw algorithm-type?        spf-algorithm-type
       +--rw node-status?           enumeration
       +--ro log
       |  +--ro event* (id)
       |        ...
       +--ro bgp-ls-topology
          +--ro instances
                ...
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:neighbors
            /bgp:neighbor/bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?       uint32
    |  +--rw max-number?     uint32
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw metric?         uint32
       +--rw status?         enumeration
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:neighbors
            /bgp:neighbor/bgp:statistics:
    +--ro updates-sent?             yang:zero-based-counter32
    +--ro updates-received?         yang:zero-based-counter32
    +--ro error-updates-received?   yang:zero-based-counter32
    +--ro computations?             yang:zero-based-counter32
    +--ro triggering-events?        yang:zero-based-counter32
    +---x clear {ibt:clear-statistics}?
       +---w input
       |  +---w clear-at?   yang:date-and-time
       +--ro output
          +--ro clear-finished-at?   yang:date-and-time
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:peer-groups
            /bgp:peer-group/bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?       uint32
    |  +--rw max-number?     uint32
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw metric?         uint32
       +--rw status?         enumeration
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:rib/bgp:afi-safis
            /bgp:afi-safi:
    +--ro link-state
       +--ro loc-rib
       |  +--ro routes
       |        ...
       +--ro neighbors
          +--ro neighbor* (neighbor-address)
                ...

]]></artwork>
      </figure>

    </section>

    <section>
      <name>YANG Models</name>
      <section>
	<name>BGP Link-State YANG model</name>
	<t>The <tt>ietf-bgp-ls</tt> module augments the BGP model
	<xref target="I-D.ietf-idr-bgp-model"/> to add support for
	three new Address Family Indicator (AFI) / Subsequent Address
	Family Indicator (SAFI) combinations: BGP-LS, BGP-LS-VPN, and
	BGP-LS-SPF.</t>

	<t>The BGP model is augmented both at a global level and at a
	neighbor level to add support for the three new AFI/SAFI
	combinations.  In addition, there is support for per-address-family
	statistics both at a global and at a neighbor level.  The
	<tt>clear-statistics</tt> feature defined in
	<xref target="I-D.ietf-idr-bgp-model"/> is used in this model to
	determine whether the ability to clear statistics is supported.</t>

        <t>The <tt>ietf-bgp-ls</tt> module also augments the BGP RIB
        defined in <xref target="I-D.ietf-idr-bgp-model"/> with a
        <tt>link-state</tt> container that is present when the AFI/SAFI
        is BGP-LS, BGP-LS-VPN, or BGP-LS-SPF.  Following the structure
        used for the IPv4 and IPv6 unicast address families, it contains
        a Loc-RIB and, for each neighbor, Adj-RIB-In and Adj-RIB-Out
        tables, both pre- and post-policy.</t>

        <t>Each route is keyed by its encoded Link-State NLRI, as defined
        in <xref target="RFC9552" section="5.2" sectionFormat="of"/>,
        together with the path identifier and, in the Loc-RIB, the route
        origin.  The encoded NLRI is used as the key because most NLRI
        descriptors are optional, and because
        <xref target="RFC9552" section="5.2.1.4" sectionFormat="of"/>
        identifies an NLRI by a binary comparison of its encoding,
        including any sub-TLVs unknown to the implementation.  A key built
        from decoded descriptors could therefore map two distinct NLRIs to
        the same entry.  The decoded descriptors are instead reported as
        non-key leaves of each route: the Route Distinguisher for
        BGP-LS-VPN, the local and remote Node Descriptors (including the
        BGP Router-ID and Member-ASN defined in <xref target="RFC9086"/>),
        the Link Descriptors, and the Prefix Descriptors.</t>

        <t>Routes reference the shared path attribute sets of the BGP RIB
        and carry the BGP-LS Attribute in its encoded form; its decoded
        contents are available in the LSDB.  For BGP-LS-SPF, each route
        also reports the sequence number that <xref target="RFC9815"/>
        uses in place of the BGP decision process to select among NLRIs.
        The <tt>clear-routes</tt> feature defined in
        <xref target="I-D.ietf-idr-bgp-model"/> determines whether routes
        in the Adj-RIB tables can be cleared.</t>

        <t>The module imports <tt>ietf-yang-types</tt> and
        <tt>ietf-inet-types</tt> <xref target="RFC9911"/>,
        <tt>ietf-routing</tt> <xref target="RFC8349"/>,
        <tt>ietf-routing-types</tt> <xref target="RFC8294"/>,
        <tt>ietf-isis</tt> <xref target="RFC9130"/>,
        <tt>ietf-ospf</tt> <xref target="RFC9129"/>, the BGP module from
        <xref target="I-D.ietf-idr-bgp-model"/>, and the
        <tt>ietf-bgp-ls-topo-types</tt> and <tt>ietf-bgp-lsdb</tt>
        modules defined in this document.</t>

	<figure>
          <name>YANG Model for BGP-LS, BGP-LS-VPN, BGP-LS-SPF</name>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-bgp-ls@2026-11-02.yang"
module ietf-bgp-ls {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-ls";
  prefix bgp-ls;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types.";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349, A YANG Data Model for Routing Management
       (NMDA Version).";
  }
  import ietf-routing-types {
    prefix ietf-rt-t;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area.";
  }
  import ietf-isis {
    prefix ietf-isis-t;
    reference
      "RFC 9130: YANG Data Model for IS-IS Protocol.";
  }
  import ietf-ospf {
    prefix ietf-ospf-t;
    reference
      "RFC 9129: YANG Data Model for the OSPF Protocol.";
  }
  import ietf-bgp {
    prefix bgp;
    reference
      "I-D.ietf-idr-bgp-model: BGP YANG Model for Service Provider
                               Networks.";
  }
  import iana-bgp-afi-safi-types {
    prefix bast;
    reference
      "I-D.ietf-idr-bgp-model: BGP YANG Model for Service Provider
                               Networks.";
  }
  import ietf-bgp-types {
    prefix ibt;
    reference
      "I-D.ietf-idr-bgp-model: BGP YANG Model for Service Provider
                               Networks.";
  }
  import ietf-bgp-lsdb {
    prefix bgp-lsdb;
    reference
      "RFC XXXX: A YANG model for BGP-LS, BGP-LS-VPN,
                 and BGP-LS-SPF.";
  }
  import ietf-bgp-ls-topo-types {
    prefix bgp-ls-topo-t;
    reference
      "RFC XXXX: A YANG model for BGP-LS, BGP-LS-VPN,
                 and BGP-LS-SPF.";
  }

  organization
    "IETF LSVR Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lsvr>
     WG List:  <lsvr@ietf.org>

     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),
              Keyur Patel (keyur at arrcus.com),
              Aravind Babu MahendraBabu (aramahen at cisco.com)";

  description
    "This module contains contains management
     information for BGP-LS database.

     Copyright (c) 2023 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-11-02 {
    description
      "Initial Version";
    reference
      "RFC XXXX, BGP Model for Link State Distribution.";
  }

  // Identities.
  identity bgp-ls {
    base bast:afi-safi-type;
    description
      "BGP Link-State.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP.";
  }

  identity bgp-ls-vpn {
    base bast:afi-safi-type;
    description
      "BGP Link-State VPN.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP.";
  }

  identity bgp-ls-spf {
    base bast:afi-safi-type;
    description
      "BGP Link-State Shortest Path First (BGP-LS-SPF).";
    reference
      "RFC 9815: BGP Link-State SPF Routing.";
  }

  identity attribute-type {
    description
      "Base identity for BGP-LS Attribute type.";
  }

  identity multi-topology-identifier {
    base attribute-type;
    description
      "Multi Topology Identifier TLV.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP.";
  }

  identity node-flag-bits {
    base attribute-type;
    description
      "The Node Flag Bits TLV.";
    reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
  }

  identity opaque-node-attribute {
    base attribute-type;
    description
      "The Opaque Node Attribute TLV.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP.";
  }

  identity node-name {
    base attribute-type;
    description
      "The Node Name TLV.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP.";
  }

  identity isis-area-identifier {
    base attribute-type;
    description
      "IS-IS Area Identifier.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP."; 
  }

  identity ipv4-route-id-of-local-node {
    base attribute-type;
    description
      "IPv4 Router-ID of Local Node.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP."; 
  }

  identity ipv6-router-id-of-local-node {
    base attribute-type;
    description
      "IPv6 Router-ID of Local Node.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP."; 
  }

  // Typedefs
  typedef spf-algorithm-type {
    type enumeration {
      enum normal {
        description
          "Normal Shortest Path First (SPF) algorithm based on link 
           metric. This is the standard shortest path algorithm as 
           computed by the IGP protocol. Consistent with the
           deployed practice for link-state protocols, Algorithm 0
	   permits any node to overwrite the SPF path with a
	   different path based on its local policy.";
      }
      enum strict {
        description
          "Strict Shortest Path First (SPF) algorithm based on link
           metric. The algorithm is identical to Algorithm 0 but
           Algorithm 1 requires that all nodes along the path will
           honor the SPF routing decision. Local policy at the node
           claiming support for Algorithm 1 MUST NOT alter the SPF
           paths computed by Algorithm 1";
      }
      enum unknown {
        description
          "Unknown Algorithm";
      }
    }
    description
      "SPF algorithm type.";
  }
      
  // Groupings
  grouping bgp-neighbor-ls-common {
    description
      "Grouping for neighbor configuration for Link-State.";
    
      leaf metric {
        type uint32;
        default 10;
        description 
          "Metric associated with the corresponding link to 
           be used in the SPF graph computation.";
      }

      leaf status {
        type enumeration {
          enum reachable {
            description
              "The link is reachable in the current SPF topology.";
          }
          enum unreachable {
            description
              "The link is unreachable in the current SPF
               topology.";
          }
        }
        default reachable;
        description 
          "Sets SPF-Status of the corresponding LS Link NLRI.";

      }
  }

  grouping bgp-mp-ls {
    description
      "Grouping for BGP-LS paramters.";

    container link-state {
      when "derived-from-or-self(../../bgp:afi-safi/bgp:name, " +
           "'bgp-ls')" {
	      description
	        "Include this container for BGP Linkstate specific
           configuration";
      }
      presence
	      "This container is for BGP Linkstate specific
              congfiguration.";
      
      description
        "Information related to Link-State configuration and
         management.";

      uses bgp:mp-all-afi-safi-common;

      leaf max-rate {
        type uint32;
        units per-second;
        default 200;
        description
          "Maximum rate at which Link-State NLRIs will be
           advertised or withdrawn from neighbors.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP.";
      }

      leaf max-number {
        type uint32;
        description
          "Maximim number of Link-State NLRIs stored in a router's
           RIB.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP.";
      }
    }
  }

  grouping bgp-mp-ls-spf {
    description
      "Grouping for BGP-LS-SPF parameters.";
    
    container link-state-spf {
      when "derived-from-or-self (../../bgp:afi-safi/bgp:name, " +
                                 "'bgp-ls-spf')" {
	description
	  "Include this container for BGP Link-State SPF specific
           configuration";
      }
      description "BGP Linkstate-SPF configuration options";

      uses bgp:mp-all-afi-safi-common;
    }
  }

  grouping bgp-ls-rib-route-key {
    description
      "Grouping for the key that identifies a Link-State NLRI in
       the BGP RIB.";

    leaf nlri {
      type yang:hex-string;
      description
        "The Link-State NLRI, encoded as specified in RFC 9552,
         starting with the NLRI Type field. For BGP-LS-VPN, the
         NLRI includes the Route Distinguisher.

         The encoded NLRI is used as the key because RFC 9552
         identifies an NLRI by a binary comparison of its encoding,
         including any sub-TLVs unknown to the implementation. The
         decoded descriptors of the NLRI are provided as non-key
         leaves.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.";
    }
  }

  grouping bgp-ls-rib-node-descriptors {
    description
      "Decoded Node Descriptor sub-TLVs of a Link-State NLRI.
       Leaves are present only when the corresponding sub-TLV is
       present in the NLRI.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP, Section 5.2.1.4.";

    leaf as {
      type inet:as-number;
      description
        "Autonomous System (AS) number associated with the BGP
         process originating the link-state information.";
    }

    leaf bgp-ls-identifier {
      type uint32;
      status deprecated;
      description
        "BGP-LS Identifier. Deprecated by RFC 9552, and present
         only for compatibility with RFC 7752 implementations.";
    }

    leaf area-id {
      type ietf-ospf-t:area-id-type;
      description
        "OSPF Area ID to which the information advertised in the
         NLRI belongs.";
    }

    choice igp-router-id {
      description
        "Decoded IGP Router-ID. The form of the Router-ID depends
         on the protocol from which the NLRI was learned.";

      case isis {
        leaf system-id {
          type ietf-isis-t:system-id;
          description
            "IS-IS System ID of the node, or of the Designated
             Intermediate System (DIS) for a pseudonode.";
        }

        leaf psn-id {
          type uint8 {
            range "1..255";
          }
          description
            "Pseudonode (PSN) identifier. Present only for an IS-IS
             pseudonode.";
        }
      }

      case ospf {
        leaf router-id {
          type ietf-rt-t:router-id;
          description
            "OSPF Router ID of the node, or of the Designated
             Router (DR) for a pseudonode.";
        }

        leaf dr-identifier {
          type inet:ipv4-address;
          description
            "IPv4 address of the DR's interface to the LAN.
             Present only for an OSPFv2 pseudonode.";
        }

        leaf dr-interface-id {
          type uint32;
          description
            "Interface identifier of the DR's interface to the LAN.
             Present only for an OSPFv3 pseudonode.";
        }
      }

      case direct-or-static {
        leaf router-address {
          type inet:ip-address;
          description
            "IPv4 or IPv6 address configured on the node, used as
             the Router-ID for 'Direct' or 'Static configuration'.";
        }
      }
    }

    leaf bgp-router-id {
      type yang:dotted-quad;
      description
        "BGP Router-ID of the node, for NLRIs whose protocol is
         BGP.";
      reference
        "RFC 9086: Border Gateway Protocol - Link State (BGP-LS)
         Extensions for Segment Routing BGP Egress Peer
         Engineering, Section 4.1.";
    }

    leaf member-as {
      type inet:as-number;
      description
        "AS number of the BGP confederation member, for NLRIs
         whose protocol is BGP.";
      reference
        "RFC 9086: Border Gateway Protocol - Link State (BGP-LS)
         Extensions for Segment Routing BGP Egress Peer
         Engineering, Section 4.1.";
    }
  }

  grouping bgp-ls-rib-nlri-descriptors {
    description
      "Decoded descriptors of a Link-State NLRI. These are derived
       from the 'nlri' key of the route and are provided for
       readability.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP, Section 5.2.";

    leaf route-distinguisher {
      when "derived-from-or-self(ancestor::bgp:afi-safi/bgp:name, "
         + "'bgp-ls:bgp-ls-vpn')" {
        description
          "Include this leaf only for BGP-LS-VPN.";
      }
      type ietf-rt-t:route-distinguisher;
      description
        "Route Distinguisher of a BGP-LS-VPN NLRI.";
    }

    container local-node-descriptors {
      when "../nlri-type = 'node' or ../nlri-type = 'link' or "
         + "../nlri-type = 'ipv4-prefix' or "
         + "../nlri-type = 'ipv6-prefix'" {
        description
          "Include this container for Node, Link, and Prefix
           NLRIs.";
      }
      description
        "Descriptors of the node anchoring the local end of the
         link, or the node itself for a Node NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.1.2.";
      uses bgp-ls-rib-node-descriptors;
    }

    container remote-node-descriptors {
      when "../nlri-type = 'link'" {
        description
          "Include this container only for Link NLRIs.";
      }
      description
        "Descriptors of the node anchoring the remote end of the
         link.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.1.3.";
      uses bgp-ls-rib-node-descriptors;
    }

    container link-descriptors {
      when "../nlri-type = 'link'" {
        description
          "Include this container only for Link NLRIs.";
      }
      description
        "Descriptors that uniquely identify a link among multiple
         parallel links between a pair of anchor nodes. Leaves are
         present only when the corresponding TLV is present in the
         NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.2.";

      leaf link-local-identifier {
        type uint32;
        description
          "Link Local Identifier.";
      }

      leaf link-remote-identifier {
        type uint32;
        description
          "Link Remote Identifier.";
      }

      leaf ipv4-interface-address {
        type inet:ipv4-address;
        description
          "IPv4 interface address.";
      }

      leaf ipv4-neighbor-address {
        type inet:ipv4-address;
        description
          "IPv4 neighbor address.";
      }

      leaf ipv6-interface-address {
        type inet:ipv6-address;
        description
          "IPv6 interface address.";
      }

      leaf ipv6-neighbor-address {
        type inet:ipv6-address;
        description
          "IPv6 neighbor address.";
      }

      leaf multi-topology-id {
        type uint16 {
          range "0..4095";
        }
        description
          "Multi-Topology Identifier of the topology in which the
           link is reachable.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.2.2.1.";
      }
    }

    container prefix-descriptors {
      when "../nlri-type = 'ipv4-prefix' or "
         + "../nlri-type = 'ipv6-prefix'" {
        description
          "Include this container only for IPv4 and IPv6 Prefix
           NLRIs.";
      }
      description
        "Descriptors that uniquely identify a prefix originated by
         a node. Leaves are present only when the corresponding TLV
         is present in the NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.3.";

      leaf multi-topology-id {
        type uint16 {
          range "0..4095";
        }
        description
          "Multi-Topology Identifier of the topology in which the
           prefix is reachable.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.2.2.1.";
      }

      leaf ospf-route-type {
        type bgp-ls-topo-t:ospf-route-type;
        description
          "OSPF route type of the prefix.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.2.3.1.";
      }

      leaf ip-reachability-information {
        type inet:ip-prefix;
        description
          "The IPv4 or IPv6 prefix originally advertised in the IGP
           topology.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.2.3.2.";
      }
    }
  }

  grouping bgp-ls-rib-route-state {
    description
      "Grouping for the state associated with a Link-State NLRI
       in the BGP RIB.";

    leaf nlri-type {
      type bgp-ls-topo-t:nlri-type;
      description
        "The type of Link-State NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.";
    }

    leaf protocol-id {
      type bgp-ls-topo-t:protocol;
      description
        "The protocol from which the Link-State information
         carried in the NLRI was learned.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.";
    }

    leaf identifier {
      type uint64;
      description
        "Instance identifier identifying the IGP routing domain
         where the NLRI belongs.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.";
    }

    uses bgp-ls-rib-nlri-descriptors;

    leaf ls-attribute {
      type yang:hex-string;
      description
        "The BGP-LS Attribute associated with the NLRI, encoded as
         a set of TLVs. The decoded contents of the attribute are
         available in the Link-State database.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.3.";
    }

    leaf sequence-number {
      when "derived-from-or-self(ancestor::bgp:afi-safi/bgp:name, "
         + "'bgp-ls:bgp-ls-spf')" {
        description
          "Include this leaf only for BGP-LS-SPF.";
      }
      type uint64;
      description
        "The sequence number carried in the BGP-LS-SPF Sequence
         Number TLV. The TLV is mandatory for BGP-LS-SPF
         NLRIs, and an NLRI received without it is treated as
         withdrawn.  This leaf is therefore present for every
         BGP-LS-SPF route, except one received without a BGP-LS
         Attribute, which is preserved and propagated but not used
         in the SPF calculation.";
      reference
        "RFC 9815: BGP Link-State SPF Routing, Sections 5.2.4,
         6.1, and 7.1.";
    }

    uses bgp:bgp-common-route-annotations-state;
    uses bgp:bgp-unknown-attr-top;
    uses bgp:rib-ext-route-annotations;
  }

  grouping bgp-ls-adj-rib-common {
    description
      "Common structural grouping for each Link-State Adj-RIB
       table.";

    container routes {
      config false;
      description
        "Enclosing container for the list of Link-State routes in
         the table.";

      list route {
        key "nlri path-id";
        description
          "List of Link-State routes in the table, keyed by the
           NLRI and path-id, to distinguish multiple routes
           received from a neighbor for the same NLRI.";

        uses bgp-ls-rib-route-key;
        uses bgp:bgp-adj-rib-attr-state;
        uses bgp:bgp-adj-rib-common-attr-refs;
        uses bgp-ls-rib-route-state;
      }
    }
  }

  grouping bgp-ls-adj-rib-in-post {
    description
      "Structural grouping for the Link-State Adj-RIB-In
       post-policy table.";

    uses bgp-ls-adj-rib-common {
      augment "routes/route" {
        description
          "Add best-path annotation to Adj-RIB-In post-policy
           routes.";
        uses bgp:bgp-adj-rib-in-post-route-annotations-state;
      }
    }
  }

  grouping bgp-ls-rib {
    description
      "Grouping for the BGP-LS, BGP-LS-VPN, and BGP-LS-SPF
       routing tables.";

    container link-state {
      when "derived-from-or-self(../bgp:name, 'bgp-ls:bgp-ls') or "
         + "derived-from-or-self(../bgp:name, 'bgp-ls:bgp-ls-vpn') or "
         + "derived-from-or-self(../bgp:name, 'bgp-ls:bgp-ls-spf')" {
        description
          "Include this container for the BGP-LS, BGP-LS-VPN, and
           BGP-LS-SPF RIBs.";
      }
      description
        "Routing tables for Link-State -- active when the afi-safi
         name is bgp-ls, bgp-ls-vpn, or bgp-ls-spf.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP, Section 5.2.
         RFC 9815: BGP Link-State SPF Routing.";

      container loc-rib {
        config false;
        description
          "Container for the Link-State BGP Loc-RIB data.";

        container routes {
          description
            "Enclosing container for the list of Link-State routes
             in the routing table.";

          list route {
            key "nlri origin path-id";
            description
              "List of Link-State routes in the table, keyed by the
               NLRI, the route origin, and path-id. The route origin
               can be either the neighbor address from which the
               route was learned, or the source protocol that
               injected the route. The path-id distinguishes routes
               for the same NLRI received from a neighbor (e.g., if
               add-paths is enabled).";

            uses bgp-ls-rib-route-key;
            uses bgp:bgp-loc-rib-common-keys;
            uses bgp:bgp-loc-rib-common-attr-refs;
            uses bgp-ls-rib-route-state;
          }
        }
      }

      container neighbors {
        config false;
        description
          "Enclosing container for neighbor list.";

        list neighbor {
          key "neighbor-address";
          description
            "List of neighbors (peers) of the local BGP speaker.";

          leaf neighbor-address {
            type inet:ip-address;
            description
              "IP address of the BGP neighbor or peer.";
          }

          container adj-rib-in-pre {
            description
              "Per-neighbor table containing the Link-State routes
               received from the neighbor before any local input
               policy rules or filters have been applied.";
            uses bgp-ls-adj-rib-common;
            uses bgp:clear-routes {
              description
                "Clears the adj-rib-in state for the containing
                 neighbor.";
            }
          }

          container adj-rib-in-post {
            description
              "Per-neighbor table containing the Link-State routes
               received from the neighbor that are eligible for
               best-path selection after local input policy rules
               have been applied.";
            uses bgp-ls-adj-rib-in-post;
            uses bgp:clear-routes {
              description
                "Clears the adj-rib-in state for the containing
                 neighbor.";
            }
          }

          container adj-rib-out-pre {
            description
              "Per-neighbor table containing Link-State routes
               eligible for sending (advertising) to the neighbor
               before output policy rules have been applied.";
            uses bgp-ls-adj-rib-common;
            uses bgp:clear-routes {
              description
                "Clears the adj-rib-out state for the containing
                 neighbor.";
            }
          }

          container adj-rib-out-post {
            description
              "Per-neighbor table containing Link-State routes
               eligible for sending (advertising) to the neighbor
               after output policy rules have been applied.";
            uses bgp-ls-adj-rib-common;
            uses bgp:clear-routes {
              description
                "Clears the adj-rib-out state for the containing
                 neighbor.";
            }
          }
        }
      }
    }
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:global" +
          "/bgp:afi-safis/bgp:afi-safi" {
    description
      "Augmentation of the BGP model to add BGL-LS.";
    uses bgp-mp-ls;
    uses bgp-mp-ls-spf;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:global" +
          "/bgp:afi-safis/bgp:afi-safi/link-state" {
    description
      "Augmentation of BGL-LS to add dB.";
    uses bgp-lsdb:lsdb-top;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:global" +
          "/bgp:afi-safis/bgp:afi-safi/link-state-spf" {
    description
      "Augmentation of BGL-LS-SPF.";

    leaf instance-identifier {
      type uint64;
      default 0;
      description 
        "Instance Identifier to be used for all Link-State NLRI 
         advertisements originated locally";
    }

    leaf algorithm-type {
      type spf-algorithm-type;
      default normal;
      description 
        "SPF Algorithm type associated with Link-State AFI SAFI";
    }

    leaf node-status {
      type enumeration {
        enum reachable {
          description
            "The local node is reachable in the current SPF
	     topology.";
        }
        enum unreachable {
          description
            "The local node is unreachable in the current SPF
	     topology.";
        }
        enum no-transit-support {
          description
            "The local node is reachable but does not support
	     forwarding of transit traffic.";
        }
      }
      default reachable;
      description 
        "Sets SPF-Status of the local node.";
    }

    container log {
      config false;
      description
        "This container lists the SPF computation events.";
    
      list event {
        key id;
        description
          "List of computation events - implemented as a
           wrapping buffer.";

        leaf id {
          type uint32;
          description
            "Event identifier.";
        }

        leaf type {
          type enumeration {
            enum full {
              description "Full SPF computation.";
            }
            enum route-only {
              description
                "Route reachability only SPF computation";
            }
          }
          description "Type of SPF computation performed.";
        }

        leaf schedule-time {
          type yang:date-and-time;
          description
            "Time when the SPF computation was
             scheduled.";
        }

        leaf delay {
          type uint64;
          description
            "Delay in micro-seconds applied for this SPF event.";
        }

        leaf start-time {
          type yang:date-and-time;
          description
            "Time when the SPF computation started.";
        }

        leaf end-time {
          type yang:date-and-time;
          description
            "Time when the SPF computation ended.";
        }

        leaf duration {
          type uint64;
          description
            "Time taken in micro-seconds to execute the SPF
	     computations.";
        }

        leaf node-count {
          type uint64;
          description
            "Number of nodes involved in the SPF computations.";
        }

        leaf prefix-count {
          type uint64;
          description
            "Number of prefixes involved in the SPF computations.";
        }

        leaf route-download-count {
          type uint64;
          description
            "Number of routes updated in the SPF computations.";
        }

        list lsp-trigger {
          key "id";
          description
            "This list includes the LSPs that triggered the
             SPF computation.";

          leaf id {
            type uint32;
            description
              "Trigger identifier.";
          }

          leaf nlri-prefix {
            type string;
            description
              "Prefix of the NLRI triggering SPF computation.";
          }

          leaf nlri-sequence {
            type uint32;
            description
              "Sequence number of the NLRI triggering SPF
	       computation.";
          }

          leaf trigger-time {
            type yang:date-and-time;
            description
              "Time when the trigger event was recorded.";
          }
        }
      }
    }
    uses bgp-lsdb:lsdb-top;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:neighbors" +
          "/bgp:neighbor/bgp:afi-safis/bgp:afi-safi" {
    description
      "Augmentation of the BGP model to add BGL-LS.";
    uses bgp-mp-ls;
    uses bgp-mp-ls-spf;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:neighbors" +
          "/bgp:neighbor/bgp:afi-safis/bgp:afi-safi/link-state-spf" {
    description
      "Augmentation of the BGP neighbor to add BGL-LS.";
    uses bgp-neighbor-ls-common;
  }

  /*
  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:global" +
          "/bgp:afi-safis/bgp:afi-safi/bgp:statistics" {
    when "derived-from-or-self (../bgp:name, 'bgp-ls')" {
      description
        "Include these for BGP Link-State specific statistics.";
    }
    description
      "Augmentation of the global statistics counter to add
       BGP-LS statistics.";

    leaf updates-sent {
      type yang:zero-based-counter32;
      description
        "Total number of Link-State NLRI updates sent.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    leaf updates-received {
      type yang:zero-based-counter32;
      description
        "Total number of Link-State NLRI updates received.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    leaf local-ls-originated {
      type yang:zero-based-counter32;
      description
        "Total number of locally originated Link-State NLRIs.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    action clear {
      if-feature "ibt:clear-statistics";
      description
        "Clear statistics action command.

        Execution of this command should result in all the
        counters to be cleared and set to 0.";

      input {
        leaf clear-at {
          type yang:date-and-time;
          description
            "Time when the clear action needs to be executed.";
        }
      }

      output {
        leaf clear-finished-at {
          type yang:date-and-time;
            description
              "Time when the clear action command completed.";
        }
      }
    }
  }
  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:global" +
          "/bgp:afi-safis/bgp:afi-safi/bgp:statistics" {
    when "derived-from-or-self (../bgp:name, 'bgp-ls-spf')" {
      description
        "Include these for BGP Link-State SPF specific statistics.";
    }
    description
      "Augmentation of the global statistics counter to add
       BGP-LS-SPF statistics.";

    leaf scheduled {
      type yang:zero-based-counter64;
      description
        "Number of times SPF has been re/scheduled";
    }

    leaf computed {
      type yang:zero-based-counter64;
      description
        "Number of times SPF has been computed";
    }

    leaf maximum-duration {
      type uint64;
      units "microseconds";
      description
        "Maximum duration taken for SPF compuation in
         microseconds.";
    }

    leaf minimum-duration {
      type uint64;
      units "microseconds";
      description
        "Minimum duration taken for SPF compuation in
         microseconds.";
    }

    leaf average-duration {
      type uint64;
      units "microseconds";
      description
        "Average duration taken for SPF compuation in
         microseconds.";
    }

    leaf last-computation-time {
      type yang:date-and-time;
      description
        "Timestamp for last SPF computation for this
         address-family";
    }
  }
  */
  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:neighbors" +
          "/bgp:neighbor/bgp:statistics" {
    when "derived-from-or-self (../bgp:afi-safis/bgp:afi-safi" +
                               "/bgp:name, 'bgp-ls')" {
      description
        "Include these for BGP Link-State specific statistics.";
    }
    description
      "Augmentation of the BGP per-neighbor statistics to add
       BGP-LS specific counters.";

    leaf updates-sent {
      type yang:zero-based-counter32;
      description
        "Total number of Link-State NLRIs updates sent per
         neighbor.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    leaf updates-received {
      type yang:zero-based-counter32;
      description
        "Total number of Link-State NLRIs updates received per
         neighbor.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    leaf error-updates-received {
      type yang:zero-based-counter32;
      description
        "Total number of Link-State NLRIs updates received that
         were errored, per neighbor.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";
    }

    leaf computations {
      type yang:zero-based-counter32;
      description
        "Count of number of SPF computations made.";
        reference
          "RFC 9815: BGP Link-State SPF Routing.";
    }

    leaf triggering-events {
      type yang:zero-based-counter32;
      description
        "SPF triggering events.";
        reference
          "RFC 9815: BGP Link-State SPF Routing.";
    }

    action clear {
      if-feature "ibt:clear-statistics";
      description
        "Clear statistics action command.

        Execution of this command should result in all the
        counters to be cleared and set to 0.";

      input {
        leaf clear-at {
          type yang:date-and-time;
          description
            "Time when the clear action needs to be executed.";
        }
      }

      output {
        leaf clear-finished-at {
          type yang:date-and-time;
            description
              "Time when the clear action command completed.";
        }
      }
    }
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:peer-groups" +
          "/bgp:peer-group/bgp:afi-safis/bgp:afi-safi" {
    description
      "Augmentation of the BGP peer-group to add BGP-LS and
       BGP-LS-SPF.";

    uses bgp-mp-ls;
    uses bgp-mp-ls-spf;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:peer-groups" +
          "/bgp:peer-group/bgp:afi-safis/bgp:afi-safi/" +
          "link-state-spf" {
    description
      "Augmentation of the BGP peer-groups to add BGL-LS.";
    uses bgp-neighbor-ls-common;
  }

  augment "/rt:routing/rt:control-plane-protocols" +
          "/rt:control-plane-protocol/bgp:bgp/bgp:rib" +
          "/bgp:afi-safis/bgp:afi-safi" {
    description
      "Augmentation of the BGP RIB to add the BGP-LS, BGP-LS-VPN,
       and BGP-LS-SPF routing tables.";
    uses bgp-ls-rib;
  }
}
<CODE ENDS>

]]></artwork>
        <!-- [CHECK] markers="true" means that the rendered file will have <CODE BEGINS> and <CODE ENDS> added -->
	</figure>
      </section>

      <section>
	<name>BGP Link-State Database YANG model</name>
	<t>The <tt>ietf-bgp-lsdb</tt> module defines the read-only
	Link-State Database (LSDB).  The top-level grouping
	<tt>lsdb-top</tt> organizes entries into instances identified by
	a VRF name, an originating protocol, and a 64-bit domain
	identifier.  Within each instance, five containers group the NLRI
	types:</t>

	<t><tt>nodes</tt> contains protocol-specific lists for IS-IS
	nodes (keyed by system-id, pseudo-node identifier, and AS number)
	and OSPFv2/OSPFv3 nodes (keyed by the AS-scoped flag, area-id,
	router-id, designated-router identifier, and AS number).  Each
	node entry carries the node attributes defined in
	<tt>ietf-bgp-ls-topo-attr</tt>.  BGP Egress Peer Engineering
	(EPE) defines a BGP Node NLRI type for advertising BGP peer node
	descriptors <xref target="RFC9086"/>; a corresponding list will
	be added in a future revision of this model.</t>

	<t><tt>links</tt> contains protocol-specific lists for IS-IS
	links, OSPFv2 links, OSPFv3 links, and BGP Egress Peer
	Engineering (EPE) links <xref target="RFC9086"/>.  IS-IS and OSPF
	links are keyed by the local and remote node identifiers together
	with the local and remote IPv4 and IPv6 interface addresses; a
	sentinel value of 0.0.0.0 (for IPv4) or :: (for IPv6) MUST be
	used when an address is absent, for example on unnumbered or
	single-stack links.  BGP links carry additional key fields for the
	local and remote AS numbers and BGP Router IDs.  Each link entry
	carries the IGP link attributes defined in
	<tt>ietf-bgp-ls-topo-attr</tt>.</t>

	<t><tt>prefixes</tt> contains protocol-specific lists for IS-IS,
	OSPFv2, and OSPFv3 prefixes.  IS-IS prefix entries are keyed by
	system-id, pseudo-node identifier, AS number, multi-topology-id,
	and prefix value.  OSPFv2 and OSPFv3 prefix entries are keyed by
	the AS-scoped flag, area-id, router-id, designated-router
	identifier, AS number, multi-topology-id, route-type, and prefix
	value.  Each prefix entry carries the prefix attributes defined in
	<tt>ietf-bgp-ls-topo-attr</tt>.</t>

	<t><tt>srv6-sids</tt> contains protocol-specific lists for
	OSPFv3, IS-IS, and BGP SRv6 SIDs.  OSPFv3 SRv6 SID entries are
	keyed by the AS-scoped flag, area-id, router-id,
	designated-router identifier, AS number, SID value, and
	multi-topology-id.  IS-IS SRv6 SID entries are keyed by
	system-id, pseudo-node identifier, AS number, SID value, and
	multi-topology-id.  BGP SRv6 SID entries are keyed by router-id,
	AS number, SID value, and multi-topology-id.  Each SRv6 SID
	entry carries the SRv6 SID attributes defined in
	<tt>ietf-bgp-ls-topo-attr</tt>.</t>

	<t><tt>unknowns</tt> provides a fallback container for NLRI types
	not recognized by the model, stored as opaque hex-encoded NLRI
	and attribute values.</t>

	<t>The module includes the <tt>ietf-bgp-ls-topo-attr</tt>,
	<tt>ietf-bgp-ls-topo-ospf</tt>, and
	<tt>ietf-bgp-ls-topo-types</tt> submodules, and imports
	<tt>ietf-yang-types</tt> and <tt>ietf-inet-types</tt>
	<xref target="RFC9911"/>, <tt>ietf-routing-types</tt>
	<xref target="RFC8294"/>, <tt>ietf-isis</tt>
	<xref target="RFC9130"/>, and <tt>ietf-ospf</tt>
	<xref target="RFC9129"/>.</t>

	<figure>
          <name>YANG Model for Link-State Database</name>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-bgp-lsdb@2026-11-02.yang"
module ietf-bgp-lsdb {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-lsdb";
  prefix bgp-lsdb;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types.";
  }

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types.";
  }
  
  import ietf-bgp-ls-topo-types {
    prefix bgp-ls-topo-t;
    reference
      "RFC XXXX: BGP Model for Link State Distribution.";
  }

  import ietf-routing-types {
    prefix ietf-rt-t;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area.";
  }

  import ietf-isis {
    prefix ietf-isis-t;
    reference
      "RFC 9130: YANG Data Model for IS-IS Protocol.";
  }

  import ietf-ospf {
    prefix ietf-ospf-t;
    reference
      "RFC 9129: YANG Data Model for the OSPF Protocol.";
  }

  include ietf-bgp-ls-topo-attr;
  include ietf-bgp-ls-topo-ospf;

  organization
    "IETF LSVR Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lsvr>
     WG List:  <lsvr@ietf.org>

     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),
              Keyur Patel (keyur at arrcus.com),
              Aravind Babu MahendraBabu (aramahen at cisco.com)";

  description
    "This module contains contains configuration and management
     information for BGP-LS, BGP-LS-SPF.

     Copyright (c) 2023 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-11-02 {
    description
      "Initial Version";
    reference
      "RFC XXXX, BGP Model for Link State Distribution.";
  }

  // Groupings

  grouping lsdb-top {
    description
      "Details for all databases under an application instance.";

    container bgp-ls-topology {
      config false;
      description
        "Top level container for BGP-LS topology entries";

      container instances {
        description
          "Enclosing container for instance list";

        list instance {
          key "vrf-name protocol identifier";
          description
            "List of instances";
          
          leaf vrf-name {
            type string;
            description
              "Name of the VRF this database belongs to.";
          }

          leaf protocol {
            type bgp-ls-topo-t:protocol;
            description
              "Protocol originating the NLRI.";
            reference
              "RFC 9552: Distribution of Link-State and Traffic
               Engineering Information Using BGP, Section 5.2.";
          }

          leaf identifier {
            type uint64;
            description
              "Instance identifier identifying the IGP routing
               domain where the NLRI belongs.";
            reference
              "RFC 9552: Distribution of Link-State and Traffic
               Engineering Information Using BGP, Section 5.2.";
          }

          container nodes {
            description
              "BGP-LS topology entries for nodes";

            list ospf-node {
              when "../../protocol = 'ospfv2'";
              key "is-as-scoped area-id router-id dr-identifier as";
              description
                "List of OSPFv2 nodes";

              uses bgp-ls-ospf-node-common;

              uses bgp-ls-topo-node-attr;
            }

            list ospfv3-node {
              when "../../protocol = 'ospfv3'";
              key "is-as-scoped area-id router-id dr-identifier as";
              description
                "List of OSPFv3 nodes";

              uses bgp-ls-ospf-node-common;

              uses bgp-ls-topo-node-attr;
            }

            list isis-node {
              when "../../protocol = 'isis-l1' or " +
                   "../../protocol = 'isis-l2'";
              key "system-id psn-id as";
              description
                "List of IS-IS nodes";

              leaf system-id {
                type ietf-isis-t:system-id;
                description
                  "System ID.";
                reference
                  "RFC 9552: Distribution of Link-State and
                   Traffic Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf psn-id {
                type uint8;
                description
                  "Pseudo Node Identifier (PSN ID).";
                reference
                  "RFC 9552: Distribution of Link-State and
                   Traffic Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and
                   Traffic Engineering Information Using BGP,
                   Section 5.2.1. TLV 512.";
              }

              uses bgp-ls-topo-node-attr;
            }
          }

          container links {
            description 
              "BGP-LS topology entries for links";

            list ospf-link {
              when "../../protocol = 'ospfv2'";
              key "area-id as local-router-id " +
                  "local-dr-identifier " +
                  "remote-router-id remote-dr-identifier " +
                  "local-id remote-id " +
                  "local-ipv4-address remote-ipv4-address " +
                  "multi-topology-id";
              description
                "List of OSPFv2 link types";

              uses bgp-ls-ospf-link-common;

              leaf local-dr-identifier {
                type inet:ipv4-address;
                description
                  "Local Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf remote-dr-identifier {
                type inet:ipv4-address;
                description
                  "Remote Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              uses bgp-ls-topo-igp-link-attr;
            }

            list ospfv3-link {
              when "../../protocol = 'ospfv3'";
              key "area-id as local-router-id " +
                  "local-dr-identifier " +
                  "remote-router-id remote-dr-identifier " +
                  "local-id remote-id " +
                  "local-ipv4-address remote-ipv4-address " +
                  "local-ipv6-address remote-ipv6-address " +
                  "multi-topology-id";
              description
                "List of OSPFv3 link types";

              uses bgp-ls-ospf-link-common;

              leaf local-dr-identifier {
                type uint32;
                description
                  "Local Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf remote-dr-identifier {
                type uint32;
                description
                  "Remote Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf local-ipv6-address {
                type inet:ipv6-address;
                description
                  "Local IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 261.";
              }

              leaf remote-ipv6-address {
                type inet:ipv6-address;
                description
                  "Remote IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 262.";
              }

              uses bgp-ls-topo-igp-link-attr;
            }

            list isis-link {
              when "../../protocol = 'isis-l1' or " +
                   "../../protocol = 'isis-l2'";
              key "local-system-id local-psn-id local-as " +
                  "remote-system-id remote-psn-id remote-as " +
                  "local-id remote-id local-ipv4-address " +
                  "remote-ipv4-address local-ipv6-address " +
                  "remote-ipv6-address multi-topology-id";
              description
                "List of ISIS link types";

              leaf local-system-id {
                type ietf-isis-t:system-id;
                description
                  "Local System ID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf local-psn-id {
                type uint8;
                description
                  "Local Pseudo Node Identifier (PSN ID).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf local-as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 512.";
              }

              leaf remote-system-id {
                type ietf-isis-t:system-id;
                description
                  "Remote System ID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf remote-psn-id {
                type uint8;
                description
                  "Remote Pseudo Node Identifier (PSN ID).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf remote-as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 512.";
              }

              leaf local-id {
                type uint32;
                description
                  "Local Identifier of a link.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 258.";
              }

              leaf remote-id {
                type uint32;
                description
                  "Remote Identifier of a link.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 258.";
              }

              leaf local-ipv4-address {
                type inet:ipv4-address;
                description
                  "Local IPv4 address of a link. Use 0.0.0.0 as a
                   sentinel value when this address is not present
                   (e.g., for unnumbered or IPv6-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 259.";
              }

              leaf remote-ipv4-address {
                type inet:ipv4-address;
                description
                  "Remote IPv4 address of a link. Use 0.0.0.0 as a
                   sentinel value when this address is not present
                   (e.g., for unnumbered or IPv6-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 260.";
              }

              leaf local-ipv6-address {
                type inet:ipv6-address;
                description
                  "Local IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 261.";
              }

              leaf remote-ipv6-address {
                type inet:ipv6-address;
                description
                  "Remote IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2. TLV 262.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a link.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              uses bgp-ls-topo-igp-link-attr;
            }

            list bgp-link {
              when "../../protocol = 'bgp'";
              key "local-as local-router-id remote-as " +
                  "remote-router-id local-id remote-id " +
                  "local-ipv4-address remote-ipv4-address " +
                  "local-ipv6-address remote-ipv6-address " +
                  "multi-topology-id";
              description
                "List of BGP link types";

              leaf local-as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number or AS
                   Confederation Identifier.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 512.";
              }

              leaf local-router-id {
                type ietf-rt-t:router-id;
                description
                  "Local BGP Router ID.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 516.";
              }

              leaf remote-as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number or AS
                   Confederation Identifier.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 512.";
              }

              leaf remote-router-id {
                type ietf-rt-t:router-id;
                description
                  "Remote BGP Router ID.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 516.";
              }

              leaf local-id {
                type uint32;
                description
                  "Local Identifier of a link.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.3. TLV 258.";
              }

              leaf remote-id {
                type uint32;
                description
                  "Remote Identifier of a link.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.3. TLV 258.";
              }

              leaf local-ipv4-address {
                type inet:ipv4-address;
                description
                  "Local IPv4 address of a link. Use 0.0.0.0 as a
                   sentinel value when this address is not present
                   (e.g., for unnumbered or IPv6-only links).";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.2. TLV 259.";
              }

              leaf remote-ipv4-address {
                type inet:ipv4-address;
                description
                  "Remote IPv4 address of a link. Use 0.0.0.0 as a
                   sentinel value when this address is not present
                   (e.g., for unnumbered or IPv6-only links).";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.2. TLV 260.";
              }

              leaf local-ipv6-address {
                type inet:ipv6-address;
                description
                  "Local IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.2. TLV 261.";
              }

              leaf remote-ipv6-address {
                type inet:ipv6-address;
                description
                  "Remote IPv6 address of a link. Use :: as a sentinel
                   value when this address is not present (e.g., for
                   unnumbered or IPv4-only links).";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 5.2. TLV 262.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a link.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              container link-attributes {
                description
                  "Enclosing container for link attributes list";

                list link-attribute {
                  key "type";

                  description
                    "List of link attribute types.";

                  leaf type {
                    type identityref {
                      base bgp-ls-topo-t:bgp-ls-topo-attr-type;
                    }
                    description
                      "The type of link attribute";
                  }

                  container bgp-peer-sids {
                    when "derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-bgp-peer-node-sid')" +
                         " or derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-bgp-peer-adj-sid')" +
                         " or derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-bgp-peer-set-sid')" {
                      description
                        "Only include the bgp-peer-sids container
                         when the type is
                         bgp-ls-topo-attr-bgp-peer-node-sid,
                         bgp-ls-topo-attr-bgp-peer-adj-sid, or
                         bgp-ls-topo-attr-bgp-peer-set-sid";
                    }
                    description
                      "This container contains the BGP peer Segment
                       Identifiers (SIDs) of a link";
                    reference
                      "RFC 9086: Border Gateway Protocol - Link State
                       (BGP-LS) Extensions for Segment Routing.
                       TLV 1101, TLV 1102 and TLV 1103";

                    list bgp-peer-sid {
                      key "label-index format";

                      description
                        "List of BGP peer SID";

                      leaf label-index {
                        type uint32;
                        description
                          "Label or index";
                      }

                      leaf format {
                        type bgp-ls-topo-t:sid-format;
                        description
                          "Format of the SID";
                      }

                      leaf flags {
                        type binary {
                          length "1";
                        }
                        description
                          "Flags associated with the BGP peer SID";
                      }

                      leaf weight {
                        type uint8;
                        description
                          "Weight used for load balancing purposes";
                      }
                    }
                  }
                }
              }
            }
          }

          container prefixes {
            description
              "BGP-LS topology entries for prefixes";

            list ospf-prefix {
              when "../../protocol = 'ospfv2'";
              key "is-as-scoped area-id as " +
                  "router-id dr-identifier " +
                  "multi-topology-id route-type prefix";
              description
                "List of OSPFv2 prefix types";

              uses bgp-ls-ospf-prefix-common;

              leaf dr-identifier {
                type inet:ipv4-address;
                description
                  "Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf prefix {
                type inet:ipv4-prefix;
                description
                  "IPv4 address prefix advertised in the
                   OSPFv2 topology.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.3.2. TLV 265.";
              }

              uses bgp-ls-topo-prefix-attr;
            }

            list ospfv3-prefix {
              when "../../protocol = 'ospfv3'";
              key "is-as-scoped area-id as " +
                  "router-id dr-identifier " +
                  "multi-topology-id route-type prefix";
              description
                "List of OSPFv3 prefix types";

              uses bgp-ls-ospf-prefix-common;

              leaf dr-identifier {
                type uint32;
                description
                  "Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf prefix {
                type inet:ip-prefix;
                description
                  "IP address prefix (IPv4 or IPv6) advertised in
                   the OSPFv3 topology.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.3.2. TLV 265.";
              }

              uses bgp-ls-topo-prefix-attr;
            }

            list isis-prefix {
              when "../../protocol = 'isis-l1' or " +
                   "../../protocol = 'isis-l2'";
              key "system-id psn-id as multi-topology-id prefix";
              description
                "List of ISIS prefix types";

              leaf system-id {
                type ietf-isis-t:system-id;
                description
                  "System ID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf psn-id {
                type uint8;
                description
                  "Pseudo Node Identifier (PSN ID).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2. TLV 512.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a prefix.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              leaf prefix {
                type inet:ip-prefix;
                description
                  "IP address prefix (IPv4 or IPv6) advertised in
                   the IGP topology.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.3.2. TLV 265.";
              }

              uses bgp-ls-topo-prefix-attr;
            }
          }

          container srv6-sids {
            description
              "BGP-LS topology entries for SRv6 SIDs";

            list ospfv3-srv6-sid {
              when "../../protocol = 'ospfv3'";
              key "is-as-scoped area-id router-id " +
                  "dr-identifier as sid multi-topology-id";
              description
                "List of OSPF SRv6 SID types";

              leaf is-as-scoped {
                type boolean;
                description
                  "When true, the NLRI is AS-scoped and the area-id
                   is not applicable.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1.";
              }

              leaf area-id {
                type ietf-ospf-t:area-id-type;
                description
                  "OSPF area identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 514.";
              }

              leaf router-id {
                type ietf-rt-t:router-id;
                description
                  "Router ID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf dr-identifier {
                type uint32;
                description
                  "Designated Router (DR) Identifier.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2. TLV 512.";
              }

              leaf sid {
                type inet:ipv6-prefix;
                description
                  "SRv6 SID.";
                reference
                  "RFC 9514: BGP-LS SRv6 Extensions, Section 6.1.
                   TLV 518.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a SRv6 SID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              uses bgp-ls-topo-srv6-sid-attr;
            }

            list isis-srv6-sid {
              when "../../protocol = 'isis-l1' or " +
                   "../../protocol = 'isis-l2'";
              key "system-id psn-id as sid multi-topology-id";
              description
                "List of ISIS SRv6 SID types";

              leaf system-id {
                type ietf-isis-t:system-id;
                description
                  "System ID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf psn-id {
                type uint8;
                description
                  "Pseudo Node Identifier (PSN ID).";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.1. TLV 515.";
              }

              leaf as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number associated with the
                   BGP process originating the NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2. TLV 512.";
              }

              leaf sid {
                type inet:ipv6-prefix;
                description
                  "SRv6 SID.";
                reference
                  "RFC 9514: BGP-LS SRv6 Extensions, Section 6.1.
                   TLV 518.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a SRv6 SID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              uses bgp-ls-topo-srv6-sid-attr;
            }

            list bgp-srv6-sid {
              when "../../protocol = 'bgp'";
              key "router-id as sid multi-topology-id";
              description
                "List of BGP SRv6 SID types";

              leaf router-id {
                type ietf-rt-t:router-id;
                description
                  "BGP Router ID.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 516.";
              }

              leaf as {
                type inet:as-number;
                description
                  "Autonomous System (AS) number or AS
                   Confederation Identifier.";
                reference
                  "RFC 9086: BGP-LS Extensions for BGP Peering
                   Segments, Section 4.2. TLV 517.";
              }

              leaf sid {
                type inet:ipv6-prefix;
                description
                  "SRv6 SID.";
                reference
                  "RFC 9514: BGP-LS SRv6 Extensions, Section 6.1.
                   TLV 518.";
              }

              leaf multi-topology-id {
                type uint16;
                description
                  "Multi Topology Identifier (MTID) of a SRv6 SID.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.2.1. TLV 263.";
              }

              container srv6-sid-attributes {
                description
                  "Enclosing container for SRv6 SID attributes list";

                list srv6-sid-attribute {
                  key "type";

                  description
                    "List of SRv6 SID attribute types.";

                  leaf type {
                    type identityref {
                      base bgp-ls-topo-t:bgp-ls-topo-attr-type;
                    }
                    description
                      "The type of SRv6 SID attribute";
                  }

                  container srv6-endpoint-behavior {
                    when "derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-srv6-endpoint-behavior')" {
                      description
                        "Only include the srv6-endpoint-behavior
                         container when the type is
                         bgp-ls-topo-attr-srv6-endpoint-behavior";
                    }
                    description
                      "This container contains the SRv6 endpoint
                       behavior.";
                    reference
                      "RFC 9514: Border Gateway Protocol - Link State
                       (BGP-LS) Extensions for Segment Routing over
                       IPv6 (SRv6). SRv6 endpoint behavior. TLV 1250.";

                    uses bgp-ls-topo-srv6-endpoint-behavior-attr;
                  }

                  container srv6-sid-structure {
                    when "derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-srv6-sid-structure')" {
                      description
                        "Only include the srv6-sid-structure container
                         when the type is
                         bgp-ls-topo-attr-srv6-sid-structure";
                    }
                    description
                      "This container defines the SRv6 SID structure.";
                    reference
                      "RFC 9514: Border Gateway Protocol - Link State
                       (BGP-LS) Extensions for Segment Routing over
                       IPv6 (SRv6). SRv6 SID structure. TLV 1252.";

                    uses bgp-ls-topo-srv6-sid-struct-attr;
                  }

                  container unknowns {
                    when "derived-from-or-self(../type, " +
                        "'bgp-ls-topo-t:bgp-ls-topo-attr-unknowns')" {
                    description
                        "Only include the unknowns container when the
                         type is bgp-ls-topo-attr-unknowns";
                    }
                    description
                      "This container describes the unknown
                       attributes.";
                    reference
                      "RFC 9552: Distribution of Link-State and
                       Traffic Engineering Information Using BGP.";

                    uses bgp-ls-topo-unknown-attr;
                  }

                  container srv6-bgp-peer-node-sid {
                    when "derived-from-or-self(../type, " +
                         "'bgp-ls-topo-t:" +
                         "bgp-ls-topo-attr-srv6-bgp-peer-node-sid')" {
                      description
                        "Only include the srv6-bgp-peer-node-sid
                         container when the type is
                         bgp-ls-topo-attr-srv6-bgp-peer-node-sid";
                    }
                    description
                      "This container contains the SRv6 BGP peer
                       node SID.";
                    reference
                      "RFC 9514: Border Gateway Protocol - Link State
                       (BGP-LS) Extensions for Segment Routing over
                       IPv6 (SRv6). SRv6 BGP peer node SID. TLV 1251.";

                    leaf flags {
                      type binary {
                        length "1";
                      }
                      description
                        "Flags associated with the SRv6 BGP peer
                         node SID";
                    }

                    leaf weight {
                      type uint8;
                      description
                        "Weight used for load balancing purposes";
                    }

                    leaf peer-as {
                      type inet:as-number;
                      description
                        "Autonomous system of peer";
                    }

                    leaf peer-bgp-id {
                      type ietf-rt-t:router-id;
                      description
                        "BGP Router ID of peer";
                    }
                  }
                }
              }
            }
          }

          container unknowns {
            description
              "BGP-LS topology entries for unknown NLRIs -- active
               when the nlri-type is unknown";
            list unknown {
              key "nlri";
              description
                "List of unknown types";

              leaf nlri {
                type yang:hex-string;
                description
                  "NLRI.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.2.";
              }

              leaf attributes {
                type yang:hex-string;
                description
                  "Attributes.";
                reference
                  "RFC 9552: Distribution of Link-State and Traffic
                   Engineering Information Using BGP,
                   Section 5.3.";
              }
            }
          }        
        }
      }
    }
  }
}
<CODE ENDS>

]]></artwork>
        <!-- [CHECK] markers="true" means that the rendered file will have <CODE BEGINS> and <CODE ENDS> added -->
	</figure>
      </section>

      <section>
	<name>BGP Link-State Topology Types YANG model</name>
	<t>The <tt>ietf-bgp-ls-topo-types</tt> submodule defines the
	identity hierarchy and typedefs shared across the other
	topology attribute submodules.</t>

	<t>The base identity <tt>bgp-ls-topo-attr-type</tt> is the root
	for approximately fifty derived identities, one per BGP-LS TLV
	type.  Examples include <tt>bgp-ls-topo-attr-node-name</tt> (TLV
	1026), <tt>bgp-ls-topo-attr-sr-capabilities</tt> (TLV 1034),
	<tt>bgp-ls-topo-attr-fad</tt> (TLV 1039),
	<tt>bgp-ls-topo-attr-extended-admin-group</tt> (TLV 1173), and
	<tt>bgp-ls-topo-attr-adjacency-sid</tt> (TLV 1099).  These
	identities serve as the key type in the type-dispatched attribute
	lists defined in <tt>ietf-bgp-ls-topo-attr</tt>, enabling new TLV
	types to be added as derived identities without modifying the
	existing schema structure.</t>

	<t>The base identity <tt>bgp-ls-topo-attr-fad-type</tt>
	enumerates the sub-TLV types that appear within a Flexible
	Algorithm Definition (FAD) <xref target="RFC9351"/>, such as
	include/exclude affinity constraints, SRLG exclusions, minimum
	bandwidth, and maximum delay.</t>

	<t>The <tt>sid-format</tt> typedef is an enumeration
	distinguishing whether a SID value is an MPLS label (20-bit) or
	an index into the SRGB (32-bit).  It is referenced by the
	adjacency-SID, prefix-SID, and BGP peer SID attribute
	containers.</t>

	<t>The <tt>protocol</tt> typedef enumerates the IGP protocols
	from which BGP-LS NLRIs can originate: IS-IS Level 1, IS-IS Level
	2, OSPFv2, OSPFv3, BGP, and Direct.</t>

	<figure>
          <name>YANG Model for BGP-LS Topology Types</name>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-bgp-ls-topo-types@2026-11-02.yang"
 module ietf-bgp-ls-topo-types {
  yang-version "1.1";

  namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types";

  prefix "ietf-bgp-ls-topo-types";

  organization
    "IETF LSVR Working Group";
  
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lsvr>
     WG List:  <lsvr@ietf.org>

     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),
              Keyur Patel (keyur at arrcus.com),
              Aravind Babu MahendraBabu (aramahen at cisco.com)";

  description
    "Defines identity and type definitions associated with BGP-LS 
     topology modules.
    
     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-11-02 {
    description
      "Initial Version";
    reference
      "RFC XXXX, BGP Model for Link State Distribution.";
  }

  typedef protocol {
    type enumeration {
      enum isis-l1  {
        value 1;
        description
          "Value of BGP-LS protocol ISIS L1";
      }
      enum isis-l2  {
        value 2;
        description
          "Value of BGP-LS protocol ISIS L2";
      }
      enum ospfv2 {
        value 3;
        description
          "Value of BGP-LS protocol OSPFv2";
      }
      enum direct {
        value 4;
        description
          "Value of BGP-LS protocol Direct";
      }
      enum static {
        value 5;
        description
          "Value of BGP-LS protocol Static";
      }
      enum ospfv3 {
        value 6;
        description
          "Value of BGP-LS protocol OSPFv3";
      }
      enum bgp {
        value 7;
        description
          "Value of BGP-LS protocol BGP";
      }
      enum rsvp-te {
        value 8;
        description
          "Value of BGP-LS protocol RSVP-TE";
      }
      enum sr {
        value 9;
        description
          "Value of BGP-LS protocol SR";
      }
    }
    description
      "BGP-LS Protocol";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP, Section 5.2.";
  }

  typedef nlri-type {
    type enumeration {
      enum node  {
        value 1;
        description
          "Value of BGP-LS Node NLRI";
      }
      enum link  {
        value 2;
        description
          "Value of BGP-LS Link NLRI";
      }
      enum ipv4-prefix {
        value 3;
        description
          "Value of BGP-LS IPv4 Prefix NLRI";
      }
      enum ipv6-prefix {
        value 4;
        description
          "Value of BGP-LS IPv6 Prefix NLRI";
      }
      enum sr-policy-candidate-path {
        value 5;
        description
          "Value of BGP-LS SR Policy Candidate Path NLRI";
      }
      enum srv6-sid {
        value 6;
        description
          "Value of BGP-LS SRv6 SID NLRI";
      }
    }
    description
      "BGP-LS NLRI Types";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP, Section 5.1.";
 }

  typedef ospf-route-type {
    type enumeration {
      enum intra-area  {
        value 1;
        description
          "Value of OSPF Route Type Intra Area";
      }
      enum inter-area  {
        value 2;
        description
          "Value of OSPF Route Type Inter Area";
      }
      enum external-1 {
        value 3;
        description
          "Value of OSPF Route Type External 1";
      }
      enum external-2 {
        value 4;
        description
          "Value of OSPF Route Type External 2";
      }
      enum nssa-1 {
        value 5;
        description
          "Value of OSPF Route Type NSSA 1";
      }
      enum nssa-2 {
        value 6;
        description
          "Value of OSPF Route Type NSSA 2";
      }
    }
    description
      "OSPF Route Type";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP, Section 3.2.3.";
 }

  typedef node-flag-bits {
     type bits {
      bit overload {
        position 0;
        description
          "Value of Overload bit";
      }
      bit attached {
        position 1;
        description
          "Value of Attached bit";
      }
      bit external {
        position 2;
        description
          "Value of External bit";
      }
      bit abr {
        position 3;
        description
          "Value of ABR bit";
      }
      bit router {
        position 4;
        description
          "Value of Router bit";
      }
      bit v6 {
        position 5;
        description
          "Value of IPv6 bit";
      }
    }
    description
      "BGP-LS Node flag bits";

    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP. Section 3.3.1.1";
  }

  typedef igp-flags-bits {
     type binary {
      length "1";
    }
    description
      "BGP-LS IGP flag bits";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
       Information Using BGP, Section 3.3.3.";
  }

  typedef sid-format {
    type enumeration {
      enum label {
        value 1;
        description
          "SID represented as an MPLS label value.";
      }
      enum index {
        value 2;
        description
          "SID represented as an index value.";
      }
    }
    description
      "Format of a SID value (adjacency, prefix, or BGP peer).";
  }

  identity bgp-ls-topo-attr-type {
    description
      "Base identity for BGP-LS topology attribute type.";
  }

  identity bgp-ls-topo-attr-fad-type {
    description
      "Base identity for BGP-LS topology Flexible Algorithm
       Definition (FAD) attribute type.";
  }

  identity bgp-ls-topo-attr-link-local-remote-identifiers {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 258. Link local and remote identifiers";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
      Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-multi-topology-id {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 263. Multi-Topology IDs";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-node-msd {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 266. Node Maximum SID Depth";
    reference
      "RFC 8814: Signaling Maximum SID Depth (MSD) Using the
      Border Gateway Protocol - Link State";
  }

  identity bgp-ls-topo-attr-link-msd {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 267. Link Maximum SID Depth";
    reference
      "RFC 8814: Signaling Maximum SID Depth (MSD) Using the
      Border Gateway Protocol - Link State";
  }

  identity bgp-ls-topo-attr-node-flag-bits {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1024. Bit mask describing node attributes";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-opaque-node {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1025. Envelope that transparently carries optional
      Node Attribute TLVs advertised by a router";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-node-name {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1026. Symbolic name of the router node";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-isis-area-identifier {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1027. Area address of an ISIS area";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-local-ipv4-routerid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1028. Auxiliary Router-ID used by the IGP";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-local-ipv6-routerid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1029. Auxiliary Router-ID used by the IGP";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-remote-ipv4-routerid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1030. Remote Router-ID used by the IGP";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-remote-ipv6-routerid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1031. Remote Router-ID used by the IGP";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }

  identity bgp-ls-topo-attr-sr-capabilities {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1034. Node's Segment Routing (SR) capabilities";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-sr-algorithm {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1035. Segment Routing (SR) algorithms supported by
       the node";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-srlb {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1036. Range(s) of labels reserved by the node for
       local SIDs (Segment Identifiers)";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-srv6-cap-flags {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1038. SRv6 Capabilities Flags.";
    reference
      "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing over IPv6 (SRv6).";
  }

  identity bgp-ls-topo-attr-fad {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1039. Definition of Flexible Algorithms
       (FA) supported by the node";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-excl-any-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1040. Exclude links carrying any of the specified
       affinities";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-incl-any-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1041. Include links carrying any of the specified
       affinities";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-incl-all-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1042. Include links carrying all of the specified
       affinities";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-flags {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1043. Flags associated with the FAD";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-excl-srlg {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1045. Exclude links associated with any of the
       specified (Shared Risk Link Group) SRLG";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fa-unsupported {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV 1046. Indicates the presence of unsupported
      Flexible Algorithm Definition (FAD) sub-TLVs";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-fad-excl-minimum-bw {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV TBD (1049). Exclude links not having a minimum
       specified bandwidth";
    reference
      "RFC TBD: BGP-LS extensions for IP Flexible Algorithms and
       Bandwidth, Delay, Metrics and Constraints";
  }

  identity bgp-ls-topo-attr-fad-excl-maximum-delay {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV TBD (1050). Exclude links having delay
       above a maximum specified delay";
    reference
      "RFC TBD: BGP-LS extensions for IP Flexible Algorithms and
       Bandwidth, Delay, Metrics and Constraints";
  }

  identity bgp-ls-topo-attr-fad-excl-any-rev-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV TBD (1053). Exclude links carrying any of the
       specified affinities in the reverse direction";
    reference
      "RFC TBD: BGP-LS extensions for Flexible Algorithms Reverse
       Affinity Constraint";
  }

  identity bgp-ls-topo-attr-fad-incl-any-rev-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV TBD (1054). Include links carrying any of the
       specified affinities in the reverse direction";
    reference
      "RFC TBD: BGP-LS extensions for Flexible Algorithms Reverse
       Affinity Constraint";
  }

  identity bgp-ls-topo-attr-fad-incl-all-rev-aff {
    base "bgp-ls-topo-attr-fad-type";
    description
      "BGP-LS TLV TBD (1055). Include links carrying all of the
       specified affinities in the reverse direction";
    reference
      "RFC TBD: BGP-LS extensions for Flexible Algorithms Reverse
       Affinity Constraint";
  }

  identity bgp-ls-topo-attr-extended-admin-group {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1173. Extended Administrative Group";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-maximum-link-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1089. Maximum link bandwidth";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-maximum-reservable-link-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1090. Maximum reservable link bandwidth";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-unreserved-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1091. Unreserved bandwidth";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-te-default-metric {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1092. Traffic Engineering default metric";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-link-protection-type {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1093. Link protection type";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-mpls-protocol-mask {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1094. MPLS protocol mask";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-igp-metric {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1095. IGP metric";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-srlg {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1096. Shared Risk Link Group (SRLG)";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-opaque-link {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1097. Envelope that transparently carries optional
       Link Attribute TLVs advertised by a router";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-link-name {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1098. Symbolic name of a link";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-adjacency-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1099. Adjacency Segment Identifier (SID)";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-lan-adjacency-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1100. LAN adjacency Segment Identifier (SID)";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-bgp-peer-node-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1101. BGP peer node Segment Identifier (SID)";
    reference
      "RFC 9086: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-bgp-peer-adj-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1102. BGP peer adjacency Segment Identifier
       (SID)";
    reference
      "RFC 9086: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-bgp-peer-set-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1103. BGP peer set Segment Identifier (SID)";
    reference
      "RFC 9086: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-srv6-end-x-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1106. SRv6 End.X SID";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-srv6-isis-lan-end-x-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1107. SRv6 ISIS LAN End.X SID";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-srv6-ospf-lan-end-x-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1108. SRv6 OSPF LAN End.X SID";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-unidir-link-delay {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1114. Unidirectional link delay";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-min-max-unidir-link-delay {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1115. Min/max unidirectional link delay";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-unidir-delay-variation {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1116. Unidirectional delay variation";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-unidir-link-loss {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1117. Unidirectional link loss";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-unidir-residual-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1118. Unidirectional residual bandwidth";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-unidir-available-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1119. Unidirectional available bandwidth";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-unidir-utilized-bw {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1120. Unidirectional utilized bandwidth";
    reference
      "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
       Engineering Performance Metric Extensions.";
  }

  identity bgp-ls-topo-attr-asla {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1122. Application-Specific Link Attributes";
    reference
      "RFC 9294: Application-Specific Link Attributes Advertisement
       Using the Border Gateway Protocol - Link State (BGP-LS).";
  }

  identity bgp-ls-topo-attr-igp-flags {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1152. Flags and bits assigned to a prefix";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-igp-route-tag {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1153. Tags of a prefix";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-ext-igp-route-tag {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1154. Extended route tags of a prefix";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-prefix-metric {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1155. Metric of a prefix";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-ospf-forwarding-address {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1156. Forwarding address of a prefix";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-opaque-prefix {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1157. Envelope that transparently carries optional
       Prefix Attribute TLVs advertised by a router";
    reference
      "RFC 9552: Distribution of Link-State and Traffic
       Engineering Information Using BGP.";
  }

  identity bgp-ls-topo-attr-prefix-sid {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1158. Prefix Segment Identifiers (SIDs)";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-prefix-range {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1159. Range of prefix-to-SID mapping";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-srv6-locator {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1162. SRv6 locator information associated with a
       prefix";
    reference
      "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing over IPv6 (SRv6)";
  }

  identity bgp-ls-topo-attr-prefix-attribute-flags {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1170. Prefix attribute flags";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-prefix-src-router-id {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1171. Source route identifier of a prefix";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-l2-bundle-member {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1172. L2 bundle member";
    reference
      "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Segment Routing";
  }

  identity bgp-ls-topo-attr-fa-prefix-metric {
    base "bgp-ls-topo-attr-type";
    description
      "BGP-LS TLV 1044. Flexible Algorithm prefix metric";
    reference
      "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
       Extensions for Flexible Algorithm Advertisement";
  }

  identity bgp-ls-topo-attr-srv6-endpoint-behavior {
    base "bgp-ls-topo-attr-type";
    description
      "SRv6 endpoint behavior";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-srv6-bgp-peer-node-sid {
    base "bgp-ls-topo-attr-type";
    description
      "SRv6 BGP peer node SID";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-srv6-sid-structure {
    base "bgp-ls-topo-attr-type";
    description
      "SRv6 SID structure";
    reference
      "RFC 9514: SRv6 BGP-LS extensions.";
  }

  identity bgp-ls-topo-attr-unknowns {
    base "bgp-ls-topo-attr-type";
    description
      "Unknown BGP-LS attribute TLVs.";
    reference
      "RFC 9552: Distribution of Link-State and Traffic Engineering
      Information Using BGP.";
  }  
}
<CODE ENDS>

]]></artwork>
	</figure>
      </section>

      <section>
	<name>BGP Link-State Topology Attributes YANG model</name>
	<t>The <tt>ietf-bgp-ls-topo-attr</tt> submodule defines groupings
	for the attributes associated with Node, Link, Prefix, and SRv6
	SID NLRIs.  Each grouping uses a type-dispatched list pattern: a
	list keyed by an <tt>identityref</tt> of base type
	<tt>bgp-ls-topo-attr-type</tt>, where each list entry carries a
	set of containers guarded by
	<tt>derived-from-or-self()</tt> <tt>when</tt> expressions.  Only
	the container whose identity matches the entry's key leaf is
	active in any given entry.  This approach provides an extensible
	schema that accommodates new TLV types by adding derived
	identities without modifying the list structure.</t>

	<t><strong>Node attributes</strong>
	(<tt>bgp-ls-topo-node-attr</tt>): The node attribute list covers
	the TLVs defined in <xref target="RFC9552"/> for router
	identification (local IPv4/IPv6 Router-IDs, node name),
	node properties (Multi-Topology IDs, node flag bits, IS-IS area
	identifiers, opaque node attributes), Segment Routing capabilities
	(SRGB ranges, SRLB ranges, SR algorithms, node Maximum SID Depth
	(MSD) <xref target="RFC8814"/>), and Flexible Algorithm
	Definitions (FADs).  Each FAD entry is identified by an algorithm
	number in the range 128-255 and carries its metric type,
	calculation type, priority, and a nested type-dispatched list of
	affinity and SRLG constraint attributes as defined in
	<xref target="RFC9351"/>.</t>

	<t><strong>Link attributes</strong>
	(<tt>bgp-ls-topo-igp-link-attr</tt>): The link attribute list
	covers the TE and SR TLVs defined in <xref target="RFC9552"/> and
	<xref target="RFC9085"/>.  Traffic engineering attributes include
	maximum bandwidth, maximum reservable bandwidth, unreserved
	bandwidth (eight priority levels), administrative group, extended
	administrative group (TLV 1173), TE metric, link protection type,
	and Shared Risk Link Group (SRLG) values.  Performance attributes
	include unidirectional link delay (average, minimum, and maximum),
	delay variation, link loss, residual bandwidth, available
	bandwidth, and utilized bandwidth.  SR attributes include
	adjacency-SIDs (TLV 1099) and LAN adjacency-SIDs (TLV 1100)
	<xref target="RFC9085"/>, each carrying label or index values,
	flags, and weights; link MSD; SRv6 End.X SIDs; and SRv6 LAN
	End.X SIDs <xref target="RFC9514"/>.  Application-Specific Link
	Attributes (ASLA) and L2 Bundle Member attributes are also
	modeled.  For BGP EPE links <xref target="RFC9086"/>, the list
	includes BGP peer SIDs (TLVs 1101-1103).</t>

	<t><strong>Prefix attributes</strong>
	(<tt>bgp-ls-topo-prefix-attr</tt>): The prefix attribute list
	covers IGP flags, route tags, extended route tags, prefix metric,
	OSPF forwarding address, opaque prefix attributes, prefix-SIDs
	(TLV 1158) <xref target="RFC9085"/> with label or index values
	and algorithm, and SRv6 Locator attributes
	<xref target="RFC9514"/>.</t>

	<t><strong>SRv6 SID attributes</strong>
	(<tt>bgp-ls-topo-srv6-sid-attr</tt>): SRv6 SID entries carry the
	SRv6 endpoint behavior (TLV 1250) and the SRv6 SID structure
	sub-TLV (TLV 1252), which encodes the locator block length,
	locator node length, function length, and argument length fields
	<xref target="RFC9514"/>.</t>

	<figure>
          <name>YANG Model for BGP-LS Topology Attributes</name>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-bgp-ls-topo-attr@2026-11-02.yang"
submodule ietf-bgp-ls-topo-attr {
  yang-version 1.1;

  belongs-to ietf-bgp-lsdb {
    prefix "bgp-lsdb";
  }

  import ietf-inet-types { 
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types.";
  }

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types.";
  }

  import ietf-bgp-ls-topo-types { 
    prefix bgp-ls-topo-t;
    reference
      "RFC XXXX: BGP Model for Link State Distribution.";
  }

  import ietf-routing-types { 
    prefix ietf-rt-t;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area.";
  }
  
  import ietf-isis { 
    prefix ietf-isis-t;
    reference
      "RFC 9130: YANG Data Model for IS-IS Protocol.";
  }

  organization
    "IETF LSVR Working Group";
  
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lsvr>
     WG List:  <lsvr@ietf.org>

     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),
              Keyur Patel (keyur at arrcus.com),
              Aravind Babu MahendraBabu (aramahen at cisco.com)";

  description
    "This submodule contains structural data definitions associated
     BGP-LS topology attributes.
    
     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-11-02 {
    description
      "Initial Version";
    reference
      "RFC XXXX, BGP Model for Link State Distribution.";
  }

  grouping bgp-ls-topo-ipv4-router-id-attr {
    description
      "Grouping for the BGP-LS topology IPv4 router-id attribute";

    leaf-list router-id {
      type ietf-rt-t:router-id;
      description
        "List of IPv4 Router ID";
    }
  }

  grouping bgp-ls-topo-ipv6-router-id-attr {
    description
      "Grouping for the BGP-LS topology IPv6 router-id attribute";

    leaf-list router-id {
      type inet:ipv6-address;
      description
        "List of IPv6 Router ID";
    }
  }

  grouping bgp-ls-topo-msd-attr {
    description
      "Grouping for the BGP-LS topology Maximum SID Depth (MSD)
       attribute";

    list msd {
      key "msd-type";

      description
        "List of MSDs";

      leaf msd-type {
        type uint8;
        description
          "MSD type. One of the values defined in the
           'IGP MSD-Types' registry.";
        reference
          "RFC 8491: Signaling Maximum SID Depth (MSD) Using
           IS-IS.";
      }

      leaf msd-value {
        type uint8;
        description
          "MSD value. A number in the range of 0-255";
      }
    }
  }

  grouping bgp-ls-topo-opaque-attribute {
    description
      "Grouping for the BGP-LS topology opaque attribute";

    leaf opaque-attrs {
      type yang:hex-string;
      description
        "Opaque attribute";
    }
  }

  grouping bgp-ls-topo-eag-attr {
    description
      "Grouping for the BGP-LS topology EAG attribute";

    leaf-list eag {
      type uint32;
      description
        "Extended Administrative Group (EAG) value for link affinity
         constraints to be used in traffic engineering";
    }
  }

  grouping bgp-ls-topo-srlg-attr {
    description
      "Grouping for the BGP-LS topology SRLG attribute";

    leaf-list srlg {
      type uint32;
      description
        "Shared Risk Link Group (SRLG) value representing links that
         share a common resource and may fail together";
    }
  }

  grouping bgp-ls-topo-delay-attr {
    description
      "Grouping for the BGP-LS topology delay attribute";

    leaf delay {
      type uint32;
      units microseconds;
      description
        "Average link delay over a configurable interval";
    }
  }

  grouping bgp-ls-topo-bw-attr {
    description
      "Grouping for the BGP-LS topology bandwidth attribute";

    leaf bw {
      type ietf-rt-t:bandwidth-ieee-float32;
      description
        "Bandwidth in IEEE 754 floating point format. BGP-LS defines
         various bandwidth types.";
      reference
        "IEEE 754: IEEE Standard for Floating-Point Arithmetic.";
    }
  }

  grouping bgp-ls-topo-adj-sid-attr {
    description
      "Grouping for the BGP-LS topology adjacency SID attribute";

    leaf label-index {
      type uint32;
      description
        "Label or index";
    }

    leaf format {
      type bgp-ls-topo-t:sid-format;
      description
        "Format of the SID";
    }

    leaf flags {
      type binary {
        length "1";
      }
      description
        "Flags associated with the SID. IS-IS flags are
         defined in RFC 8667. OSPFv2 flags are defined in
         RFC 8665. OSPFv3 flags are defined in RFC 8666.";
    }

    leaf weight {
      type uint8;
      description
        "Weight used for load balancing purposes";
    }
  }

  grouping bgp-ls-topo-common-link-asla-l2-bundle-member-attr {
    description
      "Grouping for the BGP-LS topology attributes common for link,
       ASLA and L2 bundle member";

    container te-default-metric {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-te-default-metric')" {
        description
          "Only include the te-default-metric container when the
           type is bgp-ls-topo-attr-te-default-metric";
      }
      description
        "This container specifies the Traffic Engineering (TE)
         metric of a link";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1092";

      leaf metric {
        type uint32;
        description
          "Traffic Engineering metric";
      }
    }

    container unidirectional-link-delay {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-link-delay')" {
        description
          "Only include the unidirectional-link-delay container
           when the type is bgp-ls-topo-attr-unidir-link-delay";
      }
      description
        "This container specifies the average link delay between
         two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1114";

      uses bgp-ls-topo-delay-attr;

      leaf anomaly {
        type boolean;
        description
          "Anomalous?";
      }
    }

    container min-max-unidirectional-link-delay {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-min-max-unidir-link-delay')" {
        description
          "Only include the min-max-unidirectional-link-delay
           container when the type is
           bgp-ls-topo-attr-min-max-unidir-link-delay";
      }
      description
        "This container specifies the minimum and maximum link delay
         between two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1115";

      container min {
        description
          "Enclosing container for minimum delay";
        uses bgp-ls-topo-delay-attr;
      }

      container max {
        description
          "Enclosing container for maximum delay";
        uses bgp-ls-topo-delay-attr;
      }

      leaf anomaly {
        type boolean;
        description
          "Anomalous?";
      }
    }

    container unidirectional-delay-variation {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-delay-variation')" {
        description
          "Only include the unidirectional-delay-variation container
           when the type is
           bgp-ls-topo-attr-unidir-delay-variation";
      }
      description
        "This container specifies the average link delay variation
         between two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1116";

      uses bgp-ls-topo-delay-attr;
    }

    container unidirectional-link-loss {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-link-loss')" {
        description
          "Only include the unidirectional-link-loss container when
           the type is bgp-ls-topo-attr-unidir-link-loss";
      }
      description
        "This container specifies the loss (as a packet percentage)
         between two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1117";

      leaf link-loss {
        type uint32;
        description
          "Link packet loss as a percentage of the total traffic
           sent over a configurable interval. The basic unit is
           0.000003%, where (2^24 - 2) is 50.331642%.";
      }

      leaf anomaly {
        type boolean;
        description
          "Anomalous?";
      }
    }

    container unidirectional-residual-bw {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-residual-bw')" {
        description
          "Only include the unidirectional-residual-bw container
           when the type is bgp-ls-topo-attr-unidir-residual-bw";
      }
      description
        "This container specifies the residual bandwidth between
         two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1118";

      uses bgp-ls-topo-bw-attr;
    }

    container unidirectional-available-bw {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-available-bw')" {
        description
          "Only include the unidirectional-available-bw container
           when the type is bgp-ls-topo-attr-unidir-available-bw";
      }
      description
        "This container specifies the available bandwidth between
         two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1119";

      uses bgp-ls-topo-bw-attr;
    }

    container unidirectional-utilized-bw {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-unidir-utilized-bw')" {
        description
          "Only include the unidirectional-utilized-bw container
           when the type is bgp-ls-topo-attr-unidir-utilized-bw";
      }
      description
        "This container specifies the utilized bandwidth between
         two directly connected IGP link-state neighbors";
      reference
        "RFC 8571: Link State (BGP-LS) Advertisement of IGP Traffic
         Engineering Performance Metric Extensions. TLV 1120";

      uses bgp-ls-topo-bw-attr;
    }

    container extended-admin-group {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-extended-admin-group')" {
        description
          "Only include the extended-admin-group container when the
           type is bgp-ls-topo-attr-extended-admin-group";
      }
      description
        "This container contains the bit mask of administrative
         groups assigned by the network administrator";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1173";

      uses bgp-ls-topo-eag-attr;
    }

    container unknowns {
      when "derived-from-or-self(../type, " +
          "'bgp-ls-topo-t:bgp-ls-topo-attr-unknowns')" {
      description
          "Only include the unknowns container when the type is
          bgp-ls-topo-attr-unknowns";
      }
      description
        "This container describes the unknown attributes.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP.";

      uses bgp-ls-topo-unknown-attr;
    }
  }

  grouping bgp-ls-topo-common-link-l2-bundle-member-attr {
    description
      "Grouping for the BGP-LS topology attributes common for link
       and L2 bundle member";

    container maximum-link-bw {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-maximum-link-bw')" {
        description
          "Only include the maximum-link-bw container when the
           type is bgp-ls-topo-attr-maximum-link-bw";
      }
      description
        "This container specifies the maximum bandwidth that can be
         used on a link";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1089";

      uses bgp-ls-topo-bw-attr;
    }

    container maximum-reservable-link-bw {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-maximum-reservable-link-bw')" {
        description
          "Only include the maximum-reservable-link-bw container
           when the type is
           bgp-ls-topo-attr-maximum-reservable-link-bw";
      }
      description
        "This container specifies the maximum bandwidth that can be
         reserved on a link";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1090";

      uses bgp-ls-topo-bw-attr;
    }

    container unreserved-bws {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-unreserved-bw')" {
        description
          "Only include the unreserved-bws container when the type
           is bgp-ls-topo-attr-unreserved-bw";
      }
      description
        "This container specifies the bandwidth reservable on a
         link on a per priority basis";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1091";

      list unreserved-bw {
        key "priority";

        description
          "List of unreserved bandwidths";

        leaf priority {
          type uint8 {
            range "0..7";
          }
          description
            "Priority level";
        }

        leaf bandwidth {
          type ietf-rt-t:bandwidth-ieee-float32;
          description
            "Bandwidth reservable on the link for a particular
             priority";
        }
      }
    }

    container link-protection-type {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:" +
           "bgp-ls-topo-attr-link-protection-type')" {
        description
          "Only include the link-protection-type container when the
           type is bgp-ls-topo-attr-link-protection-type";
      }
      description
        "This container describes the protection capabilities of a
         link";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP. TLV 1093";

      leaf type {
        type uint16;
        description
          "Bit mask of protection capabilities";
      }
    }

    container adjacency-sids {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-adjacency-sid')" {
        description
          "Only include the adjacency-sids container when the type
           is bgp-ls-topo-attr-adjacency-sid";
      }
      description
        "This container contains the Adjacency Segment Identifiers
         (SIDs) of an adjacency";
      reference
        "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
         Extensions for Segment Routing. TLV 1099";

      list adjacency-sid {
        key "label-index format";

        description
          "List of adjacency SID";

        uses bgp-ls-topo-adj-sid-attr;
      }
    }

    container lan-adjacency-sids {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-lan-adjacency-sid')" {
        description
          "Only include the lan-adjacency-sids container when the
           type is bgp-ls-topo-attr-lan-adjacency-sid";
      }
      description
        "This container contains the Adjacency Segment Identifiers
         (SIDs) of an adjacency to any node in a LAN other than the
         pseudonode";
      reference
        "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
         Extensions for Segment Routing. TLV 1100";

      list adjacency-sid {
        key "label-index format";

        description
          "List of LAN adjacency SID";

        uses bgp-ls-topo-adj-sid-attr;

        leaf neighbor-id {
          type union {
            type inet:ipv4-address;
            type ietf-isis-t:system-id;
          }
          description
            "Neighbor ID";
        }
      }
    }

    container aslas {
      when "derived-from-or-self(../type, " +
           "'bgp-ls-topo-t:bgp-ls-topo-attr-asla')" {
        description
          "Only include the aslas container when the type is
           bgp-ls-topo-attr-asla";
      }
      description
        "This container acts as a container for link attributes
         that require application-specific definition";
      reference
        "RFC 9294: Application-Specific Link Attributes
         Advertisement Using the Border Gateway Protocol - Link
         State (BGP-LS). TLV 1122";

      list asla {
        key "sabm udabm";

        description
          "List of Application Specific Link Attributes (ASLA)";

        leaf sabm {
          type binary {
            length "0|4|8";
          }
          description
            "Standard Application Identifier Bit Mask (SABM).
             Optional bit mask of length 0, 4, or 8 octets where
             each bit represents a single standard application.";
          reference
            "RFC 9294: Application-Specific Link Attributes
             Advertisement Using the Border Gateway Protocol - Link
             State (BGP-LS), Section 2";
        }

        leaf udabm {
          type binary {
            length "0|4|8";
          }
          description
            "User-Defined Application Identifier Bit Mask (UDABM).
             Optional bit mask of length 0, 4, or 8 octets where
             each bit represents a single user-defined
             application.";
          reference
            "RFC 9294: Application-Specific Link Attributes
             Advertisement Using the Border Gateway Protocol - Link
             State (BGP-LS), Section 2;";
        }

        list asla-attribute {
          key "type";

          description
            "List of ASLA attribute types.";

          leaf type {
            type identityref {
              base bgp-ls-topo-t:bgp-ls-topo-attr-type;
            }
            description
              "The type of ASLA attribute";
          }

          container srlgs {
            when "derived-from-or-self(../type, " +
                 "'bgp-ls-topo-t:bgp-ls-topo-attr-srlg')" {
              description
                "Only include the srlgs container when the type is
                 bgp-ls-topo-attr-srlg";
            }
            description
              "This container specifies the Shared Risk Link Groups
               (SRLGs) of a link";
            reference
              "RFC 9552: Distribution of Link-State and Traffic
               Engineering Information Using BGP. TLV 1096";

            uses bgp-ls-topo-srlg-attr;
          }

          uses bgp-ls-topo-common-link-asla-l2-bundle-member-attr;
        }
      }
    }
  }

  grouping bgp-ls-topo-srv6-sid-struct-attr {
    description
      "Grouping for the BGP-LS topology SRv6 SID
       structure attribute";

    leaf locator-block-len {
      type uint8;
      units "bits";
      description
        "Locator block length";
    }

    leaf locator-node-len {
      type uint8;
      units "bits";
      description
        "Locator node length";
    }

    leaf function-len {
      type uint8;
      units "bits";
      description
        "Function length";
    }

    leaf arg-len {
      type uint8;
      units "bits";
      description
        "Argument length";
    }
  }

  grouping bgp-ls-topo-srv6-endpoint-behavior-attr {
    description
      "Grouping for the BGP-LS topology SRv6 endpoint
       behavior attribute";

    leaf endpoint-behavior {
      type uint8;
      description
        "Endpoint behavior of the SID";
    }

    leaf flags {
      type binary {
        length "1";
      }
      description
        "Flags associated with the SRv6 endpoint behavior";
    }

    leaf algorithm {
      type uint8;
      description
        "Algorithm associated with the SID";
    }
  }

  grouping bgp-ls-topo-srv6-end-x-sid-attr {
    description
      "Grouping for the BGP-LS topology SRv6 End.X SID
       attribute";

    leaf sid {
      type inet:ipv6-address;
      description
        "SRv6 SID as a 128-bit value";
    }

    leaf weight {
      type uint8;
      description
        "Weight associated with the SID for load balancing purpose";
    }

    uses bgp-ls-topo-srv6-endpoint-behavior-attr;
    uses bgp-ls-topo-srv6-sid-struct-attr;
  }

  grouping bgp-ls-topo-unknown-attr {
    description
      "Grouping for the BGP-LS topology unknown attributes";

    list unknown {
      key "type";

      description
        "List of node FAD attribute types.";

      leaf type {
        type uint16;
        description
          "Attribute type.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.3.";
      }

      leaf value {
        type yang:hex-string;
        description
          "Attribute value.";
        reference
          "RFC 9552: Distribution of Link-State and Traffic
           Engineering Information Using BGP, Section 5.3.";
      }
    }
  }

  grouping bgp-ls-topo-node-attr {
    description
      "Grouping for the BGP-LS topology node attributes";

    container node-attributes {
      description
        "Enclosing container for node attributes list";

      list node-attribute {
        key "type";

        description
          "List of node attribute types.";

        leaf type {
          type identityref {
            base bgp-ls-topo-t:bgp-ls-topo-attr-type;
          }
          description
            "The type of node attribute";
        }

        container local-ipv4-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-local-ipv4-routerid')" {
            description
              "Only include the local-ipv4-router-ids container
               when the type is
               bgp-ls-topo-attr-local-ipv4-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs used
             by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1028";

          uses bgp-ls-topo-ipv4-router-id-attr;
        }

        container local-ipv6-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-local-ipv6-routerid')" {
            description
              "Only include the local-ipv6-router-ids container
               when the type is
               bgp-ls-topo-attr-local-ipv6-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs used
             by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1029";

          uses bgp-ls-topo-ipv6-router-id-attr;
        }

        container unknowns {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-unknowns')" {
          description
              "Only include the unknowns container when the type is
              bgp-ls-topo-attr-unknowns";
          }
          description
            "This container describes the unknown attributes.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP.";

          uses bgp-ls-topo-unknown-attr;
        }

        container multi-topology-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-multi-topology-id')" {
            description
              "Only include the multi-topology-ids container
               when the type is
               bgp-ls-topo-attr-multi-topology-id";
          }        
          description
            "This container defines topologies.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 263";

          leaf-list multi-topology-id {
            type uint16;
            description
              "List of Multi-Topology ID";
          }
        }

        container node-flag-bits {
          when "derived-from-or-self(../type, " +
                "'bgp-ls-topo-t:bgp-ls-topo-attr-node-flag-bits')" {
            description
              "Only include the node-flag-bits container when
               the type is bgp-ls-topo-attr-node-flag-bits";
          }        
          description
            "This container defines node attributes as a bit mask.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1024";

          leaf flags {
            type bgp-ls-topo-t:node-flag-bits;
            description
              "Node flags";
          }
        }

        container opaque-node-attribute {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-opaque-node')" {
          description
              "Only include the opaque-node-attribute container when
               the type is bgp-ls-topo-attr-opaque-node";
          }        
          description
            "This container defines an envelope that transparently
             carries optional Node Attribute TLVs advertised by a
             router";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1025";

          uses bgp-ls-topo-opaque-attribute;
        }

        container node-name {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-node-name')" {
          description
              "Only include the node-name container when the
               type is bgp-ls-topo-attr-node-name";
          }        
          description
            "This container identifies the symbolic name of
             the router node";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1026";

          leaf name {
            type string {
              length "1..255";
            }
            description
              "Node name";
          }
        }

        container sr-capabilities {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-sr-capabilities')" {
          description
              "Only include the sr-capabilities container when
               the type is bgp-ls-topo-attr-sr-capabilities";
          }        
          description
            "This container defines node's Segment Routing (SR)
             capabilities including its Segment Routing Global Base 
             (SRGB) range(s)";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1034";

          list srgb {
            key "start-label";

            description
              "List of SRGB";

            leaf start-label {
              type ietf-rt-t:mpls-label;
              description
                "First label in the range";
            }
            leaf range-size {
              type uint32;
              description
                "Number of labels in the range";
            }
          }

          leaf isis-flags {
            type binary {
              length "1";
            }
            description
              "ISIS flags for IS-IS.";
            reference
              "RFC 8667: IS-IS Extensions for Segment Routing,
               Section 3.1.";
          }
        }

        container sr-local-block {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-srlb')" {
          description
              "Only include the sr-local-block container when
               the type is bgp-ls-topo-attr-srlb";
          }        
          description
            "This container contains the range(s) of labels
             reserved by the node for local SIDs (Segment
             Identifiers)";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1036";

          list srlb {
            key "start-label";

            description
              "List of SRLB";

            leaf start-label {
              type ietf-rt-t:mpls-label;
              description
                "First label in the range";
            }
            leaf range-size {
              type uint32;
              description
                "Number of labels in the range";
            }
          }
        }

        container sr-algorithm {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-sr-algorithm')" {
          description
              "Only include the sr-algorithm container when the
               type is bgp-ls-topo-attr-sr-algorithm";
          }        
          description
            "This container defines Segment Routing (SR) algorithms
             supported by the node";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1035";

          leaf-list algorithm {
            type uint8;
            description
              "List of SR algorithms";
          }
        }

        container node-msd {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-node-msd')" {
          description
              "Only include the node-msd container when the type is 
              bgp-ls-topo-attr-node-msd";
          }        
          description
            "This container defines node Maximum SID Depth (MSD).";
          reference
            "RFC 8814: Signaling Maximum SID Depth (MSD) Using the
            Border Gateway Protocol - Link State. TLV 266";

          uses bgp-ls-topo-msd-attr;
        }

        container fads {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-fad')" {
          description
              "Only include the fads container when the type is 
              bgp-ls-topo-attr-fad";
          }        
          description
            "This container defines the Flexible Algorithms
             supported by the node";
          reference
            "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Flexible Algorithm Advertisement. 
             TLV 1039";

          list fad {
            key "algorithm";

            description
              "List of FADs";

            leaf algorithm {
              type uint8 {
                range "128..255";
              }
              description
                "Flexible algorithm";
            }

            leaf metric-type {
              type uint8;
              description
                "Metric type";
            }

            leaf calc-type {
              type uint8;
              description
                "Calculation type";
            }

            leaf priority {
              type uint8;
              description
                "Priority of the FAD advertisement";
            }

            container node-fad-attributes {
              description
                "Enclosing container for node FAD attributes list";

              list node-fad-attribute {
                key "type";

                description
                  "List of node FAD attribute types.";

                leaf type {
                  type identityref {
                    base bgp-ls-topo-t:bgp-ls-topo-attr-fad-type;
                  }
                  description
                    "The type of node FAD attribute";
                }

                container exclude-any-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-excl-any-aff')" {
                    description
                      "Only include the exclude-any-affinity
                       container when the type is
                       bgp-ls-topo-attr-fad-excl-any-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the exclusion
                     of links carrying any of the specified affinities
                     from the computation of the specific algorithm";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1040";

                  uses bgp-ls-topo-eag-attr;
                }

                container include-any-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-incl-any-aff')" {
                    description
                      "Only include the include-any-affinity container
                       when the type is
                       bgp-ls-topo-attr-fad-incl-any-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the
                     inclusion of links carrying any of the specified
                     affinities from the computation of the specific
                     algorithm";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1041";

                  uses bgp-ls-topo-eag-attr;
                }

                container include-all-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-incl-all-aff')" {
                    description
                      "Only include the include-all-affinity
                       container when the type is
                       bgp-ls-topo-attr-fad-incl-all-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the inclusion
                     of links carrying all of the specified affinities
                     from the computation of the specific algorithm";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1042";

                  uses bgp-ls-topo-eag-attr;
                }

                container flags {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:bgp-ls-topo-attr-fad-flags')" {
                    description
                      "Only include the flags container when the type is
                      bgp-ls-topo-attr-fad-flags";
                  }
                  description
                    "This container contains the flags associated with
                     the FAD";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1043";

                  leaf flags {
                    type binary {
                      length "1..65535";
                    }
                    description
                      "Bit mask representing the FAD flags. The
                       flags are derived from the IS-IS and OSPF
                       protocol-specific Flexible Algorithm
                       Definition Flags sub-TLV.";
                    reference
                      "RFC 9350: IGP Flexible Algorithm.";
                  }
                }

                container exclude-srlg {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-excl-srlg')" {
                    description
                      "Only include the exclude-srlg container when the
                       type is bgp-ls-topo-attr-fad-excl-srlg";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the
                     exclusion of links associated with any of the
                     specified SRLG from the computation of the
                     specific algorithm";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1045";

                  uses bgp-ls-topo-srlg-attr;
                }

                container exclude-minimum-bw {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-excl-minimum-bw')" {
                    description
                      "Only include the exclude-minimum-bw container
                       when the type is
                       bgp-ls-topo-attr-fad-excl-minimum-bw";
                  }
                  description
                    "This container enables the exclusion of links not
                     having a minimum specified bandwidth from the
                     computation of the specific algorithm";
                  reference
                    "RFC TBD: BGP-LS extensions for IP Flexible
                     Algorithms and Bandwidth, Delay, Metrics and
                     Constraints. TLV TBD (1049)";

                  uses bgp-ls-topo-bw-attr;
                }

                container exclude-maximum-delay {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-excl-maximum-delay')" {
                    description
                      "Only include the exclude-maximum-delay
                       container when the type is
                       bgp-ls-topo-attr-fad-excl-maximum-delay";
                  }
                  description
                    "This container enables the exclusion of links
                     having delay above a maximum specified delay
                     from the computation of the specific algorithm";
                  reference
                    "RFC TBD: BGP-LS extensions for IP Flexible
                     Algorithms and Bandwidth, Delay, Metrics and
                     Constraints. TLV TBD (1050)";

                  uses bgp-ls-topo-delay-attr;
                }

                container exclude-any-reverse-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-excl-any-rev-aff')" {
                    description
                      "Only include the exclude-any-reverse-affinity
                       container when the type is
                       bgp-ls-topo-attr-fad-excl-any-rev-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the exclusion
                     of links carrying any of the specified affinities
                     in the reverse direction from the computation of
                     the specific algorithm";
                  reference
                    "RFC TBD: BGP-LS extensions for Flexible
                     Algorithms Reverse Affinity Constraint.
                     TLV TBD (1053)";

                  uses bgp-ls-topo-eag-attr;
                }

                container include-any-reverse-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-incl-any-rev-aff')" {
                    description
                      "Only include the include-any-reverse-affinity
                       container when the type is
                       bgp-ls-topo-attr-fad-incl-any-rev-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the
                     inclusion of links carrying any of the specified
                     affinities in the reverse direction from the
                     computation of the specific algorithm";
                  reference
                    "RFC TBD: BGP-LS extensions for Flexible
                     Algorithms Reverse Affinity Constraint.
                     TLV TBD (1054)";

                  uses bgp-ls-topo-eag-attr;
                }

                container include-all-reverse-affinity {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fad-incl-all-rev-aff')" {
                    description
                      "Only include the include-all-reverse-affinity
                       container when the type is
                       bgp-ls-topo-attr-fad-incl-all-rev-aff";
                  }
                  description
                    "This container contains the affinity constraints
                     associated with the FAD and enables the
                     inclusion of links carrying all of the specified
                     affinities in the reverse direction from the
                     computation of the specific algorithm";
                  reference
                    "RFC TBD: BGP-LS extensions for Flexible
                     Algorithms Reverse Affinity Constraint.
                     TLV TBD (1055)";

                  uses bgp-ls-topo-eag-attr;
                }

                container fa-unsupported-tlvs {
                  when "derived-from-or-self(../type, " +
                       "'bgp-ls-topo-t:" +
                       "bgp-ls-topo-attr-fa-unsupported')" {
                    description
                      "Only include the fa-unsupported-tlvs container
                       when the type is
                       bgp-ls-topo-attr-fa-unsupported";
                  }
                  description
                    "Indicates the presence of unsupported Flexible
                     Algorithm Definition (FAD) TLVs";
                  reference
                    "RFC 9351: Border Gateway Protocol - Link State
                     (BGP-LS) Extensions for Flexible Algorithm
                     Advertisement. TLV 1046";

                  leaf protocol-id {
                    type bgp-ls-topo-t:protocol;
                    description
                      "BGP-LS protocol advertising the FAD";
                  }

                  leaf-list type {
                    type uint16;
                    description
                      "List of unsupported TLV types.";
                  }
                }
              }
            }
          }
        }

        container isis-area-identifiers {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-isis-area-identifier')" {
          description
              "Only include the isis-area-identifiers
               container when the type is 
               bgp-ls-topo-attr-isis-area-identifier";
          }          
          description
            "This container contains the ISIS area addresses";
          reference
            "RFC 9552: Distribution of Link-State and Traffic 
             Engineering Information Using BGP. TLV 1027";

          leaf-list area-address {
            type ietf-isis-t:area-address;
            description
            "List of ISIS area addresses";
          }
        }

        container srv6-capabilities-flags {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-srv6-cap-flags')" {
            description
              "Only include the srv6-cap-flags container when the
               type is bgp-ls-topo-attr-srv6-cap-flags";
          }
          description
            "This container defines SRv6 capability flags.";
          reference
            "RFC 9514: SRv6 BGP-LS extensions.";

          leaf flags {
            type binary {
              length "1";
            }
            description
              "SRv6 capability flags.";
          }
        }
      }
    }
  }

  grouping bgp-ls-topo-igp-link-attr {
    description
      "Grouping for the BGP-LS topology link attributes";

    container link-attributes {
      description
        "Enclosing container for link attributes list";

      list link-attribute {
        key "type";

        description
          "List of link attribute types.";

        leaf type {
          type identityref {
            base bgp-ls-topo-t:bgp-ls-topo-attr-type;
          }
          description
            "The type of link attribute";
        }

        uses bgp-ls-topo-common-link-asla-l2-bundle-member-attr;

        container link-local-remote-identifiers {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-link-local-remote-identifiers')" {
            description
              "Only include the link-local-remote-identifiers
               container when the type is
               bgp-ls-topo-attr-link-local-remote-identifiers";
          }
          description
            "This container defines link local and remote
             identifiers.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 258";

          leaf local-identifier {
            type uint32;
            description
              "Link local identifier";
          }

          leaf remote-identifier {
            type uint32;
            description
              "Link remote identifier";
          }
        }

        container link-msd {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-link-msd')" {
            description
              "Only include the link-msd container when the type is
               bgp-ls-topo-attr-link-msd";
          }
          description
            "This container defines link Maximum SID Depth (MSD).";
          reference
            "RFC 8814: Signaling Maximum SID Depth (MSD) Using the
             Border Gateway Protocol - Link State. TLV 267";

          uses bgp-ls-topo-msd-attr;
        }

        container local-ipv4-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-local-ipv4-routerid')" {
            description
              "Only include the local-ipv4-router-ids container
               when the type is
               bgp-ls-topo-attr-local-ipv4-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs used
             by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1028";

          uses bgp-ls-topo-ipv4-router-id-attr;
        }

        container local-ipv6-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-local-ipv6-routerid')" {
            description
              "Only include the local-ipv6-router-ids container
               when the type is
               bgp-ls-topo-attr-local-ipv6-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs used
             by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1029";

          uses bgp-ls-topo-ipv6-router-id-attr;
        }

        container remote-ipv4-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-remote-ipv4-routerid')" {
            description
              "Only include the remote-ipv4-router-ids container
               when the type is
               bgp-ls-topo-attr-remote-ipv4-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs
             used by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1030";

          uses bgp-ls-topo-ipv4-router-id-attr;
        }

        container remote-ipv6-router-ids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-remote-ipv6-routerid')" {
            description
              "Only include the remote-ipv6-router-ids container
               when the type is
               bgp-ls-topo-attr-remote-ipv6-routerid";
          }
          description
            "This container describes the auxiliary Router-IDs
             used by the IGP.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1031";

          uses bgp-ls-topo-ipv6-router-id-attr;
        }

        container mpls-protocol-mask {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-mpls-protocol-mask')" {
            description
              "Only include the mpls-protocol-mask container when
               the type is bgp-ls-topo-attr-mpls-protocol-mask";
          }
          description
            "This container contains the bit mask describing MPLS
             signaling protocols enabled";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1094";

          leaf mask {
            type uint8;
            description
              "Bit mask of MPLS signaling protocols enabled";
          }
        }

        container igp-metric {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-igp-metric')" {
            description
              "Only include the igp-metric container when the type
               is bgp-ls-topo-attr-igp-metric";
          }
          description
            "This container specifies the metric of a link";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1095";

          leaf metric {
            type uint32;
            description
              "IGP metric";
          }
        }

        container srlgs {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-srlg')" {
            description
              "Only include the srlgs container when the type is
               bgp-ls-topo-attr-srlg";
          }
          description
            "This container specifies the Shared Risk Link Groups
             (SRLGs) of a link";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1096";

          uses bgp-ls-topo-srlg-attr;
        }

        container opaque-link-attribute {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-opaque-link')" {
            description
              "Only include the opaque-link-attribute container
               when the type is bgp-ls-topo-attr-opaque-link";
          }
          description
            "This container defines an envelope that transparently
             carries optional Link Attribute TLVs advertised by a
             router";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1097";

          uses bgp-ls-topo-opaque-attribute;
        }

        container link-name {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-link-name')" {
            description
              "Only include the link-name container when the
               type is bgp-ls-topo-attr-link-name";
          }
          description
            "This container identifies the symbolic name of
             the link";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1098";

          leaf name {
            type string {
              length "1..255";
            }
            description
              "Link name";
          }
        }

        container srv6-end-x-sids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-srv6-end-x-sid')" {
            description
              "Only include the srv6-end-x-sids container when the
               type is bgp-ls-topo-attr-srv6-end-x-sid";
          }
          description
            "This container contains the Segment Routing over IPv6
             (SRv6) Segment Identifiers (SIDs) associated with an
             adjacency.";
          reference
            "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing over IPv6 (SRv6).
             TLV 1106";

          list srv6-end-x-sid {
            key "sid";

            description
              "List of SRv6 End.X SID";

            uses bgp-ls-topo-srv6-end-x-sid-attr;
          }
        }

        container srv6-lan-end-x-sids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-srv6-isis-lan-end-x-sid')" +
               " or derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-srv6-ospf-lan-end-x-sid')" {
            description
              "Only include the srv6-lan-end-x-sids container when
               the type is bgp-ls-topo-attr-srv6-isis-lan-end-x-sid
               or bgp-ls-topo-attr-srv6-ospf-lan-end-x-sid";
          }
          description
            "This container contains the Segment Routing over IPv6
             (SRv6) Segment Identifiers (SIDs) of an adjacency to
             any node in a LAN other than the pseudonode";
          reference
            "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing over IPv6 (SRv6).
             TLV 1107 / 1108";

          list srv6-end-x-sid {
            key "sid";

            description
              "List of SRv6 LAN End.X SID";

            uses bgp-ls-topo-srv6-end-x-sid-attr;

            leaf neighbor-id {
              type union {
                type inet:ipv4-address;
                type ietf-isis-t:system-id;
              }
              description
                "Neighbor ID";
            }
          }
        }

        uses bgp-ls-topo-common-link-l2-bundle-member-attr;

        container l2-bundle-members {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-l2-bundle-member')" {
            description
              "Only include the l2-bundle-members container when
               the type is bgp-ls-topo-attr-l2-bundle-member";
          }
          description
            "This container identifies an L2 bundle member link
             that is associated with a parent L3 link";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1172";

          list l2-bundle-member {
            key "member-descriptor";

            description
              "List of L2 bundle members";

            leaf member-descriptor {
              type uint32;
              description
                "Link local identifier";
            }

            list bundle-member-attribute {
              key "type";

              description
                "List of bundle member attribute types.";

              leaf type {
                type identityref {
                  base bgp-ls-topo-t:bgp-ls-topo-attr-type;
                }
                description
                  "The type of bundle member attribute";
              }

              uses
                bgp-ls-topo-common-link-asla-l2-bundle-member-attr;
              uses bgp-ls-topo-common-link-l2-bundle-member-attr;
            }
          }
        }
      }
    }
  }

  grouping bgp-ls-topo-prefix-attr {
    description
      "Grouping for the BGP-LS topology prefix attributes";

    container prefix-attributes {
      description
        "Enclosing container for prefix attributes list";

      list prefix-attribute {
        key "type";

        description
          "List of prefix attribute types.";

        leaf type {
          type identityref {
            base bgp-ls-topo-t:bgp-ls-topo-attr-type;
          }
          description
            "The type of prefix attribute";
        }

        container flexible-algorithm-prefix-metric {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-fa-prefix-metric')" {
            description
              "Only include the flexible-algorithm-prefix-metric
               container when the type is
               bgp-ls-topo-attr-fa-prefix-metric";
          }
          description
            "This container defines the metric associated with the
             prefix for a particular Flexible Algorithm (FA)";
          reference
            "RFC 9351: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Flexible Algorithm Advertisement.
             TLV 1044";

          list fa-prefix-metric {
            key "algorithm";

            description
              "List of Flexible Algorithm prefix metrics";

            leaf metric {
              type uint32;
              description
                "Flexible Algorithm prefix metric";
            }

            leaf algorithm {
              type uint8 {
                range "128..255";
              }
              description
                "Flexible Algorithm";
            }

            leaf flags {
              type binary {
                length "1";
              }
              description
                "Flags associated with the Flexible Algorithm prefix
                 metric as defined in RFC 9350 for OSPFv2";
            }
          }
        }

        container igp-flags {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-igp-flags')" {
            description
              "Only include the igp-flags container when the type is
               bgp-ls-topo-attr-igp-flags";
          }
          description
            "This container specifies the flags and bits assigned
             to a prefix";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1152";

          leaf flags {
            type bgp-ls-topo-t:igp-flags-bits;
            description
              "IGP flags";
          }
        }

        container igp-route-tags {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-igp-route-tag')" {
            description
              "Only include the igp-route-tags container when the
               type is bgp-ls-topo-attr-igp-route-tag";
          }
          description
            "This container specifies the tags of a prefix";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1153";

          leaf-list tag {
            type uint32;
            description
              "List of IGP route tags";
          }
        }

        container extended-igp-route-tags {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-ext-igp-route-tag')" {
            description
              "Only include the extended-igp-route-tags container
               when the type is bgp-ls-topo-attr-ext-igp-route-tag";
          }
          description
            "This container specifies the extended route tags of a
             prefix";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1154";

          leaf-list tag {
            type uint64;
            description
              "List of IGP extended route tags";
          }
        }

        container prefix-metric {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-prefix-metric')" {
            description
              "Only include the prefix-metric container when the
               type is bgp-ls-topo-attr-prefix-metric";
          }
          description
            "This container specifies the metric of a prefix";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1155";

          leaf metric {
            type uint32;
            description
              "Prefix metric";
          }
        }

        container ospf-forwarding-address {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-ospf-forwarding-address')" {
            description
              "Only include the ospf-forwarding-address container
               when the type is
               bgp-ls-topo-attr-ospf-forwarding-address";
          }
          description
            "This container specifies the forwarding address of a
             prefix as known in original OSPF advertisement";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1156";

          leaf forw-address {
            type inet:ip-address;
            description
              "Forwarding address";
          }
        }

        container opaque-prefix-attribute {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-opaque-prefix')" {
            description
              "Only include the opaque-prefix-attribute container
               when the type is bgp-ls-topo-attr-opaque-prefix";
          }
          description
            "This container defines an envelope that transparently
             carries optional Prefix Attribute TLVs advertised by a
             router";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP. TLV 1157";

          uses bgp-ls-topo-opaque-attribute;
        }

        container prefix-sids {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-prefix-sid')" {
            description
              "Only include the prefix-sids container when the type
               is bgp-ls-topo-attr-prefix-sid";
          }
          description
            "This container contains the prefix Segment Identifiers
             (SIDs) of a prefix";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1158";

          list prefix-sid {
            key "label-index format";

            description
              "List of prefix SID";

            leaf label-index {
              type uint32;
              description
                "Label or index";
            }

            leaf format {
              type bgp-ls-topo-t:sid-format;
              description
                "Format of the SID";
            }

            leaf flags {
              type binary {
                length "1";
              }
              description
                "Flags as defined in Section 2.1.1 of RFC 8667 for
                 ISIS, Section 5 of RFC 8665 for OSPFv2 and
                 Section 6 of RFC 8665 for OSPFv3";
            }

            leaf algorithm {
              type uint8;
              description
                "Algorithm";
            }
          }
        }

        container prefix-range {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-prefix-range')" {
            description
              "Only include the prefix-range container when the
               type is bgp-ls-topo-attr-prefix-range";
          }
          description
            "This container defines a range of
             prefix-to-SID mapping.";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1159";

          leaf index {
            type uint32;
            description
              "Starting index of the range";
          }

          leaf range-size {
            type uint16;
            description
              "Number of prefixes covered by the advertisement";
          }

          leaf flags {
            type binary {
              length "1";
            }
            description
              "Flags associated with the range taken from IS-IS
               SID/Label Binding TLV flags as defined in
               Section 2.4.1 of RFC 8667 for ISIS, OSPFv2 OSPF
               Extended Prefix Range TLV flags as defined in
               Section 4 of RFC 8665 for OSPFv2 and OSPFv3
               Extended Prefix Range TLV flags as defined in
               Section 5 of RFC 8666 for OSPFv3";
          }

          leaf algorithm {
            type uint8;
            description
              "Algorithm";
          }

          leaf sid-flags {
            type binary {
              length "1";
            }
            description
              "Flags associated with the SID as defined in Section
               2.1.1 of RFC 8667 for ISIS, Section 5 of RFC 8665 for
               OSPFv2 and Section 6 of RFC 8665 for OSPFv3";
          }
        }

        container srv6-locator {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:bgp-ls-topo-attr-srv6-locator')" {
            description
              "Only include the srv6-locator container when the type
               is bgp-ls-topo-attr-srv6-locator";
          }
          description
            "This container contains the Segment Routing over IPv6
             (SRv6) locator information associated with a prefix.";
          reference
            "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing over IPv6 (SRv6).
             TLV 1162";

          leaf metric {
            type uint32;
            description
              "Flex algo prefix metric";
          }

          leaf flags {
            type binary {
              length "1";
            }
            description
              "Flags associated with the locator, copied from the
               IS-IS SRv6 Locator TLV (Section 7.1 of RFC 9352) for
               ISIS or the OSPFv3 SRv6 Locator TLV (Section 7.1 of
               RFC 9513) for OSPFv3";
          }

          leaf algorithm {
            type uint8;
            description
              "Algorithm associated with the locator";
          }
        }

        container prefix-attribute-flags {
          when "derived-from-or-self(../type, " +
            "'bgp-ls-topo-t:" +
            "bgp-ls-topo-attr-prefix-attribute-flags')" {
            description
              "Only include the prefix-attribute-flags container
            when the type is
            bgp-ls-topo-attr-prefix-attribute-flags";
          }
          description
            "This container defines the prefix attribute flags of a
             prefix";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1170";

          leaf flags {
            type binary {
              length "1";
            }
            description
              "Prefix attribute flags as defined in Section 2.1 of
               RFC 7684 for OSPFv2, Appendix A.4.1.1 of RFC 5340 for
               OSPFv3, and Section 2.1 of RFC 7794 for IS-IS";
          }
        }

        container prefix-source-router-id {
          when "derived-from-or-self(../type, " +
            "'bgp-ls-topo-t:" +
            "bgp-ls-topo-attr-prefix-src-router-id')" {
            description
              "Only include the prefix-source-router-id container
               when the type is
               bgp-ls-topo-attr-prefix-src-router-id";
          }
          description
            "This container defines the source router identifier of
             a prefix";
          reference
            "RFC 9085: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing. TLV 1171";

          leaf source-router-id {
            type inet:ip-address;
            description
              "Source router ID";
          }
        }

        container unknowns {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-unknowns')" {
          description
              "Only include the unknowns container when the type is
              bgp-ls-topo-attr-unknowns";
          }
          description
            "This container describes the unknown attributes.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP.";

          uses bgp-ls-topo-unknown-attr;
        }
      }
    }
  }

  grouping bgp-ls-topo-srv6-sid-attr {
    description
      "Grouping for the BGP-LS topology SRv6 SID attributes";

    container srv6-sid-attributes {
      description
        "Enclosing container for SRv6 SID attributes list";

      list srv6-sid-attribute {
        key "type";

        description
          "List of SRv6 SID attribute types.";

        leaf type {
          type identityref {
            base bgp-ls-topo-t:bgp-ls-topo-attr-type;
          }
          description
            "The type of SRv6 SID attribute";
        }

        container srv6-endpoint-behavior {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-srv6-endpoint-behavior')" {
            description
              "Only include the srv6-endpoint-behavior container
               when the type is
               bgp-ls-topo-attr-srv6-endpoint-behavior";
          }
          description
            "This container contains the SRv6 endpoint behavior.";
          reference
            "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing over IPv6 (SRv6).
             SRv6 endpoint behavior. TLV 1250.";

          uses bgp-ls-topo-srv6-endpoint-behavior-attr;
        }

        container srv6-sid-structure {
          when "derived-from-or-self(../type, " +
               "'bgp-ls-topo-t:" +
               "bgp-ls-topo-attr-srv6-sid-structure')" {
            description
              "Only include the srv6-sid-structure container
               when the type is
               bgp-ls-topo-attr-srv6-sid-structure";
          }
          description
            "This container defines the SRv6 SID structure.";
          reference
            "RFC 9514: Border Gateway Protocol - Link State (BGP-LS)
             Extensions for Segment Routing over IPv6 (SRv6).
             SRv6 SID structure. TLV 1252.";

          uses bgp-ls-topo-srv6-sid-struct-attr;
        }
 
        container unknowns {
          when "derived-from-or-self(../type, " +
              "'bgp-ls-topo-t:bgp-ls-topo-attr-unknowns')" {
          description
              "Only include the unknowns container when the type is
              bgp-ls-topo-attr-unknowns";
          }
          description
            "This container describes the unknown attributes.";
          reference
            "RFC 9552: Distribution of Link-State and Traffic
             Engineering Information Using BGP.";

          uses bgp-ls-topo-unknown-attr;
        }
      }
    }
  }
}
<CODE ENDS>

]]></artwork>
	</figure>
      </section>

      <section>
	<name>BGP Link-State Topology OSPF YANG model</name>
	<t>The <tt>ietf-bgp-ls-topo-ospf</tt> submodule defines three
	groupings that capture the OSPF-specific NLRI descriptor fields
	shared between OSPFv2 and OSPFv3:
	<tt>bgp-ls-ospf-node-common</tt> (for node NLRIs),
	<tt>bgp-ls-ospf-link-common</tt> (for link NLRIs), and
	<tt>bgp-ls-ospf-prefix-common</tt> (for prefix NLRIs).  Each
	grouping includes the <tt>is-as-scoped</tt> leaf and the
	<tt>area-id</tt> leaf.  When <tt>is-as-scoped</tt> is true, the
	NLRI is scoped to the entire AS and the <tt>area-id</tt> is not
	applicable; when false, the <tt>area-id</tt> identifies the OSPF
	area to which the NLRI belongs.  The <tt>route-type</tt> leaf in
	<tt>bgp-ls-ospf-prefix-common</tt> distinguishes intra-area,
	inter-area, external Type 1, external Type 2, NSSA Type 1, and
	NSSA Type 2 routes, as defined in Section 5.2.3.2 of
	<xref target="RFC9552"/>.</t>

	<t>These groupings are used by the <tt>ietf-bgp-lsdb</tt> module
	for all four OSPFv2/OSPFv3 list types (node, link, prefix, and
	SRv6 SID), eliminating duplication and ensuring that the OSPF
	descriptor fields are consistently defined across all NLRI
	types.</t>

	<figure>
          <name>YANG Model for BGP-LS Topology OSPF</name>
          <artwork><![CDATA[
<CODE BEGINS> file "ietf-bgp-ls-topo-ospf@2026-11-02.yang"
submodule ietf-bgp-ls-topo-ospf {
  yang-version 1.1;

  belongs-to ietf-bgp-lsdb {
    prefix "bgp-lsdb";
  }

  import ietf-inet-types { 
    prefix inet;
    reference
      "RFC 9911: Common YANG Data Types.";
  }

  import ietf-bgp-ls-topo-types {
    prefix bgp-ls-topo-t;
    reference
      "RFC XXXX: BGP Model for Link State Distribution.";
  }

  import ietf-routing-types { 
    prefix ietf-rt-t;
    reference
      "RFC 8294: Common YANG Data Types for the Routing Area.";
  }

  import ietf-ospf { 
    prefix ietf-ospf-t;
    reference
      "RFC 9129: YANG Data Model for the OSPF Protocol.";
  }

  organization
    "IETF LSVR Working Group";
  
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lsvr>
     WG List:  <lsvr@ietf.org>

     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),
              Keyur Patel (keyur at arrcus.com)";

  description
    "This submodule contains groupings for OSPFv2/OSPFv3
     node and link NLRIs.
    
     Copyright (c) 2025 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2026-11-02 {
    description
      "Initial Version";
    reference
      "RFC XXXX, BGP Model for Link State Distribution.";
  }

  grouping bgp-ls-ospf-node-common {
    description
      "Common fields for OSPFv2 and OSPFv3 node NLRIs.";

    leaf is-as-scoped {
      type boolean;
      description
        "When true, the NLRI is AS-scoped and the area-id
         is not applicable.";
    }

    leaf area-id {
      type ietf-ospf-t:area-id-type;
      description
        "Area ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 514.";
    }

    leaf router-id {
      type ietf-rt-t:router-id;
      description
        "Router ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 515.";
    }

    leaf dr-identifier {
      type union {
        type inet:ipv4-address;
        type uint32;
      }
      description
        "Designated Router (DR) Identifier.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 515.";
    }

    leaf as {
      type inet:as-number;
      description
        "Autonomous System (AS) number associated with the
         BGP process originating the NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 512.";
    }
  }

  grouping bgp-ls-ospf-link-common {
    description
      "Common fields for OSPFv2 and OSPFv3 link NLRIs.";

    leaf area-id {
      type ietf-ospf-t:area-id-type;
      description
        "Area ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 514.";
    }

    leaf as {
      type inet:as-number;
      description
        "Autonomous System (AS) number associated with the
         BGP process originating the NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 512.";
    }

    leaf local-router-id {
      type ietf-rt-t:router-id;
      description
        "Local Router ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 515.";
    }

    leaf remote-router-id {
      type ietf-rt-t:router-id;
      description
        "Remote Router ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 515.";
    }

    leaf local-id {
      type uint32;
      description
        "Local Identifier of a link.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2. TLV 258.";
    }

    leaf remote-id {
      type uint32;
      description
        "Remote Identifier of a link.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2. TLV 258.";
    }

    leaf local-ipv4-address {
      type inet:ipv4-address;
      description
        "Local IPv4 address of a link. Use 0.0.0.0 as a sentinel
         value when this address is not present (e.g., for
         unnumbered or IPv6-only links).";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2. TLV 259.";
    }

    leaf remote-ipv4-address {
      type inet:ipv4-address;
      description
        "Remote IPv4 address of a link. Use 0.0.0.0 as a sentinel
         value when this address is not present (e.g., for
         unnumbered or IPv6-only links).";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2. TLV 260.";
    }

    leaf multi-topology-id {
      type uint16;
      description
        "Multi Topology Identifier (MTID) of a link.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2.1. TLV 263.";
    }
  }

  grouping bgp-ls-ospf-prefix-common {
    description
      "Common fields for OSPFv2 and OSPFv3 prefix NLRIs.";

    leaf is-as-scoped {
      type boolean;
      description
        "When true, the NLRI is AS-scoped and the area-id
         is not applicable.";
    }

    leaf area-id {
      type ietf-ospf-t:area-id-type;
      description
        "Area ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 514.";
    }

    leaf as {
      type inet:as-number;
      description
        "Autonomous System (AS) number associated with the
         BGP process originating the NLRI.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2. TLV 512.";
    }

    leaf router-id {
      type ietf-rt-t:router-id;
      description
        "Router ID.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.1. TLV 515.";
    }

    leaf route-type {
      type bgp-ls-topo-t:ospf-route-type;
      description
        "OSPF Route type of a prefix.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.3.1. TLV 264.";
    }

    leaf multi-topology-id {
      type uint16;
      description
        "Multi Topology Identifier (MTID) of a prefix.";
      reference
        "RFC 9552: Distribution of Link-State and Traffic
         Engineering Information Using BGP,
         Section 5.2.2.1. TLV 263.";
    }

  }
}
<CODE ENDS>

]]></artwork>
	</figure>
      </section>
    </section>

    <section anchor="IANA">
      <name>IANA Considerations</name>

      <t>This memo registers the following namespace URIs in the IETF
      XML Registry <xref target="RFC3688"/>:</t>

      <dl newline="false" spacing="compact" indent="3">
        <dt>URI:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-ls</dd>
        <dt>Registrant Contact:</dt>
        <dd>The IESG.</dd>
        <dt>XML:</dt>
        <dd>N/A; the requested URI is an XML namespace.</dd>
      </dl>
      <dl newline="false" spacing="compact" indent="3">
        <dt>URI:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-lsdb</dd>
        <dt>Registrant Contact:</dt>
        <dd>The IESG.</dd>
        <dt>XML:</dt>
        <dd>N/A; the requested URI is an XML namespace.</dd>
      </dl>
      <dl newline="false" spacing="compact" indent="3">
        <dt>URI:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types</dd>
        <dt>Registrant Contact:</dt>
        <dd>The IESG.</dd>
        <dt>XML:</dt>
        <dd>N/A; the requested URI is an XML namespace.</dd>
      </dl>

      <t>This document registers the following YANG modules in the
      "YANG Module Names" registry <xref target="RFC6020"/>:</t>

      <dl newline="false" spacing="compact" indent="3">
        <dt>Name:</dt>
        <dd>ietf-bgp-ls</dd>
        <dt>Namespace:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-ls</dd>
        <dt>Prefix:</dt>
        <dd>bgp-ls</dd>
        <dt>Reference:</dt>
        <dd>RFC XXXX</dd>
      </dl>
      <dl newline="false" spacing="compact" indent="3">
        <dt>Name:</dt>
        <dd>ietf-bgp-lsdb</dd>
        <dt>Namespace:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-lsdb</dd>
        <dt>Prefix:</dt>
        <dd>bgp-lsdb</dd>
        <dt>Reference:</dt>
        <dd>RFC XXXX</dd>
      </dl>
      <dl newline="false" spacing="compact" indent="3">
        <dt>Name:</dt>
        <dd>ietf-bgp-ls-topo-types</dd>
        <dt>Namespace:</dt>
        <dd>urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types</dd>
        <dt>Prefix:</dt>
        <dd>bgp-ls-topo-t</dd>
        <dt>Reference:</dt>
        <dd>RFC XXXX</dd>
      </dl>
    </section>

    <section anchor="Security">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in
      <xref target="RFC9907" section="3.7.1" sectionFormat="of"/>.</t>

      <section anchor="security-bgp-ls">
        <name>The "ietf-bgp-ls" YANG Module</name>
        <t>The "ietf-bgp-ls" YANG module defines a data model that is
        designed to be accessed via YANG-based management protocols,
        such as the Network Configuration Protocol (NETCONF)
        <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>.
        These YANG-based management protocols (1) have to use a secure
        transport layer (e.g., SSH <xref target="RFC4253"/>, TLS
        <xref target="RFC9846"/>, and QUIC <xref target="RFC9000"/>)
        and (2) have to use mutual authentication (e.g., for SSH, the
        SSH Authentication Protocol <xref target="RFC4252"/>).</t>

        <t>The Network Configuration Access Control Model (NACM)
        <xref target="RFC8341"/> provides the means to restrict access
        for particular NETCONF or RESTCONF users to a preconfigured
        subset of all available NETCONF or RESTCONF protocol operations
        and content.</t>

        <t>There are a number of data nodes defined in this YANG module
        that are writable/creatable/deletable (i.e., "config true",
        which is the default).  All writable data nodes are likely to
        be reasonably sensitive or vulnerable in some network
        environments.  Write operations (e.g., edit-config) and delete
        operations to these data nodes without proper protection or
        authentication can have a negative effect on network
        operations.  The following subtrees and data nodes have
        particular sensitivities/vulnerabilities:</t>

        <ul>
          <li>
            <t>The "link-state" container, under the global, neighbor,
            and peer-group "afi-safi" lists.  Creating this container
            enables BGP-LS or BGP-LS-VPN, and deleting it disables
            them.  Enabling it for an unauthorized neighbor or peer
            group causes the router to distribute its Link-State
            information to unintended recipients.  Deleting it stops
            the distribution of topology information to the consumers
            that depend on it, such as path computation elements.</t>
          </li>
          <li>
            <t>The "link-state-spf" container, under the global,
            neighbor, and peer-group "afi-safi" lists.  BGP-LS-SPF
            determines the routing in a BGP SPF routing domain
            <xref target="RFC9815"/>, so creating or deleting this
            container can disrupt routing throughout that domain.</t>
          </li>
          <li>
            <t>The "prefix-limit" container, under the "link-state" and
            "link-state-spf" containers.  Lowering "max-prefixes",
            together with setting "teardown", can cause BGP sessions to
            be torn down.  Raising it removes a protection against
            resource exhaustion by a misbehaving or malicious
            peer.</t>
          </li>
          <li>
            <t>The "max-rate" and "max-number" leaves, under the
            "link-state" container.  Setting them too high exposes the
            router to resource exhaustion from a large number of, or
            rapidly changing, Link-State NLRIs.  Setting them too low
            delays or prevents the processing of legitimate topology
            changes.</t>
          </li>
          <li>
            <t>The "instance-identifier", "algorithm-type", and
            "node-status" leaves, under the global "link-state-spf"
            container.  Changing "instance-identifier" moves the
            locally originated NLRIs to a different routing domain.
            An "algorithm-type" that does not match the rest of the
            domain can lead to inconsistent path computation.  Setting
            "node-status" to mark the node as unreachable, or as not
            supporting transit traffic, removes the node from the SPF
            computation or from transit paths.  Each of these can cause traffic to be diverted or
            dropped.</t>
          </li>
          <li>
            <t>The "metric" and "status" leaves, under the neighbor and
            peer-group "link-state-spf" containers.  Changing "metric"
            alters path selection throughout the BGP SPF routing
            domain, and could be used to attract traffic to a link for
            interception.  Setting "status" to mark the link as
            unreachable removes it from the SPF computation, diverting
            the traffic that uses it.</t>
          </li>
        </ul>

        <t>Some of the readable data nodes in this YANG module may be
        considered sensitive or vulnerable in some network
        environments.  It is thus important to control read access
        (e.g., via get, get-config, or notification) to these data
        nodes.  Specifically, the following subtrees and data nodes
        have particular sensitivities/vulnerabilities:</t>

        <ul>
          <li>
            <t>The "bgp-ls-topology" container, under the global
            "link-state" and "link-state-spf" containers.  It contains
            the Link-State Database, and with it a detailed view of the
            network topology: node names and router identifiers,
            interface and neighbor addresses, link metrics, bandwidth
            and delay, Shared Risk Link Groups, and Segment Routing and
            SRv6 SIDs.  This information can be used to identify
            critical nodes, links, and shared risks for a targeted
            attack, or to craft packets that steer traffic through the
            network using its SIDs.</t>
          </li>
          <li>
            <t>The "link-state" container, under the "afi-safi" list of
            the BGP RIB.  Its Loc-RIB and per-neighbor Adj-RIB tables
            hold every Link-State NLRI, with its descriptors and its
            BGP-LS Attribute, and so expose the same topology
            information as the "bgp-ls-topology" container.  In
            addition, the per-neighbor tables reveal which neighbors
            supply and receive that information, and the pre- and
            post-policy tables reveal the effect of the local import
            and export policies.</t>
          </li>
          <li>
            <t>The "log" container, under the global "link-state-spf"
            container.  The SPF events it records, and the NLRIs that
            triggered them, reveal when and where topology changes
            occurred in the BGP SPF routing domain.</t>
          </li>
        </ul>

        <t>Some of the RPC or action operations in this YANG module may
        be considered sensitive or vulnerable in some network
        environments.  It is thus important to control access to these
        operations.  Specifically, the following operations have
        particular sensitivities/vulnerabilities:</t>

        <ul>
          <li>
            <t>The "clear" action, under the per-neighbor "statistics"
            container.  Clearing the BGP-LS and BGP-LS-SPF counters of
            a neighbor erases the record of the updates, errors, and
            SPF computations seen so far, which can hide evidence of an
            attack or misconfiguration and disrupt monitoring.</t>
          </li>
          <li>
            <t>The "clear" actions under the "adj-rib-in-pre" and
            "adj-rib-in-post" containers of the per-neighbor Link-State
            RIB.  Clearing these tables removes the Link-State routes
            received from the neighbor, after which the router may
            issue a route refresh or reset the BGP session.  Until the
            routes are relearned, any topology information learned only
            from that neighbor is missing from the Link-State Database,
            and for BGP-LS-SPF, the SPF computation runs without it,
            which can divert or drop traffic in the BGP SPF routing
            domain.</t>
          </li>
          <li>
            <t>The "clear" actions under the "adj-rib-out-pre" and
            "adj-rib-out-post" containers of the per-neighbor
            Link-State RIB.  Clearing these tables causes the router to
            re-advertise its Link-State routes to the neighbor.  Used
            repeatedly, this generates update churn that consumes
            resources on the router, its neighbors, and the consumers
            of the topology information.</t>
          </li>
        </ul>

        <t>Each of these "clear" actions accepts a "clear-at" time, so
        an operation can be scheduled to take effect later.  Scheduled
        operations need the same access control as immediate ones.</t>

        <t>This YANG module uses groupings from other YANG modules that
        define nodes that may be considered sensitive or vulnerable in
        network environments.  Refer to the Security Considerations of
        <xref target="I-D.ietf-idr-bgp-model"/> for information as to
        which nodes may be considered sensitive or vulnerable in
        network environments.</t>
      </section>

      <section anchor="security-lsdb-types">
        <name>Modules without Data Nodes</name>
        <t>The "ietf-bgp-lsdb" and "ietf-bgp-ls-topo-types" YANG
        modules, together with the "ietf-bgp-ls-topo-attr" and
        "ietf-bgp-ls-topo-ospf" submodules of "ietf-bgp-lsdb", define a
        set of identities, types, and groupings.  These nodes are
        intended to be reused by other YANG modules.  The modules by
        themselves do not expose any data nodes that are writable, data
        nodes that contain read-only state, or RPCs.  As such, there
        are no additional security issues related to these YANG
        modules that need to be considered.</t>

        <t>Modules that use the groupings that are defined in this
        document should identify the corresponding security
        considerations.  For example, reusing the "lsdb-top" grouping
        will expose the network topology information described in
        <xref target="security-bgp-ls"/> (e.g., "bgp-ls-topology").</t>
      </section>
    </section>

    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.3688.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6020.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7950.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8294.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8340.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8341.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8349.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8814.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9085.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9086.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9129.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9130.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9351.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9514.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9552.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9815.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9911.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-bgp-model.xml"/>
      </references>

      <references>
        <name>Informative References</name>

        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4252.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4253.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6241.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8040.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9000.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9846.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9907.xml"/>
      </references>
    </references>

    <section anchor="appendix-tree">
      <name>Complete Tree Diagram</name>
      <t>Here is a complete tree diagram for the configuration and
      operational part of the model.</t>
      <figure>
	<name>Complete tree diagram</name>
        <artwork><![CDATA[
module: ietf-bgp-ls

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:global
            /bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?          uint32
    |  +--rw max-number?        uint32
    |  +--ro bgp-ls-topology
    |     +--ro instances
    |        +--ro instance* (vrf-name protocol identifier)
    |           +--ro vrf-name      string
    |           +--ro protocol      bgp-ls-topo-t:protocol
    |           +--ro identifier    uint64
    |           +--ro nodes
    |           |  +--ro ospf-node*
    |           |  |       (is-as-scoped area-id router-id dr-identifie
r as)
    |           |  |  +--ro is-as-scoped       boolean
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro router-id          ietf-rt-t:router-id
    |           |  |  +--ro dr-identifier      union
    |           |  |  +--ro as                 inet:as-number
    |           |  |  +--ro node-attributes
    |           |  |     +--ro node-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro local-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro local-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro unknowns
    |           |  |        |  +--ro unknown* (type)
    |           |  |        |     +--ro type     uint16
    |           |  |        |     +--ro value?   yang:hex-string
    |           |  |        +--ro multi-topology-ids
    |           |  |        |  +--ro multi-topology-id*   uint16
    |           |  |        +--ro node-flag-bits
    |           |  |        |  +--ro flags?
    |           |  |        |          bgp-ls-topo-t:node-flag-bits
    |           |  |        +--ro opaque-node-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro node-name
    |           |  |        |  +--ro name?   string
    |           |  |        +--ro sr-capabilities
    |           |  |        |  +--ro srgb* (start-label)
    |           |  |        |  |  +--ro start-label
    |           |  |        |  |  |       ietf-rt-t:mpls-label
    |           |  |        |  |  +--ro range-size?    uint32
    |           |  |        |  +--ro isis-flags?   binary
    |           |  |        +--ro sr-local-block
    |           |  |        |  +--ro srlb* (start-label)
    |           |  |        |     +--ro start-label
    |           |  |        |     |       ietf-rt-t:mpls-label
    |           |  |        |     +--ro range-size?    uint32
    |           |  |        +--ro sr-algorithm
    |           |  |        |  +--ro algorithm*   uint8
    |           |  |        +--ro node-msd
    |           |  |        |  +--ro msd* (msd-type)
    |           |  |        |     +--ro msd-type     uint8
    |           |  |        |     +--ro msd-value?   uint8
    |           |  |        +--ro fads
    |           |  |        |  +--ro fad* (algorithm)
    |           |  |        |     +--ro algorithm              uint8
    |           |  |        |     +--ro metric-type?           uint8
    |           |  |        |     +--ro calc-type?             uint8
    |           |  |        |     +--ro priority?              uint8
    |           |  |        |     +--ro node-fad-attributes
    |           |  |        |        +--ro node-fad-attribute* (type)
    |           |  |        |           +--ro type
    |           |  |        |           |       identityref
    |           |  |        |           +--ro exclude-any-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-any-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-all-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro flags
    |           |  |        |           |  +--ro flags?   binary
    |           |  |        |           +--ro exclude-srlg
    |           |  |        |           |  +--ro srlg*   uint32
    |           |  |        |           +--ro exclude-minimum-bw
    |           |  |        |           |  +--ro bw?
    |           |  |        |           |          ietf-rt-t:bandwidth-
ieee-float32
    |           |  |        |           +--ro exclude-maximum-delay
    |           |  |        |           |  +--ro delay?   uint32
    |           |  |        |           +--ro exclude-any-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-any-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-all-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro fa-unsupported-tlvs
    |           |  |        |              +--ro protocol-id?
    |           |  |        |              |       bgp-ls-topo-t:protoc
ol
    |           |  |        |              +--ro type*
    |           |  |        |                      uint16
    |           |  |        +--ro isis-area-identifiers
    |           |  |        |  +--ro area-address*
    |           |  |        |          ietf-isis-t:area-address
    |           |  |        +--ro srv6-capabilities-flags
    |           |  |           +--ro flags?   binary
    |           |  +--ro ospfv3-node*
    |           |  |       (is-as-scoped area-id router-id dr-identifie
r as)
    |           |  |  +--ro is-as-scoped       boolean
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro router-id          ietf-rt-t:router-id
    |           |  |  +--ro dr-identifier      union
    |           |  |  +--ro as                 inet:as-number
    |           |  |  +--ro node-attributes
    |           |  |     +--ro node-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro local-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro local-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro unknowns
    |           |  |        |  +--ro unknown* (type)
    |           |  |        |     +--ro type     uint16
    |           |  |        |     +--ro value?   yang:hex-string
    |           |  |        +--ro multi-topology-ids
    |           |  |        |  +--ro multi-topology-id*   uint16
    |           |  |        +--ro node-flag-bits
    |           |  |        |  +--ro flags?
    |           |  |        |          bgp-ls-topo-t:node-flag-bits
    |           |  |        +--ro opaque-node-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro node-name
    |           |  |        |  +--ro name?   string
    |           |  |        +--ro sr-capabilities
    |           |  |        |  +--ro srgb* (start-label)
    |           |  |        |  |  +--ro start-label
    |           |  |        |  |  |       ietf-rt-t:mpls-label
    |           |  |        |  |  +--ro range-size?    uint32
    |           |  |        |  +--ro isis-flags?   binary
    |           |  |        +--ro sr-local-block
    |           |  |        |  +--ro srlb* (start-label)
    |           |  |        |     +--ro start-label
    |           |  |        |     |       ietf-rt-t:mpls-label
    |           |  |        |     +--ro range-size?    uint32
    |           |  |        +--ro sr-algorithm
    |           |  |        |  +--ro algorithm*   uint8
    |           |  |        +--ro node-msd
    |           |  |        |  +--ro msd* (msd-type)
    |           |  |        |     +--ro msd-type     uint8
    |           |  |        |     +--ro msd-value?   uint8
    |           |  |        +--ro fads
    |           |  |        |  +--ro fad* (algorithm)
    |           |  |        |     +--ro algorithm              uint8
    |           |  |        |     +--ro metric-type?           uint8
    |           |  |        |     +--ro calc-type?             uint8
    |           |  |        |     +--ro priority?              uint8
    |           |  |        |     +--ro node-fad-attributes
    |           |  |        |        +--ro node-fad-attribute* (type)
    |           |  |        |           +--ro type
    |           |  |        |           |       identityref
    |           |  |        |           +--ro exclude-any-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-any-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-all-affinity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro flags
    |           |  |        |           |  +--ro flags?   binary
    |           |  |        |           +--ro exclude-srlg
    |           |  |        |           |  +--ro srlg*   uint32
    |           |  |        |           +--ro exclude-minimum-bw
    |           |  |        |           |  +--ro bw?
    |           |  |        |           |          ietf-rt-t:bandwidth-
ieee-float32
    |           |  |        |           +--ro exclude-maximum-delay
    |           |  |        |           |  +--ro delay?   uint32
    |           |  |        |           +--ro exclude-any-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-any-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro include-all-reverse-affin
ity
    |           |  |        |           |  +--ro eag*   uint32
    |           |  |        |           +--ro fa-unsupported-tlvs
    |           |  |        |              +--ro protocol-id?
    |           |  |        |              |       bgp-ls-topo-t:protoc
ol
    |           |  |        |              +--ro type*
    |           |  |        |                      uint16
    |           |  |        +--ro isis-area-identifiers
    |           |  |        |  +--ro area-address*
    |           |  |        |          ietf-isis-t:area-address
    |           |  |        +--ro srv6-capabilities-flags
    |           |  |           +--ro flags?   binary
    |           |  +--ro isis-node* (system-id psn-id as)
    |           |     +--ro system-id          ietf-isis-t:system-id
    |           |     +--ro psn-id             uint8
    |           |     +--ro as                 inet:as-number
    |           |     +--ro node-attributes
    |           |        +--ro node-attribute* (type)
    |           |           +--ro type
    |           |           |       identityref
    |           |           +--ro local-ipv4-router-ids
    |           |           |  +--ro router-id*   ietf-rt-t:router-id
    |           |           +--ro local-ipv6-router-ids
    |           |           |  +--ro router-id*   inet:ipv6-address
    |           |           +--ro unknowns
    |           |           |  +--ro unknown* (type)
    |           |           |     +--ro type     uint16
    |           |           |     +--ro value?   yang:hex-string
    |           |           +--ro multi-topology-ids
    |           |           |  +--ro multi-topology-id*   uint16
    |           |           +--ro node-flag-bits
    |           |           |  +--ro flags?
    |           |           |          bgp-ls-topo-t:node-flag-bits
    |           |           +--ro opaque-node-attribute
    |           |           |  +--ro opaque-attrs?   yang:hex-string
    |           |           +--ro node-name
    |           |           |  +--ro name?   string
    |           |           +--ro sr-capabilities
    |           |           |  +--ro srgb* (start-label)
    |           |           |  |  +--ro start-label
    |           |           |  |  |       ietf-rt-t:mpls-label
    |           |           |  |  +--ro range-size?    uint32
    |           |           |  +--ro isis-flags?   binary
    |           |           +--ro sr-local-block
    |           |           |  +--ro srlb* (start-label)
    |           |           |     +--ro start-label
    |           |           |     |       ietf-rt-t:mpls-label
    |           |           |     +--ro range-size?    uint32
    |           |           +--ro sr-algorithm
    |           |           |  +--ro algorithm*   uint8
    |           |           +--ro node-msd
    |           |           |  +--ro msd* (msd-type)
    |           |           |     +--ro msd-type     uint8
    |           |           |     +--ro msd-value?   uint8
    |           |           +--ro fads
    |           |           |  +--ro fad* (algorithm)
    |           |           |     +--ro algorithm              uint8
    |           |           |     +--ro metric-type?           uint8
    |           |           |     +--ro calc-type?             uint8
    |           |           |     +--ro priority?              uint8
    |           |           |     +--ro node-fad-attributes
    |           |           |        +--ro node-fad-attribute* (type)
    |           |           |           +--ro type
    |           |           |           |       identityref
    |           |           |           +--ro exclude-any-affinity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro include-any-affinity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro include-all-affinity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro flags
    |           |           |           |  +--ro flags?   binary
    |           |           |           +--ro exclude-srlg
    |           |           |           |  +--ro srlg*   uint32
    |           |           |           +--ro exclude-minimum-bw
    |           |           |           |  +--ro bw?
    |           |           |           |          ietf-rt-t:bandwidth-
ieee-float32
    |           |           |           +--ro exclude-maximum-delay
    |           |           |           |  +--ro delay?   uint32
    |           |           |           +--ro exclude-any-reverse-affin
ity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro include-any-reverse-affin
ity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro include-all-reverse-affin
ity
    |           |           |           |  +--ro eag*   uint32
    |           |           |           +--ro fa-unsupported-tlvs
    |           |           |              +--ro protocol-id?
    |           |           |              |       bgp-ls-topo-t:protoc
ol
    |           |           |              +--ro type*
    |           |           |                      uint16
    |           |           +--ro isis-area-identifiers
    |           |           |  +--ro area-address*
    |           |           |          ietf-isis-t:area-address
    |           |           +--ro srv6-capabilities-flags
    |           |              +--ro flags?   binary
    |           +--ro links
    |           |  +--ro ospf-link*
    |           |  |       (area-id as local-router-id local-dr-identif
ier remote-router-id remote-dr-identifier local-id remote-id local-ipv4
-address remote-ipv4-address multi-topology-id)
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro as                      inet:as-number
    |           |  |  +--ro local-router-id
    |           |  |  |       ietf-rt-t:router-id
    |           |  |  +--ro remote-router-id
    |           |  |  |       ietf-rt-t:router-id
    |           |  |  +--ro local-id                uint32
    |           |  |  +--ro remote-id               uint32
    |           |  |  +--ro local-ipv4-address      inet:ipv4-address
    |           |  |  +--ro remote-ipv4-address     inet:ipv4-address
    |           |  |  +--ro multi-topology-id       uint16
    |           |  |  +--ro local-dr-identifier     inet:ipv4-address
    |           |  |  +--ro remote-dr-identifier    inet:ipv4-address
    |           |  |  +--ro link-attributes
    |           |  |     +--ro link-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro te-default-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro unidirectional-link-delay
    |           |  |        |  +--ro delay?     uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro min-max-unidirectional-link-delay
    |           |  |        |  +--ro min
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro max
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro unidirectional-delay-variation
    |           |  |        |  +--ro delay?   uint32
    |           |  |        +--ro unidirectional-link-loss
    |           |  |        |  +--ro link-loss?   uint32
    |           |  |        |  +--ro anomaly?     boolean
    |           |  |        +--ro unidirectional-residual-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-available-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-utilized-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro extended-admin-group
    |           |  |        |  +--ro eag*   uint32
    |           |  |        +--ro unknowns
    |           |  |        |  +--ro unknown* (type)
    |           |  |        |     +--ro type     uint16
    |           |  |        |     +--ro value?   yang:hex-string
    |           |  |        +--ro link-local-remote-identifiers
    |           |  |        |  +--ro local-identifier?    uint32
    |           |  |        |  +--ro remote-identifier?   uint32
    |           |  |        +--ro link-msd
    |           |  |        |  +--ro msd* (msd-type)
    |           |  |        |     +--ro msd-type     uint8
    |           |  |        |     +--ro msd-value?   uint8
    |           |  |        +--ro local-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro local-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro remote-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro remote-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro mpls-protocol-mask
    |           |  |        |  +--ro mask?   uint8
    |           |  |        +--ro igp-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro srlgs
    |           |  |        |  +--ro srlg*   uint32
    |           |  |        +--ro opaque-link-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro link-name
    |           |  |        |  +--ro name?   string
    |           |  |        +--ro srv6-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        +--ro srv6-lan-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        |     +--ro neighbor-id?         union
    |           |  |        +--ro maximum-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro maximum-reservable-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unreserved-bws
    |           |  |        |  +--ro unreserved-bw* (priority)
    |           |  |        |     +--ro priority     uint8
    |           |  |        |     +--ro bandwidth?
    |           |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
    |           |  |        +--ro link-protection-type
    |           |  |        |  +--ro type?   uint16
    |           |  |        +--ro adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        +--ro lan-adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        |     +--ro neighbor-id?   union
    |           |  |        +--ro aslas
    |           |  |        |  +--ro asla* (sabm udabm)
    |           |  |        |     +--ro sabm              binary
    |           |  |        |     +--ro udabm             binary
    |           |  |        |     +--ro asla-attribute* (type)
    |           |  |        |        +--ro type
    |           |  |        |        |       identityref
    |           |  |        |        +--ro srlgs
    |           |  |        |        |  +--ro srlg*   uint32
    |           |  |        |        +--ro te-default-metric
    |           |  |        |        |  +--ro metric?   uint32
    |           |  |        |        +--ro unidirectional-link-delay
    |           |  |        |        |  +--ro delay?     uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro min-max-unidirectional-link-
delay
    |           |  |        |        |  +--ro min
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro max
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro unidirectional-delay-variati
on
    |           |  |        |        |  +--ro delay?   uint32
    |           |  |        |        +--ro unidirectional-link-loss
    |           |  |        |        |  +--ro link-loss?   uint32
    |           |  |        |        |  +--ro anomaly?     boolean
    |           |  |        |        +--ro unidirectional-residual-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-available-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-utilized-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro extended-admin-group
    |           |  |        |        |  +--ro eag*   uint32
    |           |  |        |        +--ro unknowns
    |           |  |        |           +--ro unknown* (type)
    |           |  |        |              +--ro type     uint16
    |           |  |        |              +--ro value?
    |           |  |        |                      yang:hex-string
    |           |  |        +--ro l2-bundle-members
    |           |  |           +--ro l2-bundle-member*
    |           |  |                   (member-descriptor)
    |           |  |              +--ro member-descriptor
    |           |  |              |       uint32
    |           |  |              +--ro bundle-member-attribute*
    |           |  |                      (type)
    |           |  |                 +--ro type
    |           |  |                 |       identityref
    |           |  |                 +--ro te-default-metric
    |           |  |                 |  +--ro metric?   uint32
    |           |  |                 +--ro unidirectional-link-delay
    |           |  |                 |  +--ro delay?     uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro min-max-unidirectional-link-
delay
    |           |  |                 |  +--ro min
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro max
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro unidirectional-delay-variati
on
    |           |  |                 |  +--ro delay?   uint32
    |           |  |                 +--ro unidirectional-link-loss
    |           |  |                 |  +--ro link-loss?   uint32
    |           |  |                 |  +--ro anomaly?     boolean
    |           |  |                 +--ro unidirectional-residual-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-available-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-utilized-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro extended-admin-group
    |           |  |                 |  +--ro eag*   uint32
    |           |  |                 +--ro unknowns
    |           |  |                 |  +--ro unknown* (type)
    |           |  |                 |     +--ro type     uint16
    |           |  |                 |     +--ro value?
    |           |  |                 |             yang:hex-string
    |           |  |                 +--ro maximum-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro maximum-reservable-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unreserved-bws
    |           |  |                 |  +--ro unreserved-bw*
    |           |  |                 |          (priority)
    |           |  |                 |     +--ro priority     uint8
    |           |  |                 |     +--ro bandwidth?
    |           |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
    |           |  |                 +--ro link-protection-type
    |           |  |                 |  +--ro type?   uint16
    |           |  |                 +--ro adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 +--ro lan-adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 |     +--ro neighbor-id?   union
    |           |  |                 +--ro aslas
    |           |  |                    +--ro asla* (sabm udabm)
    |           |  |                       +--ro sabm
    |           |  |                       |       binary
    |           |  |                       +--ro udabm
    |           |  |                       |       binary
    |           |  |                       +--ro asla-attribute*
    |           |  |                               (type)
    |           |  |                          +--ro type
    |           |  |                          |       identityref
    |           |  |                          +--ro srlgs
    |           |  |                          |  +--ro srlg*   uint32
    |           |  |                          +--ro te-default-metric
    |           |  |                          |  +--ro metric?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-delay
    |           |  |                          |  +--ro delay?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro min-max-unidirectio
nal-link-delay
    |           |  |                          |  +--ro min
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro max
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-dela
y-variation
    |           |  |                          |  +--ro delay?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-loss
    |           |  |                          |  +--ro link-loss?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-resi
dual-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-avai
lable-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-util
ized-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro extended-admin-grou
p
    |           |  |                          |  +--ro eag*   uint32
    |           |  |                          +--ro unknowns
    |           |  |                             +--ro unknown*
    |           |  |                                     (type)
    |           |  |                                +--ro type
    |           |  |                                |       uint16
    |           |  |                                +--ro value?
    |           |  |                                        yang:hex-st
ring
    |           |  +--ro ospfv3-link*
    |           |  |       (area-id as local-router-id local-dr-identif
ier remote-router-id remote-dr-identifier local-id remote-id local-ipv4
-address remote-ipv4-address local-ipv6-address remote-ipv6-address mul
ti-topology-id)
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro as                      inet:as-number
    |           |  |  +--ro local-router-id
    |           |  |  |       ietf-rt-t:router-id
    |           |  |  +--ro remote-router-id
    |           |  |  |       ietf-rt-t:router-id
    |           |  |  +--ro local-id                uint32
    |           |  |  +--ro remote-id               uint32
    |           |  |  +--ro local-ipv4-address      inet:ipv4-address
    |           |  |  +--ro remote-ipv4-address     inet:ipv4-address
    |           |  |  +--ro multi-topology-id       uint16
    |           |  |  +--ro local-dr-identifier     uint32
    |           |  |  +--ro remote-dr-identifier    uint32
    |           |  |  +--ro local-ipv6-address      inet:ipv6-address
    |           |  |  +--ro remote-ipv6-address     inet:ipv6-address
    |           |  |  +--ro link-attributes
    |           |  |     +--ro link-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro te-default-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro unidirectional-link-delay
    |           |  |        |  +--ro delay?     uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro min-max-unidirectional-link-delay
    |           |  |        |  +--ro min
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro max
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro unidirectional-delay-variation
    |           |  |        |  +--ro delay?   uint32
    |           |  |        +--ro unidirectional-link-loss
    |           |  |        |  +--ro link-loss?   uint32
    |           |  |        |  +--ro anomaly?     boolean
    |           |  |        +--ro unidirectional-residual-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-available-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-utilized-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro extended-admin-group
    |           |  |        |  +--ro eag*   uint32
    |           |  |        +--ro unknowns
    |           |  |        |  +--ro unknown* (type)
    |           |  |        |     +--ro type     uint16
    |           |  |        |     +--ro value?   yang:hex-string
    |           |  |        +--ro link-local-remote-identifiers
    |           |  |        |  +--ro local-identifier?    uint32
    |           |  |        |  +--ro remote-identifier?   uint32
    |           |  |        +--ro link-msd
    |           |  |        |  +--ro msd* (msd-type)
    |           |  |        |     +--ro msd-type     uint8
    |           |  |        |     +--ro msd-value?   uint8
    |           |  |        +--ro local-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro local-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro remote-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro remote-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro mpls-protocol-mask
    |           |  |        |  +--ro mask?   uint8
    |           |  |        +--ro igp-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro srlgs
    |           |  |        |  +--ro srlg*   uint32
    |           |  |        +--ro opaque-link-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro link-name
    |           |  |        |  +--ro name?   string
    |           |  |        +--ro srv6-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        +--ro srv6-lan-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        |     +--ro neighbor-id?         union
    |           |  |        +--ro maximum-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro maximum-reservable-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unreserved-bws
    |           |  |        |  +--ro unreserved-bw* (priority)
    |           |  |        |     +--ro priority     uint8
    |           |  |        |     +--ro bandwidth?
    |           |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
    |           |  |        +--ro link-protection-type
    |           |  |        |  +--ro type?   uint16
    |           |  |        +--ro adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        +--ro lan-adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        |     +--ro neighbor-id?   union
    |           |  |        +--ro aslas
    |           |  |        |  +--ro asla* (sabm udabm)
    |           |  |        |     +--ro sabm              binary
    |           |  |        |     +--ro udabm             binary
    |           |  |        |     +--ro asla-attribute* (type)
    |           |  |        |        +--ro type
    |           |  |        |        |       identityref
    |           |  |        |        +--ro srlgs
    |           |  |        |        |  +--ro srlg*   uint32
    |           |  |        |        +--ro te-default-metric
    |           |  |        |        |  +--ro metric?   uint32
    |           |  |        |        +--ro unidirectional-link-delay
    |           |  |        |        |  +--ro delay?     uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro min-max-unidirectional-link-
delay
    |           |  |        |        |  +--ro min
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro max
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro unidirectional-delay-variati
on
    |           |  |        |        |  +--ro delay?   uint32
    |           |  |        |        +--ro unidirectional-link-loss
    |           |  |        |        |  +--ro link-loss?   uint32
    |           |  |        |        |  +--ro anomaly?     boolean
    |           |  |        |        +--ro unidirectional-residual-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-available-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-utilized-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro extended-admin-group
    |           |  |        |        |  +--ro eag*   uint32
    |           |  |        |        +--ro unknowns
    |           |  |        |           +--ro unknown* (type)
    |           |  |        |              +--ro type     uint16
    |           |  |        |              +--ro value?
    |           |  |        |                      yang:hex-string
    |           |  |        +--ro l2-bundle-members
    |           |  |           +--ro l2-bundle-member*
    |           |  |                   (member-descriptor)
    |           |  |              +--ro member-descriptor
    |           |  |              |       uint32
    |           |  |              +--ro bundle-member-attribute*
    |           |  |                      (type)
    |           |  |                 +--ro type
    |           |  |                 |       identityref
    |           |  |                 +--ro te-default-metric
    |           |  |                 |  +--ro metric?   uint32
    |           |  |                 +--ro unidirectional-link-delay
    |           |  |                 |  +--ro delay?     uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro min-max-unidirectional-link-
delay
    |           |  |                 |  +--ro min
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro max
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro unidirectional-delay-variati
on
    |           |  |                 |  +--ro delay?   uint32
    |           |  |                 +--ro unidirectional-link-loss
    |           |  |                 |  +--ro link-loss?   uint32
    |           |  |                 |  +--ro anomaly?     boolean
    |           |  |                 +--ro unidirectional-residual-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-available-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-utilized-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro extended-admin-group
    |           |  |                 |  +--ro eag*   uint32
    |           |  |                 +--ro unknowns
    |           |  |                 |  +--ro unknown* (type)
    |           |  |                 |     +--ro type     uint16
    |           |  |                 |     +--ro value?
    |           |  |                 |             yang:hex-string
    |           |  |                 +--ro maximum-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro maximum-reservable-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unreserved-bws
    |           |  |                 |  +--ro unreserved-bw*
    |           |  |                 |          (priority)
    |           |  |                 |     +--ro priority     uint8
    |           |  |                 |     +--ro bandwidth?
    |           |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
    |           |  |                 +--ro link-protection-type
    |           |  |                 |  +--ro type?   uint16
    |           |  |                 +--ro adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 +--ro lan-adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 |     +--ro neighbor-id?   union
    |           |  |                 +--ro aslas
    |           |  |                    +--ro asla* (sabm udabm)
    |           |  |                       +--ro sabm
    |           |  |                       |       binary
    |           |  |                       +--ro udabm
    |           |  |                       |       binary
    |           |  |                       +--ro asla-attribute*
    |           |  |                               (type)
    |           |  |                          +--ro type
    |           |  |                          |       identityref
    |           |  |                          +--ro srlgs
    |           |  |                          |  +--ro srlg*   uint32
    |           |  |                          +--ro te-default-metric
    |           |  |                          |  +--ro metric?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-delay
    |           |  |                          |  +--ro delay?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro min-max-unidirectio
nal-link-delay
    |           |  |                          |  +--ro min
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro max
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-dela
y-variation
    |           |  |                          |  +--ro delay?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-loss
    |           |  |                          |  +--ro link-loss?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-resi
dual-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-avai
lable-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-util
ized-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro extended-admin-grou
p
    |           |  |                          |  +--ro eag*   uint32
    |           |  |                          +--ro unknowns
    |           |  |                             +--ro unknown*
    |           |  |                                     (type)
    |           |  |                                +--ro type
    |           |  |                                |       uint16
    |           |  |                                +--ro value?
    |           |  |                                        yang:hex-st
ring
    |           |  +--ro isis-link*
    |           |  |       (local-system-id local-psn-id local-as remot
e-system-id remote-psn-id remote-as local-id remote-id local-ipv4-addre
ss remote-ipv4-address local-ipv6-address remote-ipv6-address multi-top
ology-id)
    |           |  |  +--ro local-system-id
    |           |  |  |       ietf-isis-t:system-id
    |           |  |  +--ro local-psn-id           uint8
    |           |  |  +--ro local-as               inet:as-number
    |           |  |  +--ro remote-system-id
    |           |  |  |       ietf-isis-t:system-id
    |           |  |  +--ro remote-psn-id          uint8
    |           |  |  +--ro remote-as              inet:as-number
    |           |  |  +--ro local-id               uint32
    |           |  |  +--ro remote-id              uint32
    |           |  |  +--ro local-ipv4-address     inet:ipv4-address
    |           |  |  +--ro remote-ipv4-address    inet:ipv4-address
    |           |  |  +--ro local-ipv6-address     inet:ipv6-address
    |           |  |  +--ro remote-ipv6-address    inet:ipv6-address
    |           |  |  +--ro multi-topology-id      uint16
    |           |  |  +--ro link-attributes
    |           |  |     +--ro link-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro te-default-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro unidirectional-link-delay
    |           |  |        |  +--ro delay?     uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro min-max-unidirectional-link-delay
    |           |  |        |  +--ro min
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro max
    |           |  |        |  |  +--ro delay?   uint32
    |           |  |        |  +--ro anomaly?   boolean
    |           |  |        +--ro unidirectional-delay-variation
    |           |  |        |  +--ro delay?   uint32
    |           |  |        +--ro unidirectional-link-loss
    |           |  |        |  +--ro link-loss?   uint32
    |           |  |        |  +--ro anomaly?     boolean
    |           |  |        +--ro unidirectional-residual-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-available-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unidirectional-utilized-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro extended-admin-group
    |           |  |        |  +--ro eag*   uint32
    |           |  |        +--ro unknowns
    |           |  |        |  +--ro unknown* (type)
    |           |  |        |     +--ro type     uint16
    |           |  |        |     +--ro value?   yang:hex-string
    |           |  |        +--ro link-local-remote-identifiers
    |           |  |        |  +--ro local-identifier?    uint32
    |           |  |        |  +--ro remote-identifier?   uint32
    |           |  |        +--ro link-msd
    |           |  |        |  +--ro msd* (msd-type)
    |           |  |        |     +--ro msd-type     uint8
    |           |  |        |     +--ro msd-value?   uint8
    |           |  |        +--ro local-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro local-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro remote-ipv4-router-ids
    |           |  |        |  +--ro router-id*   ietf-rt-t:router-id
    |           |  |        +--ro remote-ipv6-router-ids
    |           |  |        |  +--ro router-id*   inet:ipv6-address
    |           |  |        +--ro mpls-protocol-mask
    |           |  |        |  +--ro mask?   uint8
    |           |  |        +--ro igp-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro srlgs
    |           |  |        |  +--ro srlg*   uint32
    |           |  |        +--ro opaque-link-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro link-name
    |           |  |        |  +--ro name?   string
    |           |  |        +--ro srv6-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        +--ro srv6-lan-end-x-sids
    |           |  |        |  +--ro srv6-end-x-sid* (sid)
    |           |  |        |     +--ro sid
    |           |  |        |     |       inet:ipv6-address
    |           |  |        |     +--ro weight?              uint8
    |           |  |        |     +--ro endpoint-behavior?   uint8
    |           |  |        |     +--ro flags?               binary
    |           |  |        |     +--ro algorithm?           uint8
    |           |  |        |     +--ro locator-block-len?   uint8
    |           |  |        |     +--ro locator-node-len?    uint8
    |           |  |        |     +--ro function-len?        uint8
    |           |  |        |     +--ro arg-len?             uint8
    |           |  |        |     +--ro neighbor-id?         union
    |           |  |        +--ro maximum-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro maximum-reservable-link-bw
    |           |  |        |  +--ro bw?
    |           |  |        |          ietf-rt-t:bandwidth-ieee-float32
    |           |  |        +--ro unreserved-bws
    |           |  |        |  +--ro unreserved-bw* (priority)
    |           |  |        |     +--ro priority     uint8
    |           |  |        |     +--ro bandwidth?
    |           |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
    |           |  |        +--ro link-protection-type
    |           |  |        |  +--ro type?   uint16
    |           |  |        +--ro adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        +--ro lan-adjacency-sids
    |           |  |        |  +--ro adjacency-sid*
    |           |  |        |          (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro weight?        uint8
    |           |  |        |     +--ro neighbor-id?   union
    |           |  |        +--ro aslas
    |           |  |        |  +--ro asla* (sabm udabm)
    |           |  |        |     +--ro sabm              binary
    |           |  |        |     +--ro udabm             binary
    |           |  |        |     +--ro asla-attribute* (type)
    |           |  |        |        +--ro type
    |           |  |        |        |       identityref
    |           |  |        |        +--ro srlgs
    |           |  |        |        |  +--ro srlg*   uint32
    |           |  |        |        +--ro te-default-metric
    |           |  |        |        |  +--ro metric?   uint32
    |           |  |        |        +--ro unidirectional-link-delay
    |           |  |        |        |  +--ro delay?     uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro min-max-unidirectional-link-
delay
    |           |  |        |        |  +--ro min
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro max
    |           |  |        |        |  |  +--ro delay?   uint32
    |           |  |        |        |  +--ro anomaly?   boolean
    |           |  |        |        +--ro unidirectional-delay-variati
on
    |           |  |        |        |  +--ro delay?   uint32
    |           |  |        |        +--ro unidirectional-link-loss
    |           |  |        |        |  +--ro link-loss?   uint32
    |           |  |        |        |  +--ro anomaly?     boolean
    |           |  |        |        +--ro unidirectional-residual-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-available-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro unidirectional-utilized-bw
    |           |  |        |        |  +--ro bw?
    |           |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |        |        +--ro extended-admin-group
    |           |  |        |        |  +--ro eag*   uint32
    |           |  |        |        +--ro unknowns
    |           |  |        |           +--ro unknown* (type)
    |           |  |        |              +--ro type     uint16
    |           |  |        |              +--ro value?
    |           |  |        |                      yang:hex-string
    |           |  |        +--ro l2-bundle-members
    |           |  |           +--ro l2-bundle-member*
    |           |  |                   (member-descriptor)
    |           |  |              +--ro member-descriptor
    |           |  |              |       uint32
    |           |  |              +--ro bundle-member-attribute*
    |           |  |                      (type)
    |           |  |                 +--ro type
    |           |  |                 |       identityref
    |           |  |                 +--ro te-default-metric
    |           |  |                 |  +--ro metric?   uint32
    |           |  |                 +--ro unidirectional-link-delay
    |           |  |                 |  +--ro delay?     uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro min-max-unidirectional-link-
delay
    |           |  |                 |  +--ro min
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro max
    |           |  |                 |  |  +--ro delay?   uint32
    |           |  |                 |  +--ro anomaly?   boolean
    |           |  |                 +--ro unidirectional-delay-variati
on
    |           |  |                 |  +--ro delay?   uint32
    |           |  |                 +--ro unidirectional-link-loss
    |           |  |                 |  +--ro link-loss?   uint32
    |           |  |                 |  +--ro anomaly?     boolean
    |           |  |                 +--ro unidirectional-residual-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-available-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unidirectional-utilized-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro extended-admin-group
    |           |  |                 |  +--ro eag*   uint32
    |           |  |                 +--ro unknowns
    |           |  |                 |  +--ro unknown* (type)
    |           |  |                 |     +--ro type     uint16
    |           |  |                 |     +--ro value?
    |           |  |                 |             yang:hex-string
    |           |  |                 +--ro maximum-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro maximum-reservable-link-bw
    |           |  |                 |  +--ro bw?
    |           |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
    |           |  |                 +--ro unreserved-bws
    |           |  |                 |  +--ro unreserved-bw*
    |           |  |                 |          (priority)
    |           |  |                 |     +--ro priority     uint8
    |           |  |                 |     +--ro bandwidth?
    |           |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
    |           |  |                 +--ro link-protection-type
    |           |  |                 |  +--ro type?   uint16
    |           |  |                 +--ro adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 +--ro lan-adjacency-sids
    |           |  |                 |  +--ro adjacency-sid*
    |           |  |                 |          (label-index format)
    |           |  |                 |     +--ro label-index
    |           |  |                 |     |       uint32
    |           |  |                 |     +--ro format
    |           |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
    |           |  |                 |     +--ro flags?
    |           |  |                 |     |       binary
    |           |  |                 |     +--ro weight?        uint8
    |           |  |                 |     +--ro neighbor-id?   union
    |           |  |                 +--ro aslas
    |           |  |                    +--ro asla* (sabm udabm)
    |           |  |                       +--ro sabm
    |           |  |                       |       binary
    |           |  |                       +--ro udabm
    |           |  |                       |       binary
    |           |  |                       +--ro asla-attribute*
    |           |  |                               (type)
    |           |  |                          +--ro type
    |           |  |                          |       identityref
    |           |  |                          +--ro srlgs
    |           |  |                          |  +--ro srlg*   uint32
    |           |  |                          +--ro te-default-metric
    |           |  |                          |  +--ro metric?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-delay
    |           |  |                          |  +--ro delay?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro min-max-unidirectio
nal-link-delay
    |           |  |                          |  +--ro min
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro max
    |           |  |                          |  |  +--ro delay?
    |           |  |                          |  |          uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-dela
y-variation
    |           |  |                          |  +--ro delay?
    |           |  |                          |          uint32
    |           |  |                          +--ro unidirectional-link
-loss
    |           |  |                          |  +--ro link-loss?
    |           |  |                          |  |       uint32
    |           |  |                          |  +--ro anomaly?
    |           |  |                          |          boolean
    |           |  |                          +--ro unidirectional-resi
dual-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-avai
lable-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro unidirectional-util
ized-bw
    |           |  |                          |  +--ro bw?
    |           |  |                          |          ietf-rt-t:band
width-ieee-float32
    |           |  |                          +--ro extended-admin-grou
p
    |           |  |                          |  +--ro eag*   uint32
    |           |  |                          +--ro unknowns
    |           |  |                             +--ro unknown*
    |           |  |                                     (type)
    |           |  |                                +--ro type
    |           |  |                                |       uint16
    |           |  |                                +--ro value?
    |           |  |                                        yang:hex-st
ring
    |           |  +--ro bgp-link*
    |           |          (local-as local-router-id remote-as remote-r
outer-id local-id remote-id local-ipv4-address remote-ipv4-address loca
l-ipv6-address remote-ipv6-address multi-topology-id)
    |           |     +--ro local-as               inet:as-number
    |           |     +--ro local-router-id
    |           |     |       ietf-rt-t:router-id
    |           |     +--ro remote-as              inet:as-number
    |           |     +--ro remote-router-id
    |           |     |       ietf-rt-t:router-id
    |           |     +--ro local-id               uint32
    |           |     +--ro remote-id              uint32
    |           |     +--ro local-ipv4-address     inet:ipv4-address
    |           |     +--ro remote-ipv4-address    inet:ipv4-address
    |           |     +--ro local-ipv6-address     inet:ipv6-address
    |           |     +--ro remote-ipv6-address    inet:ipv6-address
    |           |     +--ro multi-topology-id      uint16
    |           |     +--ro link-attributes
    |           |        +--ro link-attribute* (type)
    |           |           +--ro type             identityref
    |           |           +--ro bgp-peer-sids
    |           |              +--ro bgp-peer-sid*
    |           |                      (label-index format)
    |           |                 +--ro label-index    uint32
    |           |                 +--ro format
    |           |                 |       bgp-ls-topo-t:sid-format
    |           |                 +--ro flags?         binary
    |           |                 +--ro weight?        uint8
    |           +--ro prefixes
    |           |  +--ro ospf-prefix*
    |           |  |       (is-as-scoped area-id as router-id dr-identi
fier multi-topology-id route-type prefix)
    |           |  |  +--ro is-as-scoped         boolean
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro as                   inet:as-number
    |           |  |  +--ro router-id            ietf-rt-t:router-id
    |           |  |  +--ro route-type
    |           |  |  |       bgp-ls-topo-t:ospf-route-type
    |           |  |  +--ro multi-topology-id    uint16
    |           |  |  +--ro dr-identifier        inet:ipv4-address
    |           |  |  +--ro prefix               inet:ipv4-prefix
    |           |  |  +--ro prefix-attributes
    |           |  |     +--ro prefix-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro flexible-algorithm-prefix-metric
    |           |  |        |  +--ro fa-prefix-metric* (algorithm)
    |           |  |        |     +--ro metric?      uint32
    |           |  |        |     +--ro algorithm    uint8
    |           |  |        |     +--ro flags?       binary
    |           |  |        +--ro igp-flags
    |           |  |        |  +--ro flags?
    |           |  |        |          bgp-ls-topo-t:igp-flags-bits
    |           |  |        +--ro igp-route-tags
    |           |  |        |  +--ro tag*   uint32
    |           |  |        +--ro extended-igp-route-tags
    |           |  |        |  +--ro tag*   uint64
    |           |  |        +--ro prefix-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro ospf-forwarding-address
    |           |  |        |  +--ro forw-address?   inet:ip-address
    |           |  |        +--ro opaque-prefix-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro prefix-sids
    |           |  |        |  +--ro prefix-sid* (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro algorithm?     uint8
    |           |  |        +--ro prefix-range
    |           |  |        |  +--ro index?        uint32
    |           |  |        |  +--ro range-size?   uint16
    |           |  |        |  +--ro flags?        binary
    |           |  |        |  +--ro algorithm?    uint8
    |           |  |        |  +--ro sid-flags?    binary
    |           |  |        +--ro srv6-locator
    |           |  |        |  +--ro metric?      uint32
    |           |  |        |  +--ro flags?       binary
    |           |  |        |  +--ro algorithm?   uint8
    |           |  |        +--ro prefix-attribute-flags
    |           |  |        |  +--ro flags?   binary
    |           |  |        +--ro prefix-source-router-id
    |           |  |        |  +--ro source-router-id?
    |           |  |        |          inet:ip-address
    |           |  |        +--ro unknowns
    |           |  |           +--ro unknown* (type)
    |           |  |              +--ro type     uint16
    |           |  |              +--ro value?   yang:hex-string
    |           |  +--ro ospfv3-prefix*
    |           |  |       (is-as-scoped area-id as router-id dr-identi
fier multi-topology-id route-type prefix)
    |           |  |  +--ro is-as-scoped         boolean
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro as                   inet:as-number
    |           |  |  +--ro router-id            ietf-rt-t:router-id
    |           |  |  +--ro route-type
    |           |  |  |       bgp-ls-topo-t:ospf-route-type
    |           |  |  +--ro multi-topology-id    uint16
    |           |  |  +--ro dr-identifier        uint32
    |           |  |  +--ro prefix               inet:ip-prefix
    |           |  |  +--ro prefix-attributes
    |           |  |     +--ro prefix-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro flexible-algorithm-prefix-metric
    |           |  |        |  +--ro fa-prefix-metric* (algorithm)
    |           |  |        |     +--ro metric?      uint32
    |           |  |        |     +--ro algorithm    uint8
    |           |  |        |     +--ro flags?       binary
    |           |  |        +--ro igp-flags
    |           |  |        |  +--ro flags?
    |           |  |        |          bgp-ls-topo-t:igp-flags-bits
    |           |  |        +--ro igp-route-tags
    |           |  |        |  +--ro tag*   uint32
    |           |  |        +--ro extended-igp-route-tags
    |           |  |        |  +--ro tag*   uint64
    |           |  |        +--ro prefix-metric
    |           |  |        |  +--ro metric?   uint32
    |           |  |        +--ro ospf-forwarding-address
    |           |  |        |  +--ro forw-address?   inet:ip-address
    |           |  |        +--ro opaque-prefix-attribute
    |           |  |        |  +--ro opaque-attrs?   yang:hex-string
    |           |  |        +--ro prefix-sids
    |           |  |        |  +--ro prefix-sid* (label-index format)
    |           |  |        |     +--ro label-index    uint32
    |           |  |        |     +--ro format
    |           |  |        |     |       bgp-ls-topo-t:sid-format
    |           |  |        |     +--ro flags?         binary
    |           |  |        |     +--ro algorithm?     uint8
    |           |  |        +--ro prefix-range
    |           |  |        |  +--ro index?        uint32
    |           |  |        |  +--ro range-size?   uint16
    |           |  |        |  +--ro flags?        binary
    |           |  |        |  +--ro algorithm?    uint8
    |           |  |        |  +--ro sid-flags?    binary
    |           |  |        +--ro srv6-locator
    |           |  |        |  +--ro metric?      uint32
    |           |  |        |  +--ro flags?       binary
    |           |  |        |  +--ro algorithm?   uint8
    |           |  |        +--ro prefix-attribute-flags
    |           |  |        |  +--ro flags?   binary
    |           |  |        +--ro prefix-source-router-id
    |           |  |        |  +--ro source-router-id?
    |           |  |        |          inet:ip-address
    |           |  |        +--ro unknowns
    |           |  |           +--ro unknown* (type)
    |           |  |              +--ro type     uint16
    |           |  |              +--ro value?   yang:hex-string
    |           |  +--ro isis-prefix*
    |           |          (system-id psn-id as multi-topology-id prefi
x)
    |           |     +--ro system-id
    |           |     |       ietf-isis-t:system-id
    |           |     +--ro psn-id               uint8
    |           |     +--ro as                   inet:as-number
    |           |     +--ro multi-topology-id    uint16
    |           |     +--ro prefix               inet:ip-prefix
    |           |     +--ro prefix-attributes
    |           |        +--ro prefix-attribute* (type)
    |           |           +--ro type
    |           |           |       identityref
    |           |           +--ro flexible-algorithm-prefix-metric
    |           |           |  +--ro fa-prefix-metric* (algorithm)
    |           |           |     +--ro metric?      uint32
    |           |           |     +--ro algorithm    uint8
    |           |           |     +--ro flags?       binary
    |           |           +--ro igp-flags
    |           |           |  +--ro flags?
    |           |           |          bgp-ls-topo-t:igp-flags-bits
    |           |           +--ro igp-route-tags
    |           |           |  +--ro tag*   uint32
    |           |           +--ro extended-igp-route-tags
    |           |           |  +--ro tag*   uint64
    |           |           +--ro prefix-metric
    |           |           |  +--ro metric?   uint32
    |           |           +--ro ospf-forwarding-address
    |           |           |  +--ro forw-address?   inet:ip-address
    |           |           +--ro opaque-prefix-attribute
    |           |           |  +--ro opaque-attrs?   yang:hex-string
    |           |           +--ro prefix-sids
    |           |           |  +--ro prefix-sid* (label-index format)
    |           |           |     +--ro label-index    uint32
    |           |           |     +--ro format
    |           |           |     |       bgp-ls-topo-t:sid-format
    |           |           |     +--ro flags?         binary
    |           |           |     +--ro algorithm?     uint8
    |           |           +--ro prefix-range
    |           |           |  +--ro index?        uint32
    |           |           |  +--ro range-size?   uint16
    |           |           |  +--ro flags?        binary
    |           |           |  +--ro algorithm?    uint8
    |           |           |  +--ro sid-flags?    binary
    |           |           +--ro srv6-locator
    |           |           |  +--ro metric?      uint32
    |           |           |  +--ro flags?       binary
    |           |           |  +--ro algorithm?   uint8
    |           |           +--ro prefix-attribute-flags
    |           |           |  +--ro flags?   binary
    |           |           +--ro prefix-source-router-id
    |           |           |  +--ro source-router-id?
    |           |           |          inet:ip-address
    |           |           +--ro unknowns
    |           |              +--ro unknown* (type)
    |           |                 +--ro type     uint16
    |           |                 +--ro value?   yang:hex-string
    |           +--ro srv6-sids
    |           |  +--ro ospfv3-srv6-sid*
    |           |  |       (is-as-scoped area-id router-id dr-identifie
r as sid multi-topology-id)
    |           |  |  +--ro is-as-scoped           boolean
    |           |  |  +--ro area-id
    |           |  |  |       ietf-ospf-t:area-id-type
    |           |  |  +--ro router-id
    |           |  |  |       ietf-rt-t:router-id
    |           |  |  +--ro dr-identifier          uint32
    |           |  |  +--ro as                     inet:as-number
    |           |  |  +--ro sid                    inet:ipv6-prefix
    |           |  |  +--ro multi-topology-id      uint16
    |           |  |  +--ro srv6-sid-attributes
    |           |  |     +--ro srv6-sid-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro srv6-endpoint-behavior
    |           |  |        |  +--ro endpoint-behavior?   uint8
    |           |  |        |  +--ro flags?               binary
    |           |  |        |  +--ro algorithm?           uint8
    |           |  |        +--ro srv6-sid-structure
    |           |  |        |  +--ro locator-block-len?   uint8
    |           |  |        |  +--ro locator-node-len?    uint8
    |           |  |        |  +--ro function-len?        uint8
    |           |  |        |  +--ro arg-len?             uint8
    |           |  |        +--ro unknowns
    |           |  |           +--ro unknown* (type)
    |           |  |              +--ro type     uint16
    |           |  |              +--ro value?   yang:hex-string
    |           |  +--ro isis-srv6-sid*
    |           |  |       (system-id psn-id as sid multi-topology-id)
    |           |  |  +--ro system-id
    |           |  |  |       ietf-isis-t:system-id
    |           |  |  +--ro psn-id                 uint8
    |           |  |  +--ro as                     inet:as-number
    |           |  |  +--ro sid                    inet:ipv6-prefix
    |           |  |  +--ro multi-topology-id      uint16
    |           |  |  +--ro srv6-sid-attributes
    |           |  |     +--ro srv6-sid-attribute* (type)
    |           |  |        +--ro type
    |           |  |        |       identityref
    |           |  |        +--ro srv6-endpoint-behavior
    |           |  |        |  +--ro endpoint-behavior?   uint8
    |           |  |        |  +--ro flags?               binary
    |           |  |        |  +--ro algorithm?           uint8
    |           |  |        +--ro srv6-sid-structure
    |           |  |        |  +--ro locator-block-len?   uint8
    |           |  |        |  +--ro locator-node-len?    uint8
    |           |  |        |  +--ro function-len?        uint8
    |           |  |        |  +--ro arg-len?             uint8
    |           |  |        +--ro unknowns
    |           |  |           +--ro unknown* (type)
    |           |  |              +--ro type     uint16
    |           |  |              +--ro value?   yang:hex-string
    |           |  +--ro bgp-srv6-sid*
    |           |          (router-id as sid multi-topology-id)
    |           |     +--ro router-id
    |           |     |       ietf-rt-t:router-id
    |           |     +--ro as                     inet:as-number
    |           |     +--ro sid                    inet:ipv6-prefix
    |           |     +--ro multi-topology-id      uint16
    |           |     +--ro srv6-sid-attributes
    |           |        +--ro srv6-sid-attribute* (type)
    |           |           +--ro type
    |           |           |       identityref
    |           |           +--ro srv6-endpoint-behavior
    |           |           |  +--ro endpoint-behavior?   uint8
    |           |           |  +--ro flags?               binary
    |           |           |  +--ro algorithm?           uint8
    |           |           +--ro srv6-sid-structure
    |           |           |  +--ro locator-block-len?   uint8
    |           |           |  +--ro locator-node-len?    uint8
    |           |           |  +--ro function-len?        uint8
    |           |           |  +--ro arg-len?             uint8
    |           |           +--ro unknowns
    |           |           |  +--ro unknown* (type)
    |           |           |     +--ro type     uint16
    |           |           |     +--ro value?   yang:hex-string
    |           |           +--ro srv6-bgp-peer-node-sid
    |           |              +--ro flags?         binary
    |           |              +--ro weight?        uint8
    |           |              +--ro peer-as?       inet:as-number
    |           |              +--ro peer-bgp-id?
    |           |                      ietf-rt-t:router-id
    |           +--ro unknowns
    |              +--ro unknown* (nlri)
    |                 +--ro nlri          yang:hex-string
    |                 +--ro attributes?   yang:hex-string
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw instance-identifier?   uint64
       +--rw algorithm-type?        spf-algorithm-type
       +--rw node-status?           enumeration
       +--ro log
       |  +--ro event* (id)
       |     +--ro id                      uint32
       |     +--ro type?                   enumeration
       |     +--ro schedule-time?          yang:date-and-time
       |     +--ro delay?                  uint64
       |     +--ro start-time?             yang:date-and-time
       |     +--ro end-time?               yang:date-and-time
       |     +--ro duration?               uint64
       |     +--ro node-count?             uint64
       |     +--ro prefix-count?           uint64
       |     +--ro route-download-count?   uint64
       |     +--ro lsp-trigger* (id)
       |        +--ro id               uint32
       |        +--ro nlri-prefix?     string
       |        +--ro nlri-sequence?   uint32
       |        +--ro trigger-time?    yang:date-and-time
       +--ro bgp-ls-topology
          +--ro instances
             +--ro instance* (vrf-name protocol identifier)
                +--ro vrf-name      string
                +--ro protocol      bgp-ls-topo-t:protocol
                +--ro identifier    uint64
                +--ro nodes
                |  +--ro ospf-node*
                |  |       (is-as-scoped area-id router-id dr-identifie
r as)
                |  |  +--ro is-as-scoped       boolean
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro router-id          ietf-rt-t:router-id
                |  |  +--ro dr-identifier      union
                |  |  +--ro as                 inet:as-number
                |  |  +--ro node-attributes
                |  |     +--ro node-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro local-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro local-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro unknowns
                |  |        |  +--ro unknown* (type)
                |  |        |     +--ro type     uint16
                |  |        |     +--ro value?   yang:hex-string
                |  |        +--ro multi-topology-ids
                |  |        |  +--ro multi-topology-id*   uint16
                |  |        +--ro node-flag-bits
                |  |        |  +--ro flags?
                |  |        |          bgp-ls-topo-t:node-flag-bits
                |  |        +--ro opaque-node-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro node-name
                |  |        |  +--ro name?   string
                |  |        +--ro sr-capabilities
                |  |        |  +--ro srgb* (start-label)
                |  |        |  |  +--ro start-label
                |  |        |  |  |       ietf-rt-t:mpls-label
                |  |        |  |  +--ro range-size?    uint32
                |  |        |  +--ro isis-flags?   binary
                |  |        +--ro sr-local-block
                |  |        |  +--ro srlb* (start-label)
                |  |        |     +--ro start-label
                |  |        |     |       ietf-rt-t:mpls-label
                |  |        |     +--ro range-size?    uint32
                |  |        +--ro sr-algorithm
                |  |        |  +--ro algorithm*   uint8
                |  |        +--ro node-msd
                |  |        |  +--ro msd* (msd-type)
                |  |        |     +--ro msd-type     uint8
                |  |        |     +--ro msd-value?   uint8
                |  |        +--ro fads
                |  |        |  +--ro fad* (algorithm)
                |  |        |     +--ro algorithm              uint8
                |  |        |     +--ro metric-type?           uint8
                |  |        |     +--ro calc-type?             uint8
                |  |        |     +--ro priority?              uint8
                |  |        |     +--ro node-fad-attributes
                |  |        |        +--ro node-fad-attribute* (type)
                |  |        |           +--ro type
                |  |        |           |       identityref
                |  |        |           +--ro exclude-any-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-any-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-all-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro flags
                |  |        |           |  +--ro flags?   binary
                |  |        |           +--ro exclude-srlg
                |  |        |           |  +--ro srlg*   uint32
                |  |        |           +--ro exclude-minimum-bw
                |  |        |           |  +--ro bw?
                |  |        |           |          ietf-rt-t:bandwidth-
ieee-float32
                |  |        |           +--ro exclude-maximum-delay
                |  |        |           |  +--ro delay?   uint32
                |  |        |           +--ro exclude-any-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-any-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-all-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro fa-unsupported-tlvs
                |  |        |              +--ro protocol-id?
                |  |        |              |       bgp-ls-topo-t:protoc
ol
                |  |        |              +--ro type*
                |  |        |                      uint16
                |  |        +--ro isis-area-identifiers
                |  |        |  +--ro area-address*
                |  |        |          ietf-isis-t:area-address
                |  |        +--ro srv6-capabilities-flags
                |  |           +--ro flags?   binary
                |  +--ro ospfv3-node*
                |  |       (is-as-scoped area-id router-id dr-identifie
r as)
                |  |  +--ro is-as-scoped       boolean
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro router-id          ietf-rt-t:router-id
                |  |  +--ro dr-identifier      union
                |  |  +--ro as                 inet:as-number
                |  |  +--ro node-attributes
                |  |     +--ro node-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro local-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro local-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro unknowns
                |  |        |  +--ro unknown* (type)
                |  |        |     +--ro type     uint16
                |  |        |     +--ro value?   yang:hex-string
                |  |        +--ro multi-topology-ids
                |  |        |  +--ro multi-topology-id*   uint16
                |  |        +--ro node-flag-bits
                |  |        |  +--ro flags?
                |  |        |          bgp-ls-topo-t:node-flag-bits
                |  |        +--ro opaque-node-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro node-name
                |  |        |  +--ro name?   string
                |  |        +--ro sr-capabilities
                |  |        |  +--ro srgb* (start-label)
                |  |        |  |  +--ro start-label
                |  |        |  |  |       ietf-rt-t:mpls-label
                |  |        |  |  +--ro range-size?    uint32
                |  |        |  +--ro isis-flags?   binary
                |  |        +--ro sr-local-block
                |  |        |  +--ro srlb* (start-label)
                |  |        |     +--ro start-label
                |  |        |     |       ietf-rt-t:mpls-label
                |  |        |     +--ro range-size?    uint32
                |  |        +--ro sr-algorithm
                |  |        |  +--ro algorithm*   uint8
                |  |        +--ro node-msd
                |  |        |  +--ro msd* (msd-type)
                |  |        |     +--ro msd-type     uint8
                |  |        |     +--ro msd-value?   uint8
                |  |        +--ro fads
                |  |        |  +--ro fad* (algorithm)
                |  |        |     +--ro algorithm              uint8
                |  |        |     +--ro metric-type?           uint8
                |  |        |     +--ro calc-type?             uint8
                |  |        |     +--ro priority?              uint8
                |  |        |     +--ro node-fad-attributes
                |  |        |        +--ro node-fad-attribute* (type)
                |  |        |           +--ro type
                |  |        |           |       identityref
                |  |        |           +--ro exclude-any-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-any-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-all-affinity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro flags
                |  |        |           |  +--ro flags?   binary
                |  |        |           +--ro exclude-srlg
                |  |        |           |  +--ro srlg*   uint32
                |  |        |           +--ro exclude-minimum-bw
                |  |        |           |  +--ro bw?
                |  |        |           |          ietf-rt-t:bandwidth-
ieee-float32
                |  |        |           +--ro exclude-maximum-delay
                |  |        |           |  +--ro delay?   uint32
                |  |        |           +--ro exclude-any-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-any-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro include-all-reverse-affin
ity
                |  |        |           |  +--ro eag*   uint32
                |  |        |           +--ro fa-unsupported-tlvs
                |  |        |              +--ro protocol-id?
                |  |        |              |       bgp-ls-topo-t:protoc
ol
                |  |        |              +--ro type*
                |  |        |                      uint16
                |  |        +--ro isis-area-identifiers
                |  |        |  +--ro area-address*
                |  |        |          ietf-isis-t:area-address
                |  |        +--ro srv6-capabilities-flags
                |  |           +--ro flags?   binary
                |  +--ro isis-node* (system-id psn-id as)
                |     +--ro system-id          ietf-isis-t:system-id
                |     +--ro psn-id             uint8
                |     +--ro as                 inet:as-number
                |     +--ro node-attributes
                |        +--ro node-attribute* (type)
                |           +--ro type
                |           |       identityref
                |           +--ro local-ipv4-router-ids
                |           |  +--ro router-id*   ietf-rt-t:router-id
                |           +--ro local-ipv6-router-ids
                |           |  +--ro router-id*   inet:ipv6-address
                |           +--ro unknowns
                |           |  +--ro unknown* (type)
                |           |     +--ro type     uint16
                |           |     +--ro value?   yang:hex-string
                |           +--ro multi-topology-ids
                |           |  +--ro multi-topology-id*   uint16
                |           +--ro node-flag-bits
                |           |  +--ro flags?
                |           |          bgp-ls-topo-t:node-flag-bits
                |           +--ro opaque-node-attribute
                |           |  +--ro opaque-attrs?   yang:hex-string
                |           +--ro node-name
                |           |  +--ro name?   string
                |           +--ro sr-capabilities
                |           |  +--ro srgb* (start-label)
                |           |  |  +--ro start-label
                |           |  |  |       ietf-rt-t:mpls-label
                |           |  |  +--ro range-size?    uint32
                |           |  +--ro isis-flags?   binary
                |           +--ro sr-local-block
                |           |  +--ro srlb* (start-label)
                |           |     +--ro start-label
                |           |     |       ietf-rt-t:mpls-label
                |           |     +--ro range-size?    uint32
                |           +--ro sr-algorithm
                |           |  +--ro algorithm*   uint8
                |           +--ro node-msd
                |           |  +--ro msd* (msd-type)
                |           |     +--ro msd-type     uint8
                |           |     +--ro msd-value?   uint8
                |           +--ro fads
                |           |  +--ro fad* (algorithm)
                |           |     +--ro algorithm              uint8
                |           |     +--ro metric-type?           uint8
                |           |     +--ro calc-type?             uint8
                |           |     +--ro priority?              uint8
                |           |     +--ro node-fad-attributes
                |           |        +--ro node-fad-attribute* (type)
                |           |           +--ro type
                |           |           |       identityref
                |           |           +--ro exclude-any-affinity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro include-any-affinity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro include-all-affinity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro flags
                |           |           |  +--ro flags?   binary
                |           |           +--ro exclude-srlg
                |           |           |  +--ro srlg*   uint32
                |           |           +--ro exclude-minimum-bw
                |           |           |  +--ro bw?
                |           |           |          ietf-rt-t:bandwidth-
ieee-float32
                |           |           +--ro exclude-maximum-delay
                |           |           |  +--ro delay?   uint32
                |           |           +--ro exclude-any-reverse-affin
ity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro include-any-reverse-affin
ity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro include-all-reverse-affin
ity
                |           |           |  +--ro eag*   uint32
                |           |           +--ro fa-unsupported-tlvs
                |           |              +--ro protocol-id?
                |           |              |       bgp-ls-topo-t:protoc
ol
                |           |              +--ro type*
                |           |                      uint16
                |           +--ro isis-area-identifiers
                |           |  +--ro area-address*
                |           |          ietf-isis-t:area-address
                |           +--ro srv6-capabilities-flags
                |              +--ro flags?   binary
                +--ro links
                |  +--ro ospf-link*
                |  |       (area-id as local-router-id local-dr-identif
ier remote-router-id remote-dr-identifier local-id remote-id local-ipv4
-address remote-ipv4-address multi-topology-id)
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro as                      inet:as-number
                |  |  +--ro local-router-id
                |  |  |       ietf-rt-t:router-id
                |  |  +--ro remote-router-id
                |  |  |       ietf-rt-t:router-id
                |  |  +--ro local-id                uint32
                |  |  +--ro remote-id               uint32
                |  |  +--ro local-ipv4-address      inet:ipv4-address
                |  |  +--ro remote-ipv4-address     inet:ipv4-address
                |  |  +--ro multi-topology-id       uint16
                |  |  +--ro local-dr-identifier     inet:ipv4-address
                |  |  +--ro remote-dr-identifier    inet:ipv4-address
                |  |  +--ro link-attributes
                |  |     +--ro link-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro te-default-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro unidirectional-link-delay
                |  |        |  +--ro delay?     uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro min-max-unidirectional-link-delay
                |  |        |  +--ro min
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro max
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro unidirectional-delay-variation
                |  |        |  +--ro delay?   uint32
                |  |        +--ro unidirectional-link-loss
                |  |        |  +--ro link-loss?   uint32
                |  |        |  +--ro anomaly?     boolean
                |  |        +--ro unidirectional-residual-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-available-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-utilized-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro extended-admin-group
                |  |        |  +--ro eag*   uint32
                |  |        +--ro unknowns
                |  |        |  +--ro unknown* (type)
                |  |        |     +--ro type     uint16
                |  |        |     +--ro value?   yang:hex-string
                |  |        +--ro link-local-remote-identifiers
                |  |        |  +--ro local-identifier?    uint32
                |  |        |  +--ro remote-identifier?   uint32
                |  |        +--ro link-msd
                |  |        |  +--ro msd* (msd-type)
                |  |        |     +--ro msd-type     uint8
                |  |        |     +--ro msd-value?   uint8
                |  |        +--ro local-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro local-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro remote-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro remote-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro mpls-protocol-mask
                |  |        |  +--ro mask?   uint8
                |  |        +--ro igp-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro srlgs
                |  |        |  +--ro srlg*   uint32
                |  |        +--ro opaque-link-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro link-name
                |  |        |  +--ro name?   string
                |  |        +--ro srv6-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        +--ro srv6-lan-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        |     +--ro neighbor-id?         union
                |  |        +--ro maximum-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro maximum-reservable-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unreserved-bws
                |  |        |  +--ro unreserved-bw* (priority)
                |  |        |     +--ro priority     uint8
                |  |        |     +--ro bandwidth?
                |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
                |  |        +--ro link-protection-type
                |  |        |  +--ro type?   uint16
                |  |        +--ro adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        +--ro lan-adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        |     +--ro neighbor-id?   union
                |  |        +--ro aslas
                |  |        |  +--ro asla* (sabm udabm)
                |  |        |     +--ro sabm              binary
                |  |        |     +--ro udabm             binary
                |  |        |     +--ro asla-attribute* (type)
                |  |        |        +--ro type
                |  |        |        |       identityref
                |  |        |        +--ro srlgs
                |  |        |        |  +--ro srlg*   uint32
                |  |        |        +--ro te-default-metric
                |  |        |        |  +--ro metric?   uint32
                |  |        |        +--ro unidirectional-link-delay
                |  |        |        |  +--ro delay?     uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro min-max-unidirectional-link-
delay
                |  |        |        |  +--ro min
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro max
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro unidirectional-delay-variati
on
                |  |        |        |  +--ro delay?   uint32
                |  |        |        +--ro unidirectional-link-loss
                |  |        |        |  +--ro link-loss?   uint32
                |  |        |        |  +--ro anomaly?     boolean
                |  |        |        +--ro unidirectional-residual-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-available-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-utilized-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro extended-admin-group
                |  |        |        |  +--ro eag*   uint32
                |  |        |        +--ro unknowns
                |  |        |           +--ro unknown* (type)
                |  |        |              +--ro type     uint16
                |  |        |              +--ro value?
                |  |        |                      yang:hex-string
                |  |        +--ro l2-bundle-members
                |  |           +--ro l2-bundle-member*
                |  |                   (member-descriptor)
                |  |              +--ro member-descriptor
                |  |              |       uint32
                |  |              +--ro bundle-member-attribute*
                |  |                      (type)
                |  |                 +--ro type
                |  |                 |       identityref
                |  |                 +--ro te-default-metric
                |  |                 |  +--ro metric?   uint32
                |  |                 +--ro unidirectional-link-delay
                |  |                 |  +--ro delay?     uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro min-max-unidirectional-link-
delay
                |  |                 |  +--ro min
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro max
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro unidirectional-delay-variati
on
                |  |                 |  +--ro delay?   uint32
                |  |                 +--ro unidirectional-link-loss
                |  |                 |  +--ro link-loss?   uint32
                |  |                 |  +--ro anomaly?     boolean
                |  |                 +--ro unidirectional-residual-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-available-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-utilized-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro extended-admin-group
                |  |                 |  +--ro eag*   uint32
                |  |                 +--ro unknowns
                |  |                 |  +--ro unknown* (type)
                |  |                 |     +--ro type     uint16
                |  |                 |     +--ro value?
                |  |                 |             yang:hex-string
                |  |                 +--ro maximum-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro maximum-reservable-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unreserved-bws
                |  |                 |  +--ro unreserved-bw*
                |  |                 |          (priority)
                |  |                 |     +--ro priority     uint8
                |  |                 |     +--ro bandwidth?
                |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
                |  |                 +--ro link-protection-type
                |  |                 |  +--ro type?   uint16
                |  |                 +--ro adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 +--ro lan-adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 |     +--ro neighbor-id?   union
                |  |                 +--ro aslas
                |  |                    +--ro asla* (sabm udabm)
                |  |                       +--ro sabm
                |  |                       |       binary
                |  |                       +--ro udabm
                |  |                       |       binary
                |  |                       +--ro asla-attribute*
                |  |                               (type)
                |  |                          +--ro type
                |  |                          |       identityref
                |  |                          +--ro srlgs
                |  |                          |  +--ro srlg*   uint32
                |  |                          +--ro te-default-metric
                |  |                          |  +--ro metric?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-delay
                |  |                          |  +--ro delay?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro min-max-unidirectio
nal-link-delay
                |  |                          |  +--ro min
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro max
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-dela
y-variation
                |  |                          |  +--ro delay?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-loss
                |  |                          |  +--ro link-loss?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-resi
dual-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-avai
lable-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-util
ized-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro extended-admin-grou
p
                |  |                          |  +--ro eag*   uint32
                |  |                          +--ro unknowns
                |  |                             +--ro unknown*
                |  |                                     (type)
                |  |                                +--ro type
                |  |                                |       uint16
                |  |                                +--ro value?
                |  |                                        yang:hex-st
ring
                |  +--ro ospfv3-link*
                |  |       (area-id as local-router-id local-dr-identif
ier remote-router-id remote-dr-identifier local-id remote-id local-ipv4
-address remote-ipv4-address local-ipv6-address remote-ipv6-address mul
ti-topology-id)
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro as                      inet:as-number
                |  |  +--ro local-router-id
                |  |  |       ietf-rt-t:router-id
                |  |  +--ro remote-router-id
                |  |  |       ietf-rt-t:router-id
                |  |  +--ro local-id                uint32
                |  |  +--ro remote-id               uint32
                |  |  +--ro local-ipv4-address      inet:ipv4-address
                |  |  +--ro remote-ipv4-address     inet:ipv4-address
                |  |  +--ro multi-topology-id       uint16
                |  |  +--ro local-dr-identifier     uint32
                |  |  +--ro remote-dr-identifier    uint32
                |  |  +--ro local-ipv6-address      inet:ipv6-address
                |  |  +--ro remote-ipv6-address     inet:ipv6-address
                |  |  +--ro link-attributes
                |  |     +--ro link-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro te-default-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro unidirectional-link-delay
                |  |        |  +--ro delay?     uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro min-max-unidirectional-link-delay
                |  |        |  +--ro min
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro max
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro unidirectional-delay-variation
                |  |        |  +--ro delay?   uint32
                |  |        +--ro unidirectional-link-loss
                |  |        |  +--ro link-loss?   uint32
                |  |        |  +--ro anomaly?     boolean
                |  |        +--ro unidirectional-residual-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-available-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-utilized-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro extended-admin-group
                |  |        |  +--ro eag*   uint32
                |  |        +--ro unknowns
                |  |        |  +--ro unknown* (type)
                |  |        |     +--ro type     uint16
                |  |        |     +--ro value?   yang:hex-string
                |  |        +--ro link-local-remote-identifiers
                |  |        |  +--ro local-identifier?    uint32
                |  |        |  +--ro remote-identifier?   uint32
                |  |        +--ro link-msd
                |  |        |  +--ro msd* (msd-type)
                |  |        |     +--ro msd-type     uint8
                |  |        |     +--ro msd-value?   uint8
                |  |        +--ro local-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro local-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro remote-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro remote-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro mpls-protocol-mask
                |  |        |  +--ro mask?   uint8
                |  |        +--ro igp-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro srlgs
                |  |        |  +--ro srlg*   uint32
                |  |        +--ro opaque-link-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro link-name
                |  |        |  +--ro name?   string
                |  |        +--ro srv6-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        +--ro srv6-lan-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        |     +--ro neighbor-id?         union
                |  |        +--ro maximum-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro maximum-reservable-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unreserved-bws
                |  |        |  +--ro unreserved-bw* (priority)
                |  |        |     +--ro priority     uint8
                |  |        |     +--ro bandwidth?
                |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
                |  |        +--ro link-protection-type
                |  |        |  +--ro type?   uint16
                |  |        +--ro adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        +--ro lan-adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        |     +--ro neighbor-id?   union
                |  |        +--ro aslas
                |  |        |  +--ro asla* (sabm udabm)
                |  |        |     +--ro sabm              binary
                |  |        |     +--ro udabm             binary
                |  |        |     +--ro asla-attribute* (type)
                |  |        |        +--ro type
                |  |        |        |       identityref
                |  |        |        +--ro srlgs
                |  |        |        |  +--ro srlg*   uint32
                |  |        |        +--ro te-default-metric
                |  |        |        |  +--ro metric?   uint32
                |  |        |        +--ro unidirectional-link-delay
                |  |        |        |  +--ro delay?     uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro min-max-unidirectional-link-
delay
                |  |        |        |  +--ro min
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro max
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro unidirectional-delay-variati
on
                |  |        |        |  +--ro delay?   uint32
                |  |        |        +--ro unidirectional-link-loss
                |  |        |        |  +--ro link-loss?   uint32
                |  |        |        |  +--ro anomaly?     boolean
                |  |        |        +--ro unidirectional-residual-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-available-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-utilized-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro extended-admin-group
                |  |        |        |  +--ro eag*   uint32
                |  |        |        +--ro unknowns
                |  |        |           +--ro unknown* (type)
                |  |        |              +--ro type     uint16
                |  |        |              +--ro value?
                |  |        |                      yang:hex-string
                |  |        +--ro l2-bundle-members
                |  |           +--ro l2-bundle-member*
                |  |                   (member-descriptor)
                |  |              +--ro member-descriptor
                |  |              |       uint32
                |  |              +--ro bundle-member-attribute*
                |  |                      (type)
                |  |                 +--ro type
                |  |                 |       identityref
                |  |                 +--ro te-default-metric
                |  |                 |  +--ro metric?   uint32
                |  |                 +--ro unidirectional-link-delay
                |  |                 |  +--ro delay?     uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro min-max-unidirectional-link-
delay
                |  |                 |  +--ro min
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro max
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro unidirectional-delay-variati
on
                |  |                 |  +--ro delay?   uint32
                |  |                 +--ro unidirectional-link-loss
                |  |                 |  +--ro link-loss?   uint32
                |  |                 |  +--ro anomaly?     boolean
                |  |                 +--ro unidirectional-residual-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-available-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-utilized-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro extended-admin-group
                |  |                 |  +--ro eag*   uint32
                |  |                 +--ro unknowns
                |  |                 |  +--ro unknown* (type)
                |  |                 |     +--ro type     uint16
                |  |                 |     +--ro value?
                |  |                 |             yang:hex-string
                |  |                 +--ro maximum-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro maximum-reservable-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unreserved-bws
                |  |                 |  +--ro unreserved-bw*
                |  |                 |          (priority)
                |  |                 |     +--ro priority     uint8
                |  |                 |     +--ro bandwidth?
                |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
                |  |                 +--ro link-protection-type
                |  |                 |  +--ro type?   uint16
                |  |                 +--ro adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 +--ro lan-adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 |     +--ro neighbor-id?   union
                |  |                 +--ro aslas
                |  |                    +--ro asla* (sabm udabm)
                |  |                       +--ro sabm
                |  |                       |       binary
                |  |                       +--ro udabm
                |  |                       |       binary
                |  |                       +--ro asla-attribute*
                |  |                               (type)
                |  |                          +--ro type
                |  |                          |       identityref
                |  |                          +--ro srlgs
                |  |                          |  +--ro srlg*   uint32
                |  |                          +--ro te-default-metric
                |  |                          |  +--ro metric?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-delay
                |  |                          |  +--ro delay?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro min-max-unidirectio
nal-link-delay
                |  |                          |  +--ro min
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro max
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-dela
y-variation
                |  |                          |  +--ro delay?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-loss
                |  |                          |  +--ro link-loss?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-resi
dual-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-avai
lable-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-util
ized-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro extended-admin-grou
p
                |  |                          |  +--ro eag*   uint32
                |  |                          +--ro unknowns
                |  |                             +--ro unknown*
                |  |                                     (type)
                |  |                                +--ro type
                |  |                                |       uint16
                |  |                                +--ro value?
                |  |                                        yang:hex-st
ring
                |  +--ro isis-link*
                |  |       (local-system-id local-psn-id local-as remot
e-system-id remote-psn-id remote-as local-id remote-id local-ipv4-addre
ss remote-ipv4-address local-ipv6-address remote-ipv6-address multi-top
ology-id)
                |  |  +--ro local-system-id
                |  |  |       ietf-isis-t:system-id
                |  |  +--ro local-psn-id           uint8
                |  |  +--ro local-as               inet:as-number
                |  |  +--ro remote-system-id
                |  |  |       ietf-isis-t:system-id
                |  |  +--ro remote-psn-id          uint8
                |  |  +--ro remote-as              inet:as-number
                |  |  +--ro local-id               uint32
                |  |  +--ro remote-id              uint32
                |  |  +--ro local-ipv4-address     inet:ipv4-address
                |  |  +--ro remote-ipv4-address    inet:ipv4-address
                |  |  +--ro local-ipv6-address     inet:ipv6-address
                |  |  +--ro remote-ipv6-address    inet:ipv6-address
                |  |  +--ro multi-topology-id      uint16
                |  |  +--ro link-attributes
                |  |     +--ro link-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro te-default-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro unidirectional-link-delay
                |  |        |  +--ro delay?     uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro min-max-unidirectional-link-delay
                |  |        |  +--ro min
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro max
                |  |        |  |  +--ro delay?   uint32
                |  |        |  +--ro anomaly?   boolean
                |  |        +--ro unidirectional-delay-variation
                |  |        |  +--ro delay?   uint32
                |  |        +--ro unidirectional-link-loss
                |  |        |  +--ro link-loss?   uint32
                |  |        |  +--ro anomaly?     boolean
                |  |        +--ro unidirectional-residual-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-available-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unidirectional-utilized-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro extended-admin-group
                |  |        |  +--ro eag*   uint32
                |  |        +--ro unknowns
                |  |        |  +--ro unknown* (type)
                |  |        |     +--ro type     uint16
                |  |        |     +--ro value?   yang:hex-string
                |  |        +--ro link-local-remote-identifiers
                |  |        |  +--ro local-identifier?    uint32
                |  |        |  +--ro remote-identifier?   uint32
                |  |        +--ro link-msd
                |  |        |  +--ro msd* (msd-type)
                |  |        |     +--ro msd-type     uint8
                |  |        |     +--ro msd-value?   uint8
                |  |        +--ro local-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro local-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro remote-ipv4-router-ids
                |  |        |  +--ro router-id*   ietf-rt-t:router-id
                |  |        +--ro remote-ipv6-router-ids
                |  |        |  +--ro router-id*   inet:ipv6-address
                |  |        +--ro mpls-protocol-mask
                |  |        |  +--ro mask?   uint8
                |  |        +--ro igp-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro srlgs
                |  |        |  +--ro srlg*   uint32
                |  |        +--ro opaque-link-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro link-name
                |  |        |  +--ro name?   string
                |  |        +--ro srv6-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        +--ro srv6-lan-end-x-sids
                |  |        |  +--ro srv6-end-x-sid* (sid)
                |  |        |     +--ro sid
                |  |        |     |       inet:ipv6-address
                |  |        |     +--ro weight?              uint8
                |  |        |     +--ro endpoint-behavior?   uint8
                |  |        |     +--ro flags?               binary
                |  |        |     +--ro algorithm?           uint8
                |  |        |     +--ro locator-block-len?   uint8
                |  |        |     +--ro locator-node-len?    uint8
                |  |        |     +--ro function-len?        uint8
                |  |        |     +--ro arg-len?             uint8
                |  |        |     +--ro neighbor-id?         union
                |  |        +--ro maximum-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro maximum-reservable-link-bw
                |  |        |  +--ro bw?
                |  |        |          ietf-rt-t:bandwidth-ieee-float32
                |  |        +--ro unreserved-bws
                |  |        |  +--ro unreserved-bw* (priority)
                |  |        |     +--ro priority     uint8
                |  |        |     +--ro bandwidth?
                |  |        |             ietf-rt-t:bandwidth-ieee-floa
t32
                |  |        +--ro link-protection-type
                |  |        |  +--ro type?   uint16
                |  |        +--ro adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        +--ro lan-adjacency-sids
                |  |        |  +--ro adjacency-sid*
                |  |        |          (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro weight?        uint8
                |  |        |     +--ro neighbor-id?   union
                |  |        +--ro aslas
                |  |        |  +--ro asla* (sabm udabm)
                |  |        |     +--ro sabm              binary
                |  |        |     +--ro udabm             binary
                |  |        |     +--ro asla-attribute* (type)
                |  |        |        +--ro type
                |  |        |        |       identityref
                |  |        |        +--ro srlgs
                |  |        |        |  +--ro srlg*   uint32
                |  |        |        +--ro te-default-metric
                |  |        |        |  +--ro metric?   uint32
                |  |        |        +--ro unidirectional-link-delay
                |  |        |        |  +--ro delay?     uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro min-max-unidirectional-link-
delay
                |  |        |        |  +--ro min
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro max
                |  |        |        |  |  +--ro delay?   uint32
                |  |        |        |  +--ro anomaly?   boolean
                |  |        |        +--ro unidirectional-delay-variati
on
                |  |        |        |  +--ro delay?   uint32
                |  |        |        +--ro unidirectional-link-loss
                |  |        |        |  +--ro link-loss?   uint32
                |  |        |        |  +--ro anomaly?     boolean
                |  |        |        +--ro unidirectional-residual-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-available-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro unidirectional-utilized-bw
                |  |        |        |  +--ro bw?
                |  |        |        |          ietf-rt-t:bandwidth-iee
e-float32
                |  |        |        +--ro extended-admin-group
                |  |        |        |  +--ro eag*   uint32
                |  |        |        +--ro unknowns
                |  |        |           +--ro unknown* (type)
                |  |        |              +--ro type     uint16
                |  |        |              +--ro value?
                |  |        |                      yang:hex-string
                |  |        +--ro l2-bundle-members
                |  |           +--ro l2-bundle-member*
                |  |                   (member-descriptor)
                |  |              +--ro member-descriptor
                |  |              |       uint32
                |  |              +--ro bundle-member-attribute*
                |  |                      (type)
                |  |                 +--ro type
                |  |                 |       identityref
                |  |                 +--ro te-default-metric
                |  |                 |  +--ro metric?   uint32
                |  |                 +--ro unidirectional-link-delay
                |  |                 |  +--ro delay?     uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro min-max-unidirectional-link-
delay
                |  |                 |  +--ro min
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro max
                |  |                 |  |  +--ro delay?   uint32
                |  |                 |  +--ro anomaly?   boolean
                |  |                 +--ro unidirectional-delay-variati
on
                |  |                 |  +--ro delay?   uint32
                |  |                 +--ro unidirectional-link-loss
                |  |                 |  +--ro link-loss?   uint32
                |  |                 |  +--ro anomaly?     boolean
                |  |                 +--ro unidirectional-residual-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-available-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unidirectional-utilized-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro extended-admin-group
                |  |                 |  +--ro eag*   uint32
                |  |                 +--ro unknowns
                |  |                 |  +--ro unknown* (type)
                |  |                 |     +--ro type     uint16
                |  |                 |     +--ro value?
                |  |                 |             yang:hex-string
                |  |                 +--ro maximum-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro maximum-reservable-link-bw
                |  |                 |  +--ro bw?
                |  |                 |          ietf-rt-t:bandwidth-iee
e-float32
                |  |                 +--ro unreserved-bws
                |  |                 |  +--ro unreserved-bw*
                |  |                 |          (priority)
                |  |                 |     +--ro priority     uint8
                |  |                 |     +--ro bandwidth?
                |  |                 |             ietf-rt-t:bandwidth-
ieee-float32
                |  |                 +--ro link-protection-type
                |  |                 |  +--ro type?   uint16
                |  |                 +--ro adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 +--ro lan-adjacency-sids
                |  |                 |  +--ro adjacency-sid*
                |  |                 |          (label-index format)
                |  |                 |     +--ro label-index
                |  |                 |     |       uint32
                |  |                 |     +--ro format
                |  |                 |     |       bgp-ls-topo-t:sid-fo
rmat
                |  |                 |     +--ro flags?
                |  |                 |     |       binary
                |  |                 |     +--ro weight?        uint8
                |  |                 |     +--ro neighbor-id?   union
                |  |                 +--ro aslas
                |  |                    +--ro asla* (sabm udabm)
                |  |                       +--ro sabm
                |  |                       |       binary
                |  |                       +--ro udabm
                |  |                       |       binary
                |  |                       +--ro asla-attribute*
                |  |                               (type)
                |  |                          +--ro type
                |  |                          |       identityref
                |  |                          +--ro srlgs
                |  |                          |  +--ro srlg*   uint32
                |  |                          +--ro te-default-metric
                |  |                          |  +--ro metric?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-delay
                |  |                          |  +--ro delay?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro min-max-unidirectio
nal-link-delay
                |  |                          |  +--ro min
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro max
                |  |                          |  |  +--ro delay?
                |  |                          |  |          uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-dela
y-variation
                |  |                          |  +--ro delay?
                |  |                          |          uint32
                |  |                          +--ro unidirectional-link
-loss
                |  |                          |  +--ro link-loss?
                |  |                          |  |       uint32
                |  |                          |  +--ro anomaly?
                |  |                          |          boolean
                |  |                          +--ro unidirectional-resi
dual-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-avai
lable-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro unidirectional-util
ized-bw
                |  |                          |  +--ro bw?
                |  |                          |          ietf-rt-t:band
width-ieee-float32
                |  |                          +--ro extended-admin-grou
p
                |  |                          |  +--ro eag*   uint32
                |  |                          +--ro unknowns
                |  |                             +--ro unknown*
                |  |                                     (type)
                |  |                                +--ro type
                |  |                                |       uint16
                |  |                                +--ro value?
                |  |                                        yang:hex-st
ring
                |  +--ro bgp-link*
                |          (local-as local-router-id remote-as remote-r
outer-id local-id remote-id local-ipv4-address remote-ipv4-address loca
l-ipv6-address remote-ipv6-address multi-topology-id)
                |     +--ro local-as               inet:as-number
                |     +--ro local-router-id
                |     |       ietf-rt-t:router-id
                |     +--ro remote-as              inet:as-number
                |     +--ro remote-router-id
                |     |       ietf-rt-t:router-id
                |     +--ro local-id               uint32
                |     +--ro remote-id              uint32
                |     +--ro local-ipv4-address     inet:ipv4-address
                |     +--ro remote-ipv4-address    inet:ipv4-address
                |     +--ro local-ipv6-address     inet:ipv6-address
                |     +--ro remote-ipv6-address    inet:ipv6-address
                |     +--ro multi-topology-id      uint16
                |     +--ro link-attributes
                |        +--ro link-attribute* (type)
                |           +--ro type             identityref
                |           +--ro bgp-peer-sids
                |              +--ro bgp-peer-sid*
                |                      (label-index format)
                |                 +--ro label-index    uint32
                |                 +--ro format
                |                 |       bgp-ls-topo-t:sid-format
                |                 +--ro flags?         binary
                |                 +--ro weight?        uint8
                +--ro prefixes
                |  +--ro ospf-prefix*
                |  |       (is-as-scoped area-id as router-id dr-identi
fier multi-topology-id route-type prefix)
                |  |  +--ro is-as-scoped         boolean
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro as                   inet:as-number
                |  |  +--ro router-id            ietf-rt-t:router-id
                |  |  +--ro route-type
                |  |  |       bgp-ls-topo-t:ospf-route-type
                |  |  +--ro multi-topology-id    uint16
                |  |  +--ro dr-identifier        inet:ipv4-address
                |  |  +--ro prefix               inet:ipv4-prefix
                |  |  +--ro prefix-attributes
                |  |     +--ro prefix-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro flexible-algorithm-prefix-metric
                |  |        |  +--ro fa-prefix-metric* (algorithm)
                |  |        |     +--ro metric?      uint32
                |  |        |     +--ro algorithm    uint8
                |  |        |     +--ro flags?       binary
                |  |        +--ro igp-flags
                |  |        |  +--ro flags?
                |  |        |          bgp-ls-topo-t:igp-flags-bits
                |  |        +--ro igp-route-tags
                |  |        |  +--ro tag*   uint32
                |  |        +--ro extended-igp-route-tags
                |  |        |  +--ro tag*   uint64
                |  |        +--ro prefix-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro ospf-forwarding-address
                |  |        |  +--ro forw-address?   inet:ip-address
                |  |        +--ro opaque-prefix-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro prefix-sids
                |  |        |  +--ro prefix-sid* (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro algorithm?     uint8
                |  |        +--ro prefix-range
                |  |        |  +--ro index?        uint32
                |  |        |  +--ro range-size?   uint16
                |  |        |  +--ro flags?        binary
                |  |        |  +--ro algorithm?    uint8
                |  |        |  +--ro sid-flags?    binary
                |  |        +--ro srv6-locator
                |  |        |  +--ro metric?      uint32
                |  |        |  +--ro flags?       binary
                |  |        |  +--ro algorithm?   uint8
                |  |        +--ro prefix-attribute-flags
                |  |        |  +--ro flags?   binary
                |  |        +--ro prefix-source-router-id
                |  |        |  +--ro source-router-id?
                |  |        |          inet:ip-address
                |  |        +--ro unknowns
                |  |           +--ro unknown* (type)
                |  |              +--ro type     uint16
                |  |              +--ro value?   yang:hex-string
                |  +--ro ospfv3-prefix*
                |  |       (is-as-scoped area-id as router-id dr-identi
fier multi-topology-id route-type prefix)
                |  |  +--ro is-as-scoped         boolean
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro as                   inet:as-number
                |  |  +--ro router-id            ietf-rt-t:router-id
                |  |  +--ro route-type
                |  |  |       bgp-ls-topo-t:ospf-route-type
                |  |  +--ro multi-topology-id    uint16
                |  |  +--ro dr-identifier        uint32
                |  |  +--ro prefix               inet:ip-prefix
                |  |  +--ro prefix-attributes
                |  |     +--ro prefix-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro flexible-algorithm-prefix-metric
                |  |        |  +--ro fa-prefix-metric* (algorithm)
                |  |        |     +--ro metric?      uint32
                |  |        |     +--ro algorithm    uint8
                |  |        |     +--ro flags?       binary
                |  |        +--ro igp-flags
                |  |        |  +--ro flags?
                |  |        |          bgp-ls-topo-t:igp-flags-bits
                |  |        +--ro igp-route-tags
                |  |        |  +--ro tag*   uint32
                |  |        +--ro extended-igp-route-tags
                |  |        |  +--ro tag*   uint64
                |  |        +--ro prefix-metric
                |  |        |  +--ro metric?   uint32
                |  |        +--ro ospf-forwarding-address
                |  |        |  +--ro forw-address?   inet:ip-address
                |  |        +--ro opaque-prefix-attribute
                |  |        |  +--ro opaque-attrs?   yang:hex-string
                |  |        +--ro prefix-sids
                |  |        |  +--ro prefix-sid* (label-index format)
                |  |        |     +--ro label-index    uint32
                |  |        |     +--ro format
                |  |        |     |       bgp-ls-topo-t:sid-format
                |  |        |     +--ro flags?         binary
                |  |        |     +--ro algorithm?     uint8
                |  |        +--ro prefix-range
                |  |        |  +--ro index?        uint32
                |  |        |  +--ro range-size?   uint16
                |  |        |  +--ro flags?        binary
                |  |        |  +--ro algorithm?    uint8
                |  |        |  +--ro sid-flags?    binary
                |  |        +--ro srv6-locator
                |  |        |  +--ro metric?      uint32
                |  |        |  +--ro flags?       binary
                |  |        |  +--ro algorithm?   uint8
                |  |        +--ro prefix-attribute-flags
                |  |        |  +--ro flags?   binary
                |  |        +--ro prefix-source-router-id
                |  |        |  +--ro source-router-id?
                |  |        |          inet:ip-address
                |  |        +--ro unknowns
                |  |           +--ro unknown* (type)
                |  |              +--ro type     uint16
                |  |              +--ro value?   yang:hex-string
                |  +--ro isis-prefix*
                |          (system-id psn-id as multi-topology-id prefi
x)
                |     +--ro system-id
                |     |       ietf-isis-t:system-id
                |     +--ro psn-id               uint8
                |     +--ro as                   inet:as-number
                |     +--ro multi-topology-id    uint16
                |     +--ro prefix               inet:ip-prefix
                |     +--ro prefix-attributes
                |        +--ro prefix-attribute* (type)
                |           +--ro type
                |           |       identityref
                |           +--ro flexible-algorithm-prefix-metric
                |           |  +--ro fa-prefix-metric* (algorithm)
                |           |     +--ro metric?      uint32
                |           |     +--ro algorithm    uint8
                |           |     +--ro flags?       binary
                |           +--ro igp-flags
                |           |  +--ro flags?
                |           |          bgp-ls-topo-t:igp-flags-bits
                |           +--ro igp-route-tags
                |           |  +--ro tag*   uint32
                |           +--ro extended-igp-route-tags
                |           |  +--ro tag*   uint64
                |           +--ro prefix-metric
                |           |  +--ro metric?   uint32
                |           +--ro ospf-forwarding-address
                |           |  +--ro forw-address?   inet:ip-address
                |           +--ro opaque-prefix-attribute
                |           |  +--ro opaque-attrs?   yang:hex-string
                |           +--ro prefix-sids
                |           |  +--ro prefix-sid* (label-index format)
                |           |     +--ro label-index    uint32
                |           |     +--ro format
                |           |     |       bgp-ls-topo-t:sid-format
                |           |     +--ro flags?         binary
                |           |     +--ro algorithm?     uint8
                |           +--ro prefix-range
                |           |  +--ro index?        uint32
                |           |  +--ro range-size?   uint16
                |           |  +--ro flags?        binary
                |           |  +--ro algorithm?    uint8
                |           |  +--ro sid-flags?    binary
                |           +--ro srv6-locator
                |           |  +--ro metric?      uint32
                |           |  +--ro flags?       binary
                |           |  +--ro algorithm?   uint8
                |           +--ro prefix-attribute-flags
                |           |  +--ro flags?   binary
                |           +--ro prefix-source-router-id
                |           |  +--ro source-router-id?
                |           |          inet:ip-address
                |           +--ro unknowns
                |              +--ro unknown* (type)
                |                 +--ro type     uint16
                |                 +--ro value?   yang:hex-string
                +--ro srv6-sids
                |  +--ro ospfv3-srv6-sid*
                |  |       (is-as-scoped area-id router-id dr-identifie
r as sid multi-topology-id)
                |  |  +--ro is-as-scoped           boolean
                |  |  +--ro area-id
                |  |  |       ietf-ospf-t:area-id-type
                |  |  +--ro router-id
                |  |  |       ietf-rt-t:router-id
                |  |  +--ro dr-identifier          uint32
                |  |  +--ro as                     inet:as-number
                |  |  +--ro sid                    inet:ipv6-prefix
                |  |  +--ro multi-topology-id      uint16
                |  |  +--ro srv6-sid-attributes
                |  |     +--ro srv6-sid-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro srv6-endpoint-behavior
                |  |        |  +--ro endpoint-behavior?   uint8
                |  |        |  +--ro flags?               binary
                |  |        |  +--ro algorithm?           uint8
                |  |        +--ro srv6-sid-structure
                |  |        |  +--ro locator-block-len?   uint8
                |  |        |  +--ro locator-node-len?    uint8
                |  |        |  +--ro function-len?        uint8
                |  |        |  +--ro arg-len?             uint8
                |  |        +--ro unknowns
                |  |           +--ro unknown* (type)
                |  |              +--ro type     uint16
                |  |              +--ro value?   yang:hex-string
                |  +--ro isis-srv6-sid*
                |  |       (system-id psn-id as sid multi-topology-id)
                |  |  +--ro system-id
                |  |  |       ietf-isis-t:system-id
                |  |  +--ro psn-id                 uint8
                |  |  +--ro as                     inet:as-number
                |  |  +--ro sid                    inet:ipv6-prefix
                |  |  +--ro multi-topology-id      uint16
                |  |  +--ro srv6-sid-attributes
                |  |     +--ro srv6-sid-attribute* (type)
                |  |        +--ro type
                |  |        |       identityref
                |  |        +--ro srv6-endpoint-behavior
                |  |        |  +--ro endpoint-behavior?   uint8
                |  |        |  +--ro flags?               binary
                |  |        |  +--ro algorithm?           uint8
                |  |        +--ro srv6-sid-structure
                |  |        |  +--ro locator-block-len?   uint8
                |  |        |  +--ro locator-node-len?    uint8
                |  |        |  +--ro function-len?        uint8
                |  |        |  +--ro arg-len?             uint8
                |  |        +--ro unknowns
                |  |           +--ro unknown* (type)
                |  |              +--ro type     uint16
                |  |              +--ro value?   yang:hex-string
                |  +--ro bgp-srv6-sid*
                |          (router-id as sid multi-topology-id)
                |     +--ro router-id
                |     |       ietf-rt-t:router-id
                |     +--ro as                     inet:as-number
                |     +--ro sid                    inet:ipv6-prefix
                |     +--ro multi-topology-id      uint16
                |     +--ro srv6-sid-attributes
                |        +--ro srv6-sid-attribute* (type)
                |           +--ro type
                |           |       identityref
                |           +--ro srv6-endpoint-behavior
                |           |  +--ro endpoint-behavior?   uint8
                |           |  +--ro flags?               binary
                |           |  +--ro algorithm?           uint8
                |           +--ro srv6-sid-structure
                |           |  +--ro locator-block-len?   uint8
                |           |  +--ro locator-node-len?    uint8
                |           |  +--ro function-len?        uint8
                |           |  +--ro arg-len?             uint8
                |           +--ro unknowns
                |           |  +--ro unknown* (type)
                |           |     +--ro type     uint16
                |           |     +--ro value?   yang:hex-string
                |           +--ro srv6-bgp-peer-node-sid
                |              +--ro flags?         binary
                |              +--ro weight?        uint8
                |              +--ro peer-as?       inet:as-number
                |              +--ro peer-bgp-id?
                |                      ietf-rt-t:router-id
                +--ro unknowns
                   +--ro unknown* (nlri)
                      +--ro nlri          yang:hex-string
                      +--ro attributes?   yang:hex-string
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:neighbors
            /bgp:neighbor/bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?       uint32
    |  +--rw max-number?     uint32
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw metric?         uint32
       +--rw status?         enumeration
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:neighbors
            /bgp:neighbor/bgp:statistics:
    +--ro updates-sent?             yang:zero-based-counter32
    +--ro updates-received?         yang:zero-based-counter32
    +--ro error-updates-received?   yang:zero-based-counter32
    +--ro computations?             yang:zero-based-counter32
    +--ro triggering-events?        yang:zero-based-counter32
    +---x clear {ibt:clear-statistics}?
       +---w input
       |  +---w clear-at?   yang:date-and-time
       +--ro output
          +--ro clear-finished-at?   yang:date-and-time
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:peer-groups
            /bgp:peer-group/bgp:afi-safis/bgp:afi-safi:
    +--rw link-state!
    |  +--rw prefix-limit
    |  |  +--rw max-prefixes?            uint32
    |  |  +--rw warning-threshold-pct?   rt-types:percentage
    |  |  +--rw teardown?                boolean
    |  |  +--rw idle-time?               union
    |  |  +--ro prefix-limit-exceeded?   boolean
    |  +--rw max-rate?       uint32
    |  +--rw max-number?     uint32
    +--rw link-state-spf
       +--rw prefix-limit
       |  +--rw max-prefixes?            uint32
       |  +--rw warning-threshold-pct?   rt-types:percentage
       |  +--rw teardown?                boolean
       |  +--rw idle-time?               union
       |  +--ro prefix-limit-exceeded?   boolean
       +--rw metric?         uint32
       +--rw status?         enumeration
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/bgp:bgp/bgp:rib/bgp:afi-safis
            /bgp:afi-safi:
    +--ro link-state
       +--ro loc-rib
       |  +--ro routes
       |     +--ro route* (nlri origin path-id)
       |        +--ro nlri                       yang:hex-string
       |        +--ro origin                     union
       |        +--ro path-id                    uint32
       |        +--ro attr-index?                leafref
       |        +--ro community-index?           leafref
       |        +--ro ext-community-index?       leafref
       |        +--ro large-community-index?     leafref
       |        +--ro nlri-type?
       |        |       bgp-ls-topo-t:nlri-type
       |        +--ro protocol-id?
       |        |       bgp-ls-topo-t:protocol
       |        +--ro identifier?                uint64
       |        +--ro route-distinguisher?
       |        |       ietf-rt-t:route-distinguisher
       |        +--ro local-node-descriptors
       |        |  +--ro as?                      inet:as-number
       |        |  x--ro bgp-ls-identifier?       uint32
       |        |  +--ro area-id?
       |        |  |       ietf-ospf-t:area-id-type
       |        |  +--ro (igp-router-id)?
       |        |  |  +--:(isis)
       |        |  |  |  +--ro system-id?
       |        |  |  |  |       ietf-isis-t:system-id
       |        |  |  |  +--ro psn-id?            uint8
       |        |  |  +--:(ospf)
       |        |  |  |  +--ro router-id?         ietf-rt-t:router-id
       |        |  |  |  +--ro dr-identifier?     inet:ipv4-address
       |        |  |  |  +--ro dr-interface-id?   uint32
       |        |  |  +--:(direct-or-static)
       |        |  |     +--ro router-address?    inet:ip-address
       |        |  +--ro bgp-router-id?           yang:dotted-quad
       |        |  +--ro member-as?               inet:as-number
       |        +--ro remote-node-descriptors
       |        |  +--ro as?                      inet:as-number
       |        |  x--ro bgp-ls-identifier?       uint32
       |        |  +--ro area-id?
       |        |  |       ietf-ospf-t:area-id-type
       |        |  +--ro (igp-router-id)?
       |        |  |  +--:(isis)
       |        |  |  |  +--ro system-id?
       |        |  |  |  |       ietf-isis-t:system-id
       |        |  |  |  +--ro psn-id?            uint8
       |        |  |  +--:(ospf)
       |        |  |  |  +--ro router-id?         ietf-rt-t:router-id
       |        |  |  |  +--ro dr-identifier?     inet:ipv4-address
       |        |  |  |  +--ro dr-interface-id?   uint32
       |        |  |  +--:(direct-or-static)
       |        |  |     +--ro router-address?    inet:ip-address
       |        |  +--ro bgp-router-id?           yang:dotted-quad
       |        |  +--ro member-as?               inet:as-number
       |        +--ro link-descriptors
       |        |  +--ro link-local-identifier?    uint32
       |        |  +--ro link-remote-identifier?   uint32
       |        |  +--ro ipv4-interface-address?   inet:ipv4-address
       |        |  +--ro ipv4-neighbor-address?    inet:ipv4-address
       |        |  +--ro ipv6-interface-address?   inet:ipv6-address
       |        |  +--ro ipv6-neighbor-address?    inet:ipv6-address
       |        |  +--ro multi-topology-id?        uint16
       |        +--ro prefix-descriptors
       |        |  +--ro multi-topology-id?             uint16
       |        |  +--ro ospf-route-type?
       |        |  |       bgp-ls-topo-t:ospf-route-type
       |        |  +--ro ip-reachability-information?
       |        |          inet:ip-prefix
       |        +--ro ls-attribute?              yang:hex-string
       |        +--ro sequence-number?           uint64
       |        +--ro last-modified?             yang:timeticks
       |        +--ro eligible-route?            boolean
       |        +--ro ineligible-reason?         identityref
       |        +--ro unknown-attributes
       |        |  +--ro unknown-attribute* (attr-type)
       |        |     +--ro optional?     boolean
       |        |     +--ro transitive?   boolean
       |        |     +--ro partial?      boolean
       |        |     +--ro extended?     boolean
       |        |     +--ro attr-type     uint8
       |        |     +--ro attr-len?     uint16
       |        |     +--ro attr-value?   binary
       |        +--ro reject-reason?             union
       +--ro neighbors
          +--ro neighbor* (neighbor-address)
             +--ro neighbor-address    inet:ip-address
             +--ro adj-rib-in-pre
             |  +--ro routes
             |  |  +--ro route* (nlri path-id)
             |  |     +--ro nlri
             |  |     |       yang:hex-string
             |  |     +--ro path-id                    uint32
             |  |     +--ro attr-index?                leafref
             |  |     +--ro community-index?           leafref
             |  |     +--ro ext-community-index?       leafref
             |  |     +--ro large-community-index?     leafref
             |  |     +--ro nlri-type?
             |  |     |       bgp-ls-topo-t:nlri-type
             |  |     +--ro protocol-id?
             |  |     |       bgp-ls-topo-t:protocol
             |  |     +--ro identifier?                uint64
             |  |     +--ro route-distinguisher?
             |  |     |       ietf-rt-t:route-distinguisher
             |  |     +--ro local-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro remote-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro link-descriptors
             |  |     |  +--ro link-local-identifier?    uint32
             |  |     |  +--ro link-remote-identifier?   uint32
             |  |     |  +--ro ipv4-interface-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv4-neighbor-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv6-interface-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro ipv6-neighbor-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro multi-topology-id?        uint16
             |  |     +--ro prefix-descriptors
             |  |     |  +--ro multi-topology-id?             uint16
             |  |     |  +--ro ospf-route-type?
             |  |     |  |       bgp-ls-topo-t:ospf-route-type
             |  |     |  +--ro ip-reachability-information?
             |  |     |          inet:ip-prefix
             |  |     +--ro ls-attribute?
             |  |     |       yang:hex-string
             |  |     +--ro sequence-number?           uint64
             |  |     +--ro last-modified?             yang:timeticks
             |  |     +--ro eligible-route?            boolean
             |  |     +--ro ineligible-reason?         identityref
             |  |     +--ro unknown-attributes
             |  |     |  +--ro unknown-attribute* (attr-type)
             |  |     |     +--ro optional?     boolean
             |  |     |     +--ro transitive?   boolean
             |  |     |     +--ro partial?      boolean
             |  |     |     +--ro extended?     boolean
             |  |     |     +--ro attr-type     uint8
             |  |     |     +--ro attr-len?     uint16
             |  |     |     +--ro attr-value?   binary
             |  |     +--ro reject-reason?             union
             |  +--ro clear-routes {ibt:clear-routes}?
             |     +---x clear
             |        +---w input
             |        |  +---w clear-at?   yang:date-and-time
             |        +--ro output
             |           +--ro clear-finished-at?
             |                   yang:date-and-time
             +--ro adj-rib-in-post
             |  +--ro routes
             |  |  +--ro route* (nlri path-id)
             |  |     +--ro nlri
             |  |     |       yang:hex-string
             |  |     +--ro path-id                    uint32
             |  |     +--ro attr-index?                leafref
             |  |     +--ro community-index?           leafref
             |  |     +--ro ext-community-index?       leafref
             |  |     +--ro large-community-index?     leafref
             |  |     +--ro nlri-type?
             |  |     |       bgp-ls-topo-t:nlri-type
             |  |     +--ro protocol-id?
             |  |     |       bgp-ls-topo-t:protocol
             |  |     +--ro identifier?                uint64
             |  |     +--ro route-distinguisher?
             |  |     |       ietf-rt-t:route-distinguisher
             |  |     +--ro local-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro remote-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro link-descriptors
             |  |     |  +--ro link-local-identifier?    uint32
             |  |     |  +--ro link-remote-identifier?   uint32
             |  |     |  +--ro ipv4-interface-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv4-neighbor-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv6-interface-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro ipv6-neighbor-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro multi-topology-id?        uint16
             |  |     +--ro prefix-descriptors
             |  |     |  +--ro multi-topology-id?             uint16
             |  |     |  +--ro ospf-route-type?
             |  |     |  |       bgp-ls-topo-t:ospf-route-type
             |  |     |  +--ro ip-reachability-information?
             |  |     |          inet:ip-prefix
             |  |     +--ro ls-attribute?
             |  |     |       yang:hex-string
             |  |     +--ro sequence-number?           uint64
             |  |     +--ro last-modified?             yang:timeticks
             |  |     +--ro eligible-route?            boolean
             |  |     +--ro ineligible-reason?         identityref
             |  |     +--ro unknown-attributes
             |  |     |  +--ro unknown-attribute* (attr-type)
             |  |     |     +--ro optional?     boolean
             |  |     |     +--ro transitive?   boolean
             |  |     |     +--ro partial?      boolean
             |  |     |     +--ro extended?     boolean
             |  |     |     +--ro attr-type     uint8
             |  |     |     +--ro attr-len?     uint16
             |  |     |     +--ro attr-value?   binary
             |  |     +--ro reject-reason?             union
             |  |     +--ro best-path?                 boolean
             |  +--ro clear-routes {ibt:clear-routes}?
             |     +---x clear
             |        +---w input
             |        |  +---w clear-at?   yang:date-and-time
             |        +--ro output
             |           +--ro clear-finished-at?
             |                   yang:date-and-time
             +--ro adj-rib-out-pre
             |  +--ro routes
             |  |  +--ro route* (nlri path-id)
             |  |     +--ro nlri
             |  |     |       yang:hex-string
             |  |     +--ro path-id                    uint32
             |  |     +--ro attr-index?                leafref
             |  |     +--ro community-index?           leafref
             |  |     +--ro ext-community-index?       leafref
             |  |     +--ro large-community-index?     leafref
             |  |     +--ro nlri-type?
             |  |     |       bgp-ls-topo-t:nlri-type
             |  |     +--ro protocol-id?
             |  |     |       bgp-ls-topo-t:protocol
             |  |     +--ro identifier?                uint64
             |  |     +--ro route-distinguisher?
             |  |     |       ietf-rt-t:route-distinguisher
             |  |     +--ro local-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro remote-node-descriptors
             |  |     |  +--ro as?
             |  |     |  |       inet:as-number
             |  |     |  x--ro bgp-ls-identifier?       uint32
             |  |     |  +--ro area-id?
             |  |     |  |       ietf-ospf-t:area-id-type
             |  |     |  +--ro (igp-router-id)?
             |  |     |  |  +--:(isis)
             |  |     |  |  |  +--ro system-id?
             |  |     |  |  |  |       ietf-isis-t:system-id
             |  |     |  |  |  +--ro psn-id?            uint8
             |  |     |  |  +--:(ospf)
             |  |     |  |  |  +--ro router-id?
             |  |     |  |  |  |       ietf-rt-t:router-id
             |  |     |  |  |  +--ro dr-identifier?
             |  |     |  |  |  |       inet:ipv4-address
             |  |     |  |  |  +--ro dr-interface-id?   uint32
             |  |     |  |  +--:(direct-or-static)
             |  |     |  |     +--ro router-address?
             |  |     |  |             inet:ip-address
             |  |     |  +--ro bgp-router-id?
             |  |     |  |       yang:dotted-quad
             |  |     |  +--ro member-as?
             |  |     |          inet:as-number
             |  |     +--ro link-descriptors
             |  |     |  +--ro link-local-identifier?    uint32
             |  |     |  +--ro link-remote-identifier?   uint32
             |  |     |  +--ro ipv4-interface-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv4-neighbor-address?
             |  |     |  |       inet:ipv4-address
             |  |     |  +--ro ipv6-interface-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro ipv6-neighbor-address?
             |  |     |  |       inet:ipv6-address
             |  |     |  +--ro multi-topology-id?        uint16
             |  |     +--ro prefix-descriptors
             |  |     |  +--ro multi-topology-id?             uint16
             |  |     |  +--ro ospf-route-type?
             |  |     |  |       bgp-ls-topo-t:ospf-route-type
             |  |     |  +--ro ip-reachability-information?
             |  |     |          inet:ip-prefix
             |  |     +--ro ls-attribute?
             |  |     |       yang:hex-string
             |  |     +--ro sequence-number?           uint64
             |  |     +--ro last-modified?             yang:timeticks
             |  |     +--ro eligible-route?            boolean
             |  |     +--ro ineligible-reason?         identityref
             |  |     +--ro unknown-attributes
             |  |     |  +--ro unknown-attribute* (attr-type)
             |  |     |     +--ro optional?     boolean
             |  |     |     +--ro transitive?   boolean
             |  |     |     +--ro partial?      boolean
             |  |     |     +--ro extended?     boolean
             |  |     |     +--ro attr-type     uint8
             |  |     |     +--ro attr-len?     uint16
             |  |     |     +--ro attr-value?   binary
             |  |     +--ro reject-reason?             union
             |  +--ro clear-routes {ibt:clear-routes}?
             |     +---x clear
             |        +---w input
             |        |  +---w clear-at?   yang:date-and-time
             |        +--ro output
             |           +--ro clear-finished-at?
             |                   yang:date-and-time
             +--ro adj-rib-out-post
                +--ro routes
                |  +--ro route* (nlri path-id)
                |     +--ro nlri
                |     |       yang:hex-string
                |     +--ro path-id                    uint32
                |     +--ro attr-index?                leafref
                |     +--ro community-index?           leafref
                |     +--ro ext-community-index?       leafref
                |     +--ro large-community-index?     leafref
                |     +--ro nlri-type?
                |     |       bgp-ls-topo-t:nlri-type
                |     +--ro protocol-id?
                |     |       bgp-ls-topo-t:protocol
                |     +--ro identifier?                uint64
                |     +--ro route-distinguisher?
                |     |       ietf-rt-t:route-distinguisher
                |     +--ro local-node-descriptors
                |     |  +--ro as?
                |     |  |       inet:as-number
                |     |  x--ro bgp-ls-identifier?       uint32
                |     |  +--ro area-id?
                |     |  |       ietf-ospf-t:area-id-type
                |     |  +--ro (igp-router-id)?
                |     |  |  +--:(isis)
                |     |  |  |  +--ro system-id?
                |     |  |  |  |       ietf-isis-t:system-id
                |     |  |  |  +--ro psn-id?            uint8
                |     |  |  +--:(ospf)
                |     |  |  |  +--ro router-id?
                |     |  |  |  |       ietf-rt-t:router-id
                |     |  |  |  +--ro dr-identifier?
                |     |  |  |  |       inet:ipv4-address
                |     |  |  |  +--ro dr-interface-id?   uint32
                |     |  |  +--:(direct-or-static)
                |     |  |     +--ro router-address?
                |     |  |             inet:ip-address
                |     |  +--ro bgp-router-id?
                |     |  |       yang:dotted-quad
                |     |  +--ro member-as?
                |     |          inet:as-number
                |     +--ro remote-node-descriptors
                |     |  +--ro as?
                |     |  |       inet:as-number
                |     |  x--ro bgp-ls-identifier?       uint32
                |     |  +--ro area-id?
                |     |  |       ietf-ospf-t:area-id-type
                |     |  +--ro (igp-router-id)?
                |     |  |  +--:(isis)
                |     |  |  |  +--ro system-id?
                |     |  |  |  |       ietf-isis-t:system-id
                |     |  |  |  +--ro psn-id?            uint8
                |     |  |  +--:(ospf)
                |     |  |  |  +--ro router-id?
                |     |  |  |  |       ietf-rt-t:router-id
                |     |  |  |  +--ro dr-identifier?
                |     |  |  |  |       inet:ipv4-address
                |     |  |  |  +--ro dr-interface-id?   uint32
                |     |  |  +--:(direct-or-static)
                |     |  |     +--ro router-address?
                |     |  |             inet:ip-address
                |     |  +--ro bgp-router-id?
                |     |  |       yang:dotted-quad
                |     |  +--ro member-as?
                |     |          inet:as-number
                |     +--ro link-descriptors
                |     |  +--ro link-local-identifier?    uint32
                |     |  +--ro link-remote-identifier?   uint32
                |     |  +--ro ipv4-interface-address?
                |     |  |       inet:ipv4-address
                |     |  +--ro ipv4-neighbor-address?
                |     |  |       inet:ipv4-address
                |     |  +--ro ipv6-interface-address?
                |     |  |       inet:ipv6-address
                |     |  +--ro ipv6-neighbor-address?
                |     |  |       inet:ipv6-address
                |     |  +--ro multi-topology-id?        uint16
                |     +--ro prefix-descriptors
                |     |  +--ro multi-topology-id?             uint16
                |     |  +--ro ospf-route-type?
                |     |  |       bgp-ls-topo-t:ospf-route-type
                |     |  +--ro ip-reachability-information?
                |     |          inet:ip-prefix
                |     +--ro ls-attribute?
                |     |       yang:hex-string
                |     +--ro sequence-number?           uint64
                |     +--ro last-modified?             yang:timeticks
                |     +--ro eligible-route?            boolean
                |     +--ro ineligible-reason?         identityref
                |     +--ro unknown-attributes
                |     |  +--ro unknown-attribute* (attr-type)
                |     |     +--ro optional?     boolean
                |     |     +--ro transitive?   boolean
                |     |     +--ro partial?      boolean
                |     |     +--ro extended?     boolean
                |     |     +--ro attr-type     uint8
                |     |     +--ro attr-len?     uint16
                |     |     +--ro attr-value?   binary
                |     +--ro reject-reason?             union
                +--ro clear-routes {ibt:clear-routes}?
                   +---x clear
                      +---w input
                      |  +---w clear-at?   yang:date-and-time
                      +--ro output
                         +--ro clear-finished-at?
                                 yang:date-and-time

]]></artwork>
      </figure>
    </section>

    <section>
      <name>Examples</name>
      <t>The following examples illustrate the BGP-LS Link-State
      Database (LSDB) populated with NLRIs from different source
      protocols.  The data shown represents the
      <tt>bgp-ls-topology</tt> container defined in
      <tt>ietf-bgp-lsdb</tt>, which is augmented into the
      <tt>link-state</tt> presence container by
      <tt>ietf-bgp-ls</tt> at the path
      <tt>/rt:routing/rt:control-plane-protocols/
rt:control-plane-protocol/bgp:bgp/bgp:global/
bgp:afi-safis/bgp:afi-safi/ietf-bgp-ls:link-state</tt>.
      XML encoding follows <xref target="RFC7950"/>.</t>

      <section>
        <name>OSPFv2 Instance</name>
        <t>An OSPFv2 instance with one node (router-id
        192.0.2.1), one link (192.0.2.1 to 192.0.2.2),
        and one prefix (203.0.113.0/24).  Node and link
        attribute types are expressed as identityrefs
        from <tt>ietf-bgp-ls-topo-types</tt>.</t>

        <figure>
          <artwork type="xml"><![CDATA[
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"
 xmlns:bgp="urn:ietf:params:xml:ns:yang:ietf-bgp"
 xmlns:bgp-ls="urn:ietf:params:xml:ns:yang:ietf-bgp-ls"
 xmlns:t="urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types">
 <control-plane-protocols>
  <control-plane-protocol>
   <type>bgp:bgp</type>
   <name>example</name>
   <bgp:bgp>
    <bgp:global>
     <bgp:afi-safis>
      <bgp:afi-safi>
       <bgp:name>bgp-ls:bgp-ls</bgp:name>
       <bgp-ls:link-state>
        <bgp-ls-topology
         xmlns="urn:ietf:params:xml:ns:yang:ietf-bgp-ls">
         <instances>
          <instance>
           <vrf-name>default</vrf-name>
           <protocol>ospfv2</protocol>
           <identifier>0</identifier>
           <nodes>
            <ospf-node>
             <is-as-scoped>false</is-as-scoped>
             <area-id>0.0.0.0</area-id>
             <router-id>192.0.2.1</router-id>
             <dr-identifier>0.0.0.0</dr-identifier>
             <as>65001</as>
             <node-attributes>
              <node-attribute>
               <type>t:bgp-ls-topo-attr-local-ipv4-routerid</type>
               <local-ipv4-router-ids>
                <router-id>192.0.2.1</router-id>
               </local-ipv4-router-ids>
              </node-attribute>
             </node-attributes>
            </ospf-node>
           </nodes>
           <links>
            <ospf-link>
             <area-id>0.0.0.0</area-id>
             <as>65001</as>
             <local-router-id>192.0.2.1</local-router-id>
             <local-dr-identifier>0.0.0.0</local-dr-identifier>
             <remote-router-id>192.0.2.2</remote-router-id>
             <remote-dr-identifier>0.0.0.0</remote-dr-identifier>
             <local-id>1</local-id>
             <remote-id>2</remote-id>
             <local-ipv4-address>198.51.100.1</local-ipv4-address>
             <remote-ipv4-address>198.51.100.2</remote-ipv4-address>
             <multi-topology-id>0</multi-topology-id>
             <link-attributes>
              <link-attribute>
               <type>t:bgp-ls-topo-attr-igp-metric</type>
               <igp-metric><metric>10</metric></igp-metric>
              </link-attribute>
             </link-attributes>
            </ospf-link>
           </links>
           <prefixes>
            <ospf-prefix>
             <is-as-scoped>false</is-as-scoped>
             <area-id>0.0.0.0</area-id>
             <as>65001</as>
             <router-id>192.0.2.1</router-id>
             <dr-identifier>0.0.0.0</dr-identifier>
             <multi-topology-id>0</multi-topology-id>
             <route-type>intra-area</route-type>
             <prefix>203.0.113.0/24</prefix>
             <prefix-attributes>
              <prefix-attribute>
               <type>t:bgp-ls-topo-attr-prefix-metric</type>
               <prefix-metric><metric>10</metric></prefix-metric>
              </prefix-attribute>
             </prefix-attributes>
            </ospf-prefix>
           </prefixes>
          </instance>
         </instances>
        </bgp-ls-topology>
       </bgp-ls:link-state>
      </bgp:afi-safi>
     </bgp:afi-safis>
    </bgp:global>
   </bgp:bgp>
  </control-plane-protocol>
 </control-plane-protocols>
</routing>
]]></artwork>
        </figure>
      </section>

      <section>
        <name>OSPFv3 Instance</name>
        <t>An OSPFv3 instance with one node advertising an
        IPv6 router-id attribute, one link using
        <tt>0.0.0.0</tt> as the sentinel value for
        absent IPv4 link addresses (the link is
        IPv6-only), and one IPv6 prefix.</t>

        <figure>
          <artwork type="xml"><![CDATA[
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"
 xmlns:bgp="urn:ietf:params:xml:ns:yang:ietf-bgp"
 xmlns:bgp-ls="urn:ietf:params:xml:ns:yang:ietf-bgp-ls"
 xmlns:t="urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types">
 <control-plane-protocols>
  <control-plane-protocol>
   <type>bgp:bgp</type>
   <name>example</name>
   <bgp:bgp>
    <bgp:global>
     <bgp:afi-safis>
      <bgp:afi-safi>
       <bgp:name>bgp-ls:bgp-ls</bgp:name>
       <bgp-ls:link-state>
        <bgp-ls-topology
         xmlns="urn:ietf:params:xml:ns:yang:ietf-bgp-ls">
         <instances>
          <instance>
           <vrf-name>default</vrf-name>
           <protocol>ospfv3</protocol>
           <identifier>0</identifier>
           <nodes>
            <ospfv3-node>
             <is-as-scoped>false</is-as-scoped>
             <area-id>0.0.0.0</area-id>
             <router-id>192.0.2.1</router-id>
             <dr-identifier>0</dr-identifier>
             <as>65001</as>
             <node-attributes>
              <node-attribute>
               <type>t:bgp-ls-topo-attr-local-ipv6-routerid</type>
               <local-ipv6-router-ids>
                <router-id>2001:db8::1</router-id>
               </local-ipv6-router-ids>
              </node-attribute>
             </node-attributes>
            </ospfv3-node>
           </nodes>
           <links>
            <ospfv3-link>
             <area-id>0.0.0.0</area-id>
             <as>65001</as>
             <local-router-id>192.0.2.1</local-router-id>
             <local-dr-identifier>0</local-dr-identifier>
             <remote-router-id>192.0.2.2</remote-router-id>
             <remote-dr-identifier>0</remote-dr-identifier>
             <local-id>1</local-id>
             <remote-id>2</remote-id>
             <!-- 0.0.0.0 sentinel: IPv6-only link -->
             <local-ipv4-address>0.0.0.0</local-ipv4-address>
             <remote-ipv4-address>0.0.0.0</remote-ipv4-address>
             <local-ipv6-address>2001:db8::1</local-ipv6-address>
             <remote-ipv6-address>2001:db8::2</remote-ipv6-address>
             <multi-topology-id>0</multi-topology-id>
             <link-attributes>
              <link-attribute>
               <type>t:bgp-ls-topo-attr-igp-metric</type>
               <igp-metric><metric>10</metric></igp-metric>
              </link-attribute>
             </link-attributes>
            </ospfv3-link>
           </links>
           <prefixes>
            <ospfv3-prefix>
             <is-as-scoped>false</is-as-scoped>
             <area-id>0.0.0.0</area-id>
             <as>65001</as>
             <router-id>192.0.2.1</router-id>
             <dr-identifier>0</dr-identifier>
             <multi-topology-id>0</multi-topology-id>
             <route-type>intra-area</route-type>
             <prefix>2001:db8:1::/48</prefix>
            </ospfv3-prefix>
           </prefixes>
          </instance>
         </instances>
        </bgp-ls-topology>
       </bgp-ls:link-state>
      </bgp:afi-safi>
     </bgp:afi-safis>
    </bgp:global>
   </bgp:bgp>
  </control-plane-protocol>
 </control-plane-protocols>
</routing>
]]></artwork>
        </figure>
      </section>

      <section>
        <name>IS-IS Instance</name>
        <t>An IS-IS Level-1 instance with one node
        (system-id 0000.0000.0001), one link, and one
        prefix (10.1.0.0/24).  IPv6 link addresses use
        <tt>::</tt> as the sentinel value for absent
        IPv6 addresses (the link is IPv4-only).</t>

        <figure>
          <artwork type="xml"><![CDATA[
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"
 xmlns:bgp="urn:ietf:params:xml:ns:yang:ietf-bgp"
 xmlns:bgp-ls="urn:ietf:params:xml:ns:yang:ietf-bgp-ls"
 xmlns:t="urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types">
 <control-plane-protocols>
  <control-plane-protocol>
   <type>bgp:bgp</type>
   <name>example</name>
   <bgp:bgp>
    <bgp:global>
     <bgp:afi-safis>
      <bgp:afi-safi>
       <bgp:name>bgp-ls:bgp-ls</bgp:name>
       <bgp-ls:link-state>
        <bgp-ls-topology
         xmlns="urn:ietf:params:xml:ns:yang:ietf-bgp-ls">
         <instances>
          <instance>
           <vrf-name>default</vrf-name>
           <protocol>isis-l1</protocol>
           <identifier>0</identifier>
           <nodes>
            <isis-node>
             <system-id>0000.0000.0001</system-id>
             <psn-id>0</psn-id>
             <as>65001</as>
             <node-attributes>
              <node-attribute>
               <type>t:bgp-ls-topo-attr-local-ipv4-routerid</type>
               <local-ipv4-router-ids>
                <router-id>192.0.2.1</router-id>
               </local-ipv4-router-ids>
              </node-attribute>
             </node-attributes>
            </isis-node>
           </nodes>
           <links>
            <isis-link>
             <local-system-id>0000.0000.0001</local-system-id>
             <local-psn-id>0</local-psn-id>
             <local-as>65001</local-as>
             <remote-system-id>0000.0000.0002</remote-system-id>
             <remote-psn-id>0</remote-psn-id>
             <remote-as>65001</remote-as>
             <local-id>1</local-id>
             <remote-id>2</remote-id>
             <local-ipv4-address>198.51.100.1</local-ipv4-address>
             <remote-ipv4-address>198.51.100.2</remote-ipv4-address>
             <!-- :: sentinel: IPv4-only link -->
             <local-ipv6-address>::</local-ipv6-address>
             <remote-ipv6-address>::</remote-ipv6-address>
             <multi-topology-id>0</multi-topology-id>
             <link-attributes>
              <link-attribute>
               <type>t:bgp-ls-topo-attr-igp-metric</type>
               <igp-metric><metric>10</metric></igp-metric>
              </link-attribute>
             </link-attributes>
            </isis-link>
           </links>
           <prefixes>
            <isis-prefix>
             <system-id>0000.0000.0001</system-id>
             <psn-id>0</psn-id>
             <as>65001</as>
             <multi-topology-id>0</multi-topology-id>
             <prefix>10.1.0.0/24</prefix>
            </isis-prefix>
           </prefixes>
          </instance>
         </instances>
        </bgp-ls-topology>
       </bgp-ls:link-state>
      </bgp:afi-safi>
     </bgp:afi-safis>
    </bgp:global>
   </bgp:bgp>
  </control-plane-protocol>
 </control-plane-protocols>
</routing>
]]></artwork>
        </figure>
      </section>

      <section>
        <name>BGP Instance</name>
        <t>A BGP instance with one BGP-LS link (AS 65001
        router-id 192.0.2.1 to AS 65002 router-id
        192.0.2.2).  The link carries a BGP Peer
        Adjacency SID attribute (<tt>bgp-peer-sids</tt>)
        as defined in <tt>ietf-bgp-ls-topo-attr</tt>,
        demonstrating the new topology attribute
        submodule.  The BGP protocol does not define
        node or prefix NLRIs in this model.</t>

        <figure>
          <artwork type="xml"><![CDATA[
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"
 xmlns:bgp="urn:ietf:params:xml:ns:yang:ietf-bgp"
 xmlns:bgp-ls="urn:ietf:params:xml:ns:yang:ietf-bgp-ls"
 xmlns:t="urn:ietf:params:xml:ns:yang:ietf-bgp-ls-topo-types">
 <control-plane-protocols>
  <control-plane-protocol>
   <type>bgp:bgp</type>
   <name>example</name>
   <bgp:bgp>
    <bgp:global>
     <bgp:afi-safis>
      <bgp:afi-safi>
       <bgp:name>bgp-ls:bgp-ls</bgp:name>
       <bgp-ls:link-state>
        <bgp-ls-topology
         xmlns="urn:ietf:params:xml:ns:yang:ietf-bgp-ls">
         <instances>
          <instance>
           <vrf-name>default</vrf-name>
           <protocol>bgp</protocol>
           <identifier>0</identifier>
           <links>
            <bgp-link>
             <local-as>65001</local-as>
             <local-router-id>192.0.2.1</local-router-id>
             <remote-as>65002</remote-as>
             <remote-router-id>192.0.2.2</remote-router-id>
             <local-id>1</local-id>
             <remote-id>2</remote-id>
             <local-ipv4-address>198.51.100.1</local-ipv4-address>
             <remote-ipv4-address>198.51.100.2</remote-ipv4-address>
             <!-- :: sentinel: IPv4-only link -->
             <local-ipv6-address>::</local-ipv6-address>
             <remote-ipv6-address>::</remote-ipv6-address>
             <multi-topology-id>0</multi-topology-id>
             <link-attributes>
              <link-attribute>
               <type>t:bgp-ls-topo-attr-bgp-peer-adj-sid</type>
               <bgp-peer-sids>
                <bgp-peer-sid>
                 <label-index>100</label-index>
                 <format>label</format>
                 <!-- flags: 1 octet, all zeros -->
                 <flags>AA==</flags>
                 <weight>0</weight>
                </bgp-peer-sid>
               </bgp-peer-sids>
              </link-attribute>
             </link-attributes>
            </bgp-link>
           </links>
          </instance>
         </instances>
        </bgp-ls-topology>
       </bgp-ls:link-state>
      </bgp:afi-safi>
     </bgp:afi-safis>
    </bgp:global>
   </bgp:bgp>
  </control-plane-protocol>
 </control-plane-protocols>
</routing>
]]></artwork>
        </figure>
      </section>
    </section>

    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Baalajee S and Thanigaivel
      Manoharan for their review and comments on the model and the
      document.</t>
    </section>

    <section anchor="Contributors" numbered="false">
      <!-- [REPLACE/DELETE] a Contributors section is optional -->
      <name>Contributors</name>
      <t>Thanks to all of the contributors.</t>
      <!-- [CHECK] it is optional to add a <contact> record for some or all contributors -->
    </section>

 </back>
</rfc>
