frr/yang/frr-interface.yang

300 lines
5.7 KiB
YANG
Raw Normal View History

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.";
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 vrf";
description
"Interface.";
leaf name {
type string {
length "1..16";
}
description
"Interface name.";
}
leaf vrf {
type string {
length "1..16";
}
/* yang version 0.16 having issue accessing leafref. */
/* type frr-vrf:vrf-ref;*/
description
"VRF this interface is associated with.";
}
leaf description {
type string;
description
"Interface description.";
}
container state {
config false;
uses if-common-operational;
}
}
}
}