module ietf-pim-sm {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pim-sm";
prefix pim-sm;
import ietf-inet-types {
prefix "inet";
}
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:
Editor: Xufeng Liu
Editor: Pete McAllister
Editor: Anish Peter
Editor: Mahesh Sivakumar
Editor: Yisong Liu
Editor: Fangwei Hu
";
description
"The YANG module defines a PIM (Protocol Independent Multicast)
SM (Sparse Mode) model.
Copyright (c) 2018 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
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
revision 2018-04-16 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for PIM.
RFC7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised). Sec. 4.2.";
}
/*
* Features
*/
feature spt-switch-infinity {
description
"This feature indicates that the system supports configuration
choice whether to trigger the switchover from the RPT
(Rendezvous Point Tree) to the SPT (Shortest Path Tree).";
reference
"RFC7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised). Sec. 4.2.";
}
feature spt-switch-policy {
description
"This feature indicates that the system supports configuring
policy for the switchover from the RPT to the SPT.";
reference
"RFC7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised). Sec. 4.2.";
}
/*
* Identities
*/
identity rp-sm {
base pim-rp:rp-mode;
description
"SM (Sparse Mode).";
}
/*
* Groupings
*/
grouping static-rp-sm-container {
description
"Grouping that contains SM attributes for static RP.";
container sm {
presence
"Indicate the support of sparse mode.";
description
"PIM SM configuration data.";
uses pim-rp:static-rp-attributes;
} // sm
} // static-rp-sm-container
/*
* Configuration data nodes
*/
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family" {
description "PIM SM augmentation.";
container sm {
description
"PIM SM configuration data.";
container asm {
description
"ASM (Any Source Multicast) attributes.";
container anycast-rp {
presence
"Present to enable anycast RP (Rendezvous Point).";
description
"Anycast RP attributes.";
list ipv4-anycast-rp {
when "../../../../pim-base:address-family = 'rt:ipv4'" {
description
"Only applicable to IPv4 address family.";
}
key "anycast-address rp-address";
description
"A list of IPv4 anycast RP settings, only applicable
when pim-base:address-family is IPv4.";
leaf anycast-address {
type inet:ipv4-address;
description
"IP address of the anycast RP set. This IP address
is used by the multicast groups or sources to join
or register.";
}
leaf rp-address {
type inet:ipv4-address;
description
"IP address of the router configured with anycast
RP. This is the IP address where the Register
messages are forwarded.";
}
}
list ipv6-anycast-rp {
when "../../../../pim-base:address-family = 'rt:ipv6'" {
description
"Only applicable to IPv6 address family.";
}
key "anycast-address rp-address";
description
"A list of IPv6 anycast RP settings, only applicable
when pim-base:address-family is IPv6.";
leaf anycast-address {
type inet:ipv6-address;
description
"IP address of the anycast RP set. This IP address
is used by the multicast groups or sources to join
or register.";
}
leaf rp-address {
type inet:ipv6-address;
description
"IP address of the router configured with anycast
RP. This is the IP address where the Register
messages are forwarded.";
}
}
}
container spt-switch {
description
"SPT (Shortest Path Tree) switching attributes.";
container infinity {
if-feature spt-switch-infinity;
presence
"Present if SPT switchover threshold is set to
infinity, according to the policy specified below.";
description
"The receiver's DR (Designated Router) never triggers
the switchover from the RPT to the SPT.";
leaf policy-name {
if-feature spt-switch-policy;
type string;
description
"The string value is the name to uniquely identify a
policy that contains one or more policy rules used
to accept or reject certain multicast groups.
The groups accepted by this policy have the SPT
switchover threshold set to infinity, meaning that
they will stay on the shared tree forever.
If a policy is not specified, the entire multicast
address space is accepted.
The definition of such a policy is outside the scope
of this document.";
}
} // infinity
}
} // asm
container ssm {
presence
"Present to enable SSM (Source-Specific Multicast).";
description
"SSM (Source-Specific Multicast) attributes.";
leaf range-policy {
type string;
description
"The string value is the name to uniquely identify a
policy that contains one or more policy rules used
to accept or reject certain multicast groups.
The groups accepted by this policy define the multicast
group rang used by SSM.
If a policy is not specified, the default SSM multicast
group rang is used.
The default SSM multicast group range is 232.0.0.0/8 for
IPv4 and ff3x::/96 for IPv6 where x reprents any valid
scope identifier.
The definition of such a policy is outside the scope
of this document.";
reference
"RFC4607: Source-Specific Multicast for IP.";
}
} // ssm
} // sm
} // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:interfaces/pim-base:interface/"
+ "pim-base:address-family" {
description "PIM SM augmentation.";
container sm {
presence "Present to enable sparse-mode.";
description
"PIM SM configuration data.";
leaf passive {
type empty;
description
"Specifies that no PIM messages are sent or accepted on
this PIM interface, but the interface can be included in a
multicast forwarding entry.";
}
} // sm
} // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv4-rp" {
description "PIM SM augmentation.";
uses static-rp-sm-container;
} // augment
augment "/rt:routing/rt:control-plane-protocols/pim-base:pim/"
+ "pim-base:address-family/pim-rp:rp/"
+ "pim-rp:static-rp/pim-rp:ipv6-rp" {
description "PIM SM augmentation.";
uses static-rp-sm-container;
} // augment
}