From: Chirag Shah Date: Wed, 5 Feb 2020 22:23:52 +0000 (-0800) Subject: yang: add operational data to frr-interface model X-Git-Tag: base_7.4~70^2~10 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=219dabe8d49f313f460c0eb9bae29c4a76ee1275;p=matthieu%2Ffrr.git yang: add operational data to frr-interface model module: frr-interface +--rw lib +--rw interface* [name vrf] +--rw name string +--rw vrf frr-vrf:vrf-ref +--rw description? string +--ro state +--ro if-index? int32 +--ro mtu? uint16 +--ro mtu6? uint32 +--ro speed? uint32 +--ro metric? uint32 +--ro flags? if-flags-type +--ro type? identityref +--ro phy-address? ietf-yang-types:mac-address Signed-off-by: Chirag Shah --- diff --git a/yang/frr-interface.yang b/yang/frr-interface.yang index ea36bfb5d6..7ebba935a4 100644 --- a/yang/frr-interface.yang +++ b/yang/frr-interface.yang @@ -7,6 +7,14 @@ module frr-interface { prefix frr-vrf; } + import ietf-interfaces { + prefix ietf-if; + } + + import ietf-yang-types { + prefix yang; + } + organization "FRRouting"; contact @@ -15,6 +23,10 @@ module frr-interface { 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"; @@ -24,6 +36,231 @@ module frr-interface { "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"; @@ -52,15 +289,11 @@ module frr-interface { description "Interface description."; } - } - } - typedef interface-ref { - type leafref { - require-instance false; - path "/frr-interface:lib/frr-interface:interface/frr-interface:name"; + container state { + config false; + uses if-common-operational; + } } - description - "Reference to an interface"; } }