summaryrefslogtreecommitdiffstats
path: root/yang/frr-interface.yang
diff options
context:
space:
mode:
Diffstat (limited to 'yang/frr-interface.yang')
-rw-r--r--yang/frr-interface.yang320
1 files changed, 320 insertions, 0 deletions
diff --git a/yang/frr-interface.yang b/yang/frr-interface.yang
new file mode 100644
index 0000000..012c96b
--- /dev/null
+++ b/yang/frr-interface.yang
@@ -0,0 +1,320 @@
+// SPDX-License-Identifier: BSD-2-Clause
+module frr-interface {
+ yang-version 1.1;
+ namespace "http://frrouting.org/yang/interface";
+ prefix frr-interface;
+
+ import frr-vrf {
+ prefix frr-vrf;
+ }
+
+ import ietf-interfaces {
+ prefix ietf-if;
+ }
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "FRRouting";
+ contact
+ "FRR Users List: <mailto:frog@lists.frrouting.org>
+ FRR Development List: <mailto:dev@lists.frrouting.org>";
+ description
+ "This module defines a model for managing FRR interfaces.
+
+ 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 2020-02-05 {
+ description
+ "Added operational data";
+ }
+ revision 2019-09-09 {
+ description
+ "Added interface-ref typedef";
+ }
+ revision 2018-03-28 {
+ description
+ "Initial revision.";
+ }
+
+ identity other {
+ base ietf-if:interface-type;
+ description
+ "Other type";
+ }
+
+ identity unknown {
+ base ietf-if:interface-type;
+ description
+ "Unknown type";
+ }
+
+ identity ethernet {
+ base ietf-if:interface-type;
+ description
+ "Ethernet type";
+ }
+
+ identity exper-ethernet {
+ base ietf-if:interface-type;
+ description
+ "Experimental Ethernet type";
+ }
+
+ identity loopback {
+ base ietf-if:interface-type;
+ description
+ "Loopback type";
+ }
+
+ identity pimreg {
+ base ietf-if:interface-type;
+ description
+ "PIMSM Registration.";
+ }
+
+ identity ipip {
+ base ietf-if:interface-type;
+ description
+ "IPIP Tunnel.";
+ }
+
+ identity ipip6 {
+ base ietf-if:interface-type;
+ description
+ "IPIP6 Tunnel.";
+ }
+
+ identity ipgre {
+ base ietf-if:interface-type;
+ description
+ "GRE over IP.";
+ }
+
+ typedef interface-ref {
+ type leafref {
+ path "/frr-interface:lib/frr-interface:interface/frr-interface:name";
+ require-instance false;
+ }
+ description
+ "Reference to an interface";
+ }
+
+ typedef if-flags-type {
+ type enumeration {
+ enum "up" {
+ value 1;
+ description
+ "Active and ready to transfer packets.";
+ }
+ enum "broadcast" {
+ value 2;
+ description
+ "Broadcast enabled.";
+ }
+ enum "debug" {
+ value 3;
+ description
+ "Debug mode.";
+ }
+ enum "loopback" {
+ value 4;
+ description
+ "Loopback interface.";
+ }
+ enum "point-to-point" {
+ value 5;
+ description
+ "Point-to-Point link.";
+ }
+ enum "notrailers" {
+ value 6;
+ description
+ "This flag is unused in Linux, but it exists for BSD compatibility.
+ Avoid use of trailers";
+ }
+ enum "running" {
+ value 7;
+ description
+ "Up and Running.";
+ }
+ enum "noarp" {
+ value 8;
+ description
+ "Can't perform address resolution protocol.";
+ }
+ enum "promisc" {
+ value 9;
+ description
+ "Promiscuous mode. Receive all packets.";
+ }
+ enum "allmulti" {
+ value 10;
+ description
+ "Receive all multicast packets.";
+ }
+ enum "simplex" {
+ value 11;
+ description
+ "Does not Rx or Tx at the sametime.";
+ }
+ enum "link0" {
+ value 12;
+ description
+ "Link0.";
+ }
+ enum "link1" {
+ value 13;
+ description
+ "Link1.";
+ }
+ enum "link2" {
+ value 14;
+ description
+ "Link2.";
+ }
+ enum "multicast" {
+ value 15;
+ description
+ "Supports multicast transmission.";
+ }
+ enum "notransmit" {
+ value 16;
+ description
+ "Interface is no transmit mode.";
+ }
+ enum "nortexch" {
+ value 17;
+ description
+ "No routing info exchange.";
+ }
+ enum "virtual" {
+ value 18;
+ description
+ "Virtual interface.";
+ }
+ enum "ipv4" {
+ value 19;
+ description
+ "IPv4 enabled.";
+ }
+ enum "ipv6" {
+ value 20;
+ description
+ "IPv6 enabled.";
+ }
+ }
+ }
+
+ grouping if-common-operational {
+ leaf if-index {
+ type int32 {
+ range "0..2147483647";
+ }
+ description
+ "Interface index.";
+ }
+
+ leaf mtu {
+ type uint16;
+ description
+ "The size of the largest IPV4 packet that the interface
+ will send and receive.";
+ }
+
+ leaf mtu6 {
+ type uint32;
+ description
+ "The size of the largest IPV6 packet that the interface
+ will send and receive.";
+ }
+
+ leaf speed {
+ type uint32;
+ description
+ "Interface speed.";
+ }
+
+ leaf metric {
+ type uint32;
+ description
+ "Interface metric.";
+ }
+
+ leaf flags {
+ type if-flags-type;
+ description
+ "Interface flags.";
+ }
+
+ leaf type {
+ type identityref {
+ base ietf-if:interface-type;
+ }
+ description
+ "The link type of the interface.";
+ }
+
+ leaf phy-address {
+ type yang:mac-address;
+ description
+ "The interface's MAC address.";
+ }
+ }
+
+ container lib {
+ list interface {
+ key "name";
+ description
+ "Interface.";
+ leaf name {
+ type string;
+ description
+ "Interface name.";
+ }
+
+ leaf vrf {
+ type frr-vrf:vrf-ref;
+ description
+ "VRF this interface is associated with.";
+ config false;
+ }
+
+ leaf description {
+ type string;
+ description
+ "Interface description.";
+ }
+
+ container state {
+ config false;
+ uses if-common-operational;
+ }
+ }
+ }
+}