| < draft-ietf-lsr-ospfv3-extended-lsa-yang-03.txt | draft-ietf-lsr-ospfv3-extended-lsa-yang-04.txt > | |||
|---|---|---|---|---|
| Internet A. Lindem | Internet A. Lindem | |||
| Internet-Draft S. Palani | Internet-Draft S. Palani | |||
| Intended status: Standards Track Cisco Systems | Intended status: Standards Track Cisco Systems | |||
| Expires: February 8, 2021 Y. Qu | Expires: February 13, 2021 Y. Qu | |||
| Futurewei | Futurewei | |||
| August 7, 2020 | August 12, 2020 | |||
| YANG Model for OSPFv3 Extended LSAs | YANG Model for OSPFv3 Extended LSAs | |||
| draft-ietf-lsr-ospfv3-extended-lsa-yang-03 | draft-ietf-lsr-ospfv3-extended-lsa-yang-04 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model augmenting the IETF OSPF YANG | This document defines a YANG data model augmenting the IETF OSPF YANG | |||
| model to provide support for OSPFv3 Link State Advertisement (LSA) | model to provide support for OSPFv3 Link State Advertisement (LSA) | |||
| Extensibility as defined in RFC 8362. OSPFv3 Extended LSAs provide | Extensibility as defined in RFC 8362. OSPFv3 Extended LSAs provide | |||
| extensible TLV-based LSAs for the base LSA types defined in RFC 5340. | extensible TLV-based LSAs for the base LSA types defined in RFC 5340. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 8, 2021. | This Internet-Draft will expire on February 13, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | |||
| 2. OSPFv3 Extended LSAs . . . . . . . . . . . . . . . . . . . . 2 | 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 7 | 3. OSPFv3 Extended LSAs . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | 4. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 7 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 24 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 26 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 24 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 26 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] [RFC7950] is a data definition language used to define | YANG [RFC6020] [RFC7950] is a data definition language used to define | |||
| the contents of a conceptual data store that allows networked devices | the contents of a conceptual data store that allows networked devices | |||
| to be managed using NETCONF [RFC6241]. YANG is proving relevant | to be managed using NETCONF [RFC6241]. YANG is proving relevant | |||
| beyond its initial confines, as bindings to other interfaces (e.g., | beyond its initial confines, as bindings to other interfaces (e.g., | |||
| ReST) and encodings other than XML (e.g., JSON) are being defined. | ReST) and encodings other than XML (e.g., JSON) are being defined. | |||
| Furthermore, YANG data models can be used as the basis for | Furthermore, YANG data models can be used as the basis for | |||
| implementation of other interfaces, such as CLI and programmatic | implementation of other interfaces, such as CLI and programmatic | |||
| APIs. | APIs. | |||
| This document defines a YANG data model augmenting the IETF OSPF YANG | This document defines a YANG data model augmenting the IETF OSPF YANG | |||
| model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to | model [I-D.ietf-ospf-yang], which itself augments [RFC8349], to | |||
| provide support for configuration and operational state for OSPFv3 | provide support for configuration and operational state for OSPFv3 | |||
| Extended LSAs as defined in [RFC8362]. | Extended LSAs as defined in [RFC8362]. | |||
| The YANG modules in this document conform to the Network Management | ||||
| Datastore Architecture (NMDA) [RFC8342]. | ||||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119] [RFC8174]. | |||
| 2. OSPFv3 Extended LSAs | 2. Tree Diagrams | |||
| This document uses the graphical representation of data models | ||||
| defined in [RFC8340]. | ||||
| 3. OSPFv3 Extended LSAs | ||||
| This document defines a model for the OSPFv3 Extended LSA feature. | This document defines a model for the OSPFv3 Extended LSA feature. | |||
| It is an augmentation of the OSPF base model provided support for | It is an augmentation of the OSPF base model provided support for | |||
| OSPFv3 Link State Advertisement (LSA) Extensibility [RFC8362]. | OSPFv3 Link State Advertisement (LSA) Extensibility [RFC8362]. | |||
| OSPFv3 Extended LSAs provide extensible TLV-based LSAs for the base | OSPFv3 Extended LSAs provide extensible TLV-based LSAs for the base | |||
| LSA types defined in [RFC5340]. | LSA types defined in [RFC5340]. | |||
| The OSPFv3 Extended LSA YANG module requires support for the OSPF | The OSPFv3 Extended LSA YANG module requires support for the OSPF | |||
| base model[I-D.ietf-ospf-yang] which defines basic OSPF configuration | base model[I-D.ietf-ospf-yang] which defines basic OSPF configuration | |||
| and state. The OSPF YANG model augments the ietf-routing YANG model | and state. The OSPF YANG model augments the ietf-routing YANG model | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 7, line 43 ¶ | |||
| +--ro ipv6-fwd-addr-sub-tlv | +--ro ipv6-fwd-addr-sub-tlv | |||
| | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | |||
| | +--ro forwarding-address? inet:ipv6-address | | +--ro forwarding-address? inet:ipv6-address | |||
| +--ro ipv4-fwd-addr-sub-tlv | +--ro ipv4-fwd-addr-sub-tlv | |||
| | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | |||
| | +--ro forwarding-address? inet:ipv4-address | | +--ro forwarding-address? inet:ipv4-address | |||
| +--ro route-tag-sub-tlv | +--ro route-tag-sub-tlv | |||
| +--ro route-tag-sub-tlv-length? uint16 | +--ro route-tag-sub-tlv-length? uint16 | |||
| +--ro route-tag? uint32 | +--ro route-tag? uint32 | |||
| 3. OSPFv3 Extended LSA Yang Module | 4. OSPFv3 Extended LSA Yang Module | |||
| <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2020-08-05.yang" | The following RFCs and drafts are not referenced in the document text | |||
| module ietf-ospfv3-extended-lsa { | but are referenced in the ietf-ospfv3-extended-lsa.yang module: | |||
| yang-version 1.1; | [RFC6991], [RFC8294]. | |||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; | ||||
| prefix ospfv3-e-lsa; | <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2020-08-12.yang" | |||
| module ietf-ospfv3-extended-lsa { | ||||
| yang-version 1.1; | ||||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; | ||||
| import ietf-routing-types { | prefix ospfv3-e-lsa; | |||
| prefix "rt-types"; | ||||
| } | ||||
| import ietf-inet-types { | import ietf-routing-types { | |||
| prefix "inet"; | prefix "rt-types"; | |||
| reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 8294 - Common YANG Data Types for the | |||
| } | Routing Area"; | |||
| } | ||||
| import ietf-routing { | import ietf-inet-types { | |||
| prefix "rt"; | prefix "inet"; | |||
| reference "RFC 8349 - A YANG Data Model for Routing | reference "RFC 6991 - Common YANG Data Types"; | |||
| Management (NMDA Version)"; | } | |||
| } | ||||
| import ietf-ospf { | import ietf-routing { | |||
| prefix "ospf"; | prefix "rt"; | |||
| reference "RFC XXXX - A YANG Data Model for OSPF | reference "RFC 8349 - A YANG Data Model for Routing | |||
| Protocol"; | Management (NMDA Version)"; | |||
| } | } | |||
| organization | import ietf-ospf { | |||
| "IETF LSR - Link State Routing Working Group"; | prefix "ospf"; | |||
| reference "RFC YYYY - A YANG Data Model for OSPF | ||||
| Protocol"; | ||||
| } | ||||
| contact | organization | |||
| "WG Web: <http://tools.ietf.org/wg/lsr/> | "IETF LSR - Link State Routing Working Group"; | |||
| WG List: <mailto:lsr@ietf.org> | ||||
| Author: Acee Lindem | contact | |||
| <mailto:acee@cisco.com> | "WG Web: <http://tools.ietf.org/wg/lsr/> | |||
| Author: Sharmila Palani | WG List: <mailto:lsr@ietf.org> | |||
| <mailto:shpalani@cisco.com> | ||||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@futurewei.com>"; | ||||
| description | Author: Acee Lindem | |||
| "This YANG module defines the configuration | <mailto:acee@cisco.com> | |||
| and operational state for OSPFv3 Extended LSAs, which is | Author: Sharmila Palani | |||
| common across all of the vendor implementations. | <mailto:shpalani@cisco.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@futurewei.com>"; | ||||
| This YANG model conforms to the Network Management | description | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | "This YANG module defines the configuration | |||
| and operational state for OSPFv3 Extended LSAs, which is | ||||
| common across all of the vendor implementations. | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as | This YANG model conforms to the Network Management | |||
| authors of the code. All rights reserved. | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| Redistribution and use in source and binary forms, with or | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| without modification, is permitted pursuant to, and subject | authors of the code. All rights reserved. | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; | Redistribution and use in source and binary forms, with or | |||
| see the RFC itself for full legal notices. | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC XXXX; | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | see the RFC itself for full legal notices."; | |||
| '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."; | ||||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2020-08-05 { | revision 2020-08-12 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; | "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; | |||
| } | } | |||
| /* | /* | |||
| * OSPFv3 Extend LSA Type Identities | * OSPFv3 Extend LSA Type Identities | |||
| */ | */ | |||
| identity ospfv3-e-router-lsa { | identity ospfv3-e-router-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Router LSA - Type 0xA021"; | "OSPFv3 Extended Router LSA - Type 0xA021"; | |||
| } | } | |||
| identity ospfv3-e-network-lsa { | identity ospfv3-e-network-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Network LSA - Type 0xA022"; | "OSPFv3 Extended Network LSA - Type 0xA022"; | |||
| } | } | |||
| identity ospfv3-e-summary-lsa-type { | identity ospfv3-e-summary-lsa-type { | |||
| base ospf:ospfv3-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Summary LSA types"; | "OSPFv3 Extended Summary LSA types"; | |||
| } | } | |||
| identity ospfv3-e-inter-area-prefix-lsa { | identity ospfv3-e-inter-area-prefix-lsa { | |||
| base ospfv3-e-summary-lsa-type; | base ospfv3-e-summary-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Inter-area Prefix LSA - Type 0xA023"; | "OSPFv3 Extended Inter-area Prefix LSA - Type 0xA023"; | |||
| } | } | |||
| identity ospfv3-e-inter-area-router-lsa { | identity ospfv3-e-inter-area-router-lsa { | |||
| base ospfv3-e-summary-lsa-type; | base ospfv3-e-summary-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Inter-area Router LSA - Type 0xA024"; | "OSPFv3 Extended Inter-area Router LSA - Type 0xA024"; | |||
| } | ||||
| } | identity ospfv3-e-external-lsa-type { | |||
| base ospf:ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Extended External LSA types"; | ||||
| } | ||||
| identity ospfv3-e-external-lsa-type { | identity ospfv3-e-as-external-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospfv3-e-external-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended External LSA types"; | "OSPFv3 Extended AS-External LSA - Type 0xC025"; | |||
| } | } | |||
| identity ospfv3-e-as-external-lsa { | identity ospfv3-e-nssa-lsa { | |||
| base ospfv3-e-external-lsa-type; | base ospfv3-e-external-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended AS-External LSA - Type 0xC025"; | "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - | |||
| } | Type 0xA027"; | |||
| } | ||||
| identity ospfv3-e-nssa-lsa { | identity ospfv3-e-link-lsa { | |||
| base ospfv3-e-external-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - | "OSPFv3 Extended Link LSA - Type 0x8028"; | |||
| Type 0xA027"; | } | |||
| } | ||||
| identity ospfv3-e-link-lsa { | identity ospfv3-e-intra-area-prefix-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Link LSA - Type 0x8028"; | "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; | |||
| } | } | |||
| identity ospfv3-e-intra-area-prefix-lsa { | identity ospfv3-e-prefix-option { | |||
| base ospf:ospfv3-lsa-type; | description | |||
| description | "Base identity for OSPFv3 Prefix Options."; | |||
| "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; | } | |||
| } | ||||
| identity ospfv3-e-prefix-option { | identity nu-bit { | |||
| description | base ospfv3-e-prefix-option; | |||
| "Base identity for OSPFv3 Prefix Options."; | description | |||
| } | "When set, the prefix should be excluded | |||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| identity nu-bit { | identity la-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the prefix should be excluded | "When set, the prefix is actually an IPv6 interface | |||
| from IPv6 unicast calculations."; | address of the Advertising Router."; | |||
| } | } | |||
| identity la-bit { | identity p-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the prefix is actually an IPv6 interface | "When set, the NSSA area prefix should be | |||
| address of the Advertising Router."; | translated to an AS External LSA and advertised | |||
| } | by the translating NSSA Border Router."; | |||
| } | ||||
| identity p-bit { | identity dn-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the NSSA area prefix should be | "When set, the inter-area-prefix LSA or | |||
| translated to an AS External LSA and advertised | AS-external LSA prefix has been advertised as an | |||
| by the translating NSSA Border Router."; | L3VPN prefix."; | |||
| } | } | |||
| identity dn-bit { | identity n-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the inter-area-prefix LSA or | "When set, the prefix is a host address that identifies | |||
| AS-external LSA prefix has been advertised as an | the advertising router."; | |||
| L3VPN prefix."; | } | |||
| } | ||||
| identity n-bit { | identity ospfv3-e-external-prefix-option { | |||
| base ospfv3-e-prefix-option; | description | |||
| description | "Base identity for OSPFv3 External Prefix Options."; | |||
| "When set, the prefix is a host address that identifies | } | |||
| the advertising router."; | ||||
| } | ||||
| identity ospfv3-e-external-prefix-option { | identity e-bit { | |||
| description | base ospfv3-e-external-prefix-option; | |||
| "Base identity for OSPFv3 External Prefix Options."; | description | |||
| } | "When set, the metric specified is a Type 2 | |||
| external metric."; | ||||
| } | ||||
| identity e-bit { | grouping unknown-sub-tlv { | |||
| base ospfv3-e-external-prefix-option; | description | |||
| description | "Unknown TLV grouping"; | |||
| "When set, the metric specified is a Type 2 | container unknown-sub-tlv { | |||
| external metric."; | uses ospf:tlv; | |||
| } | description "Unknown External TLV Sub-TLV"; | |||
| } | ||||
| } | ||||
| grouping unknown-sub-tlv { | grouping ospfv3-lsa-prefix { | |||
| description | description | |||
| "Unknown TLV grouping"; | "OSPFv3 LSA prefix"; | |||
| container unknown-sub-tlv { | ||||
| uses ospf:tlv; | ||||
| description "Unknown External TLV Sub-TLV"; | ||||
| } | ||||
| } | ||||
| grouping ospfv3-lsa-prefix { | ||||
| description | ||||
| "OSPFv3 LSA prefix"; | ||||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "LSA Prefix"; | "LSA Prefix"; | |||
| } | } | |||
| container prefix-options { | container prefix-options { | |||
| leaf-list prefix-options { | leaf-list prefix-options { | |||
| type identityref { | type identityref { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| } | } | |||
| description | description | |||
| "OSPFv3 prefix option flag list. This list will | "OSPFv3 prefix option flag list. This list will | |||
| contain the identities for the OSPFv3 options | contain the identities for the OSPFv3 options | |||
| that are set for the OSPFv3 prefix."; | that are set for the OSPFv3 prefix."; | |||
| } | } | |||
| description "Prefix options."; | description "Prefix options."; | |||
| } | } | |||
| leaf prefix-length { | leaf prefix-length { | |||
| type uint8 { | type uint8 { | |||
| range "0..128"; | range "0..128"; | |||
| } | } | |||
| description "Prefix length."; | description "Prefix length."; | |||
| } | } | |||
| } | } | |||
| grouping ipv6-fwd-addr-sub-tlv { | grouping ipv6-fwd-addr-sub-tlv { | |||
| container ipv6-fwd-addr-sub-tlv { | container ipv6-fwd-addr-sub-tlv { | |||
| description | description | |||
| "IPv6 Forwarding Address Sub-TLV"; | "IPv6 Forwarding Address Sub-TLV"; | |||
| leaf ipv6-fwd-addr-sub-tlv-length { | leaf ipv6-fwd-addr-sub-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "IPv6 Forwarding Addrss Sub-TLV Length - 16 | "IPv6 Forwarding Addrss Sub-TLV Length - 16 | |||
| for IPv6 address"; | for IPv6 address"; | |||
| } | } | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Forwarding address"; | "Forwarding address"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "IPv6 Forwarding Address Sub-TLV grouping"; | "IPv6 Forwarding Address Sub-TLV grouping"; | |||
| } | ||||
| } | 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"; | ||||
| } | ||||
| grouping ipv4-fwd-addr-sub-tlv { | grouping route-tag-sub-tlv { | |||
| container ipv4-fwd-addr-sub-tlv { | container route-tag-sub-tlv { | |||
| description | description | |||
| "IPv4 Forwarding Address Sub-TLV"; | "Route Tag Sub-TLV"; | |||
| leaf ipv4-fwd-addr-sub-tlv-length { | leaf route-tag-sub-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "IPv4 Forwarding Addrss Sub-TLV Length - 4 | "Route Tag Sub-TLV Length - 4 for 32-bit tag"; | |||
| for IPv4 address"; | } | |||
| } | leaf route-tag { | |||
| leaf forwarding-address { | type uint32; | |||
| type inet:ipv4-address; | description | |||
| description | "Route Tag"; | |||
| "Forwarding address"; | } | |||
| } | } | |||
| } | description | |||
| description | "Route Tag Sub-TLV grouping"; | |||
| "IPv4 Forwarding Address Sub-TLV grouping"; | } | |||
| } | grouping external-prefix-tlv { | |||
| container external-prefix-tlv { | ||||
| description "External Prefix LSA TLV"; | ||||
| leaf external-prefix-tlv-length { | ||||
| type uint16; | ||||
| description | ||||
| "External Prefix TLV Length - Variable dependent | ||||
| on sub-TLVs"; | ||||
| } | ||||
| container flags { | ||||
| leaf-list ospfv3-e-external-prefix-bits { | ||||
| type identityref { | ||||
| base ospfv3-e-external-prefix-option; | ||||
| } | ||||
| description "OSPFv3 external-prefix TLV bits list."; | ||||
| } | ||||
| description "External Prefix Flags"; | ||||
| } | ||||
| leaf metric { | ||||
| type rt-types:uint24; | ||||
| description "External Prefix Metric"; | ||||
| } | ||||
| uses ospfv3-lsa-prefix; | ||||
| list sub-tlvs { | ||||
| description "External Prefix TLV Sub-TLVs"; | ||||
| 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"; | ||||
| } | ||||
| grouping route-tag-sub-tlv { | grouping intra-area-prefix-tlv { | |||
| container route-tag-sub-tlv { | container intra-prefix-tlv { | |||
| description | description "Intra-Area Prefix LSA TLV"; | |||
| "Route Tag Sub-TLV"; | leaf intra-prefix-tlv-length { | |||
| leaf route-tag-sub-tlv-length { | type uint16; | |||
| type uint16; | description | |||
| description | "Intra-Area Prefix TLV Length - Variable dependent | |||
| "Route Tag Sub-TLV Length - 4 for 32-bit tag"; | on sub-TLVs"; | |||
| } | } | |||
| leaf route-tag { | leaf metric { | |||
| type uint32; | type rt-types:uint24; | |||
| description | description "Intra-Area Prefix Metric"; | |||
| "Route Tag"; | } | |||
| } | uses ospfv3-lsa-prefix; | |||
| } | list sub-tlvs { | |||
| description | description "Intra-Area Prefix TLV Sub-TLVs"; | |||
| "Route Tag Sub-TLV grouping"; | uses unknown-sub-tlv; | |||
| } | } | |||
| } | ||||
| description "Intra-Area Prefix TLV Grouping"; | ||||
| } | ||||
| grouping external-prefix-tlv { | grouping ipv6-link-local-tlv { | |||
| container external-prefix-tlv { | container ipv6-link-local-tlv { | |||
| description "External Prefix LSA TLV"; | description "IPv6 Link-Local LSA TLV"; | |||
| leaf external-prefix-tlv-length { | leaf ipv6-link-local-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "External Prefix TLV Length - Variable dependent | "IPv6 Link-Local TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| container flags { | leaf link-local-address { | |||
| leaf-list ospfv3-e-external-prefix-bits { | type inet:ipv6-address; | |||
| type identityref { | description | |||
| base ospfv3-e-external-prefix-option; | "IPv6 Link Local address"; | |||
| } | } | |||
| description "OSPFv3 external-prefix TLV bits list."; | list sub-tlvs { | |||
| } | description "IPv6 Link Local TLV Sub-TLVs"; | |||
| description "External Prefix Flags"; | uses unknown-sub-tlv; | |||
| } | } | |||
| leaf metric { | } | |||
| type rt-types:uint24; | description "IPv6 Link-Local TLV Grouping"; | |||
| description "External Prefix Metric"; | } | |||
| } | ||||
| uses ospfv3-lsa-prefix; | ||||
| list sub-tlvs { | ||||
| description "External Prefix TLV Sub-TLVs"; | ||||
| 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"; | ||||
| } | ||||
| grouping intra-area-prefix-tlv { | grouping ipv4-link-local-tlv { | |||
| container intra-prefix-tlv { | container ipv4-link-local-tlv { | |||
| description "Intra-Area Prefix LSA TLV"; | description "IPv4 Link-Local LSA TLV"; | |||
| leaf intra-prefix-tlv-length { | leaf ipv4-link-local-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Intra-Area Prefix TLV Length - Variable dependent | "IPv4 Link-Local TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| leaf metric { | leaf link-local-address { | |||
| type rt-types:uint24; | type inet:ipv4-address; | |||
| description "Intra-Area Prefix Metric"; | description | |||
| } | "IPv4 Link Local address"; | |||
| uses ospfv3-lsa-prefix; | } | |||
| list sub-tlvs { | list sub-tlvs { | |||
| description "Intra-Area Prefix TLV Sub-TLVs"; | description "IPv4 Link Local TLV Sub-TLVs"; | |||
| uses unknown-sub-tlv; | uses unknown-sub-tlv; | |||
| } | } | |||
| } | ||||
| description "Intra-Area Prefix TLV Grouping"; | ||||
| } | ||||
| grouping ipv6-link-local-tlv { | ||||
| container ipv6-link-local-tlv { | ||||
| description "IPv6 Link-Local LSA TLV"; | ||||
| leaf ipv6-link-local-tlv-length { | ||||
| type uint16; | ||||
| description | ||||
| "IPv6 Link-Local TLV Length - Variable dependent | ||||
| on sub-TLVs"; | ||||
| } | ||||
| leaf link-local-address { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 Link Local address"; | ||||
| } | ||||
| list sub-tlvs { | ||||
| description "IPv6 Link Local TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| description "IPv6 Link-Local TLV Grouping"; | ||||
| } | ||||
| grouping ipv4-link-local-tlv { | } | |||
| container ipv4-link-local-tlv { | description "IPv4 Link-Local TLV Grouping"; | |||
| description "IPv6 Link-Local LSA TLV"; | } | |||
| leaf ipv4-link-local-tlv-length { | ||||
| type uint16; | ||||
| description | ||||
| "IPv4 Link-Local TLV Length - Variable dependent | ||||
| on sub-TLVs"; | ||||
| } | ||||
| leaf link-local-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 Link Local address"; | ||||
| } | ||||
| list sub-tlvs { | ||||
| description "IPv4 Link Local TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| description "IPv4 Link-Local TLV Grouping"; | ||||
| } | ||||
| grouping ospfv3-e-lsa-area { | grouping ospfv3-e-lsa-area { | |||
| description "Area scope OSPFv3 Extended LSAs."; | description "Area scope OSPFv3 Extended LSAs."; | |||
| container e-router { | ||||
| when "derived-from(../../ospf:header/ospf:type, " | ||||
| + "'ospfv3-e-router-lsa')" { | ||||
| description "Only valid for OSPFv3 Extended-Router LSAs"; | ||||
| } | ||||
| description "OSPv3 Extended Router LSA"; | ||||
| uses ospf:ospf-router-lsa-bits; | ||||
| uses ospf:ospfv3-lsa-options; | ||||
| list e-router-tlvs { | container e-router { | |||
| description "E-Router LSA TLVs"; | when "../../ospf:header/ospf:type = " | |||
| container unknown-tlv { | + "'ospfv3-e-lsa:ospfv3-e-router-lsa'" { | |||
| uses ospf:tlv; | description "Only valid for OSPFv3 Extended-Router LSAs"; | |||
| description "Unknown E-Router TLV"; | } | |||
| } | description "OSPv3 Extended Router LSA"; | |||
| container link-tlv { | uses ospf:ospf-router-lsa-bits; | |||
| description "E-Router LSA TLV"; | uses ospf:ospfv3-lsa-options; | |||
| leaf link-tlv-length { | ||||
| type uint16; | ||||
| description | ||||
| "Link TLV Length - Variable dependent on sub-TLVs"; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description "Interface ID for link"; | ||||
| } | ||||
| leaf neighbor-interface-id { | ||||
| type uint32; | ||||
| description "Neighbor's Interface ID for link"; | ||||
| } | ||||
| leaf neighbor-router-id { | ||||
| type rt-types:router-id; | ||||
| description "Neighbor's Router ID for link"; | ||||
| } | ||||
| leaf type { | ||||
| type uint8; | ||||
| 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"; | ||||
| } | ||||
| list sub-tlvs { | ||||
| description "Link TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | list e-router-tlvs { | |||
| } | description "E-Router LSA TLVs"; | |||
| container unknown-tlv { | ||||
| uses ospf:tlv; | ||||
| description "Unknown E-Router TLV"; | ||||
| } | ||||
| container link-tlv { | ||||
| description "E-Router LSA TLV"; | ||||
| leaf link-tlv-length { | ||||
| type uint16; | ||||
| description | ||||
| "Link TLV Length - Variable dependent on sub-TLVs"; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description "Interface ID for link"; | ||||
| } | ||||
| leaf neighbor-interface-id { | ||||
| type uint32; | ||||
| description "Neighbor's Interface ID for link"; | ||||
| } | ||||
| leaf neighbor-router-id { | ||||
| type rt-types:router-id; | ||||
| description "Neighbor's Router ID for link"; | ||||
| } | ||||
| leaf type { | ||||
| type uint8; | ||||
| 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"; | ||||
| } | ||||
| list sub-tlvs { | ||||
| description "Link TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container e-network { | container e-network { | |||
| when "derived-from(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-network-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-network-lsa'" { | |||
| description | description | |||
| "Only applies to E-Network LSAs."; | "Only applies to E-Network LSAs."; | |||
| } | } | |||
| description "Extended Network LSA"; | description "Extended Network LSA"; | |||
| uses ospf:ospfv3-lsa-options; | uses ospf:ospfv3-lsa-options; | |||
| list e-network-tlvs { | list e-network-tlvs { | |||
| description "E-Network LSA TLVs"; | description "E-Network LSA TLVs"; | |||
| container unknown--tlv { | container unknown--tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-Network TLV"; | description "Unknown E-Network TLV"; | |||
| } | } | |||
| container attached-router-tlv { | container attached-router-tlv { | |||
| description "Attached Router TLV"; | description "Attached Router TLV"; | |||
| leaf attached-router-tlv-length { | leaf attached-router-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Attached Router TLV Length - Variable dependent | "Attached Router TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| leaf-list Adjacent-neighbor-router-id { | leaf-list Adjacent-neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description "Adjacent Neighbor's Router ID"; | description "Adjacent Neighbor's Router ID"; | |||
| } | } | |||
| list sub-tlvs { | list sub-tlvs { | |||
| description "Attached Router TLV Sub-TLVs"; | description "Attached Router TLV Sub-TLVs"; | |||
| uses unknown-sub-tlv; | uses unknown-sub-tlv; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container e-inter-area-prefix { | container e-inter-area-prefix { | |||
| when "derived-from(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-inter-area-prefix-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" { | |||
| description | description | |||
| "Only applies to E-Inter-Area-Prefix LSAs."; | "Only applies to E-Inter-Area-Prefix LSAs."; | |||
| } | } | |||
| description "Extended Inter-Area Prefix LSA"; | description "Extended Inter-Area Prefix LSA"; | |||
| list e-inter-prefix-tlvs { | list e-inter-prefix-tlvs { | |||
| description "E-Inter-Area-Prefix LSA TLVs"; | description "E-Inter-Area-Prefix LSA TLVs"; | |||
| container unknown--tlv { | container unknown--tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-Inter-Area-Prefix TLV"; | description "Unknown E-Inter-Area-Prefix TLV"; | |||
| } | } | |||
| container inter-prefix-tlv { | container inter-prefix-tlv { | |||
| description "Unknown E-Inter-Area-Prefix LSA TLV"; | description "Unknown E-Inter-Area-Prefix LSA TLV"; | |||
| leaf inter-prefix-tlv-length { | leaf inter-prefix-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Inter-Area-Prefix TLV Length - Variable dependent | "Inter-Area-Prefix TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description "Inter-Area Prefix Metric"; | description "Inter-Area Prefix Metric"; | |||
| } | } | |||
| uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
| list sub-tlvs { | list sub-tlvs { | |||
| description "Inter-Area Prefix TLV Sub-TLVs"; | description "Inter-Area Prefix TLV Sub-TLVs"; | |||
| uses unknown-sub-tlv; | uses unknown-sub-tlv; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container e-inter-area-router { | container e-inter-area-router { | |||
| when "derived-from(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-inter-area-router-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-inter-area-router-lsa'" { | |||
| description | description | |||
| "Only applies to E-Inter-Area-Router LSAs."; | "Only applies to E-Inter-Area-Router LSAs."; | |||
| } | } | |||
| description "Extended Inter-Area Router LSA"; | description "Extended Inter-Area Router LSA"; | |||
| list e-inter-router-tlvs { | list e-inter-router-tlvs { | |||
| description "E-Inter-Area-Router LSA TLVs"; | description "E-Inter-Area-Router LSA TLVs"; | |||
| container unknown-tlv { | container unknown-tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-Inter-Area-Router TLV"; | description "Unknown E-Inter-Area-Router TLV"; | |||
| } | } | |||
| container inter-router-tlv { | container inter-router-tlv { | |||
| description "Unknown E-Inter-Area-Router LSA TLV"; | description "Unknown E-Inter-Area-Router LSA TLV"; | |||
| leaf inter-router-tlv-length { | leaf inter-router-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Inter-Area-Router TLV Length - Variable dependent | "Inter-Area-Router TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| uses ospf:ospf-router-lsa-bits; | uses ospf:ospf-router-lsa-bits; | |||
| uses ospf:ospfv3-lsa-options; | uses ospf:ospfv3-lsa-options; | |||
| leaf metric { | leaf metric { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description "Inter-Area Router Metric"; | description "Inter-Area Router Metric"; | |||
| } | } | |||
| leaf destination-router-id { | leaf destination-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description "Destination Router ID"; | description "Destination Router ID"; | |||
| } | } | |||
| list sub-tlvs { | list sub-tlvs { | |||
| description "Inter-Area Router TLV Sub-TLVs"; | description "Inter-Area Router TLV Sub-TLVs"; | |||
| uses unknown-sub-tlv; | uses unknown-sub-tlv; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container e-intra-area-prefix { | container e-intra-area-prefix { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-intra-area-prefix-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-intra-area-prefix-lsa'" { | |||
| description | description | |||
| "Only applies to E-Intra-Area-Prefix LSAs."; | "Only applies to E-Intra-Area-Prefix LSAs."; | |||
| } | } | |||
| description "E-Intra-Area-Prefix LSA"; | description "E-Intra-Area-Prefix LSA"; | |||
| leaf referenced-ls-type { | leaf referenced-ls-type { | |||
| type uint16; | type uint16; | |||
| description "Referenced Link State type"; | description "Referenced Link State type"; | |||
| } | } | |||
| leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Referenced Link State ID"; | "Referenced Link State ID"; | |||
| } | } | |||
| leaf referenced-adv-router { | leaf referenced-adv-router { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "Referenced Advertising Router"; | "Referenced Advertising Router"; | |||
| } | } | |||
| list e-intra-prefix-tlvs { | list e-intra-prefix-tlvs { | |||
| description "E-Intra-Area-Prefix LSA TLVs"; | description "E-Intra-Area-Prefix LSA TLVs"; | |||
| container unknown-tlv { | container unknown-tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-Intra-Area-Prefix TLV"; | description "Unknown E-Intra-Area-Prefix TLV"; | |||
| } | } | |||
| uses intra-area-prefix-tlv; | uses intra-area-prefix-tlv; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-e-lsa-as { | grouping ospfv3-e-lsa-as { | |||
| description "AS scope OSPFv3 Extended LSAs."; | description "AS scope OSPFv3 Extended LSAs."; | |||
| container e-as-external { | container e-as-external { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-as-external-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" { | |||
| description | description | |||
| "Only applies to E-AS-external LSAs."; | "Only applies to E-AS-external LSAs."; | |||
| } | } | |||
| list e-external-tlvs { | list e-external-tlvs { | |||
| description "E-External LSA TLVs"; | description "E-External LSA TLVs"; | |||
| container unknown-tlv { | container unknown-tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-External TLV"; | description "Unknown E-External TLV"; | |||
| } | } | |||
| uses external-prefix-tlv; | uses external-prefix-tlv; | |||
| } | } | |||
| description "E-AS-External LSA."; | description "E-AS-External LSA."; | |||
| } | } | |||
| container e-nssa { | container e-nssa { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-nssa-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" { | |||
| description | description | |||
| "Only applies to E-NSSA LSAs."; | "Only applies to E-NSSA LSAs."; | |||
| } | } | |||
| list e-external-tlvs { | list e-external-tlvs { | |||
| description "E-NSSA LSA TLVs"; | description "E-NSSA LSA TLVs"; | |||
| container unknown-tlv { | container unknown-tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-External TLV"; | description "Unknown E-External TLV"; | |||
| } | } | |||
| uses external-prefix-tlv; | uses external-prefix-tlv; | |||
| } | } | |||
| description "E-NSSA LSA."; | description "E-NSSA LSA."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-e-lsa-link { | grouping ospfv3-e-lsa-link { | |||
| description "Link scope OSPFv3 Extended LSAs."; | description "Link scope OSPFv3 Extended LSAs."; | |||
| container e-link { | container e-link { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "../../ospf:header/ospf:type = " | |||
| + "'ospfv3-e-link-lsa')" { | + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" { | |||
| description | description | |||
| "Only applies to Extended Link LSAs."; | "Only applies to Extended Link LSAs."; | |||
| } | } | |||
| description "E-Link LSA"; | description "E-Link LSA"; | |||
| leaf rtr-priority { | leaf rtr-priority { | |||
| type uint8; | type uint8; | |||
| description "Router Priority for the interface."; | description "Router Priority for the interface."; | |||
| } | } | |||
| uses ospf:ospfv3-lsa-options; | uses ospf:ospfv3-lsa-options; | |||
| list e-link-tlvs { | list e-link-tlvs { | |||
| description "E-Link LSA TLVs"; | description "E-Link LSA TLVs"; | |||
| container unknown-tlv { | container unknown-tlv { | |||
| uses ospf:tlv; | uses ospf:tlv; | |||
| description "Unknown E-Link TLV"; | description "Unknown E-Link TLV"; | |||
| } | } | |||
| uses intra-area-prefix-tlv; | uses intra-area-prefix-tlv; | |||
| uses ipv6-link-local-tlv; | uses ipv6-link-local-tlv; | |||
| uses ipv4-link-local-tlv; | uses ipv4-link-local-tlv; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* Configuration */ | /* Configuration */ | |||
| augment "/rt:routing/rt:control-plane-protocols" | augment "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | + "/rt:control-plane-protocol/ospf:ospf" { | |||
| when "/rt:routing/rt:control-plane-protocols" | when "../rt:type = 'ospf:ospfv3'" { | |||
| + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | description | |||
| description | "This augments the OSPFv3 routing protocol when used."; | |||
| "This augments the OSPFv3 routing protocol when used."; | } | |||
| } | description | |||
| description | "This augments the OSPFv3 protocol configuration | |||
| "This augments the OSPFv3 protocol configuration | with extended lsa."; | |||
| with segment routing."; | leaf extended-lsa-support { | |||
| leaf extended-lsa-support { | type boolean; | |||
| type boolean; | default false; | |||
| default false; | description | |||
| description | "Enable OSPFv3 Extended LSA Support for the OSPFv3 | |||
| "Enable OSPFv3 Extended LSA Support for the OSPFv3 | domain"; | |||
| domain"; | } | |||
| } | } | |||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { | + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { | |||
| when "'ospf:../../../../../rt:type' = 'ospf:ospfv3'" { | when "../../../rt:type = 'ospf:ospfv3'" { | |||
| description | description | |||
| "This augments the OSPFv3 area configuration | "This augments the OSPFv3 area configuration | |||
| when used."; | when used."; | |||
| } | ||||
| description | ||||
| "This augments the OSPFv3 protocol area | ||||
| configuration with Extend LSA support"; | ||||
| leaf extended-lsa-support { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "Enable OSPFv3 Extended LSA Support for the OSPFv3 area"; | ||||
| } | ||||
| } | ||||
| /* | } | |||
| * Link State Database (LSDB) Augmentations | description | |||
| */ | "This augments the OSPFv3 protocol area | |||
| augment "/rt:routing/" | configuration with Extend LSA support"; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | leaf extended-lsa-support { | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | type boolean; | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | default false; | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | description | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" | "Enable OSPFv3 Extended LSA Support for the OSPFv3 area"; | |||
| + "ospf:ospfv3/ospf:body" { | } | |||
| when "derived-from-or-self(/rt:routing/rt:control-plane-protocols" | } | |||
| + "/rt:control-plane-protocol/rt:type," | ||||
| + "'ospfv3')" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv3."; | ||||
| } | ||||
| description | ||||
| "OSPFv3 Link-Scoped Extended LSAs"; | ||||
| uses ospfv3-e-lsa-link; | /* | |||
| } | * 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"; | ||||
| augment "/rt:routing/" | uses ospfv3-e-lsa-link; | |||
| + "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 "derived-from-or-self(/rt:routing/rt:control-plane-protocols" | ||||
| + "/rt:control-plane-protocol/rt:type," | ||||
| + "'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: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"; | ||||
| augment "/rt:routing/" | uses ospfv3-e-lsa-area; | |||
| + "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 "derived-from-or-self(/rt:routing/rt:control-plane-protocols" | ||||
| + "/rt:control-plane-protocol/rt:type," | ||||
| + "'ospfv3')" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv3."; | ||||
| } | ||||
| description | ||||
| "OSPFv3 AS-Scoped Extended LSAs"; | ||||
| uses ospfv3-e-lsa-as; | } | |||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. Security Considerations | 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 | ||||
| "OSPFv3 AS-Scoped Extended LSAs"; | ||||
| uses ospfv3-e-lsa-as; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 5. Security Considerations | ||||
| The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC5246]. | [RFC8446]. | |||
| The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
| restrict access for particular NETCONF or RESTCONF users to a pre- | restrict access for particular NETCONF or RESTCONF users to a pre- | |||
| configured subset of all available NETCONF or RESTCONF protocol | configured subset of all available NETCONF or RESTCONF protocol | |||
| operations and content. | operations and content. | |||
| There are a number of data nodes defined in ietf-ospfv3-extended- | There are a number of data nodes defined in ietf-ospfv3-extended- | |||
| lsa.yang module that are writable/creatable/deletable (i.e., config | lsa.yang module that are writable/creatable/deletable (i.e., config | |||
| true, which is the default). These data nodes may be considered | true, which is the default). These data nodes may be considered | |||
| sensitive or vulnerable in some network environments. Write | sensitive or vulnerable in some network environments. Write | |||
| skipping to change at page 24, line 7 ¶ | skipping to change at page 24, line 11 ¶ | |||
| Some of the readable data nodes in the ietf-ospfv3-extended-lsa.yang | Some of the readable data nodes in the ietf-ospfv3-extended-lsa.yang | |||
| module may be considered sensitive or vulnerable in some network | module may be considered sensitive or vulnerable in some network | |||
| environments. It is thus important to control read access (e.g., via | environments. It is thus important to control read access (e.g., via | |||
| get, get-config, or notification) to these data nodes. The exposure | get, get-config, or notification) to these data nodes. The exposure | |||
| of the Link State Database (LSDB) will expose the detailed topology | of the Link State Database (LSDB) will expose the detailed topology | |||
| of the network. This may be undesirable since both due to the fact | of the network. This may be undesirable since both due to the fact | |||
| that exposure may facilitate other attacks. Additionally, network | that exposure may facilitate other attacks. Additionally, network | |||
| operators may consider their topologies to be sensitive confidential | operators may consider their topologies to be sensitive confidential | |||
| data. | data. | |||
| 5. IANA Considerations | 6. IANA Considerations | |||
| This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
| Following the format in [RFC3688], the following registration is | Following the format in [RFC3688], the following registration is | |||
| requested to be made: | requested to be made: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa | URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the YANG Module Names | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-ospfv3-extended-lsa | name: ietf-ospfv3-extended-lsa | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa | namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa | |||
| prefix: ospfv3-e-lsa | prefix: ospfv3-e-lsa | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 6. Acknowledgements | 7. Acknowledgements | |||
| This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
| The YANG model was developed using the suite of YANG tools written | The YANG model was developed using the suite of YANG tools written | |||
| and maintained by numerous authors. | and maintained by numerous authors. | |||
| 7. References | 8. References | |||
| 7.1. Normative References | 8.1. Normative References | |||
| [I-D.ietf-ospf-yang] | ||||
| Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | ||||
| "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | ||||
| yang-29 (work in progress), October 2019. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, | ||||
| DOI 10.17487/RFC5246, August 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5246>. | ||||
| [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
| for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
| <https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| skipping to change at page 25, line 28 ¶ | skipping to change at page 25, line 32 ¶ | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
| DOI 10.17487/RFC6536, March 2012, | DOI 10.17487/RFC6536, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6536>. | <https://www.rfc-editor.org/info/rfc6536>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6991>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | Management", RFC 8022, DOI 10.17487/RFC8022, November | |||
| 2016, <https://www.rfc-editor.org/info/rfc8022>. | 2016, <https://www.rfc-editor.org/info/rfc8022>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | ||||
| "Common YANG Data Types for the Routing Area", RFC 8294, | ||||
| DOI 10.17487/RFC8294, December 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8294>. | ||||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
| and R. Wilton, "Network Management Datastore Architecture | ||||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8342>. | ||||
| [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | |||
| Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
| DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
| [RFC8362] Lindem, A., Roy, A., Goethals, D., Reddy Vallem, V., and | [RFC8362] Lindem, A., Roy, A., Goethals, D., Reddy Vallem, V., and | |||
| F. Baker, "OSPFv3 Link State Advertisement (LSA) | F. Baker, "OSPFv3 Link State Advertisement (LSA) | |||
| Extensibility", RFC 8362, DOI 10.17487/RFC8362, April | Extensibility", RFC 8362, DOI 10.17487/RFC8362, April | |||
| 2018, <https://www.rfc-editor.org/info/rfc8362>. | 2018, <https://www.rfc-editor.org/info/rfc8362>. | |||
| 7.2. Informative References | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [I-D.ietf-ospf-yang] | 8.2. Informative References | |||
| Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | ||||
| "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| yang-29 (work in progress), October 2019. | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Acee Lindem | Acee Lindem | |||
| Cisco Systems | Cisco Systems | |||
| 301 Midenhall Way | 301 Midenhall Way | |||
| Cary, NC 27513 | Cary, NC 27513 | |||
| EMail: acee@cisco.com | EMail: acee@cisco.com | |||
| End of changes. 84 change blocks. | ||||
| 719 lines changed or deleted | 747 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||