summaryrefslogtreecommitdiff
path: root/zebra/zebra_vty.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2023-08-08 16:15:45 +0300
committerDonatas Abraitis <donatas@opensourcerouting.org>2023-08-17 21:45:55 +0300
commitd02fae58360bbed6103ec4d14b4946ce016f5b90 (patch)
treefdc97abd544abde5d7389eb9cad71e2fffd97b15 /zebra/zebra_vty.c
parent62196fbd1919f98a8cf36ebdd1f48d31a404ed9f (diff)
zebra: Show NHT resolve via default status on/off
``` donatas-laptop# show ip nht VRF default: Resolve via default: on 192.168.10.123 resolved via connected is directly connected, wlp82s0 (vrf default) Client list: bgp(fd 21) donatas-laptop# show ip nht json { "default":{ "ipv4":{ "resolveViaDefault":true, "192.168.10.123":{ "nhtConnected":false, "clientList":[ { "protocol":"bgp", "socket":21, "protocolFiltered":"none" } ], "nexthops":[ { "flags":3, "fib":true, "directlyConnected":true, "interfaceIndex":3, "interfaceName":"wlp82s0", "vrf":"default", "active":true } ], "resolvedProtocol":"connected" } } } } donatas-laptop# show ip nht vrf all VRF default: Resolve via default: on 192.168.10.123 resolved via connected is directly connected, wlp82s0 (vrf default) Client list: bgp(fd 21) donatas-laptop# show ip nht vrf all json { "default":{ "ipv4":{ "resolveViaDefault":true, "192.168.10.123":{ "nhtConnected":false, "clientList":[ { "protocol":"bgp", "socket":21, "protocolFiltered":"none" } ], "nexthops":[ { "flags":3, "fib":true, "directlyConnected":true, "interfaceIndex":3, "interfaceName":"wlp82s0", "vrf":"default", "active":true } ], "resolvedProtocol":"connected" } } } } donatas-laptop# ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Diffstat (limited to 'zebra/zebra_vty.c')
-rw-r--r--zebra/zebra_vty.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 1a123ba5c2..d36c2f81c7 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -1067,16 +1067,22 @@ DEFPY (show_ip_nht,
json_object *json = NULL;
json_object *json_vrf = NULL;
json_object *json_nexthop = NULL;
+ struct zebra_vrf *zvrf;
+ bool resolve_via_default = false;
if (uj)
json = json_object_new_object();
if (vrf_all) {
struct vrf *vrf;
- struct zebra_vrf *zvrf;
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
if ((zvrf = vrf->info) != NULL) {
+ resolve_via_default =
+ (afi == AFI_IP)
+ ? zvrf->zebra_rnh_ip_default_route
+ : zvrf->zebra_rnh_ipv6_default_route;
+
if (uj) {
json_vrf = json_object_new_object();
json_nexthop = json_object_new_object();
@@ -1088,9 +1094,16 @@ DEFPY (show_ip_nht,
? "ipv4"
: "ipv6",
json_nexthop);
+ json_object_boolean_add(json_nexthop,
+ "resolveViaDefault",
+ resolve_via_default);
} else {
vty_out(vty, "\nVRF %s:\n",
zvrf_name(zvrf));
+ vty_out(vty,
+ " Resolve via default: %s\n",
+ resolve_via_default ? "on"
+ : "off");
}
zebra_print_rnh_table(zvrf_id(zvrf), afi, safi,
vty, NULL, json_nexthop);
@@ -1115,6 +1128,11 @@ DEFPY (show_ip_nht,
}
}
+ zvrf = zebra_vrf_lookup_by_id(vrf_id);
+ resolve_via_default = (afi == AFI_IP)
+ ? zvrf->zebra_rnh_ip_default_route
+ : zvrf->zebra_rnh_ipv6_default_route;
+
if (uj) {
json_vrf = json_object_new_object();
json_nexthop = json_object_new_object();
@@ -1126,6 +1144,13 @@ DEFPY (show_ip_nht,
json_object_object_add(json_vrf,
(afi == AFI_IP) ? "ipv4" : "ipv6",
json_nexthop);
+
+ json_object_boolean_add(json_nexthop, "resolveViaDefault",
+ resolve_via_default);
+ } else {
+ vty_out(vty, "VRF %s:\n", zvrf_name(zvrf));
+ vty_out(vty, " Resolve via default: %s\n",
+ resolve_via_default ? "on" : "off");
}
zebra_print_rnh_table(vrf_id, afi, safi, vty, p, json_nexthop);