module ospf-topology { yang-version 1; namespace "urn:TBD:params:xml:ns:yang:ospf-topology"; // replace with IANA namespace when assigned prefix "ospf"; import network-topology { prefix "nt"; revision-date 2013-10-21; } import l3-unicast-igp-topology { prefix "l3t"; revision-date 2013-10-21; } import ietf-inet-types { prefix "inet"; revision-date 2013-07-15; } import ted { prefix "ted"; revision-date 2013-10-21; } organization "TBD"; contact "TBD"; description "OSPF Topology model"; revision "2013-10-21" { description "Initial revision"; reference "TBD"; } typedef area-id { description "OSPF Area ID"; type uint32; } grouping ospf-topology-type { container ospf { presence "indiates OSPF Topology"; } } augment "/nt:network-topology/nt:topology/nt:topology-types/l3t:l3-unicast-igp-topology" { uses ospf-topology-type; } augment "/nt:network-topology/nt:topology/l3t:igp-topology-attributes" { when "../nt:topology-types/l3t:l3-unicast-igp-topology/ospf"; container ospf-topology-attributes { leaf area-id { type area-id; } } } augment "/nt:network-topology/nt:topology/nt:node/l3t:igp-node-attributes" { when "../../nt:topology-types/l3t:l3-unicast-igp-topology/ospf"; uses ospf-node-attributes; } augment "/nt:network-topology/nt:topology/nt:link/l3t:igp-link-attributes" { when "../../nt:topology-types/l3t:l3-unicast-igp-topology/ospf"; uses ospf-link-attributes; } augment "/nt:network-topology/nt:topology/nt:node/l3t:igp-node-attributes/l3t:prefix" { when "../../../nt:topology-types/l3t:l3-unicast-igp-topology/ospf"; uses ospf-prefix-attributes; } grouping ospf-node-attributes { container ospf-node-attributes { choice router-type { case abr { leaf abr { type empty; } } case asbr { leaf asbr { type empty; } } case internal { leaf internal { type empty; } } case pseudonode { leaf pseudonode { type empty; } } } leaf dr-interface-id { when "../router-type/pseudonode"; description "For pseudonodes, DR interface-id"; default "0"; type uint32; } leaf-list multi-topology-id { description "List of Multi-Topology Identifier up-to 128 (0-127). RFC 4915"; max-elements "128"; type uint8 { range "0..127"; } } leaf capabilities { description "OSPF capabilities as bit vector. RFC 4970"; type bits { bit graceful-restart-capable { position 0; } bit graceful-restart-helper { position 1; } bit stub-router-support { position 2; } bit traffic-engineering-support { position 3; } bit point-to-point-over-lan { position 4; } bit experimental-te { position 5; } } } container ted { uses ted:ted-node-attributes; } } // ospf } // ospf-node-attributes grouping ospf-link-attributes { container ospf-link-attributes { leaf multi-topology-id { type uint8 { range "0..127"; } } container ted { uses ted:ted-link-attributes; } } } // ospf-link-attributes grouping ospf-prefix-attributes { container ospf-prefix-attributes { leaf forwarding-address { when "../../l3t:l3-unicast-igp-topology/l3t:ospf/l3t:router-type/l3t:asbr"; type inet:ipv4-address; } } } augment "/l3t:igp-node-event" { uses ospf-topology-type; uses ospf:ospf-node-attributes; } augment "/l3t:igp-link-event" { uses ospf-topology-type; uses ospf:ospf-link-attributes; } augment "/l3t:igp-prefix-event" { uses ospf-topology-type; uses ospf:ospf-prefix-attributes; } }