module ietf-bier-te { namespace "urn:ietf:params:xml:ns:yang:ietf-bier-te"; prefix bier-te; import ietf-routing { prefix "rt"; } import ietf-routing-types { prefix "rt-types"; } organization " IETF BIER(Bit Indexed Explicit Replication ) Working Group"; contact "WG List: WG Chair: Tony Przygienda WG Chair: Greg Shepherd Editor: Zheng Zhang Editor: Cui Wang Editor: Ran Chen Editor: Fangwei Hu Editor: Mahesh Sivakumar "; description "This module contains a collection of YANG definitions for managing BIER TE information."; revision 2017-10-23 { description "."; reference "https://tools.ietf.org/html/draft-zhang-bier-te-yang"; } revision 2017-04-26 { description "Add label for combination of [SD, SI, BSL]."; reference "https://tools.ietf.org/html/draft-zhang-bier-te-yang"; } revision 2016-10-13 { description "Add reference of BIER common structure."; reference "https://tools.ietf.org/html/draft-zhang-bier-te-yang"; } revision 2016-03-01 { description "Initial version."; reference "https://tools.ietf.org/html/draft-zhang-bier-te-yang"; } /* * Features */ feature bier-te-frr { description "Support ECMP feature in BIER TE."; } grouping te-frr { description "The TE fast reroute information."; list btaft { key "adj-index"; description "The adjacency index of the frr paths."; leaf adj-index { type uint32; mandatory true; description "The frr adjacency index."; } leaf bitposition { type bit-string; mandatory true; description "The bitposition information."; } leaf resetbitmask { type bit-string; mandatory true; description "The deleting bitmask of the forwarding item."; } leaf addbitmask { type bit-string; mandatory true; description "The adding bitmask of the forwarding item."; } } } grouping te-adj-type { description "The collection of all possible adjacency type."; choice te-adj-type { mandatory true; case connected { description "The type of adjacency is connected. Mostly connected interfaces."; } case routed { description "The type of adjacency is routed. Mostly not connected interfaces."; } case local-decap { description "Means that the packet should be decapsulated and forward out BIER domain."; } case ecmp { description "There is more than one path in the adjacency with equal cost."; } case other { description "Means that the packet should be discarded."; } description "The collection of all possible adjacency type."; } } grouping te-adjID-type { description "The collection of all possible adjacency type."; choice te-adjID-type { mandatory true; case p2p { description "Describes p2p adjacency."; } case bfer { description "Describes bfer adjacency."; } case leaf-bfer { description "Describes leaf-bfer adjacency. There is no next BFR that the packet should be forwarded."; } case lan { description "Describes lan adjacency.."; } case spoke { description "Describes spoke adjacency of hub-and-spoke."; } case ring-clockwise { description "Describes clockwise adjacency in ring."; } case ring-counterclockwise { description "Describes counterclockwise adjacency in ring."; } case ecmp { description "Describes ecmp adjacency."; } case virtual-link { description "Describes virtual adjacency between two indirect connect nodes."; } case other { description "Describes other id type of adjacency."; } description "The collection of all possible adjacency type."; } } typedef adjid { type uint32; description "The type for adjacency ID."; } typedef bit-string { type uint16; description "The bit mask of one bitstring."; } grouping te-adjID { list adj-id { key "adjID"; description "This ID information of one adjacency."; leaf adjID { type adjid; mandatory true; description "The adjacency id."; } leaf adj-if { /* type if:if-index; */ type uint32; /* for compilation */ mandatory true; description "The corresponding interface of this adjacency."; } uses te-adjID-type; } description "This group presents adjacency ID information for BIER TE."; } grouping te-ecmp { description "The ecmp information."; list ecmp-path { key "index"; description "The index of the ecmp paths."; leaf index { type uint32; mandatory true; description "The ecmp index."; } list number { key "number"; description "The list of the ecmp paths."; leaf number { type uint16; mandatory true; description "The number of the ecmp paths."; } leaf out-if { /* type if:if-index; */ type uint32; /* for compilation */ mandatory true; description "The outgoing interface."; } } } } grouping te-items { description "The BIER TE forwarding items collection."; uses te-adj-type; leaf f-bm { type bit-string; mandatory true; description "The bitmask of the forwarding item."; } leaf f-intf { /* type if:if-index; */ type uint32; /* for compilation */ mandatory true; description "The out interface of this forwarding item."; } leaf ecmp { type boolean; description "The capibility of ecmp paths."; } leaf ecmp-index { type uint16; description "The index of ecmp path."; } leaf frr { type boolean; description "The capibility of fast re-route."; } } grouping te-fwd-item { list te-si { key "si"; description "The forwarding items of one set identifier."; leaf si{ type uint16; mandatory true; description "The set identifier of this forwarding item."; } leaf ft-label { type rt-types:mpls-label; description "The label of forwarding table."; } list te-f-index { key "te-f-index"; description "The forwarding information of one BIER TE item."; leaf te-f-index { type bit-string; mandatory true; description "The bit index of BIER TE forwarding item."; } uses te-items; } } description "The forwarding items in one set identifier."; } grouping te-info { description "The BIER TE forwarding information."; list te-subdomain { key "subdomain-id"; description "The forwarding items of one sub-domain."; leaf subdomain-id { type uint16; description "The sub-domain-id of this sub-domain."; } uses te-adjID; list te-bsl { key "fwd-bsl"; description "The forwarding items in one bitstringlength."; leaf fwd-bsl { type uint16; description "The value of bitstringlength."; } uses te-fwd-item; } uses te-ecmp; uses te-frr { if-feature bier-te-frr; } } } /* * data nodes */ augment "/rt:routing" { description "The BIER TE information."; container bier-te { description "The BIER TE information container."; uses te-info; } } /* * Notifications */ notification bier-te-notification { description "This notification is sent when a condition changes in BIER TE."; list adjID-is-zero { key "if-index"; description "The adjacency id is zero."; leaf if-index { type uint32; description "The adjacency id of this interface is zero."; } uses te-adjID-type; } } }