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;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-routing {
prefix rt;
reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)";
}
import ietf-pim-base {
prefix pim-base;
reference
"RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)";
}
import ietf-pim-rp {
prefix pim-rp;
reference
"RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)";
}
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
"This YANG module defines a PIM (Protocol Independent Multicast)
SM (Sparse Mode) model.
Copyright (c) 2022 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 Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9128; see the
RFC itself for full legal notices.";
revision 2022-10-19 {
description
"Initial revision.";
reference
"RFC 9128: A YANG Data Model for Protocol Independent
Multicast (PIM)";
}
/*
* Features
*/
feature spt-switch-infinity {
description
"This feature indicates that the system supports the
configuration choice of whether to trigger switchover from
the RPT (Rendezvous Point Tree) to the SPT (Shortest Path
Tree).";
reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 4.2";
}
feature spt-switch-policy {
description
"This feature indicates that the system supports configuring
the policy for switchover from the RPT to the SPT.";
reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised), Section 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 RPs.";
container sm {
presence "Indicates support for PIM-SM.";
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 an Anycast-RP
(Rendezvous Point).";
description
"Anycast-RP attributes.";
list ipv4-anycast-rp {
when "../../../../pim-base:address-family = 'rt:ipv4'" {
description
"Only applicable to an 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 an
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 an 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 an
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 the SPT switchover threshold is set
to infinity, according to the policy specified
below.";
description
"The receiver's DR (Designated Router) never triggers
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 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 range used by SSM.
If a policy is not specified, the default SSM multicast
group range is used.
The default SSM multicast group range is 232.0.0.0/8
for IPv4 and ff3x::/96 for IPv6, where x represents any
valid scope identifier.
The definition of such a policy is outside the scope
of this document.";
reference
"RFC 4607: 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 PIM-SM.";
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
}