Skip to content

Commit

Permalink
yang: pim yang definition
Browse files Browse the repository at this point in the history
Defined frr-pim.yang, frr-pim-rp.yang files for PIM protocol.

Co-authored-by: Sarita Patra <saritap@vmware.com>
Co-authored-by: Santosh P K <sapk@vmware.com>
Co-authored-by: vishaldhingra <vdhingra@vmware.com>

Signed-off-by: Sarita Patra <saritap@vmware.com>
  • Loading branch information
patrasar committed Apr 9, 2020
1 parent 660e39e commit 347caac
Show file tree
Hide file tree
Showing 4 changed files with 599 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/subdir.am
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ nodist_lib_libfrr_la_SOURCES = \
yang/frr-module-translator.yang.c \
yang/frr-nexthop.yang.c \
yang/frr-igmp.yang.c \
yang/frr-pim.yang.c \
yang/frr-pim-rp.yang.c \
# end

vtysh_scan += \
Expand Down
133 changes: 133 additions & 0 deletions yang/frr-pim-rp.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
module frr-pim-rp {
yang-version "1.1";
namespace "http://frrouting.org/yang/pim-rp";

prefix frr-pim-rp;

import ietf-inet-types {
prefix "inet";
}

import ietf-routing-types {
prefix "rt-types";
}

import frr-routing {
prefix "frr-rt";
}

import frr-pim {
prefix "frr-pim";
}

organization
"Free Range Routing";

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
all PIM (Protocol Independent Multicast) RP (Rendezvous Point) model.";

revision 2017-03-09 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for PIM RP";
}

typedef ipv4-multicast-group-address-prefix {
type inet:ipv4-prefix{
pattern '(2((2[4-9])|(3[0-9]))\.)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(/(([4-9])|([1-2][0-9])|(3[0-2])))';
}
description
"This type represents an IPv4 multicast group prefix,
which is in the range from 224.0.0.0 to 239.255.255.255.";
}

typedef ipv6-multicast-group-address-prefix {
type inet:ipv6-prefix {
pattern
'(((FF|ff)[0-9a-fA-F]{2}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/((1[6-9])|([2-9][0-9])|(1[0-1][0-9])|(12[0-8])))';
pattern
'(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
}
description
"This type represents an IPv6 multicast group prefix,
which is in the range of FF00::/8.";
}

typedef ip-multicast-group-address-prefix {
description "The IP-Multicast-Group-Address-Prefix type represents an IP multicast address
prefix and is IP version neutral. The format of the textual representations implies the IP
version. It includes a prefix-length, separated by a '/' sign.";
type union {
type ipv4-multicast-group-address-prefix;
type ipv6-multicast-group-address-prefix;
}
} // typedef ip-multicast-group-address-prefix

typedef plist-ref {
type string;
}

/*
* Groupings
*/
grouping static-rp-container {
description
"Grouping of static RP container.";

container static-rp {
description
"Containing static RP attributes.";

list rp-list {
key "rp-address";
description
"A list of RP addresses.";

leaf rp-address {
type inet:ip-address;
description
"Specifies a static RP address.";
}

choice group-list-or-prefix-list {
description "Use group-list or prefix-list";
case group-list {
leaf-list group-list{
type ip-multicast-group-address-prefix;
description
"List of multicast group address.";
}
}
case prefix-list {
leaf prefix-list {
type plist-ref;
description
"Group prefix-list filter";
}
}
}
}
} // static-rp
} // static-rp-container

/*
* Configuration data nodes
*/
augment "/frr-rt:routing/frr-rt:control-plane-protocols/"
+ "frr-rt:control-plane-protocol/frr-pim:pim/"
+ "frr-pim:address-family" {
description "PIM RP augmentation.";

container rp {
description
"PIM RP configuration data.";
uses static-rp-container;
} // rp
} // augment
}
Loading

0 comments on commit 347caac

Please sign in to comment.