diff --git a/experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-08.yang b/experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-26.yang similarity index 60% rename from experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-08.yang rename to experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-26.yang index 9c210f2b3..f2711a0d4 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-08.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-ospfv3-extended-lsa@2023-06-26.yang @@ -7,25 +7,27 @@ module ietf-ospfv3-extended-lsa { import ietf-routing-types { prefix "rt-types"; - reference "RFC 8294 - Common YANG Data Types for the - Routing Area"; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; } import ietf-inet-types { prefix "inet"; - reference "RFC 6991 - Common YANG Data Types"; + reference + "RFC 6991: Common YANG Data Types"; } import ietf-routing { prefix "rt"; - reference "RFC 8349 - A YANG Data Model for Routing - Management (NMDA Version)"; + reference + "RFC 8349: A YANG Data Model for Routing + Management (NMDA Version)"; } import ietf-ospf { prefix "ospf"; - reference "RFC 9129 - A YANG Data Model for OSPF - Protocol"; + reference + "RFC 9129: A YANG Data Model for OSPF Protocol"; } organization @@ -34,6 +36,7 @@ module ietf-ospfv3-extended-lsa { contact "WG Web: WG List: + Author: Acee Lindem Author: Sharmila Palani @@ -73,13 +76,12 @@ module ietf-ospfv3-extended-lsa { reference "RFC XXXX - YANG Model for OSPFv3 Extended LSAs"; - revision 2023-06-08 { + revision 2023-06-26 { description "Initial revision."; reference - "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; + "RFC XXXX: YANG Data Model for OSPFv3 Extended LSAs."; } - /* * OSPFv3 Extend LSA Type Identities */ @@ -87,55 +89,63 @@ module ietf-ospfv3-extended-lsa { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended Router LSA - Type 0xA021"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.1"; } identity ospfv3-e-network-lsa { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended Network LSA - Type 0xA022"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.2"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.2"; } identity ospfv3-e-summary-lsa-type { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended Summary LSA types"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.3 and Section 4.4"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.3 and Section 4.4"; } identity ospfv3-e-inter-area-prefix-lsa { base ospfv3-e-summary-lsa-type; description "OSPFv3 Extended Inter-area Prefix LSA - Type 0xA023"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.3"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.3"; } identity ospfv3-e-inter-area-router-lsa { base ospfv3-e-summary-lsa-type; description "OSPFv3 Extended Inter-area Router LSA - Type 0xA024"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.3"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.3"; } identity ospfv3-e-external-lsa-type { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended External LSA types"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.5 and Section 4.6"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.5 and Section 4.6"; } + identity ospfv3-e-as-external-lsa { base ospfv3-e-external-lsa-type; description "OSPFv3 Extended AS-External LSA - Type 0xC025"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.5"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.5"; } identity ospfv3-e-nssa-lsa { @@ -143,31 +153,35 @@ module ietf-ospfv3-extended-lsa { description "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - Type 0xA027"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.6"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.6"; } identity ospfv3-e-link-lsa { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended Link LSA - Type 0x8028"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.7"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.7"; } identity ospfv3-e-intra-area-prefix-lsa { base ospf:ospfv3-lsa-type; description "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.8"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.8"; } identity ospfv3-e-prefix-option { description "Base identity for OSPFv3 Prefix Options."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } identity nu-bit { @@ -175,16 +189,19 @@ module ietf-ospfv3-extended-lsa { description "When set, the prefix should be excluded from IPv6 unicast calculations."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } + identity la-bit { base ospfv3-e-prefix-option; description "When set, the prefix is actually an IPv6 interface address of the Advertising Router."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } identity p-bit { @@ -193,8 +210,9 @@ module ietf-ospfv3-extended-lsa { "When set, the NSSA area prefix should be translated to an AS External LSA and advertised by the translating NSSA Border Router."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } identity dn-bit { @@ -203,8 +221,9 @@ module ietf-ospfv3-extended-lsa { "When set, the inter-area-prefix LSA or AS-external LSA prefix has been advertised as an L3VPN prefix."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } identity n-bit { @@ -212,15 +231,17 @@ module ietf-ospfv3-extended-lsa { description "When set, the prefix is a host address that identifies the advertising router."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } identity ospfv3-e-external-prefix-option { description "Base identity for OSPFv3 External Prefix Options."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.6"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.6"; } identity e-bit { @@ -228,8 +249,9 @@ module ietf-ospfv3-extended-lsa { description "When set, the metric specified is a Type 2 external metric."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.6"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.6"; } grouping unknown-sub-tlv { @@ -237,10 +259,12 @@ module ietf-ospfv3-extended-lsa { "Unknown TLV grouping"; container unknown-sub-tlv { uses ospf:tlv; - description "Unknown External TLV Sub-TLV"; + description + "Unknown External TLV Sub-TLV"; } - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 6.3"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 6.3"; } grouping ospfv3-lsa-prefix { @@ -262,90 +286,30 @@ module ietf-ospfv3-extended-lsa { contain the identities for the OSPFv3 options that are set for the OSPFv3 prefix."; } - description "Prefix options."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.1"; + description + "Prefix options."; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.1"; } leaf prefix-length { type uint8 { range "0..128"; } - description "Prefix length."; - } - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3"; - } - - grouping ipv6-fwd-addr-sub-tlv { - container ipv6-fwd-addr-sub-tlv { - description - "IPv6 Forwarding Address Sub-TLV"; - leaf ipv6-fwd-addr-sub-tlv-length { - type uint16; - description - "IPv6 Forwarding Addrss Sub-TLV Length - 16 - for IPv6 address"; - } - leaf forwarding-address { - type inet:ipv6-address; - description - "Forwarding address"; - } - } - description - "IPv6 Forwarding Address Sub-TLV grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.10"; - } - - grouping ipv4-fwd-addr-sub-tlv { - container ipv4-fwd-addr-sub-tlv { - description - "IPv4 Forwarding Address Sub-TLV"; - leaf ipv4-fwd-addr-sub-tlv-length { - type uint16; - description - "IPv4 Forwarding Addrss Sub-TLV Length - 4 - for IPv4 address"; - } - leaf forwarding-address { - type inet:ipv4-address; - description - "Forwarding address"; - } - } - description - "IPv4 Forwarding Address Sub-TLV grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.11"; - } - - grouping route-tag-sub-tlv { - container route-tag-sub-tlv { description - "Route Tag Sub-TLV"; - leaf route-tag-sub-tlv-length { - type uint16; - description - "Route Tag Sub-TLV Length - 4 for 32-bit tag"; - } - leaf route-tag { - type uint32; - description - "Route Tag"; - } + "Prefix length."; } - description - "Route Tag Sub-TLV grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.12"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3"; } grouping external-prefix-tlv { container external-prefix-tlv { - description "External Prefix LSA TLV"; - leaf external-prefix-tlv-length { + description + "External Prefix LSA TLV"; + leaf length { type uint16; description "External Prefix TLV Length - Variable dependent @@ -356,32 +320,91 @@ module ietf-ospfv3-extended-lsa { type identityref { base ospfv3-e-external-prefix-option; } - description "OSPFv3 external-prefix TLV bits list."; + description + "OSPFv3 external-prefix TLV bits list."; } - description "External Prefix Flags"; + description + "External Prefix Flags"; } leaf metric { type rt-types:uint24; - description "External Prefix Metric"; + description + "External Prefix Metric"; } uses ospfv3-lsa-prefix; list sub-tlvs { - description "External Prefix TLV Sub-TLVs"; + description + "External Prefix TLV Sub-TLVs"; + container ipv6-fwd-addr-sub-tlv { + description + "IPv6 Forwarding address Sub-TLV for E-AS-External and + E-NSSA LSAs for the IPv6 address family."; + leaf length { + type uint16; + description + "IPv6 Forwarding Address Sub-TLV Length - 16 + for IPv6 address"; + } + leaf forwarding-address { + type inet:ipv6-address; + description + "IPv6 Forwarding Address"; + } + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.10"; + } + container ipv4-fwd-addr-sub-tlv { + description + "IPv4 Forwarding address Sub-TLV for E-AS-External and + E-NSSA LSAs for the IPv4 address family."; + leaf length { + type uint16; + description + "IPv4 Forwarding Address Sub-TLV Length - 4 + for IPv4 address"; + } + leaf forwarding-address { + type inet:ipv4-address; + description + "IPv4 Forwarding Address"; + } + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.11"; + } + container route-tag-sub-tlv { + description + "Route Tag Sub-TLV"; + leaf length { + type uint16; + description + "Route Tag Sub-TLV Length - 4 for 32-bit tag"; + } + leaf route-tag { + type uint32; + description + "Route Tag"; + } + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.12"; + } uses unknown-sub-tlv; - uses ipv6-fwd-addr-sub-tlv; - uses ipv4-fwd-addr-sub-tlv; - uses route-tag-sub-tlv; } } - description "External Prefix TLV Grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.6"; + description + "External Prefix TLV Grouping"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.6"; } grouping intra-area-prefix-tlv { container intra-prefix-tlv { - description "Intra-Area Prefix LSA TLV"; - leaf intra-prefix-tlv-length { + description + "Intra-Area Prefix LSA TLV"; + leaf length { type uint16; description "Intra-Area Prefix TLV Length - Variable dependent @@ -389,23 +412,28 @@ module ietf-ospfv3-extended-lsa { } leaf metric { type rt-types:uint24; - description "Intra-Area Prefix Metric"; + description + "Intra-Area Prefix Metric"; } uses ospfv3-lsa-prefix; list sub-tlvs { - description "Intra-Area Prefix TLV Sub-TLVs"; + description + "Intra-Area Prefix TLV Sub-TLVs"; uses unknown-sub-tlv; } } - description "Intra-Area Prefix TLV Grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.4"; + description + "Intra-Area Prefix TLV Grouping"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.4"; } grouping ipv6-link-local-tlv { container ipv6-link-local-tlv { - description "IPv6 Link-Local LSA TLV"; - leaf ipv6-link-local-tlv-length { + description + "IPv6 Link-Local LSA TLV"; + leaf length { type uint16; description "IPv6 Link-Local TLV Length - Variable dependent @@ -417,19 +445,23 @@ module ietf-ospfv3-extended-lsa { "IPv6 Link Local address"; } list sub-tlvs { - description "IPv6 Link Local TLV Sub-TLVs"; + description + "IPv6 Link Local TLV Sub-TLVs"; uses unknown-sub-tlv; } } - description "IPv6 Link-Local TLV Grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.8"; + description + "IPv6 Link-Local TLV Grouping"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.8"; } grouping ipv4-link-local-tlv { container ipv4-link-local-tlv { - description "IPv4 Link-Local LSA TLV"; - leaf ipv4-link-local-tlv-length { + description + "IPv4 Link-Local LSA TLV"; + leaf length { type uint16; description "IPv4 Link-Local TLV Length - Variable dependent @@ -441,69 +473,204 @@ module ietf-ospfv3-extended-lsa { "IPv4 Link Local address"; } list sub-tlvs { - description "IPv4 Link Local TLV Sub-TLVs"; + description + "IPv4 Link Local TLV Sub-TLVs"; uses unknown-sub-tlv; } } - description "IPv4 Link-Local TLV Grouping"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 3.9"; + description + "IPv4 Link-Local TLV Grouping"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 3.9"; } - grouping ospfv3-e-lsa-area { - description "Area scope OSPFv3 Extended LSAs."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4"; + /* Configuration */ + augment "/rt:routing/rt:control-plane-protocols" + + "/rt:control-plane-protocol/ospf:ospf" { + when "../rt:type = 'ospf:ospfv3'" { + description + "This augments the OSPFv3 routing protocol when used."; + } + description + "This augments the OSPFv3 protocol instance-level configuration + with Extended LSA support."; + leaf extended-lsa-support { + type boolean; + default false; + description + "Enable OSPFv3 Extended LSA Support for the OSPFv3 + domain"; + reference + "RFC 8362 - OSPFv3 Link State Advertisement (LSA) + Extensibility, Appendix B - ExtendedLSASupport"; + } + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { + when "../../../rt:type = 'ospf:ospfv3'" { + description + "This augments the OSPFv3 protocol area-level configuration + when used."; + } + description + "This augments the OSPFv3 protocol area-level + configuration with Extended LSA support."; + leaf extended-lsa-support { + type boolean; + must "derived-from(../ospf:area-type,'stub-nssa-area') or " + + "(current() = 'true') or " + + "(../../../extended-lsa-support = 'false')" { + description + "For regular areas, i.e., areas where AS-scoped LSAs + disabling AreaExtendedLSASupport for a regular + OSPFv3 area (not a Stub or NSSA area) when + ExtendedLSASupport is enabled is contradictory and + is prohibited."; + } + description + "Enable OSPFv3 Extended LSA Support for the OSPFv3 + area. If not specified, Extended LSA support status + is inherited from the instance level configuration."; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Appendix B - AreaExtendedLSASupport"; + } + } + /* + * Link State Database (LSDB) Augmentations + */ + augment "/rt:routing/" + + "rt:control-plane-protocols/rt:control-plane-protocol/" + + "ospf:ospf/ospf:areas/ospf:area/" + + "ospf:interfaces/ospf:interface/ospf:database/" + + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" + + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" + + "ospf:ospfv3/ospf:body" { + when "../../../../../../../../../../../" + + "rt:type = 'ospf:ospfv3'" { + description + "This augmentation is only valid for OSPFv3."; + } + description + "This augmentation adds OSPFv3 Link-Scoped Extended LSAs + to the operational state for an interface Link State + Database (LSDB)."; + + container e-link { + when "../../ospf:header/ospf:type = " + + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" { + description + "Only applies to Extended Link LSAs."; + } + description + "E-Link LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.7"; + leaf rtr-priority { + type uint8; + description + "Router Priority for the interface."; + } + uses ospf:ospfv3-lsa-options; + list e-link-tlvs { + description + "E-Link LSA TLVs"; + container unknown-tlv { + uses ospf:tlv; + description + "Unknown E-Link TLV"; + } + uses intra-area-prefix-tlv; + uses ipv6-link-local-tlv; + uses ipv4-link-local-tlv; + } + } + } + + augment "/rt:routing/" + + "rt:control-plane-protocols/rt:control-plane-protocol/" + + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + + "ospf:ospfv3/ospf:body" { + when "../../../../../../../../../" + + "rt:type = 'ospf:ospfv3'" { + description + "This augmentation is only valid for OSPFv3."; + } + description + "This augmentation adds OSPFv3 Area-Scoped Extended LSAs + to the operational state for an area Link State + Database (LSDB)."; + + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4"; container e-router { when "../../ospf:header/ospf:type = " + "'ospfv3-e-lsa:ospfv3-e-router-lsa'" { - description "Only valid for OSPFv3 Extended-Router LSAs"; + description + "Only valid for OSPFv3 Extended-Router LSAs"; } - description "OSPv3 Extended Router LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.1"; + description + "OSPv3 Extended Router LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.1"; uses ospf:ospf-router-lsa-bits; uses ospf:ospfv3-lsa-options; list e-router-tlvs { - description "E-Router LSA TLVs"; + description + "E-Router LSA TLVs"; container unknown-tlv { uses ospf:tlv; - description "Unknown E-Router TLV"; + description + "Unknown E-Router TLV"; } container link-tlv { - description "E-Router LSA TLV"; - leaf link-tlv-length { + description + "E-Router LSA TLV"; + leaf length { type uint16; description "Link TLV Length - Variable dependent on sub-TLVs"; } leaf interface-id { type uint32; - description "Interface ID for link"; + description + "Interface ID for link"; } leaf neighbor-interface-id { type uint32; - description "Neighbor's Interface ID for link"; + description + "Neighbor's Interface ID for link"; } leaf neighbor-router-id { type rt-types:router-id; - description "Neighbor's Router ID for link"; + description + "Neighbor's Router ID for link"; } leaf type { type ospf:router-link-type; - description "Link type: 1 - Point-to-Point Link - 2 - Transit Network Link - 3 - Stub Network Link Link - 4 - Virtual Link"; + description + "Link type: 1 - Point-to-Point Link + 2 - Transit Network Link + 3 - Stub Network Link Link + 4 - Virtual Link"; } leaf metric { type uint16; - description "Link Metric"; + description + "Link Metric"; } list sub-tlvs { - description "Link TLV Sub-TLVs"; + description + "Link TLV Sub-TLVs"; uses unknown-sub-tlv; } } @@ -516,19 +683,24 @@ module ietf-ospfv3-extended-lsa { description "Only applies to E-Network LSAs."; } - description "Extended Network LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.2"; + description + "Extended Network LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.2"; uses ospf:ospfv3-lsa-options; list e-network-tlvs { - description "E-Network LSA TLVs"; - container unknown--tlv { + description + "E-Network LSA TLVs"; + container unknown-tlv { uses ospf:tlv; - description "Unknown E-Network TLV"; + description + "Unknown E-Network TLV"; } container attached-router-tlv { - description "Attached Router TLV"; - leaf attached-router-tlv-length { + description + "Attached Router TLV"; + leaf length { type uint16; description "Attached Router TLV Length - Variable dependent @@ -536,34 +708,64 @@ module ietf-ospfv3-extended-lsa { } leaf-list Adjacent-neighbor-router-id { type rt-types:router-id; - description "Adjacent Neighbor's Router ID"; + description + "Adjacent Neighbor's Router ID"; } list sub-tlvs { - description "Attached Router TLV Sub-TLVs"; + description + "Attached Router TLV Sub-TLVs"; uses unknown-sub-tlv; } } } } + container e-nssa { + when "../../ospf:header/ospf:type = " + + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" { + description + "Only applies to E-NSSA LSAs."; + } + list e-external-tlvs { + description + "E-NSSA LSA TLVs"; + container unknown-tlv { + uses ospf:tlv; + description + "Unknown E-External TLV"; + } + uses external-prefix-tlv; + } + description + "E-NSSA LSA."; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.6"; + } + container e-inter-area-prefix { when "../../ospf:header/ospf:type = " + "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" { description "Only applies to E-Inter-Area-Prefix LSAs."; } - description "Extended Inter-Area Prefix LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.3"; + description + "Extended Inter-Area Prefix LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.3"; list e-inter-prefix-tlvs { - description "E-Inter-Area-Prefix LSA TLVs"; - container unknown--tlv { + description + "E-Inter-Area-Prefix LSA TLVs"; + container unknown-tlv { uses ospf:tlv; - description "Unknown E-Inter-Area-Prefix TLV"; + description + "Unknown E-Inter-Area-Prefix TLV"; } container inter-prefix-tlv { - description "Unknown E-Inter-Area-Prefix LSA TLV"; - leaf inter-prefix-tlv-length { + description + "Unknown E-Inter-Area-Prefix LSA TLV"; + leaf length { type uint16; description "Inter-Area-Prefix TLV Length - Variable dependent @@ -571,11 +773,13 @@ module ietf-ospfv3-extended-lsa { } leaf metric { type rt-types:uint24; - description "Inter-Area Prefix Metric"; + description + "Inter-Area Prefix Metric"; } uses ospfv3-lsa-prefix; list sub-tlvs { - description "Inter-Area Prefix TLV Sub-TLVs"; + description + "Inter-Area Prefix TLV Sub-TLVs"; uses unknown-sub-tlv; } } @@ -588,18 +792,23 @@ module ietf-ospfv3-extended-lsa { description "Only applies to E-Inter-Area-Router LSAs."; } - description "Extended Inter-Area Router LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.4"; + description + "Extended Inter-Area Router LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.4"; list e-inter-router-tlvs { - description "E-Inter-Area-Router LSA TLVs"; + description + "E-Inter-Area-Router LSA TLVs"; container unknown-tlv { uses ospf:tlv; - description "Unknown E-Inter-Area-Router TLV"; + description + "Unknown E-Inter-Area-Router TLV"; } container inter-router-tlv { - description "Unknown E-Inter-Area-Router LSA TLV"; - leaf inter-router-tlv-length { + description + "Unknown E-Inter-Area-Router LSA TLV"; + leaf length { type uint16; description "Inter-Area-Router TLV Length - Variable dependent @@ -609,14 +818,17 @@ module ietf-ospfv3-extended-lsa { uses ospf:ospfv3-lsa-options; leaf metric { type rt-types:uint24; - description "Inter-Area Router Metric"; + description + "Inter-Area Router Metric"; } leaf destination-router-id { type rt-types:router-id; - description "Destination Router ID"; + description + "Destination Router ID"; } list sub-tlvs { - description "Inter-Area Router TLV Sub-TLVs"; + description + "Inter-Area Router TLV Sub-TLVs"; uses unknown-sub-tlv; } } @@ -629,12 +841,15 @@ module ietf-ospfv3-extended-lsa { description "Only applies to E-Intra-Area-Prefix LSAs."; } - description "E-Intra-Area-Prefix LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.8"; + description + "E-Intra-Area-Prefix LSA"; + reference + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.8"; leaf referenced-ls-type { type uint16; - description "Referenced Link State type"; + description + "Referenced Link State type"; } leaf referenced-link-state-id { type uint32; @@ -647,18 +862,34 @@ module ietf-ospfv3-extended-lsa { "Referenced Advertising Router"; } list e-intra-prefix-tlvs { - description "E-Intra-Area-Prefix LSA TLVs"; + description + "E-Intra-Area-Prefix LSA TLVs"; container unknown-tlv { uses ospf:tlv; - description "Unknown E-Intra-Area-Prefix TLV"; + description + "Unknown E-Intra-Area-Prefix TLV"; } uses intra-area-prefix-tlv; } } } - grouping ospfv3-e-lsa-as { - description "AS scope OSPFv3 Extended LSAs."; + augment "/rt:routing/" + + "rt:control-plane-protocols/rt:control-plane-protocol/" + + "ospf:ospf/ospf:database/" + + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" + + "ospf:ospfv3/ospf:body" { + when "../../../../../../../" + + "rt:type = 'ospf:ospfv3'" { + description + "This augmentation is only valid for OSPFv3."; + } + description + "This augmentation adds OSPFv3 AS-Scoped Extended LSAs + to the operational state for an AS instance-level Link + State Database (LSDB)."; + container e-as-external { when "../../ospf:header/ospf:type = " + "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" { @@ -666,173 +897,20 @@ module ietf-ospfv3-extended-lsa { "Only applies to E-AS-external LSAs."; } list e-external-tlvs { - description "E-External LSA TLVs"; - container unknown-tlv { - uses ospf:tlv; - description "Unknown E-External TLV"; - } - uses external-prefix-tlv; - } - description "E-AS-External LSA."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.5"; - } - - container e-nssa { - when "../../ospf:header/ospf:type = " - + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" { description - "Only applies to E-NSSA LSAs."; - } - list e-external-tlvs { - description "E-NSSA LSA TLVs"; + "E-External LSA TLVs"; container unknown-tlv { uses ospf:tlv; - description "Unknown E-External TLV"; + description + "Unknown E-External TLV"; } uses external-prefix-tlv; } - description "E-NSSA LSA."; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.6"; - } - } - - grouping ospfv3-e-lsa-link { - description "Link scope OSPFv3 Extended LSAs."; - container e-link { - when "../../ospf:header/ospf:type = " - + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" { - description - "Only applies to Extended Link LSAs."; - } - description "E-Link LSA"; - reference "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Section 4.7"; - leaf rtr-priority { - type uint8; - description "Router Priority for the interface."; - } - uses ospf:ospfv3-lsa-options; - list e-link-tlvs { - description "E-Link LSA TLVs"; - container unknown-tlv { - uses ospf:tlv; - description "Unknown E-Link TLV"; - } - uses intra-area-prefix-tlv; - uses ipv6-link-local-tlv; - uses ipv4-link-local-tlv; - } - } - } - - /* Configuration */ - augment "/rt:routing/rt:control-plane-protocols" - + "/rt:control-plane-protocol/ospf:ospf" { - when "../rt:type = 'ospf:ospfv3'" { - description - "This augments the OSPFv3 routing protocol when used."; - } - description - "This augments the OSPFv3 protocol configuration - with extended LSA support."; - leaf extended-lsa-support { - type boolean; - default false; - description - "Enable OSPFv3 Extended LSA Support for the OSPFv3 - domain"; - reference - "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Appendix B - ExtendedLSASupport"; - } - } - - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { - when "../../../rt:type = 'ospf:ospfv3'" { - description - "This augments the OSPFv3 area configuration - when used."; - } - description - "This augments the OSPFv3 protocol area - configuration with extended LSA support."; - leaf extended-lsa-support { - type boolean; - must "derived-from(../ospf:area-type,'stub-nssa-area') or " - + "(current() = 'true') or " - + "(../../../extended-lsa-support = 'false')" { - description - "For regular areas, i.e., areas where AS-scoped LSAs - disabling AreaExtendedLSASupport for a regular - OSPFv3 area (not a Stub or NSSA area) when - ExtendedLSASupport is enabled is contradictory and - is prohibited."; - } description - "Enable OSPFv3 Extended LSA Support for the OSPFv3 - area. If not specified, Extended LSA support status - is inherited from the instance level configuration."; + "E-AS-External LSA."; reference - "RFC 8362 - OSPFv3 Link State Advertisement (LSA) - Extensibility, Appendix B - AreaExtendedLSASupport"; - } - } - - /* - * Link State Database (LSDB) Augmentations - */ - augment "/rt:routing/" - + "rt:control-plane-protocols/rt:control-plane-protocol/" - + "ospf:ospf/ospf:areas/ospf:area/" - + "ospf:interfaces/ospf:interface/ospf:database/" - + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" - + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" - + "ospf:ospfv3/ospf:body" { - when "../../../../../../../../../../../" - + "rt:type = 'ospf:ospfv3'" { - description - "This augmentation is only valid for OSPFv3."; - } - description - "OSPFv3 Link-Scoped Extended LSAs"; - - uses ospfv3-e-lsa-link; - } - - augment "/rt:routing/" - + "rt:control-plane-protocols/rt:control-plane-protocol/" - + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" - + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" - + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" - + "ospf:ospfv3/ospf:body" { - when "../../../../../../../../../" - + "rt:type = 'ospf:ospfv3'" { - description - "This augmentation is only valid for OSPFv3."; - } - description - "OSPFv3 Area-Scoped Extended LSAs"; - - uses ospfv3-e-lsa-area; - } - - augment "/rt:routing/" - + "rt:control-plane-protocols/rt:control-plane-protocol/" - + "ospf:ospf/ospf:database/" - + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" - + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" - + "ospf:ospfv3/ospf:body" { - when "../../../../../../../" - + "rt:type = 'ospf:ospfv3'" { - description - "This augmentation is only valid for OSPFv3."; + "RFC 8362: OSPFv3 Link State Advertisement (LSA) + Extensibility, Section 4.5"; } - description - "OSPFv3 AS-Scoped Extended LSAs"; - - uses ospfv3-e-lsa-as; } }