diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:16:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:16:35 +0000 |
commit | e2bbf175a2184bd76f6c54ccf8456babeb1a46fc (patch) | |
tree | f0b76550d6e6f500ada964a3a4ee933a45e5a6f1 /yang/frr-pim.yang | |
parent | Initial commit. (diff) | |
download | frr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.tar.xz frr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.zip |
Adding upstream version 9.1.upstream/9.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'yang/frr-pim.yang')
-rw-r--r-- | yang/frr-pim.yang | 552 |
1 files changed, 552 insertions, 0 deletions
diff --git a/yang/frr-pim.yang b/yang/frr-pim.yang new file mode 100644 index 0000000..e9b3f67 --- /dev/null +++ b/yang/frr-pim.yang @@ -0,0 +1,552 @@ +// SPDX-License-Identifier: BSD-2-Clause +module frr-pim { + yang-version "1.1"; + namespace "http://frrouting.org/yang/pim"; + + prefix frr-pim; + + import frr-interface { + prefix frr-interface; + } + + import frr-routing { + prefix "frr-rt"; + } + + import ietf-routing-types { + prefix "rt-types"; + } + + import ietf-inet-types { + prefix "inet"; + } + + organization + "FRRouting"; + + contact + "FRR Users List: <mailto:frog@lists.frrouting.org> + FRR Development List: <mailto:dev@lists.frrouting.org>"; + + description + "The module defines a collection of YANG definitions common for + PIM (Protocol Independent Multicast) model. + + Copyright 2020 FRRouting + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."; + + revision 2021-11-22 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Data Model for PIM"; + } + + identity pimd { + base frr-rt:routing-protocol; + description + "'Pim' routing pseudo-protocol."; + } + + typedef plist-ref { + type string; + } + + /* + * Groupings + */ + + grouping msdp-timers { + leaf hold-time { + type uint16 { + range "1..max"; + } + units seconds; + default 75; + description + "Hold period is started at the MSDP peer connection establishment + and is reset every new message. When the period expires the + connection is closed. This value should be greater than the + remote keep-alive time."; + } + + leaf keep-alive { + type uint16 { + range "1..max"; + } + units seconds; + default 60; + description + "To maintain a connection established it is necessary to send + keep alive messages in a certain frequency and this allows its + configuration. This value should be less than the remote + hold time."; + } + + leaf connection-retry { + type uint16 { + range "1..max"; + } + units seconds; + default 30; + description + "This period is used in the MSDP peer with the highest IP value + in the pair and configures the interval between TCP connection + attempts."; + } + } + + grouping global-pim-config-attributes { + description + "A grouping defining per address family pim global attributes"; + + leaf ecmp { + type boolean; + default "false"; + description + "Enable PIM ECMP."; + } + + leaf ecmp-rebalance { + type boolean; + default "false"; + description + "Enable PIM ECMP Rebalance."; + } + + leaf keep-alive-timer { + type uint16 { + range "1..max"; + } + default "210"; + description + "Keep alive Timer in seconds."; + } + + leaf rp-keep-alive-timer { + type uint16 { + range "1..max"; + } + default "210"; + description + "RP keep alive Timer in seconds."; + } + + leaf send-v6-secondary { + when "../frr-pim:address-family = 'frr-rt:ipv4'" { + description + "Only applicable to IPv4 address family."; + } + type boolean; + default "true"; + description + "Send v6 secondary addresses."; + } + + container spt-switchover { + description + "SPT-Switchover."; + + leaf spt-action { + type enumeration { + enum "PIM_SPT_IMMEDIATE" { + value 0; + description + "Immediate switch to SPT Tree."; + } + enum "PIM_SPT_INFINITY" { + value 1; + description + "Never switch to SPT Tree."; + } + } + default "PIM_SPT_IMMEDIATE"; + description + "SPT-Switchover action"; + } + + leaf spt-infinity-prefix-list { + when "../spt-action = 'PIM_SPT_INFINITY'" { + description + "This leaf is only valid when the spt action + is PIM_SPT_INFINITY."; + } + type plist-ref; + description + "Prefix-List to control which groups to switch."; + } + } + + leaf ssm-prefix-list { + type plist-ref; + description + "Prefix-list used to define Source-Specific Multicast address range."; + } + + leaf-list ssm-pingd-source-ip { + type inet:ip-address; + description + "Enable ssmpingd operation."; + } + + /* Global timers configuration. */ + container msdp { + description "Global MSDP configuration."; + uses msdp-timers; + } + + list msdp-mesh-groups { + key "name"; + description + "RFC 3618 Section 10.2. MSDP mesh-group semantics + + Groups multiple MSDP peers to reduce SA flooding typically used + in intra-domain settings."; + + leaf name { + type string { + length 1..64; + } + description + "The mesh group name."; + } + + leaf source { + type inet:ip-address; + description + "Source IP address for the TCP connections."; + } + + list members { + key "address"; + + leaf address { + type inet:ip-address; + description + "Peer member IP address."; + } + } + } + + list msdp-peer { + key "peer-ip"; + description + "Configure MSDP peer."; + + leaf peer-ip { + type inet:ip-address; + description + "MSDP peer IP address."; + } + + leaf source-ip { + mandatory true; + type inet:ip-address; + description + "MSDP source IP address."; + } + } + + container mlag { + presence + "Multi-chassis link aggregation."; + + leaf peerlink-rif { + type frr-interface:interface-ref; + description + "Outgoing interface name."; + } + + leaf reg-address { + type inet:ip-address; + description + "reg address."; + } + + leaf my-role { + type enumeration { + enum "MLAG_ROLE_NONE" { + value 0; + description + "MLAG role none."; + } + enum "MLAG_ROLE_PRIMARY" { + value 1; + description + "MLAG role primary."; + } + + enum "MLAG_ROLE_SECONDARY" { + value 2; + description + "MLAG role secondary."; + } + } + default "MLAG_ROLE_NONE"; + description + "Mlag role."; + } + + leaf peer-state { + type boolean; + default "false"; + description + "Peer state"; + } + } + + leaf register-accept-list { + type plist-ref; + description + "Only accept registers from a specific source prefix list."; + } + } // global-pim-config-attributes + + grouping interface-pim-config-attributes { + description + "A grouping defining pim interface attributes per address family."; + + leaf pim-enable { + type boolean; + default "false"; + description + "Enable PIM flag on the interface."; + } + + leaf pim-passive-enable { + type boolean; + default "false"; + description + "Disable exchange of protocol packets."; + } + + leaf hello-interval { + type uint16 { + range "1..max"; + } + default "30"; + description + "Hello interval"; + } + + leaf hello-holdtime { + type uint16 { + range "1..max"; + } + must ". > ./../hello-interval" { + error-message "HoldTime must be greater than Hello"; + } + description + "Hello holdtime"; + } + + container bfd { + presence + "Enable BFD support on the interface."; + + leaf min-rx-interval { + type uint16 { + range "1..max"; + } + default "300"; + description + "Required min receive interval"; + } + + leaf min-tx-interval { + type uint16 { + range "1..max"; + } + default "300"; + description + "Desired min transmit interval"; + } + + leaf detect_mult { + type uint8 { + range "2..255"; + } + default "3"; + description + "Detect Multiplier"; + } + + leaf profile { + type string; + description + "Use a preconfigure BFD profile."; + } + } + + leaf bsm { + type boolean; + default "true"; + description + "Enables BSM support on the interface."; + } + + leaf unicast-bsm { + type boolean; + default "true"; + description + "Accept/Send unicast BSM on the interface."; + } + + leaf active-active { + type boolean; + default "false"; + description + "Mark interface as Active-Active for MLAG operations."; + } + + leaf dr-priority { + type uint32 { + range "1..max"; + } + default 1; + description + "DR (Designated Router) priority"; + } + + leaf use-source { + type inet:ip-address; + description + "Primary address of the interface set by user."; + } + + leaf multicast-boundary-oil { + type plist-ref; + description + "Prefix-List to define multicast boundary"; + } + + list mroute { + key "source-addr group-addr"; + description + "Add multicast route."; + + leaf oif { + type frr-interface:interface-ref; + description + "Outgoing interface name."; + } + + leaf source-addr { + type inet:ip-address; + description + "Multicast source address."; + } + + leaf group-addr { + type rt-types:ip-multicast-group-address; + description + "Multicast group address."; + } + } + } // interface-pim-config-attributes + + grouping router-pim-config-attributes { + description + "A grouping defining pim router attributes per address family."; + leaf packets { + type uint8 { + range "1..max"; + } + default "3"; + description + "Number of packets to process at one time per fd."; + } + leaf join-prune-interval { + type uint16 { + range "1..max"; + } + default "60"; + description + "Join Prune Send Interval in seconds."; + } + leaf register-suppress-time { + type uint16 { + range "1..max"; + } + default "60"; + description + "Register Suppress Timer."; + } + } + + /* + * Global Configuration data nodes + */ + augment "/frr-rt:routing/frr-rt:control-plane-protocols/" + + "frr-rt:control-plane-protocol" { + container pim { + when "../frr-rt:type = 'frr-pim:pimd'" { + description + "This container is only valid for the 'pim' routing + protocol."; + } + description + "PIM configuration data."; + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses global-pim-config-attributes; + + } //address-family + } // pim + } // augment + + /* + * Per-interface configuration data + */ + augment "/frr-interface:lib/frr-interface:interface" { + container pim { + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses interface-pim-config-attributes; + } + } + } + + /* + * Router configuration data + */ + container pim { + description + "PIM router parameters."; + list address-family { + key "address-family"; + description + "Each list entry for one address family."; + uses frr-rt:address-family; + uses router-pim-config-attributes; + } + } +} |