diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-08-08 16:15:45 +0300 |
|---|---|---|
| committer | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-08-17 21:45:55 +0300 |
| commit | d02fae58360bbed6103ec4d14b4946ce016f5b90 (patch) | |
| tree | fdc97abd544abde5d7389eb9cad71e2fffd97b15 /zebra/zebra_vty.c | |
| parent | 62196fbd1919f98a8cf36ebdd1f48d31a404ed9f (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.c | 27 |
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); |
