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