summaryrefslogtreecommitdiffstats
path: root/yang/frr-route-types.yang
diff options
context:
space:
mode:
Diffstat (limited to 'yang/frr-route-types.yang')
-rw-r--r--yang/frr-route-types.yang181
1 files changed, 181 insertions, 0 deletions
diff --git a/yang/frr-route-types.yang b/yang/frr-route-types.yang
new file mode 100644
index 0000000..ffc671c
--- /dev/null
+++ b/yang/frr-route-types.yang
@@ -0,0 +1,181 @@
+module frr-route-types {
+ yang-version 1.1;
+ namespace "http://frrouting.org/yang/route-types";
+ prefix frr-route-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
+ "This module defines typedefs for route types.
+
+ 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 2018-03-28 {
+ description
+ "Initial revision.";
+ }
+
+ typedef frr-route-types-v4 {
+ type enumeration {
+ enum kernel {
+ value 1;
+ }
+ enum connected {
+ value 2;
+ }
+ enum static {
+ value 3;
+ }
+ enum rip {
+ value 4;
+ }
+ enum ospf {
+ value 6;
+ }
+ enum isis {
+ value 8;
+ }
+ enum bgp {
+ value 9;
+ }
+ enum eigrp {
+ value 11;
+ }
+ enum nhrp {
+ value 12;
+ }
+ enum table {
+ value 15;
+ }
+ enum vnc {
+ value 17;
+ }
+ enum vnc-direct {
+ value 18;
+ }
+ enum babel {
+ value 22;
+ }
+ enum sharp {
+ value 23;
+ }
+ enum openfabric {
+ value 26;
+ }
+ }
+ }
+
+ typedef frr-route-types-v6 {
+ type enumeration {
+ enum kernel {
+ value 1;
+ }
+ enum connected {
+ value 2;
+ }
+ enum static {
+ value 3;
+ }
+ enum ripng {
+ value 5;
+ }
+ enum ospf6 {
+ value 7;
+ }
+ enum isis {
+ value 8;
+ }
+ enum bgp {
+ value 9;
+ }
+ enum nhrp {
+ value 12;
+ }
+ enum table {
+ value 15;
+ }
+ enum vnc {
+ value 17;
+ }
+ enum vnc-direct {
+ value 18;
+ }
+ enum babel {
+ value 22;
+ }
+ enum sharp {
+ value 23;
+ }
+ enum openfabric {
+ value 26;
+ }
+ }
+ }
+
+ typedef frr-route-types {
+ description "Route types as enumerated in `lib/route_types.txt`";
+ type union {
+ type frr-route-types-v4;
+ type frr-route-types-v6;
+ }
+ }
+
+ typedef ipv4-multicast-group-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-prefix {
+ type inet:ipv6-prefix {
+ pattern
+ '(([fF]{2}[0-9a-fA-F]{2}):).*';
+ }
+ description
+ "This type represents an IPv6 multicast group prefix,
+ which is in the range of FF00::/8.";
+ }
+
+ typedef ip-multicast-group-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-prefix;
+ type ipv6-multicast-group-prefix;
+ }
+ }
+}