revision 2019-06-01 {
description
"Initial revision.";
+
+ reference
+ "FRRouting";
}
feature ipv6-router-advertisements {
"Multicast PIM-SM.";
}
}
+ description
+ "Type for VTEP flood type.";
}
/*
*/
grouping vni-information {
+ description
+ "Grouping for VNI information.";
+
choice type-choice {
+ description
+ "Choice between L2 and L3 VNI information.";
+
case l2 {
leaf is-layer2 {
type empty;
*/
grouping vni-l2-detail {
+ description
+ "Grouping for VNI L2 details.";
+
leaf if-index {
type uint32;
description
}
list remote-vtep-list {
+ description
+ "List of remote VTEPs.";
+
leaf remote-vtep {
type inet:ipv4-address;
description
leaf vtep-flood {
type vni-vtep-flood-type;
+ description
+ "VTEP flood type.";
}
}
}
*/
grouping vni-l3-detail {
+ description
+ "Grouping for VNI L3 details.";
+
leaf svi-interface {
type frr-interface:interface-ref;
description
*/
grouping zebra-debugs {
+ description
+ "Grouping for Zebra debugging options.";
+
leaf debug-events {
type boolean;
description
}
grouping ribs {
+ description
+ "Grouping for RIBs supported by FRR.";
+
container ribs {
config false;
description
"RIBs supported by FRR.";
list rib {
key "afi-safi-name table-id";
+
+ description
+ "List of RIBs, each with a specific AFI/SAFI name and table ID.";
+
leaf afi-safi-name {
type identityref {
base frr-rt:afi-safi-type;
leaf table-id {
type uint32;
- default "254";
description
"Routing Table id (default id - 254).";
}
list route {
key "prefix";
+
+ description
+ "List of routes, each with a specific prefix.";
+
leaf prefix {
type inet:ip-prefix;
description
list route-entry {
key "protocol";
+
+ description
+ "List of route entries, each owned by a specific protocol.";
+
leaf protocol {
type frr-route-types:frr-route-types;
description
"Retrieve IPv4 or IPv6 unicast routes.";
input {
choice ip-type {
+ description
+ "Choice between retrieving IPv4 routes and retrieving IPv6 routes.";
+
case v4 {
leaf ipv4 {
type empty;
}
choice vrf-choice {
+ description
+ "Choice between retrieving routes in a non-default VRF or |
+ retrieving routes from all VRFs.";
+
case single {
leaf vrf {
type frr-vrf:vrf-ref;
}
choice detail {
+ description
+ "Choice between including detailed information and |
+ including summary information only.";
+
case det {
leaf include-detail {
type empty;
// End of input
output {
choice route-list {
+ description
+ "Choice between IPv4 route information and IPv6 route information.";
+
case v4 {
container routes-v4 {
description
"IPv4 route information.";
list route {
+ description
+ "List of IPv4 routes.";
+
uses ip4-route;
}
}
description
"IPv6 route information.";
list route {
+ description
+ "List of IPv6 routes.";
+
uses ip6-route;
}
}
"Retrieve IPv6 multicast routes.";
input {
choice vrf-choice {
+ description
+ "Choice between retrieving routes in a non-default VRF or |
+ retrieving routes from all VRFs.";
+
case single {
leaf vrf {
type frr-vrf:vrf-ref;
description
"IPv6 mcast route information.";
list route {
+ description
+ "List of IPv6 routes.";
+
uses ip6-route;
}
}
// Note: no input clause.
output {
list vrf-list {
+ description
+ "List of VRF information including name, user configuration status, |
+ VRF ID, and VRF type.";
+
leaf name {
type frr-vrf:vrf-ref;
description
}
choice vrf-type {
+ description
+ "Choice between specifying the VRF as inactive, associated with a net namespace, |
+ or associated with a table ID.";
+
case inactive {
leaf is-inactive {
type empty;
// Note: no input clause.
output {
list vrf-vni-list {
+ description
+ "List of VRF VNI information including VRF name, EVPN VNI, VxLAN interface name, |
+ SVI interface name, router MAC address, and state.";
+
leaf vrf-name {
type frr-vrf:vrf-ref;
description
}
choice dad-freeze-choice {
+ description
+ "Choice between setting duplicate address detection |
+ freeze to permanent or specifying a timer.";
+
case freeze-permanent {
leaf dad-freeze-perm {
type empty;
// End get-evpn-info
rpc get-vni-info {
+ description
+ "Retrieve information about EVPN VNIs.";
+
// If no vni is specified, retrieve global list.
input {
choice vni-choice {
default "all-vnis";
+ description
+ "Choice between retrieving information about all VNIs or a specific EVPN VNI.";
+
case all-vnis {
leaf all-vnis {
type empty;
uses vni-information;
choice detail-choice {
+ description
+ "Choice between detailed L2 or L3 information.";
+
case l2 {
description
"Detailed L2 information.";
input {
choice vni-choice {
default "all-vnis";
+ description
+ "Choice between retrieving information about all VNIs or |
+ a specific EVPN VNI and a single RMAC address.";
+
case all-vnis {
leaf all-vnis {
type empty;
output {
list rmac-info-list {
+ description
+ "List of RMAC information including RMAC address, remote VTEP IP address, |
+ refcount, and associated IP prefixes.";
+
leaf rmac {
type yang:mac-address;
description
}
list prefix-list {
+ description
+ "List of IP prefixes associated with the RMAC.";
+
leaf prefix-item {
type inet:ip-prefix;
description
input {
choice vni-choice {
default "all-vnis";
+ description
+ "Choice between retrieving information about all VNIs or |
+ a specific EVPN VNI and a single host IP address.";
+
case all-vnis {
leaf all-vnis {
type empty;
output {
list nh-info-list {
+ description
+ "List of nexthop information including IP address, MAC address, and refcount.";
+
leaf ip-addr {
type inet:ip-address;
description
}
list prefix-list {
+ description
+ "List of IP prefixes associated with the RMAC.";
+
leaf prefix-item {
type inet:ip-prefix;
description
"Clear duplicate address detection state for one or all VNIs.";
input {
choice clear-dup-choice {
+ description
+ "Choice between clearing all VNIs or |
+ clearing state for a single EVPN VNI |
+ and a specific MAC or IP address.";
+
case all-case {
leaf all-vnis {
type empty;
input {
choice all-choice {
default "all-vni";
+ description
+ "Choice between retrieving information for all VNIs or |
+ including detailed results, a single VTEP address, or |
+ showing duplicate addresses.";
+
case all-vni {
leaf all-vnis {
type empty;
}
choice all-choices {
+ description
+ "Choice between including detailed results, a single VTEP address, |
+ or showing duplicate addresses.";
+
case detail-case {
leaf all-detail {
type empty;
}
choice single-choices {
+ description
+ "Choice between including detailed results, a specific MAC address, |
+ a single VTEP address, or showing duplicate addresses.";
+
case detail-case {
leaf single-detail {
type empty;
// End of input section
output {
list mac-list {
+ description
+ "List of MAC addresses.";
+
leaf mac-addr {
type yang:mac-address;
description
}
container dup-detect-started {
+ description
+ "Container for duplicate detection process start time and count.";
+
leaf dup-detect-start {
type unix-timestamp;
description
}
list neighbor-list {
+ description
+ "List of neighbor addresses.";
+
leaf neighbor-addr {
type inet:ip-address;
description
}
choice local-rem-choice {
+ description
+ "Choice between local interface and VLAN or remote VTEP IP address.";
+
case local-case {
leaf intf {
type frr-interface:interface-ref;
input {
choice all-choice {
default "all-vni";
+ description
+ "Choice between retrieving information for all VNIs or including detailed results or showing duplicates.";
case all-vni {
leaf all-vnis {
type empty;
}
choice all-choices {
+ description
+ "Choice between including detailed results or showing duplicates.";
+
case detail-case {
leaf all-detail {
type empty;
}
choice single-choices {
+ description
+ "Choice between single VTEP, neighbor address, or show duplicates.";
+
case vtep-case {
leaf single-vtep {
type inet:ipv4-address;
// End input section
output {
list vni-list {
+ description
+ "List of VNI containers.";
+
container vni-container {
description
"Information for one VNI.";
}
choice local-remote-choice {
+ description
+ "Choice between local and remote entries.";
+
case local-case {
leaf is-local {
type empty;
// End get-evpn-arp-cache
rpc get-pbr-ipset {
+ description
+ "RPC to retrieve PBR IP set.";
+
input {
leaf name {
type string {
output {
list ipset-list {
+ description
+ "List of IP sets.";
+
leaf name {
type string {
length "1..32";
enum "net-net" {
value 1;
description
- "";
+ "Network to network IP set type.";
}
enum "net-port-net" {
value 2;
description
- "";
+ "Network to port to network IP set type.";
}
enum "net-port" {
value 3;
description
- "";
+ "Network to port IP set type.";
}
enum "net" {
value 4;
description
- "";
+ "Network IP set type.";
}
}
+ description
+ "Type of IP set.";
}
leaf src-prefix {
}
container ipset-stats {
+ description
+ "Container for IP set statistics.";
+
leaf is-unique {
type empty;
description
// End get-pbr-ipset
rpc get-pbr-iptable {
+ description
+ "RPC to retrieve PBR iptables.";
+
input {
leaf name {
type string {
output {
list iptable-list {
+ description
+ "List of iptables entries.";
+
leaf name {
type string {
length "1..32";
}
container dscp-info {
+ description
+ "Container for dscp information.";
+
leaf dscp-value {
type uint32;
description
}
container fragment-info {
+ description
+ "Container for fragment information.";
+
leaf fragment-val {
type uint32;
description
}
container iptable-stats {
+ description
+ "Container for iptables statistics.";
+
leaf packet-counter {
type uint64;
description
- "";
+ "Number of packets processed by iptables.";
}
leaf bytes-counter {
type uint64;
description
- "";
+ "Number of packets processed by iptables.";
}
}
*/
rpc get-debugs {
+ description
+ "RPC to retrieve debug information.";
+
output {
uses zebra-debugs;
}
description
"Extends interface model with Zebra-related parameters.";
container zebra {
+ description
+ "Container for Zebra-related information.";
+
list ipv4-addrs {
key "ip prefix-length";
description
description
"Legacy mode. Only support standard admin-group (RFC3630/5305/5329)";
leaf legacy-admin-group {
- description "Admin-Group value";
type uint32;
+ description "Admin-Group value";
}
}
case affinity {
container affinities {
+ description
+ "Container for affinity information.";
+
leaf-list affinity {
type frr-affinity-map:affinity-map-ref;
- max-elements "256";
must '../../affinity-mode != "standard" or /frr-affinity-map:lib/frr-affinity-map:affinity-maps/frr-affinity-map:affinity-map[frr-affinity-map:name=current()]/frr-affinity-map:value < 32' {
error-message "Affinity bit-position must be less than 32 when used with standard affinity mode";
}
+ max-elements "256";
description
"Array of Attribute Names";
}
}
}
leaf affinity-mode {
- description
- "Affinity mode";
- default "extended";
type enumeration {
enum extended {
value 0;
"Standard and extended Admin-Group";
}
}
+ default "extended";
+ description
+ "Affinity mode";
}
container neighbor {
- description "Remote ASBR information (RFC 5316 & RFC 5392)";
presence "Activates neighbor information on this interface.";
leaf remote-as {
type inet:as-number;
description
"IPv4 Remote ASBR ID (RFC 5316 & RFC 5392)";
}
+ description
+ "Remote ASBR information (RFC 5316 & RFC 5392)";
}
leaf delay {
type uint32 {
"Average Unidirectional Link Delay";
}
container min-max-delay {
- description
- "Min/Max Unidirectional Link Delay";
presence "Activates min/max delay.";
leaf delay-min {
type uint32 {
description
"Max Delay";
}
+ description
+ "Min/Max Unidirectional Link Delay";
}
leaf delay-variation {
type uint32 {
choice esi-choice {
description "ESI type";
container type-0 {
+ description
+ "Container for type-0 information.";
+
leaf esi {
type yang:hex-string {
length "29";
}
}
container type-3 {
+ description
+ "Container for type-3 information.";
+
leaf system-mac {
type yang:mac-address;
description
leaf vni-id {
type vni-id-type;
+ description
+ "A VNI id.";
}
leaf remote-vtep {
}
leaf end {
type uint32;
- mandatory true;
must ". >= ../start" {
error-message "End table must be greater than or equal to start table";
}
+ mandatory true;
description
"The last table to use.";
}
}
augment "/frr-vrf:lib/frr-vrf:vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/nexthop" {
+ description
+ "Augments the nexthop with operational data.";
+
uses frr-nh:frr-nexthop-operational;
}
description
"Data model for the Zebra daemon.";
leaf max-multipath {
- config false;
type uint16 {
range "1..65535";
}
+ config false;
description
"The maximum number of nexthops for a route. At this point it
is unlikely that a multipath number will ever get larger then
* Debug options
*/
container debugs {
+ description
+ "This container contains debug information for the zebra daemon.";
+
uses zebra-debugs;
}
/* End of debugs */