module ietf-pim-base {
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-base";
// replace with IANA namespace when assigned
prefix pim-base;
import ietf-interfaces {
prefix "if";
}
import ietf-routing {
prefix "rt";
}
organization
"IETF PIM Working Group";
contact
"WG Web:
WG List:
WG Chair: Stig Venaas
WG Chair: Mike McBride
Editors: ";
description
"The module defines a collection of YANG definitions common for
all PIM modes.";
revision 2015-06-22 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for PIM";
}
/*
* Features
*/
feature global-graceful-restart {
description
"Global configuration for graceful restart support.";
}
feature intf-hello-holdtime {
description
"Support configuration of interface hello holdtime.";
}
feature intf-hello-multipler {
description
"Support configuration of interface hello multipler.";
}
feature intf-jp-interval {
description
"Support configuration of interface join prune interval.";
}
feature intf-jp-holdtime {
description
"Support configuration of interface join prune holdtime.";
}
feature intf-jp-multipler {
description
"Support configuration of interface join prune multipler.";
}
feature intf-propagation-delay {
description
"Support configuration of interface propagation delay.";
}
feature intf-override-interval {
description
"Support configuration of interface override interval.";
}
feature per-af-graceful-restart {
description
"Per AF configuration for graceful restart support.";
}
/*
* Identities
*/
/*
* Groupings
*/
grouping global-attributes {
description
"A Grouping defining global configuration attributes.";
uses graceful-restart-container {
if-feature global-graceful-restart;
}
}
grouping graceful-restart-container {
description
"A grouping defining a container of graceful restart
attributes.";
container graceful-restart {
leaf enabled {
type boolean;
description
"Enable or disable graceful restart.";
}
leaf duration {
type uint16;
units "seconds";
description
"Maximum time for graceful restart to finish.";
}
description
"Container of graceful restart attributes.";
}
}
grouping interface-attributes {
description
"A grouping defining interface attributes.";
leaf dr-priority {
type uint32;
description "DR priority";
}
leaf hello-interval {
type uint16;
description "Hello interval";
}
choice hello-holdtime-or-multipler {
description "Use holdtime or multipler";
case holdtime {
if-feature intf-hello-holdtime;
leaf hello-holdtime {
type uint16;
description "Hello holdtime";
}
}
case multipler {
if-feature intf-hello-multipler;
leaf hello-multipler {
type uint8;
description "Hello multipler";
}
}
}
leaf jp-interval {
if-feature intf-jp-interval;
type uint16;
description "Join prune interval";
}
choice jp-holdtime-or-multipler {
description "Use holdtime or multipler";
case holdtime {
if-feature intf-jp-holdtime;
leaf jp-holdtime {
type uint16;
description "Join prune holdtime";
}
}
case multipler {
if-feature intf-jp-multipler;
leaf jp-multipler {
type uint8;
description "Join prune multipler";
}
}
}
leaf propagation-delay {
if-feature intf-propagation-delay;
type uint16;
description "Propagation description";
}
leaf override-interval {
if-feature intf-override-interval;
type uint16;
description "Override interval";
}
leaf passive {
type empty;
description
"Specifies that no PIM messages are sent out of the PIM
interface, but the interface can be included in a multicast
forwarding entry.";
}
}
grouping per-af-attributes {
description
"A grouping defining per address family attributes.";
uses graceful-restart-container {
if-feature per-af-graceful-restart;
}
}
/*
* Configuration data nodes
*/
augment "/rt:routing/rt:routing-instance/"
+ "rt:routing-protocols" {
description
"PIM augmentation to routing instance configuration.";
container pim {
description
"PIM configuration data.";
uses global-attributes;
list address-family {
key "address-family";
description
"Each list entry for one address family.";
uses rt:address-family;
uses per-af-attributes;
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of pim interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the global interface
list.";
}
uses interface-attributes;
} // interface
}
} // address-family
} // pim
} // augment
/*
* Operational state data nodes
*/
augment "/rt:routing-state/rt:routing-instance/"
+ "rt:routing-protocols" {
description
"PIM augmentation to routing instance state.";
container pim {
description
"PIM state data.";
list address-family {
key "address-family";
description
"Each list entry for one address family.";
uses rt:address-family;
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of pim interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the global interface
list.";
}
} // interface
}
} // address-family
} // pim
} // augment
/*
* RPCs
*/
/*
* Notifications
*/
}