module ietf-dynamic-flooding-ospf {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dynamic-flooding-ospf";
prefix ospf-dynflood;
import ietf-ospf {
prefix ospf;
reference
"RFC AAAA: YANG Data Model for OSPF Protocol";
}
import ietf-yang-types {
prefix yang;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix rt;
reference
"RFC 8349 - A YANG Data Model for Routing
Management (NMDA Version)";
}
organization
"IETF LSR - Link State Routing Working Group";
contact
"
WG Web:
WG List:
Editor: Srinath Dontula
Author: Tony Li
Author: Athar Siddiqui
";
description
"
Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the 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
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
for full legal notices.
";
revision 2019-09-01 {
description
"Initial draft version.";
reference
"RFC XXXX: YANG Data Model for Dynamic Flooding";
}
feature dynamic-flooding-ospf {
description
"Support for OSPF dynamic flooding";
reference
" RFC YYYY: Dynamic Flooding on Dense Graphs";
}
identity ospfv2-dynamic-flooding-opaque-lsa {
base ospf:ospfv2-opaque-lsa-type;
description
"OSPFv2 Dynamic Flooding Opaque LSA - Type 10";
}
identity ospfv3-dynamic-flooding-opaque-lsa {
base ospf:ospfv3-lsa-type;
description
"OSPFv3 Dynamic Flooding LSA - Type 16";
}
grouping ospf-area-leader-tlv {
description
"Area leader TLV for OSPFv2/OSPFv3.
A TLV of RI LSA";
leaf priority {
type uint8;
description
"Router's priority for Area leader";
}
leaf algorithm {
type uint8;
description
"Router's Algorithm to calculate the Flooding
Topology.";
}
}
grouping dynamic-flooding-tlv {
description
"Dynamic-flooding TLV for OSPFv2/OSPFv3.
A TLV of RI LSA";
leaf-list algorithms {
type uint8;
description
"List of Algorithms supported by the
advertising node";
}
}
grouping ospfv2-area-router-id-tlv-entry {
description
"ospfv2 area router ID TLV enties";
leaf connection-type {
type uint8;
description
"Defines the connection type ";
}
leaf number-of-ids {
type uint16;
description
"the number of ID present in this TLV entry";
}
leaf-list originating-router-id {
type yang:dotted-quad;
description
"list of the originating-router-ids";
}
}
grouping ospfv2-area-router-id-tlv {
description
"definition for OSPFv2 Dynamic flooding area
router-ID TLV";
leaf start-index {
type uint16;
description
"Starting index of the first
router/designated router ID";
}
leaf last-flag {
type bits {
bit last-router-designated-router-id {
description
"when set, this TLV is the
last Index in the full list
of router IDs for the area";
reference
"RFC XXXX: Dynamic Flooding
on Dense Graphs";
}
}
description
"last flag";
}
list ospfv2-router-id-tlv-entry {
description
"list of ospfv2 router-ID TLV entries";
uses ospfv2-area-router-id-tlv-entry;
}
}
grouping ospfv3-area-router-id-tlv-entry {
description
"ospfv3 area router ID TLV enties";
leaf connection-type {
type uint8;
description
"Defines the connection type ";
}
leaf number-of-ids {
type uint16;
description
"the number of ID present in this
TLV entry";
}
container router-id {
when '../connection-type = 1' {
description
"Only applies when
connection type is Router";
}
description
"originating-router-id";
leaf-list originating-router-id {
type yang:dotted-quad;
description
"list of the
originating-router-ids";
}
}
container designated-router-id {
when '../connection-type = 2' {
description
"Only applies when
connection type is designated Router";
}
description
"originating-router-id";
list originating-router-id-list {
description
"originating-router-id";
leaf originating-router-id {
type yang:dotted-quad;
description
"originating-router-ids";
}
leaf inteface-id {
type yang:dotted-quad;
description
"interface-ids";
}
}
}
}
grouping ospfv3-area-router-id-tlv {
description
"definition for OSPFv3 Dynamic flooding area
router-ID TLV";
leaf start-index {
type uint16;
description
"Starting index of the first
router/designated router ID";
}
leaf last-flag {
type bits {
bit last-router-designated-router-id {
description
"when set, this TLV is the
last Index in the full list
of router IDs for the area";
reference
"RFC XXXX: Dynamic
Flooding on Dense Graphs";
}
}
description
"dynamic flooding area router-ID
flag definitions";
}
list ospfv3-router-id-tlv-entry {
description
"list of OSPFv3 router-ID TLV entries";
uses ospfv3-area-router-id-tlv-entry;
}
}
grouping flooding-path-tlv {
description
"definition for OSPFv2/OSPFv3 Flooding Path TLV";
leaf start-index {
type uint16;
description
"Starting index of the first
router/designated router ID";
}
leaf-list indices {
type uint16;
description
"index of the next router ID in the
path";
}
}
grouping flooding-request-bit {
description
"definition for adding Floding request bit (FR-bit) to
LLS type-1 extended options. Need to be defined";
}
grouping link-attribute-bits-tlv {
description
"definition for link-attribute-bits-tlv, a sub-tlv for
OSPFv2 Extended link TLV and a sub-tlv for OSPFv3
router-link TLV";
leaf link-attributes-bits {
type bits {
bit LEEF {
description
"when set, conveys which edges
are currently enabled in the
flooding topology";
}
}
description
"link-attributes-bits";
}
}
/*
* Dynamic flooding config augmentation to OSPF Module
*/
grouping area-leader-configuration {
description
"Enable area leader capability";
leaf enable {
type boolean;
default "false";
description
"Enable area leader capability";
}
leaf priority {
type uint8;
description
"Area leader priority";
}
leaf algorithm {
type uint8;
description
"Dynamic flooding algorithm selection";
}
}
augment
"/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area" {
if-feature "dynamic-flooding-ospf";
description
"Dynamic-flooding config model
augmentation";
container dynamic-flooding {
description
"to Enable/Disable dynamic flooding
for this specific OSPF area";
leaf enable {
type boolean;
description
"Enable/Disable dynamic-flooding";
}
container area-leader {
description
"Area leader configuration parameters";
uses area-leader-configuration;
}
}
}
/*
* Dynamic flooding state augmentation to OSPF2 module
*/
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:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque" {
if-feature "dynamic-flooding-ospf";
description
"dynamic flooding TLVs augmentation";
container area-leader-tlv {
description
"Area-leader-tlv";
uses ospf-area-leader-tlv;
}
container dynamic-flooding-tlv {
description
"dynamic-flooding-tlv";
uses dynamic-flooding-tlv;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/ospf:area-scope-lsa-type/"
+ "ospf:area-scope-lsas/ospf:area-scope-lsa/"
+ "ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body" {
if-feature "dynamic-flooding-ospf";
description
"ospfv2-dynamic-flooding-opaque-lsa augmentation";
container ospfv2-dynamic-flooding-opaque-lsa {
description
"OSPFv2 Dynamic flooding opaque LSA.";
// uses unknown-tlvs;
container ospfv2-area-router-id-tlv {
description
"ospfv2-area-router-id-tlv";
uses ospfv2-area-router-id-tlv;
}
container flooding-path-tlv {
description
"ospf flooding-path-tlv";
uses flooding-path-tlv;
}
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/ospf:area-scope-lsa-type/"
+ "ospf:area-scope-lsas/ospf:area-scope-lsa/"
+ "ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/"
+ "ospf:opaque/ospf:extended-link-opaque/"
+ "ospf:extended-link-tlv" {
if-feature "dynamic-flooding-ospf";
description
"ospf-link-attributes-bits-tlv augmentation";
container ospf-link-attributes-bits-tlv {
description
"ospf link attributes bits tlv.";
uses link-attribute-bits-tlv;
}
}
/*
* Dynamic flooding state augmentation to OSPF3 module
*/
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/"
+ "ospf:router-information" {
if-feature "dynamic-flooding-ospf";
description
"dynamic flooding TLVs augmentation";
container area-leader-tlv {
description
"Area-leader-tlv";
uses ospf-area-leader-tlv;
}
container dynamic-flooding-tlv {
description
"dynamic-flooding-tlv";
uses dynamic-flooding-tlv;
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:areas/"
+ "ospf:area/ospf:database/ospf:area-scope-lsa-type/"
+ "ospf:area-scope-lsas/ospf:area-scope-lsa/"
+ "ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body" {
if-feature "dynamic-flooding-ospf";
description
"ospfv3-dynamic-flooding-opaque-lsa
augmentation";
container ospfv3-dynamic-flooding-opaque-lsa {
description
"ospfv3-dynamic-flooding-opaque-lsa
definition";
// uses unknown-tlvs;
container ospfv3-area-router-id-tlv {
description
"ospfv3-area-router-id-tlv";
uses ospfv3-area-router-id-tlv;
}
container flooding-path-tlv {
description
"ospf flooding-path-tlv";
uses flooding-path-tlv;
}
}
}
}