summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yang/frr-nexthop.yang100
-rw-r--r--yang/frr-zebra.yang820
2 files changed, 552 insertions, 368 deletions
diff --git a/yang/frr-nexthop.yang b/yang/frr-nexthop.yang
index 00ba02a3c3..d844e38428 100644
--- a/yang/frr-nexthop.yang
+++ b/yang/frr-nexthop.yang
@@ -25,40 +25,40 @@ module frr-nexthop {
}
typedef gateway-address {
- type inet:ip-address;
+ type inet:ip-address;
}
typedef nexthop-type {
type enumeration {
enum "ifindex" {
- value 1;
- description
- "Specific interface.";
+ value 1;
+ description
+ "Specific interface.";
}
enum "ip4" {
- value 2;
- description
- "IPv4 address.";
+ value 2;
+ description
+ "IPv4 address.";
}
enum "ip4-ifindex" {
- value 3;
- description
- "IPv4 address and interface.";
+ value 3;
+ description
+ "IPv4 address and interface.";
}
enum "ip6" {
- value 4;
- description
- "IPv6 address.";
+ value 4;
+ description
+ "IPv6 address.";
}
enum "ip6-ifindex" {
- value 5;
- description
- "IPv6 address and interface.";
+ value 5;
+ description
+ "IPv6 address and interface.";
}
enum "blackhole" {
- value 6;
- description
- "Unreachable or prohibited.";
+ value 6;
+ description
+ "Unreachable or prohibited.";
}
}
description
@@ -68,24 +68,24 @@ module frr-nexthop {
typedef blackhole-type {
type enumeration {
enum "unspec" {
- value 0;
- description
- "Generic unreachable.";
+ value 0;
+ description
+ "Generic unreachable.";
}
enum "null" {
- value 1;
- description
- "Null type.";
+ value 1;
+ description
+ "Null type.";
}
enum "reject" {
- value 2;
- description
- "ICMP unreachable.";
+ value 2;
+ description
+ "ICMP unreachable.";
}
enum "prohibited" {
- value 3;
- description
- "ICMP admin-prohibited.";
+ value 3;
+ description
+ "ICMP admin-prohibited.";
}
}
default "null";
@@ -96,85 +96,89 @@ module frr-nexthop {
/*
* Nexthop object
*/
+
grouping frr-nexthop {
leaf nh-type {
type nexthop-type;
mandatory true;
description
- "The nexthop type.";
+ "The nexthop type.";
}
leaf gateway {
type gateway-address;
description
- "The nexthop gateway address.";
+ "The nexthop gateway address.";
}
leaf vrf {
type string;
description
- "The nexthop vrf name, if different from the route.";
+ "The nexthop vrf name, if different from the route.";
}
leaf interface {
type string;
description
- "The nexthop egress interface.";
+ "The nexthop egress interface.";
}
leaf bh-type {
type blackhole-type;
description
- "A blackhole sub-type, if the nexthop is a blackhole type.";
+ "A blackhole sub-type, if the nexthop is a blackhole type.";
}
leaf flags {
type uint32;
description
- "The nexthop's raw flags value.";
+ "The nexthop's raw flags value.";
}
leaf is-duplicate {
type empty;
description
- "Duplicate nexthop; will be ignored.";
+ "Duplicate nexthop; will be ignored.";
}
+
leaf is-recursive {
type empty;
description
- "Nexthop must be resolved through another gateway.";
+ "Nexthop must be resolved through another gateway.";
}
+
leaf is-onlink {
type empty;
description
- "Nexthop is directly connected.";
+ "Nexthop is directly connected.";
}
+
leaf is-active {
type empty;
description
- "Nexthop is active.";
+ "Nexthop is active.";
}
uses rt-types:mpls-label-stack {
description
- "Nexthop's MPLS label stack.";
+ "Nexthop's MPLS label stack.";
}
leaf mtu {
type uint32;
description
- "The nexthop's specific MTU.";
+ "The nexthop's specific MTU.";
}
+ }
- } // End of nexthop
-
+ // End of nexthop
/*
* Nexthop-group container
*/
+
grouping frr-nexthop-group {
description
"A nexthop-group, represented as a list of nexthop objects.";
-
leaf name {
type string;
description
@@ -193,8 +197,8 @@ module frr-nexthop {
}
uses frr-nexthop;
-
}
- } // End of frr-nexthop-group
+ }
+ // End of frr-nexthop-group
}
diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang
index b5ca5c9a40..43e92eba09 100644
--- a/yang/frr-zebra.yang
+++ b/yang/frr-zebra.yang
@@ -50,54 +50,88 @@ module frr-zebra {
/*
* Multicast RPF mode configurable type
*/
+
typedef mcast-rpf-lookup-mode {
type enumeration {
enum "none" {
- value 0;
- description
- "No mode set.";
+ value 0;
+ description
+ "No mode set.";
}
enum "mrib-only" {
- value 1;
- description
- "Lookup in unicast RIB only.";
+ value 1;
+ description
+ "Lookup in unicast RIB only.";
}
enum "urib-only" {
- value 2;
- description
- "Lookup in multicast RIB only.";
+ value 2;
+ description
+ "Lookup in multicast RIB only.";
}
enum "mrib-then-urib" {
- value 3;
- description
- "Try multicast RIB first, fall back to unicast RIB.";
+ value 3;
+ description
+ "Try multicast RIB first, fall back to unicast RIB.";
}
enum "lower-distance" {
- value 4;
- description
- "Lookup both unicast and mcast, use entry with lower distance.";
+ value 4;
+ description
+ "Lookup both unicast and mcast, use entry with lower distance.";
}
enum "longer-prefix" {
- value 5;
- description
- "Lookup both unicast and mcast, use entry with longer prefix.";
+ value 5;
+ description
+ "Lookup both unicast and mcast, use entry with longer prefix.";
}
}
description
"Multicast RPF lookup behavior";
}
+ // End of ip6-route
+ /*
+ * VxLAN Network Identifier type
+ */
+
+ typedef vni-id-type {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "A VxLAN network identifier value.";
+ }
+
+ typedef vni-vtep-flood-type {
+ type enumeration {
+ enum "head-end-repl" {
+ value 0;
+ description
+ "Head-end replication.";
+ }
+ enum "disabled" {
+ value 1;
+ description
+ "Flooding disabled.";
+ }
+ enum "pim-sm" {
+ value 2;
+ description
+ "Multicast PIM-SM.";
+ }
+ }
+ }
+
/*
* Common route data, shared by v4 and v6 routes.
*/
+
grouping route-common {
description
"Common information about a route.";
-
leaf vrf {
type string;
description
- "The route's vrf name.";
+ "The route's vrf name.";
}
leaf distance {
@@ -105,11 +139,13 @@ module frr-zebra {
description
"Admin distance based on routing protocol.";
}
+
leaf metric {
type uint32;
description
"Route metric value.";
}
+
leaf tag {
type uint32 {
range "1..4294967295";
@@ -123,16 +159,19 @@ module frr-zebra {
description
"Route is the selected or preferred route for the prefix.";
}
+
leaf is-installed {
type empty;
description
"Route is installed in the FIB.";
}
+
leaf is-failed {
type empty;
description
"Route installation in FIB has failed.";
}
+
leaf is-queued {
type empty;
description
@@ -144,6 +183,7 @@ module frr-zebra {
description
"Internal flags for the route.";
}
+
leaf internal-status {
type int32;
description
@@ -160,19 +200,18 @@ module frr-zebra {
container nexthop-group {
description
"Nexthop information for the route.";
-
uses frr-nh:frr-nexthop-group;
}
+ }
- } // End of route-common
-
+ // End of route-common
/*
* IPv4 Route object.
*/
+
grouping ip4-route {
description
"An IPv4 route.";
-
leaf prefix {
type inet:ipv4-prefix;
description
@@ -180,151 +219,135 @@ module frr-zebra {
separated by the slash (/) character. The range of
values for the prefix-length is 0 to 32.";
}
- leaf "protocol" {
+
+ leaf protocol {
type frr-route-types:frr-route-types-v4;
description
"The protocol owning the route.";
}
uses route-common;
+ }
- } // End of ip4-route
-
+ // End of ip4-route
/*
* IPv6 Route object.
*/
+
grouping ip6-route {
description
"An IPv6 route.";
-
leaf prefix {
type inet:ipv6-prefix;
description
"The route's IPv6 prefix.";
}
- leaf "protocol" {
+
+ leaf protocol {
type frr-route-types:frr-route-types-v6;
description
"The protocol owning the route.";
}
uses route-common;
-
- } // End of ip6-route
-
- /*
- * VxLAN Network Identifier type
- */
- typedef vni-id-type {
- type uint32 {
- range "0..16777215";
- }
- description
- "A VxLAN network identifier value.";
- }
-
- typedef vni-vtep-flood-type {
- type enumeration {
- enum "head-end-repl" {
- value 0;
- description
- "Head-end replication.";
- }
- enum "disabled" {
- value 1;
- description
- "Flooding disabled.";
- }
- enum pim-sm {
- value 2;
- description
- "Multicast PIM-SM.";
- }
- }
}
/*
* Information about EVPN VNIs
*/
+
grouping vni-information {
- choice type-choice {
- case l2 {
- leaf is-layer2 {
- type empty;
- description
- "Information about an L2 VNI.";
- }
- leaf vtep-count {
- type uint32;
- description
- "Number of VTEPs.";
- }
+ choice type-choice {
+ case l2 {
+ leaf is-layer2 {
+ type empty;
+ description
+ "Information about an L2 VNI.";
}
- case l3 {
- leaf is-layer3 {
- type empty;
- description
- "Information about an L3 VNI.";
- }
+
+ leaf vtep-count {
+ type uint32;
+ description
+ "Number of VTEPs.";
}
}
- leaf vni-id {
- type vni-id-type;
- description
- "The VNI identifier.";
- }
- leaf vxlan-ifname {
- type frr-interface:interface-ref;
- description
- "The VxLAN interface name.";
- }
- leaf mac-count {
- type uint32;
- description
- "Number of valid MACs.";
- }
- leaf neighbor-count {
- type uint32;
- description
- "Number of neighbors.";
- }
- leaf vrf {
- type string;
- description
- "The tenant VRF.";
- }
- leaf local-vtep-addr {
- type inet:ipv4-address;
- description
- "The local VTEP IP address.";
+
+ case l3 {
+ leaf is-layer3 {
+ type empty;
+ description
+ "Information about an L3 VNI.";
+ }
}
+ }
+
+ leaf vni-id {
+ type vni-id-type;
+ description
+ "The VNI identifier.";
+ }
+
+ leaf vxlan-ifname {
+ type frr-interface:interface-ref;
+ description
+ "The VxLAN interface name.";
+ }
+
+ leaf mac-count {
+ type uint32;
+ description
+ "Number of valid MACs.";
+ }
+
+ leaf neighbor-count {
+ type uint32;
+ description
+ "Number of neighbors.";
+ }
+
+ leaf vrf {
+ type string;
+ description
+ "The tenant VRF.";
+ }
+
+ leaf local-vtep-addr {
+ type inet:ipv4-address;
+ description
+ "The local VTEP IP address.";
+ }
}
/*
* Detailed EVPN VNI information for L2.
*/
+
grouping vni-l2-detail {
leaf if-index {
type uint32;
description
"The VxLAN ifindex.";
}
+
leaf advertise-gw {
type empty;
description
"The gateway MAC-IP is being advertised.";
}
+
leaf mcase-group {
type rt-types:ipv4-multicast-group-address;
description
"The VNI multicast group for BUM traffic.";
}
+
list remote-vtep-list {
leaf remote-vtep {
type inet:ipv4-address;
description
"The remote VTEP IP address.";
}
+
leaf vtep-flood {
type vni-vtep-flood-type;
}
@@ -334,27 +357,32 @@ module frr-zebra {
/*
* Detailed EVPN VNI information for L3.
*/
+
grouping vni-l3-detail {
leaf svi-interface {
type string;
description
"The SVI interface.";
}
+
leaf is-up {
type empty;
description
"The state is active.";
}
+
leaf prefix-only {
type empty;
description
"Prefix routes only";
}
+
leaf router-mac {
type yang:mac-address;
description
"The VNI Router MAC address.";
}
+
list vni-list {
description
"A list of the associated L2 VNIs.";
@@ -369,238 +397,125 @@ module frr-zebra {
/*
* Debug options
*/
+
grouping zebra-debugs {
leaf debug-events {
type boolean;
- description "Debug ZAPI events.";
+ description
+ "Debug ZAPI events.";
}
+
leaf debug-zapi-send {
type boolean;
- description "Debug ZAPI messages sent.";
+ description
+ "Debug ZAPI messages sent.";
}
+
leaf debug-zapi-recv {
type boolean;
- description "Debug ZAPI messages received.";
+ description
+ "Debug ZAPI messages received.";
}
+
leaf debug-zapi-detail {
type boolean;
- description "Debug ZAPI details.";
+ description
+ "Debug ZAPI details.";
}
+
leaf debug-kernel {
type boolean;
- description "Debug kernel events.";
+ description
+ "Debug kernel events.";
}
+
leaf debug-kernel-msg-send {
type boolean;
- description "Debug kernel messages sent.";
+ description
+ "Debug kernel messages sent.";
}
leaf debug-kernel-msg-recv {
type boolean;
- description "Debug kernel messages received.";
+ description
+ "Debug kernel messages received.";
}
+
leaf debug-rib {
type boolean;
- description "Debug RIB processing.";
+ description
+ "Debug RIB processing.";
}
+
leaf debug-rib-detail {
type boolean;
- description "Debug RIB processing details.";
+ description
+ "Debug RIB processing details.";
}
+
leaf debug-fpm {
type boolean;
- description "Debug the FIB Push Interface subsystem.";
- }
- leaf debug-nht {
- type boolean;
- description "Debug Nexthop-tracking.";
- }
- leaf debug-nht-detail {
- type boolean;
- description "Debug Nexthop-tracking details.";
- }
- leaf debug-mpls {
- type boolean;
- description "Debug MPLS.";
- }
- leaf debug-vxlan {
- type boolean;
- description "Debug VxLAN.";
- }
- leaf debug-pw {
- type boolean;
- description "Debug pseudowires.";
- }
- leaf debug-dplane {
- type boolean;
- description "Debug the dataplane subsystem.";
- }
- leaf debug-dplane-detail {
- type boolean;
- description "Debug dataplane subsystem details.";
- }
- leaf debug-mlag {
- type boolean;
- description "Debug MLAG.";
- }
- }
-
- /*
- * Main zebra container
- */
- container zebra {
- description
- "Data model for the Zebra daemon.";
-
- leaf mcast-rpf-lookup {
- type frr-zebra:mcast-rpf-lookup-mode;
- default "mrib-then-urib";
description
- "Multicast RPF lookup behavior.";
+ "Debug the FIB Push Interface subsystem.";
}
- leaf ip-forwarding {
+ leaf debug-nht {
type boolean;
description
- "IP forwarding status.";
+ "Debug Nexthop-tracking.";
}
- leaf ipv6-forwarding {
- type enumeration {
- enum "unknown" {
- value -1;
- description
- "Unknown state.";
- }
- enum "off" {
- value 0;
- description
- "IPv6 forwarding disabled.";
- }
- enum "on" {
- value 1;
- description
- "IPv6 forwarding enabled.";
- }
- }
+ leaf debug-nht-detail {
+ type boolean;
description
- "IPv6 forwarding status.";
+ "Debug Nexthop-tracking details.";
}
- leaf workqueue-hold-timer {
- type uint32 {
- range "0..10000";
- }
- units "milliseconds";
- default "10";
+ leaf debug-mpls {
+ type boolean;
description
- "Work-queue processing hold timer, in milliseconds.";
+ "Debug MPLS.";
}
- leaf zapi-packets {
- type uint32 {
- range "1..10000";
- }
- default "1000";
+ leaf debug-vxlan {
+ type boolean;
description
- "Number of ZAPI packets to process before relinquishing
- the main thread.";
+ "Debug VxLAN.";
}
- container import-kernel-table {
+ leaf debug-pw {
+ type boolean;
description
- "Parameters to use when importing IPv4 routes from a non-main kernel
- routing table.";
-
- leaf table-id {
- type uint32 {
- range "1..252";
- }
- description
- "The kernel table id.";
- }
- leaf distance {
- type uint32 {
- range "1..255";
- }
- default "15";
- description
- "The admin distance to use for imported routes.";
- }
- leaf route-map {
- type string;
- description
- "A route-map to filter imported routes.";
- }
+ "Debug pseudowires.";
}
- leaf allow-external-route-update {
- type empty;
+ leaf debug-dplane {
+ type boolean;
description
- "Allow FRR-controlled routes to be overwritten by external processes";
+ "Debug the dataplane subsystem.";
}
- leaf dplane-queue-limit {
- type uint32 {
- range "0..10000";
- }
- default "200";
+ leaf debug-dplane-detail {
+ type boolean;
description
- "Limit on the number of updates queued to the dataplane subsystem.";
+ "Debug dataplane subsystem details.";
}
- list vrf-vni-mapping {
+ leaf debug-mlag {
+ type boolean;
description
- "EVPN VNI mapping corresponding to a VRF.";
- key "vrf-id";
- leaf vrf-id {
- type uint32;
- description
- "The identifier for a VRF.";
- }
- leaf vni-id {
- type vni-id-type;
- description
- "The VNI id to map to the VRF.";
- }
- leaf prefix-only {
- type empty;
- description
- "Prefix routes only.";
- }
+ "Debug MLAG.";
}
+ }
- /*
- * Debug options
- */
- container debugs {
- uses zebra-debugs;
- } /* End of debugs */
-
- /*
- * End of configuration attributes
- */
-
- /*
- * Operational data.
- */
- container state {
- config false;
- description
- "Operational data.";
-
- } // End of operational / state container
-
- } // End of zebra container
-
+ // End of zebra container
/*
* RPCs
*/
+
rpc get-route-information {
description
"Retrieve IPv4 or IPv6 unicast routes.";
-
input {
-
choice ip-type {
case v4 {
leaf ipv4 {
@@ -614,12 +529,14 @@ module frr-zebra {
description
"Retrieve routes matching a specific prefix.";
}
+
leaf supernets-only {
type empty;
description
"Skip routes that are subnets of classful prefix sizes.";
}
}
+
case v6 {
leaf ipv6 {
type empty;
@@ -627,6 +544,7 @@ module frr-zebra {
description
"Retrieve IPv6 routes.";
}
+
leaf prefix-v6 {
type inet:ipv6-prefix;
description
@@ -643,6 +561,7 @@ module frr-zebra {
"Retrieve routes in a non-default vrf.";
}
}
+
case all {
leaf all-vrfs {
type empty;
@@ -671,6 +590,7 @@ module frr-zebra {
description
"Retrieve routes from a specific protocol daemon.";
}
+
leaf ospf-instance {
type uint32 {
range "1..65535";
@@ -688,6 +608,7 @@ module frr-zebra {
"Include detailed information.";
}
}
+
case summ {
leaf summary {
type empty;
@@ -696,8 +617,8 @@ module frr-zebra {
}
}
}
- } // End of input
-
+ }
+ // End of input
output {
choice route-list {
case v4 {
@@ -709,6 +630,7 @@ module frr-zebra {
}
}
}
+
case v6 {
container routes-v6 {
description
@@ -719,14 +641,15 @@ module frr-zebra {
}
}
}
- } // End of output
+ }
+ // End of output
+ }
- } // End get-route-information
+ // End get-route-information
rpc get-v6-mroute-info {
description
"Retrieve IPv6 multicast routes.";
-
input {
choice vrf-choice {
case single {
@@ -736,6 +659,7 @@ module frr-zebra {
"Retrieve routes in a non-default vrf.";
}
}
+
case all {
leaf all-vrfs {
type empty;
@@ -755,16 +679,14 @@ module frr-zebra {
}
}
}
+ }
- }// End get-v6-mroute-info
-
+ // End get-v6-mroute-info
rpc get-vrf-info {
description
"Retrieve VRF information; the default VRF is elided.";
-
// Note: no input clause.
-
output {
list vrf-list {
leaf name {
@@ -772,16 +694,19 @@ module frr-zebra {
description
"The VRF name";
}
+
leaf is-user-config {
type empty;
description
"The VRF was configured by an admin.";
}
+
leaf vrf-id {
type uint32;
description
"The VRF id.";
}
+
choice vrf-type {
case inactive {
leaf is-inactive {
@@ -790,6 +715,7 @@ module frr-zebra {
"The VRF is inactive.";
}
}
+
case netns {
leaf netns-name {
type string;
@@ -797,6 +723,7 @@ module frr-zebra {
"The net namespace name associated with the VRF.";
}
}
+
case table {
leaf table-id {
type uint32;
@@ -807,14 +734,14 @@ module frr-zebra {
}
}
}
- } // End get-vrf-info
+ }
+
+ // End get-vrf-info
rpc get-vrf-vni-info {
description
"Retrieve mappings between EVPN VNI and VRF.";
-
// Note: no input clause.
-
output {
list vrf-vni-list {
leaf vrf-name {
@@ -822,26 +749,31 @@ module frr-zebra {
description
"The VRF name.";
}
+
leaf vni-id {
type vni-id-type;
description
"The EVPN VNI.";
}
+
leaf vxlan-if-name {
type frr-interface:interface-ref;
description
"The VxLAN interface name.";
}
+
leaf svi-if-name {
type frr-interface:interface-ref;
description
"The SVI interface name.";
}
+
leaf router-mac-addr {
type yang:mac-address;
description
"Router MAC address.";
}
+
leaf is-up {
type empty;
description
@@ -849,51 +781,58 @@ module frr-zebra {
}
}
}
- } // End get-vrf-vni-info
+ }
+
+ // End get-vrf-vni-info
rpc get-evpn-info {
description
"Retrieve global information about EVPN.";
-
// Note: No input clause.
-
output {
leaf l2vni-count {
type uint32;
description
"Number of L2 VNIs.";
}
+
leaf l3vni-count {
type uint32;
description
"Number of L3 VNIs.";
}
+
leaf advertise-gateway {
type empty;
description
"Advertise the gateway MAC-IP.";
}
+
leaf advertise-svi {
type empty;
description
"Advertise SVI MAC-IP.";
}
+
leaf dup-detect {
type empty;
description
"Duplicate address detection is enabled.";
}
+
leaf dad-max-moves {
type uint32;
description
"Maximum moves allowed before address is considered duplicate.";
}
+
leaf dad-timeout {
type uint32;
units "seconds";
description
"Duplicate address detection timeout.";
}
+
leaf dad-freeze {
type empty;
description
@@ -908,6 +847,7 @@ module frr-zebra {
"Duplicate address detection freeze is permanent.";
}
}
+
case freeze-time {
leaf dad-freeze-time {
type uint32;
@@ -918,7 +858,9 @@ module frr-zebra {
}
}
}
- } // End get-evpn-info
+ }
+
+ // End get-evpn-info
rpc get-vni-info {
// If no vni is specified, retrieve global list.
@@ -932,6 +874,7 @@ module frr-zebra {
"Retrieve information about all VNIs.";
}
}
+
case single-vni {
leaf vni-id {
type vni-id-type;
@@ -940,6 +883,7 @@ module frr-zebra {
}
}
}
+
leaf detailed-info {
type empty;
description
@@ -951,7 +895,6 @@ module frr-zebra {
list vni-list {
description
"Information about EVPN VNI objects.";
-
uses vni-information;
choice detail-choice {
@@ -960,6 +903,7 @@ module frr-zebra {
"Detailed L2 information.";
uses vni-l2-detail;
}
+
case l3 {
description
"Detailed L3 information.";
@@ -968,12 +912,13 @@ module frr-zebra {
}
}
}
- } // End get-vni-info
+ }
+
+ // End get-vni-info
rpc get-evpn-vni-rmac {
description
"Retrieve information about VxLAN VNI RMACs.";
-
input {
choice vni-choice {
default "all-vnis";
@@ -984,12 +929,14 @@ module frr-zebra {
"Retrieve information about all VNIs.";
}
}
+
case single-vni {
leaf vni-id {
type vni-id-type;
description
"Retrieve information about a specific EVPN VNI.";
}
+
leaf vni-rmac {
type yang:mac-address;
description
@@ -1006,16 +953,19 @@ module frr-zebra {
description
"The RMAC address.";
}
+
leaf remote-vtep {
type inet:ipv4-address;
description
"The remote VTEP IP address.";
}
+
leaf refcount {
type uint32;
description
"The refcount of the RMAC.";
}
+
list prefix-list {
leaf prefix-item {
type inet:ip-prefix;
@@ -1025,12 +975,13 @@ module frr-zebra {
}
}
}
- } // End get-evpn-vni-rmac
+ }
+
+ // End get-evpn-vni-rmac
rpc get-evpn-vni-nexthops {
description
"Retrieve information about EVPN nexthops.";
-
input {
choice vni-choice {
default "all-vnis";
@@ -1041,12 +992,14 @@ module frr-zebra {
"Retrieve information about all VNIs.";
}
}
+
case single-vni {
leaf vni-id {
type vni-id-type;
description
"Retrieve information about a specific EVPN VNI.";
}
+
leaf vni-ipaddr {
type inet:ip-address;
description
@@ -1063,16 +1016,19 @@ module frr-zebra {
description
"The nexthop IP address.";
}
+
leaf mac-addr {
type yang:mac-address;
description
"The nexthop MAC address.";
}
+
leaf refcount {
type uint32;
description
"The refcount of the RMAC.";
}
+
list prefix-list {
leaf prefix-item {
type inet:ip-prefix;
@@ -1080,9 +1036,11 @@ module frr-zebra {
"IP prefixes associated with the RMAC.";
}
}
- }
+ }
}
- } // End get-evpn-vni-vteps
+ }
+
+ // End get-evpn-vni-vteps
rpc clear-evpn-dup-addr {
description
@@ -1096,12 +1054,14 @@ module frr-zebra {
"Clear all VNIs.";
}
}
+
case single-case {
leaf vni-id {
type vni-id-type;
description
"Clear state for a single EVPN VNI.";
}
+
choice ip-mac-choice {
description
"Clear state for a specific MAC or IP address.";
@@ -1112,6 +1072,7 @@ module frr-zebra {
"A specific IP address (v4 or v6).";
}
}
+
case mac-case {
leaf mac-addr {
type yang:mac-address;
@@ -1123,7 +1084,9 @@ module frr-zebra {
}
}
}
- } // End clear-evpn-dup-addr
+ }
+
+ // End clear-evpn-dup-addr
rpc get-evpn-macs {
description
@@ -1131,13 +1094,13 @@ module frr-zebra {
input {
choice all-choice {
default "all-vni";
-
case all-vni {
leaf all-vnis {
type empty;
description
"Retrieve information for all VNIs.";
}
+
choice all-choices {
case detail-case {
leaf all-detail {
@@ -1146,6 +1109,7 @@ module frr-zebra {
"Include detailed results.";
}
}
+
case vtep-case {
leaf all-vtep-addr {
type inet:ipv4-address;
@@ -1153,6 +1117,7 @@ module frr-zebra {
"A single VTEP address.";
}
}
+
case dup-case {
leaf all-dup {
type empty;
@@ -1162,12 +1127,14 @@ module frr-zebra {
}
}
}
+
case single-vni {
leaf vni-id {
type vni-id-type;
description
"Retrieve information for a single VNI.";
}
+
choice single-choices {
case detail-case {
leaf single-detail {
@@ -1176,6 +1143,7 @@ module frr-zebra {
"Include detailed results.";
}
}
+
case mac-case {
leaf single-mac {
type yang:mac-address;
@@ -1183,6 +1151,7 @@ module frr-zebra {
"A specific MAC address.";
}
}
+
case vtep-case {
leaf single-vtep {
type inet:ipv4-address;
@@ -1190,6 +1159,7 @@ module frr-zebra {
"A single VTEP address.";
}
}
+
case dup-case {
leaf single-dup {
type empty;
@@ -1200,8 +1170,8 @@ module frr-zebra {
}
}
}
- } // End of input section
-
+ }
+ // End of input section
output {
list mac-list {
leaf mac-addr {
@@ -1209,42 +1179,50 @@ module frr-zebra {
description
"The MAC address.";
}
+
leaf vni {
type vni-id-type;
description
"The VNI value.";
}
+
leaf local-sequence {
type uint32;
description
"Local sequence number.";
}
+
leaf remote-sequence {
type uint32;
description
"Remote sequence number.";
}
+
leaf dad-count {
type uint32;
description
"Duplicate detection counter.";
}
+
leaf is-duplicate {
type empty;
description
"Duplicate MAC detected.";
}
+
leaf dup-detect-time {
type unix-timestamp;
description
"If a duplicate, the detection time.";
}
+
container dup-detect-started {
leaf dup-detect-start {
type unix-timestamp;
description
"Duplicate detection process start time.";
}
+
leaf dup-count {
type uint32;
description
@@ -1257,27 +1235,32 @@ module frr-zebra {
description
"This is an Auto MAC.";
}
+
leaf is-sticky {
type empty;
description
"This is a sticky MAC.";
}
+
leaf is-default-gw {
type empty;
description
"This is a default-gateway MAC.";
}
+
leaf is-remote-gw {
type empty;
description
"This is a remote-gateway MAC.";
}
+
list neighbor-list {
leaf neighbor-addr {
type inet:ip-address;
description
"Neighbor address.";
}
+
leaf is-active {
type empty;
description
@@ -1290,6 +1273,7 @@ module frr-zebra {
description
"Number of MACs (local and remote).";
}
+
choice local-rem-choice {
case local-case {
leaf intf {
@@ -1297,12 +1281,14 @@ module frr-zebra {
description
"The local interface name.";
}
+
leaf vlan {
type uint32;
description
"A VLAN id.";
}
}
+
case remote-case {
leaf vtep-addr {
type inet:ipv4-address;
@@ -1313,7 +1299,9 @@ module frr-zebra {
}
}
}
- } // End get-evpn-macs
+ }
+
+ // End get-evpn-macs
rpc get-evpn-arp-cache {
description
@@ -1321,13 +1309,13 @@ module frr-zebra {
input {
choice all-choice {
default "all-vni";
-
case all-vni {
leaf all-vnis {
type empty;
description
"Retrieve information for all VNIs.";
}
+
choice all-choices {
case detail-case {
leaf all-detail {
@@ -1336,6 +1324,7 @@ module frr-zebra {
"Include detailed results.";
}
}
+
case dup-case {
leaf all-dup {
type empty;
@@ -1345,12 +1334,14 @@ module frr-zebra {
}
}
}
+
case single-vni {
leaf vni-id {
type vni-id-type;
description
"Retrieve information for a single VNI.";
}
+
choice single-choices {
case vtep-case {
leaf single-vtep {
@@ -1359,6 +1350,7 @@ module frr-zebra {
"A single VTEP address.";
}
}
+
case neighbor-case {
leaf neighbor-addr {
type inet:ip-address;
@@ -1366,6 +1358,7 @@ module frr-zebra {
"A single neighbor address.";
}
}
+
case dup-case {
leaf single-dup {
type empty;
@@ -1376,8 +1369,8 @@ module frr-zebra {
}
}
}
- } // End input section
-
+ }
+ // End input section
output {
list vni-list {
container vni-container {
@@ -1388,20 +1381,22 @@ module frr-zebra {
description
"The VNI id.";
}
+
list neigh-list {
description
"Information about a VNI's neighbor cache.";
-
leaf mac-addr {
type yang:mac-address;
description
"A neighbor MAC address.";
}
+
leaf ip-addr {
type inet:ip-address;
description
"A neighbor IP address.";
}
+
leaf state-active {
type empty;
description
@@ -1416,6 +1411,7 @@ module frr-zebra {
"The entry is local.";
}
}
+
case remote-case {
leaf is-remote {
type empty;
@@ -1430,26 +1426,31 @@ module frr-zebra {
description
"The entry is a detected duplicate.";
}
+
leaf is-default-gw {
type empty;
description
"The entry is a default gateway.";
}
+
leaf is-router {
type empty;
description
"The entry is a router.";
}
+
leaf local-sequence {
type uint32;
description
"The local sequence number.";
}
+
leaf remote-sequence {
type uint32;
description
"The remote sequence number.";
}
+
leaf remote-vtep {
type inet:ipv4-address;
description
@@ -1459,7 +1460,9 @@ module frr-zebra {
}
}
}
- } // End get-evpn-arp-cache
+ }
+
+ // End get-evpn-arp-cache
rpc get-pbr-ipset {
input {
@@ -1477,6 +1480,7 @@ module frr-zebra {
description
"The IPset name.";
}
+
leaf ipset-type {
type enumeration {
enum "net-net" {
@@ -1501,21 +1505,25 @@ module frr-zebra {
}
}
}
+
leaf src-prefix {
type inet:ip-prefix;
description
"";
}
+
leaf dest-prefix {
type inet:ip-prefix;
description
"";
}
+
leaf src-port {
type inet:port-number;
description
"";
}
+
leaf dest-port {
type inet:port-number;
description
@@ -1532,6 +1540,7 @@ module frr-zebra {
"Filter TCP/UDP ports only.";
}
}
+
case proto-case {
leaf proto {
type uint32;
@@ -1540,6 +1549,7 @@ module frr-zebra {
}
}
}
+
container icmp-info {
description
"Additional information for ICMP filters.";
@@ -1548,33 +1558,39 @@ module frr-zebra {
description
"";
}
+
leaf type-max {
type uint8;
description
"";
}
+
leaf code-min {
type uint8;
description
"";
}
+
leaf code-max {
type uint8;
description
"";
}
}
+
container ipset-stats {
leaf is-unique {
type empty;
description
"";
}
+
leaf packet-counter {
type uint64;
description
"";
}
+
leaf bytes-counter {
type uint64;
description
@@ -1583,7 +1599,9 @@ module frr-zebra {
}
}
}
- } // End get-pbr-ipset
+ }
+
+ // End get-pbr-ipset
rpc get-pbr-iptable {
input {
@@ -1601,95 +1619,117 @@ module frr-zebra {
description
"The IPtable name.";
}
+
leaf unique-val {
type uint32;
description
"";
}
+
choice action-choice {
- description "The table action.";
+ description
+ "The table action.";
case drop-case {
leaf action-drop {
type empty;
- description "";
+ description
+ "";
}
}
+
case redirect-case {
leaf action-redirect {
type empty;
- description "";
+ description
+ "";
}
}
}
+
leaf min-packet {
type uint32;
description
"";
}
+
leaf max-packet {
type uint32;
description
"";
}
+
leaf lookup-src-port {
type empty;
description
"";
}
+
leaf lookup-dst-port {
type empty;
description
"";
}
+
leaf tcp-flags {
type uint16;
description
"";
}
+
leaf tcp-flags-mask {
type uint16;
description
"";
}
+
leaf protocol-val {
type uint32;
- description "An IP protocol number.";
+ description
+ "An IP protocol number.";
}
+
container dscp-info {
leaf dscp-value {
type uint32;
description
"A DSCP value to match.";
}
+
leaf invert-match {
type empty;
description
"If set, exclude the specified value";
}
}
+
container fragment-info {
leaf fragment-val {
type uint32;
- description "An IP fragment value.";
+ description
+ "An IP fragment value.";
}
+
leaf invert-match {
type empty;
description
"If set, exclude the specified value.";
}
}
+
container iptable-stats {
leaf packet-counter {
type uint64;
description
"";
}
+
leaf bytes-counter {
type uint64;
description
"";
}
}
+
container rule-info {
description
"Information about a rule, for redirect tables.";
@@ -1698,6 +1738,7 @@ module frr-zebra {
description
"The rule table id.";
}
+
leaf table-fwmark {
type uint32;
description
@@ -1706,25 +1747,29 @@ module frr-zebra {
}
}
}
- } // End get-pbr-iptable
+ }
+ // End get-pbr-iptable
/*
* Handy 'all-at-once' api to retrieve debugs
*/
+
rpc get-debugs {
output {
uses zebra-debugs;
}
- } // End get-debugs
+ }
+
+ // End get-debugs
augment "/frr-interface:lib/frr-interface:interface" {
description
"Extends interface model with Zebra-related parameters.";
container zebra {
list ip4-addr-list {
+ key "ip4-prefix";
description
"IPv4 prefixes for an interface.";
- key "ip4-prefix";
leaf ip4-prefix {
type inet:ipv4-prefix;
description
@@ -1742,9 +1787,9 @@ module frr-zebra {
}
}
list ip6-addr-list {
+ key "ip6-prefix";
description
"IPv6 prefixes for an interface.";
- key "ip6-prefix";
leaf ip6-prefix {
type inet:ipv6-prefix;
description
@@ -1779,10 +1824,145 @@ module frr-zebra {
description
"Link bandwidth informational parameter, in megabits.";
}
-
// TODO -- link-params for (experimental/partial TE use in IGP extensions)
+ }
+ }
+
+ /*
+ * Main zebra container
+ */
+ container zebra {
+ description
+ "Data model for the Zebra daemon.";
+ leaf mcast-rpf-lookup {
+ type frr-zebra:mcast-rpf-lookup-mode;
+ default "mrib-then-urib";
+ description
+ "Multicast RPF lookup behavior.";
+ }
+ leaf ip-forwarding {
+ type boolean;
+ description
+ "IP forwarding status.";
+ }
+ leaf ipv6-forwarding {
+ type enumeration {
+ enum unknown {
+ value -1;
+ description
+ "Unknown state.";
+ }
+ enum off {
+ value 0;
+ description
+ "IPv6 forwarding disabled.";
+ }
+ enum on {
+ value 1;
+ description
+ "IPv6 forwarding enabled.";
+ }
+ }
+ description
+ "IPv6 forwarding status.";
}
- } // End interface model augmentation
+ leaf workqueue-hold-timer {
+ type uint32 {
+ range "0..10000";
+ }
+ units "milliseconds";
+ default "10";
+ description
+ "Work-queue processing hold timer, in milliseconds.";
+ }
+ leaf zapi-packets {
+ type uint32 {
+ range "1..10000";
+ }
+ default "1000";
+ description
+ "Number of ZAPI packets to process before relinquishing
+ the main thread.";
+ }
+ container import-kernel-table {
+ description
+ "Parameters to use when importing IPv4 routes from a non-main kernel
+ routing table.";
+ leaf table-id {
+ type uint32 {
+ range "1..252";
+ }
+ description
+ "The kernel table id.";
+ }
+ leaf distance {
+ type uint32 {
+ range "1..255";
+ }
+ default "15";
+ description
+ "The admin distance to use for imported routes.";
+ }
+ leaf route-map {
+ type string;
+ description
+ "A route-map to filter imported routes.";
+ }
+ }
+ leaf allow-external-route-update {
+ type empty;
+ description
+ "Allow FRR-controlled routes to be overwritten by external processes";
+ }
+ leaf dplane-queue-limit {
+ type uint32 {
+ range "0..10000";
+ }
+ default "200";
+ description
+ "Limit on the number of updates queued to the dataplane subsystem.";
+ }
+ list vrf-vni-mapping {
+ key "vrf-id";
+ description
+ "EVPN VNI mapping corresponding to a VRF.";
+ leaf vrf-id {
+ type uint32;
+ description
+ "The identifier for a VRF.";
+ }
+ leaf vni-id {
+ type vni-id-type;
+ description
+ "The VNI id to map to the VRF.";
+ }
+ leaf prefix-only {
+ type empty;
+ description
+ "Prefix routes only.";
+ }
+ }
+ /*
+ * Debug options
+ */
+ container debugs {
+ uses zebra-debugs;
+ }
+ /* End of debugs */
+ /*
+ * End of configuration attributes
+ */
+ /*
+ * Operational data.
+ */
+ container state {
+ config false;
+ description
+ "Operational data.";
+ }
+ // End of operational / state container
+ }
+ // End interface model augmentation
}