| < draft-ietf-lsr-ospfv3-extended-lsa-yang-02.txt | draft-ietf-lsr-ospfv3-extended-lsa-yang-03.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: January 14, 2021 Y. Qu | Expires: February 8, 2021 Y. Qu | |||
| Futurewei | Futurewei | |||
| July 13, 2020 | August 7, 2020 | |||
| YANG Model for OSPFv3 Extended LSAs | YANG Model for OSPFv3 Extended LSAs | |||
| draft-ietf-lsr-ospfv3-extended-lsa-yang-02 | draft-ietf-lsr-ospfv3-extended-lsa-yang-03 | |||
| 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 Advertisment (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 | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 January 14, 2021. | This Internet-Draft will expire on February 8, 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 | |||
| skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
| 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. OSPFv3 Extended LSAs . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 11 | 3. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 7 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 28 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 24 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 29 | 7.2. Informative References . . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | 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 | |||
| skipping to change at page 3, line 13 ¶ | skipping to change at page 3, line 13 ¶ | |||
| 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 | |||
| defined in [RFC8022]. The augmentations defined in the ietf-ospfv3- | defined in [RFC8022]. The augmentations defined in the ietf-ospfv3- | |||
| extended-lsa YANG model will provide global configuration, area | extended-lsa YANG model will provide global configuration, area | |||
| configuration, and addition of OSPFv3 Extended LSAs to the Link State | configuration, and addition of OSPFv3 Extended LSAs to the Link State | |||
| Database (LSDB) operational state. | Database (LSDB) operational state. | |||
| module: ietf-ospfv3-extended-lsa | module: ietf-ospfv3-extended-lsa | |||
| 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: | |||
| +--rw extended-lsa-support? boolean {extended-lsa-support}? | +--rw extended-lsa-support? boolean | |||
| 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: | |||
| +--rw extended-lsa-support? boolean {extended-lsa-support}? | +--rw extended-lsa-support? boolean | |||
| 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 | |||
| /ospf:interfaces/ospf:interface/ospf:database | /ospf:interfaces/ospf:interface/ospf:database | |||
| /ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv3 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv3 | |||
| /ospf:ospfv3/ospf:body: | /ospf:ospfv3/ospf:body: | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro e-link | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | +--ro rtr-priority? uint8 | |||
| /ospf:database/ospf:area-scope-lsa-type | +--ro lsa-options | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | | +--ro lsa-options* identityref | |||
| /ospf:ospfv3/ospf:ospfv3/ospf:body: | +--ro e-link-tlvs* [] | |||
| +--ro e-router | +--ro unknown-tlv | |||
| | +--ro router-bits | | +--ro type? uint16 | |||
| | | +--ro rtr-lsa-bits* identityref | | +--ro length? uint16 | |||
| | +--ro lsa-options | | +--ro value? yang:hex-string | |||
| | | +--ro lsa-options* identityref | +--ro intra-prefix-tlv | |||
| | +--ro e-router-tlvs* | | +--ro intra-prefix-tlv-length? uint16 | |||
| | +--ro unknown-tlv | | +--ro metric? rt-types:uint24 | |||
| | | +--ro type? uint16 | | +--ro prefix? inet:ip-prefix | |||
| | | +--ro length? uint16 | | +--ro prefix-options | |||
| | | +--ro value? yang:hex-string | | | +--ro prefix-options* identityref | |||
| | +--ro link-tlv | | +--ro prefix-length? uint8 | |||
| | +--ro link-tlv-length? uint16 | | +--ro sub-tlvs* [] | |||
| | +--ro interface-id? uint32 | | +--ro unknown-sub-tlv | |||
| | +--ro neighbor-interface-id? uint32 | | +--ro type? uint16 | |||
| | +--ro neighbor-router-id? rt-types:router-id | | +--ro length? uint16 | |||
| | +--ro type? uint8 | | +--ro value? yang:hex-string | |||
| | +--ro metric? uint16 | +--ro ipv6-link-local-tlv | |||
| | +--ro sub-tlvs* | | +--ro ipv6-link-local-tlv-length? uint16 | |||
| | +--ro unknown-sub-tlv | | +--ro link-local-address? inet:ipv6-address | |||
| | +--ro type? uint16 | | +--ro sub-tlvs* [] | |||
| | +--ro length? uint16 | | +--ro unknown-sub-tlv | |||
| | +--ro value? yang:hex-string | | +--ro type? uint16 | |||
| +--ro e-network | | +--ro length? uint16 | |||
| | +--ro lsa-options | | +--ro value? yang:hex-string | |||
| | | +--ro lsa-options* identityref | +--ro ipv4-link-local-tlv | |||
| | +--ro e-network-tlvs* | +--ro ipv4-link-local-tlv-length? uint16 | |||
| | +--ro unknown--tlv | +--ro link-local-address? inet:ipv4-address | |||
| | | +--ro type? uint16 | +--ro sub-tlvs* [] | |||
| | | +--ro length? uint16 | +--ro unknown-sub-tlv | |||
| | | +--ro value? yang:hex-string | +--ro type? uint16 | |||
| | +--ro attached-router-tlv | +--ro length? uint16 | |||
| | +--ro attached-router-tlv-length? uint16 | +--ro value? yang:hex-string | |||
| | +--ro Adjacent-neighbor-router-id? rt-types:router-id | augment /rt:routing/rt:control-plane-protocols | |||
| | +--ro sub-tlvs* | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| | +--ro unknown-sub-tlv | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
| | +--ro type? uint16 | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3 | |||
| | +--ro length? uint16 | /ospf:ospfv3/ospf:body: | |||
| | +--ro value? yang:hex-string | +--ro e-router | |||
| +--ro e-inter-area-prefix | | +--ro router-bits | |||
| | +--ro e-inter-prefix-tlvs* | | | +--ro rtr-lsa-bits* identityref | |||
| | +--ro unknown--tlv | | +--ro lsa-options | |||
| | | +--ro type? uint16 | | | +--ro lsa-options* identityref | |||
| | | +--ro length? uint16 | | +--ro e-router-tlvs* [] | |||
| | | +--ro value? yang:hex-string | | +--ro unknown-tlv | |||
| | +--ro inter-prefix-tlv | | | +--ro type? uint16 | |||
| | +--ro inter-prefix-tlv-length? uint16 | | | +--ro length? uint16 | |||
| | +--ro metric? rt-types:uint24 | | | +--ro value? yang:hex-string | |||
| | +--ro prefix? inet:ip-prefix | | +--ro link-tlv | |||
| | +--ro prefix-options | | +--ro link-tlv-length? uint16 | |||
| | | +--ro prefix-options* identityref | | +--ro interface-id? uint32 | |||
| | +--ro prefix-length? uint8 | | +--ro neighbor-interface-id? uint32 | |||
| | +--ro sub-tlvs* | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--ro unknown-sub-tlv | | +--ro type? uint8 | |||
| | +--ro type? uint16 | | +--ro metric? uint16 | |||
| | +--ro length? uint16 | | +--ro sub-tlvs* [] | |||
| | +--ro value? yang:hex-string | | +--ro unknown-sub-tlv | |||
| +--ro e-inter-area-router | | +--ro type? uint16 | |||
| | +--ro e-inter-router-tlvs* | | +--ro length? uint16 | |||
| | +--ro unknown-tlv | | +--ro value? yang:hex-string | |||
| | | +--ro type? uint16 | +--ro e-network | |||
| | | +--ro length? uint16 | | +--ro lsa-options | |||
| | | +--ro value? yang:hex-string | | | +--ro lsa-options* identityref | |||
| | +--ro inter-router-tlv | | +--ro e-network-tlvs* [] | |||
| | +--ro inter-router-tlv-length? uint16 | | +--ro unknown--tlv | |||
| | +--ro router-bits | | | +--ro type? uint16 | |||
| | | +--ro rtr-lsa-bits* identityref | | | +--ro length? uint16 | |||
| | +--ro lsa-options | | | +--ro value? yang:hex-string | |||
| | | +--ro lsa-options* identityref | | +--ro attached-router-tlv | |||
| | +--ro metric? rt-types:uint24 | | +--ro attached-router-tlv-length? uint16 | |||
| | +--ro destination-router-id? rt-types:router-id | | +--ro Adjacent-neighbor-router-id* rt-types:router-id | |||
| | +--ro sub-tlvs* | | +--ro sub-tlvs* [] | |||
| | +--ro unknown-sub-tlv | | +--ro unknown-sub-tlv | |||
| | +--ro type? uint16 | | +--ro type? uint16 | |||
| | +--ro length? uint16 | | +--ro length? uint16 | |||
| | +--ro value? yang:hex-string | | +--ro value? yang:hex-string | |||
| +--ro e-as-external | +--ro e-inter-area-prefix | |||
| | +--ro e-external-tlvs* | | +--ro e-inter-prefix-tlvs* [] | |||
| | +--ro unknown-tlv | | +--ro unknown--tlv | |||
| | | +--ro type? uint16 | | | +--ro type? uint16 | |||
| | | +--ro length? uint16 | | | +--ro length? uint16 | |||
| | | +--ro value? yang:hex-string | | | +--ro value? yang:hex-string | |||
| | +--ro external-prefix-tlv | | +--ro inter-prefix-tlv | |||
| | +--ro external-prefix-tlv-length? uint16 | | +--ro inter-prefix-tlv-length? uint16 | |||
| | +--ro flags | | +--ro metric? rt-types:uint24 | |||
| | | +--ro ospfv3-e-external-prefix-bits* identityref | | +--ro prefix? inet:ip-prefix | |||
| | +--ro metric? rt-types:uint24 | | +--ro prefix-options | |||
| | +--ro prefix? inet:ip-prefix | | | +--ro prefix-options* identityref | |||
| | +--ro prefix-options | | +--ro prefix-length? uint8 | |||
| | | +--ro prefix-options* identityref | | +--ro sub-tlvs* [] | |||
| | +--ro prefix-length? uint8 | | +--ro unknown-sub-tlv | |||
| | +--ro sub-tlvs* | | +--ro type? uint16 | |||
| | +--ro unknown-sub-tlv | | +--ro length? uint16 | |||
| | | +--ro type? uint16 | | +--ro value? yang:hex-string | |||
| | | +--ro length? uint16 | +--ro e-inter-area-router | |||
| | | +--ro value? yang:hex-string | | +--ro e-inter-router-tlvs* [] | |||
| | +--ro ipv6-fwd-addr-sub-tlv | | +--ro unknown-tlv | |||
| | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | | | +--ro type? uint16 | |||
| | | +--ro forwarding-address? inet:ipv6-address | | | +--ro length? uint16 | |||
| | +--ro ipv4-fwd-addr-sub-tlv | | | +--ro value? yang:hex-string | |||
| | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | | +--ro inter-router-tlv | |||
| | | +--ro forwarding-address? inet:ipv4-address | | +--ro inter-router-tlv-length? uint16 | |||
| | +--ro route-tag-sub-tlv | | +--ro router-bits | |||
| | +--ro route-tag-sub-tlv-length? uint16 | | | +--ro rtr-lsa-bits* identityref | |||
| | +--ro route-tag? uint32 | | +--ro lsa-options | |||
| +--ro e-nssa | | | +--ro lsa-options* identityref | |||
| | +--ro e-external-tlvs* | | +--ro metric? rt-types:uint24 | |||
| | +--ro unknown-tlv | | +--ro destination-router-id? rt-types:router-id | |||
| | | +--ro type? uint16 | | +--ro sub-tlvs* [] | |||
| | | +--ro length? uint16 | | +--ro unknown-sub-tlv | |||
| | | +--ro value? yang:hex-string | | +--ro type? uint16 | |||
| | +--ro external-prefix-tlv | | +--ro length? uint16 | |||
| | +--ro external-prefix-tlv-length? uint16 | | +--ro value? yang:hex-string | |||
| | +--ro flags | +--ro e-intra-area-prefix | |||
| | | +--ro ospfv3-e-external-prefix-bits* identityref | +--ro referenced-ls-type? uint16 | |||
| | +--ro metric? rt-types:uint24 | +--ro referenced-link-state-id? uint32 | |||
| | +--ro prefix? inet:ip-prefix | +--ro referenced-adv-router? rt-types:router-id | |||
| | +--ro prefix-options | +--ro e-intra-prefix-tlvs* [] | |||
| | | +--ro prefix-options* identityref | +--ro unknown-tlv | |||
| | +--ro prefix-length? uint8 | | +--ro type? uint16 | |||
| | +--ro sub-tlvs* | | +--ro length? uint16 | |||
| | +--ro unknown-sub-tlv | | +--ro value? yang:hex-string | |||
| | | +--ro type? uint16 | +--ro intra-prefix-tlv | |||
| | | +--ro length? uint16 | +--ro intra-prefix-tlv-length? uint16 | |||
| | | +--ro value? yang:hex-string | +--ro metric? rt-types:uint24 | |||
| | +--ro ipv6-fwd-addr-sub-tlv | +--ro prefix? inet:ip-prefix | |||
| | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | +--ro prefix-options | |||
| | | +--ro forwarding-address? inet:ipv6-address | | +--ro prefix-options* identityref | |||
| | +--ro ipv4-fwd-addr-sub-tlv | +--ro prefix-length? uint8 | |||
| | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | +--ro sub-tlvs* [] | |||
| | | +--ro forwarding-address? inet:ipv4-address | +--ro unknown-sub-tlv | |||
| | +--ro route-tag-sub-tlv | +--ro type? uint16 | |||
| | +--ro route-tag-sub-tlv-length? uint16 | +--ro length? uint16 | |||
| | +--ro route-tag? uint32 | +--ro value? yang:hex-string | |||
| +--ro e-link | augment /rt:routing/rt:control-plane-protocols | |||
| | +--ro rtr-priority? uint8 | /rt:control-plane-protocol/ospf:ospf/ospf:database | |||
| | +--ro lsa-options | /ospf:as-scope-lsa-type/ospf:as-scope-lsas | |||
| | | +--ro lsa-options* identityref | /ospf:as-scope-lsa/ospf:version/ospf:ospfv3 | |||
| | +--ro e-link-tlvs* | /ospf:ospfv3/ospf:body: | |||
| | +--ro unknown-tlv | +--ro e-as-external | |||
| | | +--ro type? uint16 | | +--ro e-external-tlvs* [] | |||
| | | +--ro length? uint16 | | +--ro unknown-tlv | |||
| | | +--ro value? yang:hex-string | | | +--ro type? uint16 | |||
| | +--ro intra-prefix-tlv | | | +--ro length? uint16 | |||
| | | +--ro intra-prefix-tlv-length? uint16 | | | +--ro value? yang:hex-string | |||
| | | +--ro metric? rt-types:uint24 | | +--ro external-prefix-tlv | |||
| | | +--ro prefix? inet:ip-prefix | | +--ro external-prefix-tlv-length? uint16 | |||
| | | +--ro prefix-options | | +--ro flags | |||
| | | | +--ro prefix-options* identityref | | | +--ro ospfv3-e-external-prefix-bits* identityref | |||
| | | +--ro prefix-length? uint8 | | +--ro metric? rt-types:uint24 | |||
| | | +--ro sub-tlvs* | | +--ro prefix? inet:ip-prefix | |||
| | | +--ro unknown-sub-tlv | | +--ro prefix-options | |||
| | | +--ro type? uint16 | | | +--ro prefix-options* identityref | |||
| | | +--ro length? uint16 | | +--ro prefix-length? uint8 | |||
| | | +--ro value? yang:hex-string | | +--ro sub-tlvs* [] | |||
| | +--ro ipv6-link-local-tlv | | +--ro unknown-sub-tlv | |||
| | | +--ro ipv6-link-local-tlv-length? uint16 | | | +--ro type? uint16 | |||
| | | +--ro link-local-address? inet:ipv6-address | | | +--ro length? uint16 | |||
| | | +--ro sub-tlvs* | | | +--ro value? yang:hex-string | |||
| | | +--ro unknown-sub-tlv | | +--ro ipv6-fwd-addr-sub-tlv | |||
| | | +--ro type? uint16 | | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | |||
| | | +--ro length? uint16 | | | +--ro forwarding-address? inet:ipv6-address | |||
| | | +--ro value? yang:hex-string | | +--ro ipv4-fwd-addr-sub-tlv | |||
| | +--ro ipv4-link-local-tlv | | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | |||
| | +--ro ipv4-link-local-tlv-length? uint16 | | | +--ro forwarding-address? inet:ipv4-address | |||
| | +--ro link-local-address? inet:ipv4-address | | +--ro route-tag-sub-tlv | |||
| | +--ro sub-tlvs* | | +--ro route-tag-sub-tlv-length? uint16 | |||
| | +--ro unknown-sub-tlv | | +--ro route-tag? uint32 | |||
| | +--ro type? uint16 | +--ro e-nssa | |||
| | +--ro length? uint16 | +--ro e-external-tlvs* [] | |||
| | +--ro value? yang:hex-string | +--ro unknown-tlv | |||
| +--ro e-intra-area-prefix | | +--ro type? uint16 | |||
| +--ro referenced-ls-type? uint16 | | +--ro length? uint16 | |||
| +--ro referenced-link-state-id? uint32 | | +--ro value? yang:hex-string | |||
| +--ro referenced-adv-router? rt-types:router-id | +--ro external-prefix-tlv | |||
| +--ro e-intra-prefix-tlvs* | +--ro external-prefix-tlv-length? uint16 | |||
| +--ro unknown-tlv | +--ro flags | |||
| | +--ro type? uint16 | | +--ro ospfv3-e-external-prefix-bits* identityref | |||
| | +--ro length? uint16 | +--ro metric? rt-types:uint24 | |||
| | +--ro value? yang:hex-string | +--ro prefix? inet:ip-prefix | |||
| +--ro intra-prefix-tlv | +--ro prefix-options | |||
| +--ro intra-prefix-tlv-length? uint16 | | +--ro prefix-options* identityref | |||
| +--ro metric? rt-types:uint24 | +--ro prefix-length? uint8 | |||
| +--ro prefix? inet:ip-prefix | +--ro sub-tlvs* [] | |||
| +--ro prefix-options | +--ro unknown-sub-tlv | |||
| | +--ro prefix-options* identityref | | +--ro type? uint16 | |||
| +--ro prefix-length? uint8 | | +--ro length? uint16 | |||
| +--ro sub-tlvs* | | +--ro value? yang:hex-string | |||
| +--ro unknown-sub-tlv | +--ro ipv6-fwd-addr-sub-tlv | |||
| +--ro type? uint16 | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | |||
| +--ro length? uint16 | | +--ro forwarding-address? inet:ipv6-address | |||
| +--ro value? yang:hex-string | +--ro ipv4-fwd-addr-sub-tlv | |||
| augment /rt:routing/rt:control-plane-protocols | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:database | | +--ro forwarding-address? inet:ipv4-address | |||
| /ospf:as-scope-lsa-type/ospf:as-scope-lsas | +--ro route-tag-sub-tlv | |||
| /ospf:as-scope-lsa/ospf:version/ospf:ospfv3 | +--ro route-tag-sub-tlv-length? uint16 | |||
| /ospf:ospfv3/ospf:body: | +--ro route-tag? uint32 | |||
| +--ro e-router | ||||
| | +--ro router-bits | ||||
| | | +--ro rtr-lsa-bits* identityref | ||||
| | +--ro lsa-options | ||||
| | | +--ro lsa-options* identityref | ||||
| | +--ro e-router-tlvs* | ||||
| | +--ro unknown-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro link-tlv | ||||
| | +--ro link-tlv-length? uint16 | ||||
| | +--ro interface-id? uint32 | ||||
| | +--ro neighbor-interface-id? uint32 | ||||
| | +--ro neighbor-router-id? rt-types:router-id | ||||
| | +--ro type? uint8 | ||||
| | +--ro metric? uint16 | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro e-network | ||||
| | +--ro lsa-options | ||||
| | | +--ro lsa-options* identityref | ||||
| | +--ro e-network-tlvs* | ||||
| | +--ro unknown--tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro attached-router-tlv | ||||
| | +--ro attached-router-tlv-length? uint16 | ||||
| | +--ro Adjacent-neighbor-router-id? rt-types:router-id | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro e-inter-area-prefix | ||||
| | +--ro e-inter-prefix-tlvs* | ||||
| | +--ro unknown--tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro inter-prefix-tlv | ||||
| | +--ro inter-prefix-tlv-length? uint16 | ||||
| | +--ro metric? rt-types:uint24 | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro prefix-options | ||||
| | | +--ro prefix-options* identityref | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro e-inter-area-router | ||||
| | +--ro e-inter-router-tlvs* | ||||
| | +--ro unknown-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro inter-router-tlv | ||||
| | +--ro inter-router-tlv-length? uint16 | ||||
| | +--ro router-bits | ||||
| | | +--ro rtr-lsa-bits* identityref | ||||
| | +--ro lsa-options | ||||
| | | +--ro lsa-options* identityref | ||||
| | +--ro metric? rt-types:uint24 | ||||
| | +--ro destination-router-id? rt-types:router-id | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro e-as-external | ||||
| | +--ro e-external-tlvs* | ||||
| | +--ro unknown-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro external-prefix-tlv | ||||
| | +--ro external-prefix-tlv-length? uint16 | ||||
| | +--ro flags | ||||
| | | +--ro ospfv3-e-external-prefix-bits* identityref | ||||
| | +--ro metric? rt-types:uint24 | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro prefix-options | ||||
| | | +--ro prefix-options* identityref | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro ipv6-fwd-addr-sub-tlv | ||||
| | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | ||||
| | | +--ro forwarding-address? inet:ipv6-address | ||||
| | +--ro ipv4-fwd-addr-sub-tlv | ||||
| | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | ||||
| | | +--ro forwarding-address? inet:ipv4-address | ||||
| | +--ro route-tag-sub-tlv | ||||
| | +--ro route-tag-sub-tlv-length? uint16 | ||||
| | +--ro route-tag? uint32 | ||||
| +--ro e-nssa | ||||
| | +--ro e-external-tlvs* | ||||
| | +--ro unknown-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro external-prefix-tlv | ||||
| | +--ro external-prefix-tlv-length? uint16 | ||||
| | +--ro flags | ||||
| | | +--ro ospfv3-e-external-prefix-bits* identityref | ||||
| | +--ro metric? rt-types:uint24 | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro prefix-options | ||||
| | | +--ro prefix-options* identityref | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro ipv6-fwd-addr-sub-tlv | ||||
| | | +--ro ipv6-fwd-addr-sub-tlv-length? uint16 | ||||
| | | +--ro forwarding-address? inet:ipv6-address | ||||
| | +--ro ipv4-fwd-addr-sub-tlv | ||||
| | | +--ro ipv4-fwd-addr-sub-tlv-length? uint16 | ||||
| | | +--ro forwarding-address? inet:ipv4-address | ||||
| | +--ro route-tag-sub-tlv | ||||
| | +--ro route-tag-sub-tlv-length? uint16 | ||||
| | +--ro route-tag? uint32 | ||||
| +--ro e-link | ||||
| | +--ro rtr-priority? uint8 | ||||
| | +--ro lsa-options | ||||
| | | +--ro lsa-options* identityref | ||||
| | +--ro e-link-tlvs* | ||||
| | +--ro unknown-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro intra-prefix-tlv | ||||
| | | +--ro intra-prefix-tlv-length? uint16 | ||||
| | | +--ro metric? rt-types:uint24 | ||||
| | | +--ro prefix? inet:ip-prefix | ||||
| | | +--ro prefix-options | ||||
| | | | +--ro prefix-options* identityref | ||||
| | | +--ro prefix-length? uint8 | ||||
| | | +--ro sub-tlvs* | ||||
| | | +--ro unknown-sub-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro ipv6-link-local-tlv | ||||
| | | +--ro ipv6-link-local-tlv-length? uint16 | ||||
| | | +--ro link-local-address? inet:ipv6-address | ||||
| | | +--ro sub-tlvs* | ||||
| | | +--ro unknown-sub-tlv | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro length? uint16 | ||||
| | | +--ro value? yang:hex-string | ||||
| | +--ro ipv4-link-local-tlv | ||||
| | +--ro ipv4-link-local-tlv-length? uint16 | ||||
| | +--ro link-local-address? inet:ipv4-address | ||||
| | +--ro sub-tlvs* | ||||
| | +--ro unknown-sub-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro e-intra-area-prefix | ||||
| +--ro referenced-ls-type? uint16 | ||||
| +--ro referenced-link-state-id? uint32 | ||||
| +--ro referenced-adv-router? rt-types:router-id | ||||
| +--ro e-intra-prefix-tlvs* | ||||
| +--ro unknown-tlv | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro intra-prefix-tlv | ||||
| +--ro intra-prefix-tlv-length? uint16 | ||||
| +--ro metric? rt-types:uint24 | ||||
| +--ro prefix? inet:ip-prefix | ||||
| +--ro prefix-options | ||||
| | +--ro prefix-options* identityref | ||||
| +--ro prefix-length? uint8 | ||||
| +--ro sub-tlvs* | ||||
| +--ro unknown-sub-tlv | ||||
| +--ro type? uint16 | ||||
| +--ro length? uint16 | ||||
| +--ro value? yang:hex-string | ||||
| 3. OSPFv3 Extended LSA Yang Module | 3. OSPFv3 Extended LSA Yang Module | |||
| <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2020-07-13.yang" | <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2020-08-05.yang" | |||
| module ietf-ospfv3-extended-lsa { | module ietf-ospfv3-extended-lsa { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace | namespace | |||
| "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; | "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; | |||
| prefix ospfv3-e-lsa; | prefix ospfv3-e-lsa; | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 6021 - Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| reference "RFC 8349 - A YANG Data Model for Routing | ||||
| 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 XXXX - 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 to | authors of the code. All rights reserved. | |||
| 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 | ||||
| (https://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 | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | without modification, is permitted pursuant to, and subject | |||
| for full legal notices. | 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. | ||||
| This version of this YANG module is part of RFC XXXX; | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| see the RFC itself for full legal notices."; | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here."; | ||||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2020-07-13 { | ||||
| description | ||||
| "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; | ||||
| } | ||||
| feature extended-lsa-support { | revision 2020-08-05 { | |||
| description | description | |||
| "Support for OSPFv3 Extended LSAs"; | "Initial revision."; | |||
| reference | reference | |||
| "RFC 8362 - OSPFv3 Link State Advertisement (LSA) | "RFC XXXX: A YANG Data Model for OSPFv3 Extended LSAs."; | |||
| Extensibility"; | } | |||
| } | ||||
| /* | /* | |||
| * 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 Exteneded 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-as-external-lsa { | identity ospfv3-e-external-lsa-type { | |||
| base ospfv3-e-external-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended AS-External LSA - Type 0xC025"; | "OSPFv3 Extended External LSA types"; | |||
| } | } | |||
| identity ospfv3-e-nssa-lsa { | identity ospfv3-e-as-external-lsa { | |||
| base ospfv3-e-external-lsa-type; | base ospfv3-e-external-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - | "OSPFv3 Extended AS-External LSA - Type 0xC025"; | |||
| Type 0xA027"; | } | |||
| } | ||||
| identity ospfv3-e-link-lsa { | identity ospfv3-e-nssa-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospfv3-e-external-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Link LSA - Type 0x8028"; | "OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - | |||
| } | Type 0xA027"; | |||
| } | ||||
| identity ospfv3-e-intra-area-prefix-lsa { | identity ospfv3-e-link-lsa { | |||
| base ospf:ospfv3-lsa-type; | base ospf:ospfv3-lsa-type; | |||
| description | description | |||
| "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; | "OSPFv3 Extended Link LSA - Type 0x8028"; | |||
| } | } | |||
| identity ospfv3-e-prefix-option { | identity ospfv3-e-intra-area-prefix-lsa { | |||
| description | base ospf:ospfv3-lsa-type; | |||
| "Base identity for OSPFv3 Prefix Options."; | description | |||
| } | "OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; | |||
| } | ||||
| identity nu-bit { | identity ospfv3-e-prefix-option { | |||
| base ospfv3-e-prefix-option; | description | |||
| description | "Base identity for OSPFv3 Prefix Options."; | |||
| "When set, the prefix should be excluded | } | |||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| identity la-bit { | identity nu-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 prefix should be excluded | |||
| address of the Advertising Router."; | from IPv6 unicast calculations."; | |||
| } | } | |||
| identity p-bit { | identity la-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the NSSA area prefix should be | "When set, the prefix is actually an IPv6 interface | |||
| translated to an AS External LSA and advertised | address of the Advertising Router."; | |||
| by the translating NSSA Border Router."; | } | |||
| } | ||||
| identity dn-bit { | identity p-bit { | |||
| base ospfv3-e-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the inter-area-prefix LSA or | "When set, the NSSA area prefix should be | |||
| AS-external LSA prefix has been advertised as an | translated to an AS External LSA and advertised | |||
| L3VPN prefix."; | by the translating NSSA Border Router."; | |||
| } | } | |||
| identity ospfv3-e-external-prefix-option { | identity dn-bit { | |||
| description | base ospfv3-e-prefix-option; | |||
| "Base identity for OSPFv3 External Prefix Options."; | description | |||
| } | "When set, the inter-area-prefix LSA or | |||
| AS-external LSA prefix has been advertised as an | ||||
| L3VPN prefix."; | ||||
| } | ||||
| identity e-bit { | identity n-bit { | |||
| base ospfv3-e-external-prefix-option; | base ospfv3-e-prefix-option; | |||
| description | description | |||
| "When set, the metric specified is a Type 2 | "When set, the prefix is a host address that identifies | |||
| external metric."; | the advertising router."; | |||
| } | } | |||
| grouping unknown-sub-tlv { | identity ospfv3-e-external-prefix-option { | |||
| description | description | |||
| "Unknown TLV grouping"; | "Base identity for OSPFv3 External Prefix Options."; | |||
| container unknown-sub-tlv { | } | |||
| uses ospf:tlv; | ||||
| description "Unknown External TLV Sub-TLV"; | ||||
| } | ||||
| } | ||||
| grouping ospfv3-lsa-prefix { | ||||
| description | ||||
| "OSPFv3 LSA prefix"; | ||||
| leaf prefix { | identity e-bit { | |||
| type inet:ip-prefix; | base ospfv3-e-external-prefix-option; | |||
| description | description | |||
| "LSA Prefix"; | "When set, the metric specified is a Type 2 | |||
| } | external metric."; | |||
| container prefix-options { | } | |||
| leaf-list prefix-options { | ||||
| type identityref { | ||||
| base ospfv3-e-prefix-option; | ||||
| } | ||||
| description | ||||
| "OSPFv3 prefix option flag list. This list will | ||||
| contain the identities for the OSPFv3 options | ||||
| that are set for the OSPFv3 prefix."; | ||||
| } | ||||
| description "Prefix options."; | ||||
| } | ||||
| leaf prefix-length { | grouping unknown-sub-tlv { | |||
| type uint8 { | description | |||
| range "0..128"; | "Unknown TLV grouping"; | |||
| } | container unknown-sub-tlv { | |||
| description "Prefix length."; | uses ospf:tlv; | |||
| } | description "Unknown External TLV Sub-TLV"; | |||
| } | } | |||
| } | ||||
| grouping ospfv3-lsa-prefix { | ||||
| description | ||||
| "OSPFv3 LSA prefix"; | ||||
| grouping ipv6-fwd-addr-sub-tlv { | leaf prefix { | |||
| container ipv6-fwd-addr-sub-tlv { | type inet:ip-prefix; | |||
| description | description | |||
| "IPv6 Forwarding Address Sub-TLV"; | "LSA Prefix"; | |||
| leaf ipv6-fwd-addr-sub-tlv-length { | } | |||
| type uint16; | container prefix-options { | |||
| description | leaf-list prefix-options { | |||
| "IPv6 Forwarding Addrss Sub-TLV Length - 16 | type identityref { | |||
| for IPv6 address"; | base ospfv3-e-prefix-option; | |||
| } | } | |||
| leaf forwarding-address { | description | |||
| type inet:ipv6-address; | "OSPFv3 prefix option flag list. This list will | |||
| description | contain the identities for the OSPFv3 options | |||
| "Forwarding address"; | that are set for the OSPFv3 prefix."; | |||
| } | } | |||
| } | description "Prefix options."; | |||
| description | } | |||
| "IPv6 Forwarding Address Sub-TLV grouping"; | ||||
| } | leaf prefix-length { | |||
| type uint8 { | ||||
| range "0..128"; | ||||
| } | ||||
| description "Prefix length."; | ||||
| } | ||||
| } | ||||
| grouping ipv4-fwd-addr-sub-tlv { | grouping ipv6-fwd-addr-sub-tlv { | |||
| container ipv4-fwd-addr-sub-tlv { | container ipv6-fwd-addr-sub-tlv { | |||
| description | description | |||
| "IPv4 Forwarding Address Sub-TLV"; | "IPv6 Forwarding Address Sub-TLV"; | |||
| leaf ipv4-fwd-addr-sub-tlv-length { | leaf ipv6-fwd-addr-sub-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "IPv4 Forwarding Addrss Sub-TLV Length - 4 | "IPv6 Forwarding Addrss Sub-TLV Length - 16 | |||
| for IPv4 address"; | for IPv6 address"; | |||
| } | } | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv4-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Forwarding address"; | "Forwarding address"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "IPv4 Forwarding Address Sub-TLV grouping"; | "IPv6 Forwarding Address Sub-TLV grouping"; | |||
| } | ||||
| 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"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Route Tag Sub-TLV grouping"; | ||||
| } | ||||
| grouping external-prefix-tlv { | grouping ipv4-fwd-addr-sub-tlv { | |||
| container external-prefix-tlv { | container ipv4-fwd-addr-sub-tlv { | |||
| description "External Prefix LSA TLV"; | description | |||
| leaf external-prefix-tlv-length { | "IPv4 Forwarding Address Sub-TLV"; | |||
| type uint16; | leaf ipv4-fwd-addr-sub-tlv-length { | |||
| description | type uint16; | |||
| "External Prefix TLV Length - Variable dependent | description | |||
| on sub-TLVs"; | "IPv4 Forwarding Addrss Sub-TLV Length - 4 | |||
| } | for IPv4 address"; | |||
| container flags { | } | |||
| leaf-list ospfv3-e-external-prefix-bits { | leaf forwarding-address { | |||
| type identityref { | type inet:ipv4-address; | |||
| base ospfv3-e-external-prefix-option; | description | |||
| } | "Forwarding address"; | |||
| description "OSPFv3 exernal-prefix TLV bits list."; | } | |||
| } | } | |||
| description "External Prefix Flags"; | description | |||
| } | "IPv4 Forwarding Address Sub-TLV grouping"; | |||
| 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 intra-area-prefix-tlv { | grouping route-tag-sub-tlv { | |||
| container intra-prefix-tlv { | container route-tag-sub-tlv { | |||
| description "Intra-Area Prefix LSA TLV"; | description | |||
| leaf intra-prefix-tlv-length { | "Route Tag Sub-TLV"; | |||
| type uint16; | leaf route-tag-sub-tlv-length { | |||
| description | type uint16; | |||
| "Intra-Area Prefix TLV Length - Variable dependent | description | |||
| on sub-TLVs"; | "Route Tag Sub-TLV Length - 4 for 32-bit tag"; | |||
| } | } | |||
| leaf metric { | leaf route-tag { | |||
| type rt-types:uint24; | type uint32; | |||
| description "Intra-Area Prefix Metric"; | description | |||
| } | "Route Tag"; | |||
| uses ospfv3-lsa-prefix; | } | |||
| list sub-tlvs { | } | |||
| description "Intra-Area Prefix TLV Sub-TLVs"; | description | |||
| uses unknown-sub-tlv; | "Route Tag Sub-TLV grouping"; | |||
| } | } | |||
| } | ||||
| 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 { | grouping external-prefix-tlv { | |||
| container ipv4-link-local-tlv { | container external-prefix-tlv { | |||
| description "IPv6 Link-Local LSA TLV"; | description "External Prefix LSA TLV"; | |||
| leaf ipv4-link-local-tlv-length { | leaf external-prefix-tlv-length { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "IPv4 Link-Local TLV Length - Variable dependent | "External Prefix TLV Length - Variable dependent | |||
| on sub-TLVs"; | on sub-TLVs"; | |||
| } | } | |||
| leaf link-local-address { | container flags { | |||
| type inet:ipv4-address; | leaf-list ospfv3-e-external-prefix-bits { | |||
| description | type identityref { | |||
| "IPv4 Link Local address"; | base ospfv3-e-external-prefix-option; | |||
| } | } | |||
| list sub-tlvs { | description "OSPFv3 external-prefix TLV bits list."; | |||
| description "IPv4 Link Local TLV Sub-TLVs"; | } | |||
| uses unknown-sub-tlv; | description "External Prefix Flags"; | |||
| } | } | |||
| } | leaf metric { | |||
| description "IPv4 Link-Local TLV Grouping"; | 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 ospfv3-e-lsa-body { | grouping intra-area-prefix-tlv { | |||
| description "OSPFv3 Extended LSA body."; | container intra-prefix-tlv { | |||
| container e-router { | description "Intra-Area Prefix LSA TLV"; | |||
| when "derived-from(../../ospf:header/ospf:type, " | leaf intra-prefix-tlv-length { | |||
| + "'ospfv3-e-router-lsa')" { | type uint16; | |||
| description "Only valid for OSPFv3 Extended-Router LSAs"; | description | |||
| } | "Intra-Area Prefix TLV Length - Variable dependent | |||
| description "OSPv3 Extended Router LSA"; | on sub-TLVs"; | |||
| uses ospf:ospf-router-lsa-bits; | } | |||
| uses ospf:ospfv3-lsa-options; | leaf metric { | |||
| type rt-types:uint24; | ||||
| description "Intra-Area Prefix Metric"; | ||||
| } | ||||
| uses ospfv3-lsa-prefix; | ||||
| list sub-tlvs { | ||||
| description "Intra-Area Prefix TLV Sub-TLVs"; | ||||
| 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"; | ||||
| } | ||||
| list e-router-tlvs { | grouping ipv4-link-local-tlv { | |||
| description "E-Router LSA TLVs"; | container ipv4-link-local-tlv { | |||
| container unknown-tlv { | description "IPv6 Link-Local LSA TLV"; | |||
| uses ospf:tlv; | leaf ipv4-link-local-tlv-length { | |||
| description "Unknown E-Router TLV"; | type uint16; | |||
| } | description | |||
| container link-tlv { | "IPv4 Link-Local TLV Length - Variable dependent | |||
| description "E-Router LSA TLV"; | on sub-TLVs"; | |||
| leaf link-tlv-length { | } | |||
| type uint16; | leaf link-local-address { | |||
| description | type inet:ipv4-address; | |||
| "Link TLV Length - Variable dependent on sub-TLVs"; | description | |||
| } | "IPv4 Link Local address"; | |||
| leaf interface-id { | } | |||
| type uint32; | list sub-tlvs { | |||
| description "Interface ID for link"; | description "IPv4 Link Local TLV Sub-TLVs"; | |||
| } | uses unknown-sub-tlv; | |||
| leaf neighbor-interface-id { | } | |||
| type uint32; | } | |||
| description "Neighbor's Interface ID for link"; | description "IPv4 Link-Local TLV Grouping"; | |||
| } | } | |||
| 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; | ||||
| } | ||||
| } | ||||
| } | grouping ospfv3-e-lsa-area { | |||
| } | 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; | ||||
| container e-network { | list e-router-tlvs { | |||
| when "derived-from(../../ospf:header/ospf:type, " | description "E-Router LSA TLVs"; | |||
| + "'ospfv3-e-network-lsa')" { | container unknown-tlv { | |||
| description | uses ospf:tlv; | |||
| "Only applies to E-Network LSAs."; | description "Unknown E-Router TLV"; | |||
| } | } | |||
| description "Extended Network LSA"; | container link-tlv { | |||
| uses ospf:ospfv3-lsa-options; | description "E-Router LSA TLV"; | |||
| list e-network-tlvs { | leaf link-tlv-length { | |||
| description "E-Network LSA TLVs"; | type uint16; | |||
| container unknown--tlv { | description | |||
| uses ospf:tlv; | "Link TLV Length - Variable dependent on sub-TLVs"; | |||
| description "Unknown E-Network TLV"; | } | |||
| } | leaf interface-id { | |||
| container attached-router-tlv { | type uint32; | |||
| description "Attached Router TLV"; | description "Interface ID for link"; | |||
| leaf attached-router-tlv-length { | } | |||
| type uint16; | leaf neighbor-interface-id { | |||
| description | type uint32; | |||
| "Attached Router TLV Length - Variable dependent | description "Neighbor's Interface ID for link"; | |||
| on sub-TLVs"; | } | |||
| } | leaf neighbor-router-id { | |||
| leaf Adjacent-neighbor-router-id { | type rt-types:router-id; | |||
| type rt-types:router-id; | description "Neighbor's Router ID for link"; | |||
| description "Adjacent Neighbor's Router ID"; | } | |||
| } | leaf type { | |||
| list sub-tlvs { | type uint8; | |||
| description "Attached Router TLV Sub-TLVs"; | description "Link type: 1 - Point-to-Point Link | |||
| uses unknown-sub-tlv; | 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-inter-area-prefix { | } | |||
| when "derived-from(../../ospf:header/ospf:type, " | } | |||
| + "'ospfv3-e-inter-area-prefix-lsa')" { | ||||
| description | ||||
| "Only applies to E-Inter-Area-Prefix LSAs."; | ||||
| } | ||||
| description "Extended Inter-Area Prefix LSA"; | ||||
| list e-inter-prefix-tlvs { | ||||
| description "E-Inter-Area-Prefix LSA TLVs"; | ||||
| container unknown--tlv { | ||||
| uses ospf: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 { | ||||
| type uint16; | ||||
| description | ||||
| "Inter-Area-Prefix TLV Length - Variable dependent | ||||
| on sub-TLVs"; | ||||
| } | ||||
| leaf metric { | ||||
| type rt-types:uint24; | ||||
| description "Inter-Area Prefix Metric"; | ||||
| } | ||||
| uses ospfv3-lsa-prefix; | ||||
| list sub-tlvs { | ||||
| description "Inter-Area Prefix TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container e-inter-area-router { | container e-network { | |||
| when "derived-from(../../ospf:header/ospf:type, " | when "derived-from(../../ospf:header/ospf:type, " | |||
| + "'ospfv3-e-inter-area-router-lsa')" { | + "'ospfv3-e-network-lsa')" { | |||
| description | description | |||
| "Only applies to E-Inter-Area-Router LSAs."; | "Only applies to E-Network LSAs."; | |||
| } | } | |||
| description "Extended Inter-Area Router LSA"; | description "Extended Network LSA"; | |||
| list e-inter-router-tlvs { | uses ospf:ospfv3-lsa-options; | |||
| description "E-Inter-Area-Router LSA TLVs"; | list e-network-tlvs { | |||
| container unknown-tlv { | description "E-Network LSA TLVs"; | |||
| uses ospf:tlv; | container unknown--tlv { | |||
| description "Unknown E-Inter-Area-Router TLV"; | uses ospf:tlv; | |||
| } | description "Unknown E-Network TLV"; | |||
| container inter-router-tlv { | } | |||
| description "Unknown E-Inter-Area-Router LSA TLV"; | container attached-router-tlv { | |||
| leaf inter-router-tlv-length { | description "Attached Router TLV"; | |||
| type uint16; | leaf attached-router-tlv-length { | |||
| description | type uint16; | |||
| "Inter-Area-Router TLV Length - Variable dependent | description | |||
| on sub-TLVs"; | "Attached Router TLV Length - Variable dependent | |||
| } | on sub-TLVs"; | |||
| uses ospf:ospf-router-lsa-bits; | } | |||
| uses ospf:ospfv3-lsa-options; | leaf-list Adjacent-neighbor-router-id { | |||
| leaf metric { | type rt-types:router-id; | |||
| type rt-types:uint24; | description "Adjacent Neighbor's Router ID"; | |||
| description "Inter-Area Router Metric"; | } | |||
| } | list sub-tlvs { | |||
| leaf destination-router-id { | description "Attached Router TLV Sub-TLVs"; | |||
| type rt-types:router-id; | uses unknown-sub-tlv; | |||
| description "Destination Router ID"; | } | |||
| } | } | |||
| list sub-tlvs { | } | |||
| description "Inter-Area Router TLV Sub-TLVs"; | } | |||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container e-as-external { | container e-inter-area-prefix { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "derived-from(../../ospf:header/ospf:type, " | |||
| + "'ospfv3-e-as-external-lsa')" { | + "'ospfv3-e-inter-area-prefix-lsa')" { | |||
| description | description | |||
| "Only applies to E-AS-external LSAs."; | "Only applies to E-Inter-Area-Prefix LSAs."; | |||
| } | } | |||
| list e-external-tlvs { | description "Extended Inter-Area Prefix LSA"; | |||
| description "E-External LSA TLVs"; | list e-inter-prefix-tlvs { | |||
| container unknown-tlv { | description "E-Inter-Area-Prefix LSA TLVs"; | |||
| uses ospf:tlv; | container unknown--tlv { | |||
| description "Unknown E-External TLV"; | uses ospf:tlv; | |||
| } | description "Unknown E-Inter-Area-Prefix TLV"; | |||
| uses external-prefix-tlv; | } | |||
| } | container inter-prefix-tlv { | |||
| description "E-AS-External LSA."; | description "Unknown E-Inter-Area-Prefix LSA TLV"; | |||
| } | leaf inter-prefix-tlv-length { | |||
| type uint16; | ||||
| description | ||||
| "Inter-Area-Prefix TLV Length - Variable dependent | ||||
| on sub-TLVs"; | ||||
| } | ||||
| leaf metric { | ||||
| type rt-types:uint24; | ||||
| description "Inter-Area Prefix Metric"; | ||||
| } | ||||
| uses ospfv3-lsa-prefix; | ||||
| list sub-tlvs { | ||||
| description "Inter-Area Prefix TLV Sub-TLVs"; | ||||
| uses unknown-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container e-nssa { | container e-inter-area-router { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "derived-from(../../ospf:header/ospf:type, " | |||
| + "'ospfv3-e-nssa-lsa')" { | + "'ospfv3-e-inter-area-router-lsa')" { | |||
| description | description | |||
| "Only applies to E-NSSA LSAs."; | "Only applies to E-Inter-Area-Router LSAs."; | |||
| } | } | |||
| list e-external-tlvs { | description "Extended Inter-Area Router LSA"; | |||
| description "E-NSSA LSA TLVs"; | list e-inter-router-tlvs { | |||
| container unknown-tlv { | description "E-Inter-Area-Router LSA TLVs"; | |||
| uses ospf:tlv; | container unknown-tlv { | |||
| description "Unknown E-External TLV"; | uses ospf:tlv; | |||
| } | description "Unknown E-Inter-Area-Router TLV"; | |||
| uses external-prefix-tlv; | } | |||
| } | container inter-router-tlv { | |||
| description "E-NSSA LSA."; | description "Unknown E-Inter-Area-Router LSA TLV"; | |||
| } | leaf inter-router-tlv-length { | |||
| container e-link { | type uint16; | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | description | |||
| + "'ospfv3-e-link-lsa')" { | "Inter-Area-Router TLV Length - Variable dependent | |||
| description | on sub-TLVs"; | |||
| "Only applies to Extended Link LSAs."; | } | |||
| } | uses ospf:ospf-router-lsa-bits; | |||
| description "E-Link LSA"; | uses ospf:ospfv3-lsa-options; | |||
| leaf rtr-priority { | leaf metric { | |||
| type uint8; | type rt-types:uint24; | |||
| description "Router Priority for the interface."; | description "Inter-Area Router Metric"; | |||
| } | } | |||
| uses ospf:ospfv3-lsa-options; | leaf destination-router-id { | |||
| list e-link-tlvs { | type rt-types:router-id; | |||
| description "E-Link LSA TLVs"; | description "Destination Router ID"; | |||
| container unknown-tlv { | } | |||
| uses ospf:tlv; | list sub-tlvs { | |||
| description "Unknown E-Link TLV"; | description "Inter-Area Router TLV Sub-TLVs"; | |||
| } | uses unknown-sub-tlv; | |||
| uses intra-area-prefix-tlv; | } | |||
| uses ipv6-link-local-tlv; | } | |||
| uses ipv4-link-local-tlv; | } | |||
| } | } | |||
| } | ||||
| container e-intra-area-prefix { | container e-intra-area-prefix { | |||
| when "derived-from-or-self(../../ospf:header/ospf:type, " | when "derived-from-or-self(../../ospf:header/ospf:type, " | |||
| + "'ospfv3-e-intra-area-prefix-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; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* Configuration */ | grouping ospfv3-e-lsa-as { | |||
| augment "/rt:routing/rt:control-plane-protocols" | description "AS scope OSPFv3 Extended LSAs."; | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | container e-as-external { | |||
| when "/rt:routing/rt:control-plane-protocols" | when "derived-from-or-self(../../ospf:header/ospf:type, " | |||
| + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | + "'ospfv3-e-as-external-lsa')" { | |||
| description | description | |||
| "This augments the OSPFv3 routing protocol when used."; | "Only applies to E-AS-external LSAs."; | |||
| } | } | |||
| description | list e-external-tlvs { | |||
| "This augments the OSPFv3 protocol configuration | description "E-External LSA TLVs"; | |||
| with segment routing."; | container unknown-tlv { | |||
| leaf extended-lsa-support { | uses ospf:tlv; | |||
| if-feature extended-lsa-support; | description "Unknown E-External TLV"; | |||
| type boolean; | } | |||
| default false; | uses external-prefix-tlv; | |||
| description | } | |||
| "Enable OSPFv3 Extended LSA Support for the OSPFv3 | description "E-AS-External LSA."; | |||
| domain"; | } | |||
| } | ||||
| } | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | container e-nssa { | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { | when "derived-from-or-self(../../ospf:header/ospf:type, " | |||
| when "'ospf:../../../../../rt:type' = 'ospf:ospfv3'" { | + "'ospfv3-e-nssa-lsa')" { | |||
| description | description | |||
| "This augments the OSPFv3 area configuration | "Only applies to E-NSSA LSAs."; | |||
| when used."; | } | |||
| } | list e-external-tlvs { | |||
| description | description "E-NSSA LSA TLVs"; | |||
| "This augments the OSPFv3 protocol area | container unknown-tlv { | |||
| configuration with Extend LSA support"; | uses ospf:tlv; | |||
| leaf extended-lsa-support { | description "Unknown E-External TLV"; | |||
| if-feature extended-lsa-support; | } | |||
| type boolean; | uses external-prefix-tlv; | |||
| default false; | } | |||
| description | description "E-NSSA LSA."; | |||
| "Enable OSPFv3 Extended LSA Support for the OSPFv3 area"; | } | |||
| } | } | |||
| } | ||||
| /* | grouping ospfv3-e-lsa-link { | |||
| * Link State Database (LSDB) Augmentations | description "Link scope OSPFv3 Extended LSAs."; | |||
| */ | container e-link { | |||
| augment "/rt:routing/" | when "derived-from-or-self(../../ospf:header/ospf:type, " | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "'ospfv3-e-link-lsa')" { | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | description | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | "Only applies to Extended Link LSAs."; | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | } | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" | description "E-Link LSA"; | |||
| + "ospf:ospfv3/ospf:body" { | 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:routing/rt:control-plane-protocols" | when "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augments the OSPFv3 routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "OSPFv3 Link-Scoped Extended LSAs"; | "This augments the OSPFv3 protocol configuration | |||
| } | with segment routing."; | |||
| leaf extended-lsa-support { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "Enable OSPFv3 Extended LSA Support for the OSPFv3 | ||||
| domain"; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" { | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | when "'ospf:../../../../../rt:type' = 'ospf:ospfv3'" { | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | description | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | "This augments the OSPFv3 area configuration | |||
| + "ospf:ospfv3/ospf:body" { | when used."; | |||
| when "../../../../../../../../../" | } | |||
| + "rt:type = 'ospf:ospfv3'" { | description | |||
| description | "This augments the OSPFv3 protocol area | |||
| "This augmentation is only valid for OSPFv3 | configuration with Extend LSA support"; | |||
| E-Router LSAs"; | leaf extended-lsa-support { | |||
| } | type boolean; | |||
| uses ospfv3-e-lsa-body; | default false; | |||
| description | description | |||
| "OSPFv3 Area-Scoped Extended LSAs"; | "Enable OSPFv3 Extended LSA Support for the OSPFv3 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/" | * Link State Database (LSDB) Augmentations | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | */ | |||
| + "ospf:ospfv3/ospf:body" { | augment "/rt:routing/" | |||
| when "'ospf:../../../../../../../../../" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "rt:type' = 'ospf:ospfv3'" { | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| description | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| "This augmentation is only valid for OSPFv3."; | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| } | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| uses ospfv3-e-lsa-body; | + "ospf:ospfv3/ospf:body" { | |||
| description | when "derived-from-or-self(/rt:routing/rt:control-plane-protocols" | |||
| "OSPFv3 AS-Scoped Extended LSAs"; | + "/rt:control-plane-protocol/rt:type," | |||
| } | + "'ospfv3')" { | |||
| } | description | |||
| <CODE ENDS> | "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 "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: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 | 4. 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]. | [RFC5246]. | |||
| End of changes. 64 change blocks. | ||||
| 1102 lines changed or deleted | 922 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/ | ||||