module ietf-pim-bidir {
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-bidir";
// replace with IANA namespace when assigned
prefix pim-bidir;
import ietf-inet-types {
prefix "inet";
}
import ietf-interfaces {
prefix "if";
}
import ietf-routing {
prefix "rt";
}
import ietf-pim-base {
prefix "pim-base";
}
import ietf-pim-rp {
prefix "pim-rp";
}
organization
"IETF PIM Working Group";
contact
"WG Web:
WG List:
WG Chair: Stig Venaas
WG Chair: Mike McBride
Editors: ";
description
"The YANG module defines a BIDIR (Bidirectional) mode PIM
model.";
revision 2016-03-18 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for PIM";
}
/*
* Features
*/
feature intf-df-election {
description
"Support configuration of interface DF election.";
}
/*
* Identities
*/
identity bidir {
base pim-rp:rp-mode;
description
"BIDIR (Bidirectional) mode.";
}
identity df-state {
description
"DF election state type.";
reference
"RFC5015: Bidirectional Protocol Independent Multicast
(BIDIR-PIM).";
}
identity df-state-offer {
base df-state;
description
"Initial election state..";
}
identity df-state-lose {
base df-state;
description
"There either is a different election winner or that no
router on the link has a path to the RPA.";
}
identity df-state-win {
base df-state;
description
"The router is the acting DF without any contest.";
}
identity df-state-backoff {
base df-state;
description
"The router is the acting DF but another router has made a
bid to take over..";
}
/*
* Typedefs
*/
/*
* Groupings
*/
grouping static-rp-bidir-container {
description
"Gouping that contains BIDIR attributes for static RP.";
container bidir {
presence
"Indicate the support of BIDIR mode.";
description
"PIM BIDIR configuration data.";
uses pim-rp:static-rp-attributes;
} // bidir
} // static-rp-bidir-container
/*
* Configuration data nodes
*/
augment "/rt:routing/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family" {
description "PIM BIDIR augmentation.";
container bidir {
description
"PIM BIDIR configuration data.";
} // bidir
} // augment
augment "/rt:routing/rt:routing-protocols/pim-base:pim/"
+ "pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" {
description "PIM BIDIR augmentation.";
container bidir {
presence "Present to enable BIDIR mode.";
description
"PIM BIDIR configuration data.";
container df-election {
if-feature intf-df-election;
description
"DF election attributes.";
leaf offer-interval {
type pim-base:timer-value;
description "Offer interval";
}
leaf backoff-interval {
type pim-base:timer-value;
description "Backoff interval";
}
leaf offer-multipler {
type uint8;
description "Offer multipler";
}
} // df-election
} // bidir
} // augment
augment "/rt:routing/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv4-rp" {
description "PIM BIDIR augmentation.";
uses static-rp-bidir-container;
} // augment
augment "/rt:routing/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv6-rp" {
description "PIM BIDIR augmentation.";
uses static-rp-bidir-container;
} // augment
/*
* Operational state data nodes
*/
augment "/rt:routing-state/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family" {
description
"PIM BIDIR state.";
container bidir {
description
"PIM BIDIR state data.";
} // bidir
} // augment
augment "/rt:routing-state/rt:routing-protocols/pim-base:pim/"
+ "pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" {
description "PIM BIDIR augmentation.";
container bidir {
presence "Present to enable BIDIR mode.";
description
"PIM BIDIR configuration data.";
container df-election {
if-feature intf-df-election;
description
"DF election attributes.";
leaf offer-interval {
type pim-base:timer-value;
description "Offer interval";
}
leaf backoff-interval {
type pim-base:timer-value;
description "Backoff interval";
}
leaf offer-multipler {
type uint8;
description "Offer multipler";
}
} // df-election
} // bidir
} // augment
augment "/rt:routing-state/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv4-rp" {
description "PIM BIDIR augmentation.";
uses static-rp-bidir-container;
} // augment
augment "/rt:routing-state/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv6-rp" {
description "PIM BIDIR augmentation.";
uses static-rp-bidir-container;
} // augment
augment "/rt:routing-state/rt:routing-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp" {
description "PIM BIDIR augmentation.";
container bidir {
description
"PIM BIDIR state data.";
container df-election {
description
"DF election data.";
list ipv4-rp {
when "../../../../address-family = 'rt:ipv4'" {
description
"Only applicable to ipv4 address family.";
}
key "ipv4-addr";
description
"A list of IPv4 RP addresses.";
leaf ipv4-addr {
type inet:ipv4-address;
description
"The address of the RP.";
}
} // ipv4-rp
list ipv6-rp {
when "../../../../address-family = 'rt:ipv6'" {
description
"Only applicable to ipv6 address family.";
}
key "ipv6-addr";
description
"A list of IPv6 RP addresses.";
leaf ipv6-addr {
type inet:ipv6-address;
description
"The address of the RP.";
}
} // ipv6-rp
} // df-election
container interface-df-election {
description
"Interface DF election data.";
list ipv4-rp {
when "../../../../address-family = 'rt:ipv4'" {
description
"Only applicable to ipv4 address family.";
}
key "ipv4-addr interface-name";
description
"A list of IPv4 RP addresses.";
leaf ipv4-addr {
type inet:ipv4-address;
description
"The address of the RP.";
}
leaf interface-name {
type if:interface-ref;
description
"The address of the RP.";
}
leaf df-address {
type inet:ipv4-address;
description
"DF address.";
}
leaf interface-state {
type identityref {
base df-state;
}
description
"Interface state.";
}
} // ipv4-rp
list ipv6-rp {
when "../../../../address-family = 'rt:ipv6'" {
description
"Only applicable to ipv6 address family.";
}
key "ipv6-addr interface-name";
description
"A list of IPv6 RP addresses.";
leaf ipv6-addr {
type inet:ipv6-address;
description
"The address of the RP.";
}
leaf interface-name {
type if:interface-ref;
description
"The address of the RP.";
}
leaf df-address {
type inet:ipv6-address;
description
"DF address.";
}
leaf interface-state {
type identityref {
base df-state;
}
description
"Interface state.";
}
} // ipv6-rp
} // interface-df-election
}
} // augment
/*
* RPCs
*/
/*
* Notifications
*/
}