3 namespace "http://frrouting.org/yang/pim";
15 import ietf-routing-types {
19 import ietf-inet-types {
27 "FRR Users List: <mailto:frog@lists.frrouting.org>
28 FRR Development List: <mailto:dev@lists.frrouting.org>";
31 "The module defines a collection of YANG definitions common for
32 PIM (Protocol Independent Multicast) model.
34 Copyright 2020 FRRouting
36 Redistribution and use in source and binary forms, with or without
37 modification, are permitted provided that the following conditions
40 1. Redistributions of source code must retain the above copyright notice,
41 this list of conditions and the following disclaimer.
43 2. Redistributions in binary form must reproduce the above copyright
44 notice, this list of conditions and the following disclaimer in the
45 documentation and/or other materials provided with the distribution.
47 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
48 \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
49 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
50 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
51 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
52 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
53 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
54 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
55 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
56 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
57 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
63 "RFC XXXX: A YANG Data Model for PIM";
67 base frr-rt:routing-protocol;
69 "'Pim' routing pseudo-protocol.";
80 grouping msdp-timers {
88 "Hold period is started at the MSDP peer connection establishment
89 and is reset every new message. When the period expires the
90 connection is closed. This value should be greater than the
91 remote keep-alive time.";
101 "To maintain a connection established it is necessary to send
102 keep alive messages in a certain frequency and this allows its
103 configuration. This value should be less than the remote
107 leaf connection-retry {
114 "This period is used in the MSDP peer with the highest IP value
115 in the pair and configures the interval between TCP connection
120 grouping global-pim-config-attributes {
122 "A grouping defining per address family pim global attributes";
131 leaf ecmp-rebalance {
135 "Enable PIM ECMP Rebalance.";
138 leaf keep-alive-timer {
144 "Keep alive Timer in seconds.";
147 leaf rp-keep-alive-timer {
153 "RP keep alive Timer in seconds.";
156 leaf send-v6-secondary {
157 when "../frr-pim:address-family = 'frr-rt:ipv4'" {
159 "Only applicable to IPv4 address family.";
164 "Send v6 secondary addresses.";
167 container spt-switchover {
173 enum "PIM_SPT_IMMEDIATE" {
176 "Immediate switch to SPT Tree.";
178 enum "PIM_SPT_INFINITY" {
181 "Never switch to SPT Tree.";
184 default "PIM_SPT_IMMEDIATE";
186 "SPT-Switchover action";
189 leaf spt-infinity-prefix-list {
190 when "../spt-action = 'PIM_SPT_INFINITY'" {
192 "This leaf is only valid when the spt action
193 is PIM_SPT_INFINITY.";
197 "Prefix-List to control which groups to switch.";
201 leaf ssm-prefix-list {
204 "Prefix-list used to define Source-Specific Multicast address range.";
207 leaf-list ssm-pingd-source-ip {
208 type inet:ip-address;
210 "Enable ssmpingd operation.";
213 /* Global timers configuration. */
215 description "Global MSDP configuration.";
219 list msdp-mesh-groups {
222 "RFC 3618 Section 10.2. MSDP mesh-group semantics
224 Groups multiple MSDP peers to reduce SA flooding typically used
225 in intra-domain settings.";
232 "The mesh group name.";
236 type inet:ip-address;
238 "Source IP address for the TCP connections.";
245 type inet:ip-address;
247 "Peer member IP address.";
255 "Configure MSDP peer.";
258 type inet:ip-address;
260 "MSDP peer IP address.";
265 type inet:ip-address;
267 "MSDP source IP address.";
273 "Multi-chassis link aggregation.";
276 type frr-interface:interface-ref;
278 "Outgoing interface name.";
282 type inet:ip-address;
289 enum "MLAG_ROLE_NONE" {
294 enum "MLAG_ROLE_PRIMARY" {
297 "MLAG role primary.";
300 enum "MLAG_ROLE_SECONDARY" {
303 "MLAG role secondary.";
306 default "MLAG_ROLE_NONE";
319 leaf register-accept-list {
322 "Only accept registers from a specific source prefix list.";
324 } // global-pim-config-attributes
326 grouping interface-pim-config-attributes {
328 "A grouping defining pim interface attributes per address family.";
334 "Enable PIM flag on the interface.";
337 leaf hello-interval {
346 leaf hello-holdtime {
350 must ". > ./../hello-interval" {
351 error-message "HoldTime must be greater than Hello";
359 "Enable BFD support on the interface.";
361 leaf min-rx-interval {
367 "Required min receive interval";
370 leaf min-tx-interval {
376 "Desired min transmit interval";
391 "Use a preconfigure BFD profile.";
399 "Enables BSM support on the interface.";
406 "Accept/Send unicast BSM on the interface.";
413 "Mark interface as Active-Active for MLAG operations.";
422 "DR (Designated Router) priority";
426 type inet:ip-address;
428 "Primary address of the interface set by user.";
431 leaf multicast-boundary-oil {
434 "Prefix-List to define multicast boundary";
438 key "source-addr group-addr";
440 "Add multicast route.";
443 type frr-interface:interface-ref;
445 "Outgoing interface name.";
449 type inet:ip-address;
451 "Multicast source address.";
455 type rt-types:ip-multicast-group-address;
457 "Multicast group address.";
460 } // interface-pim-config-attributes
462 grouping router-pim-config-attributes {
464 "A grouping defining pim router attributes per address family.";
471 "Number of packets to process at one time per fd.";
473 leaf join-prune-interval {
479 "Join Prune Send Interval in seconds.";
481 leaf register-suppress-time {
487 "Register Suppress Timer.";
492 * Global Configuration data nodes
494 augment "/frr-rt:routing/frr-rt:control-plane-protocols/"
495 + "frr-rt:control-plane-protocol" {
497 when "../frr-rt:type = 'frr-pim:pimd'" {
499 "This container is only valid for the 'pim' routing
503 "PIM configuration data.";
504 list address-family {
505 key "address-family";
507 "Each list entry for one address family.";
508 uses frr-rt:address-family;
509 uses global-pim-config-attributes;
516 * Per-interface configuration data
518 augment "/frr-interface:lib/frr-interface:interface" {
520 list address-family {
521 key "address-family";
523 "Each list entry for one address family.";
524 uses frr-rt:address-family;
525 uses interface-pim-config-attributes;
531 * Router configuration data
535 "PIM router parameters.";
536 list address-family {
537 key "address-family";
539 "Each list entry for one address family.";
540 uses frr-rt:address-family;
541 uses router-pim-config-attributes;