summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/topotests/all_protocol_startup/r1/ip_nht.ref2
-rw-r--r--tests/topotests/all_protocol_startup/r1/ipv6_nht.ref4
-rw-r--r--tests/topotests/bgp_features/r1/zebra.conf1
-rw-r--r--zebra/zebra_vty.c27
4 files changed, 32 insertions, 2 deletions
diff --git a/tests/topotests/all_protocol_startup/r1/ip_nht.ref b/tests/topotests/all_protocol_startup/r1/ip_nht.ref
index 0ef3f4b675..a2f3d3b0db 100644
--- a/tests/topotests/all_protocol_startup/r1/ip_nht.ref
+++ b/tests/topotests/all_protocol_startup/r1/ip_nht.ref
@@ -1,3 +1,5 @@
+VRF default:
+ Resolve via default: on
1.1.1.1
resolved via static
is directly connected, r1-eth1 (vrf default), weight 1
diff --git a/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref b/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref
index 8c93728007..100a36a8d6 100644
--- a/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref
+++ b/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref
@@ -1,3 +1,5 @@
+VRF default:
+ Resolve via default: on
fc00::2
resolved via connected
is directly connected, r1-eth0 (vrf default)
@@ -10,4 +12,4 @@ fc00:0:0:8::2000(Connected)
resolved via connected
is directly connected, r1-eth8 (vrf default)
Client list: bgp(fd XX)
-
+
diff --git a/tests/topotests/bgp_features/r1/zebra.conf b/tests/topotests/bgp_features/r1/zebra.conf
index 61564f1a1a..a4e51fdf58 100644
--- a/tests/topotests/bgp_features/r1/zebra.conf
+++ b/tests/topotests/bgp_features/r1/zebra.conf
@@ -26,3 +26,4 @@ interface r1-eth3
ip address 192.168.101.1/24
ipv6 address fc00:100:0:1::1/64
!
+no ip nht resolve-via-default
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);