]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Display nhg's afi as `No Afi` 18709/head
authorDonald Sharp <sharpd@nvidia.com>
Wed, 23 Apr 2025 16:00:55 +0000 (12:00 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Wed, 23 Apr 2025 16:00:55 +0000 (12:00 -0400)
When displaying `show nexthop-group rib` the afi
displayed for Nexthop Groups ( not singletons ) is
`bad-value` which while true to the specific of
the AFI it's not necessarily what we want to display
to the end operator.  Add a wrapper function for
nhg's to do the right thing.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra/zebra_nhg.c
zebra/zebra_nhg.h
zebra/zebra_vty.c

index a033b3ea50bd2cab3569b90d79ce5b0a4b5e9a56..1da2c13c15c832740dae9b63288a561a4ce0b9c7 100644 (file)
@@ -66,6 +66,14 @@ static void depends_decrement_free(struct nhg_connected_tree_head *head);
 static struct nhg_backup_info *
 nhg_backup_copy(const struct nhg_backup_info *orig);
 
+const char *zebra_nhg_afi2str(struct nhg_hash_entry *nhe)
+{
+       if (nhe->afi == AFI_UNSPEC)
+               return "No AFI";
+
+       return afi2str(nhe->afi);
+}
+
 /* Helper function for getting the next allocatable ID */
 static uint32_t nhg_get_next_id(void)
 {
index de6f6123aa164c7ac54d6761ab0f523ea166c126..856d2a95d5e19ed5b61a78960b122fe6151c45dd 100644 (file)
@@ -405,6 +405,8 @@ extern void nexthop_vrf_update(struct route_node *rn, struct route_entry *re, vr
 extern int nexthop_active_update(struct route_node *rn, struct route_entry *re,
                                 struct route_entry *old_re);
 
+extern const char *zebra_nhg_afi2str(struct nhg_hash_entry *nhe);
+
 #ifdef _FRR_ATTRIBUTE_PRINTFRR
 #pragma FRR printfrr_ext "%pNG" (const struct nhg_hash_entry *)
 #endif
index 9e4db11989294b5374dda6b06bdf870ffd6cf1c5..ef79d57b405a07652674e370b47ebb6de85149f9 100644 (file)
@@ -1091,7 +1091,7 @@ static void show_nexthop_group_out(struct vty *vty, struct nhg_hash_entry *nhe,
                json_object_string_add(json, "uptime", up_str);
                json_object_string_add(json, "vrf",
                                       vrf_id_to_name(nhe->vrf_id));
-               json_object_string_add(json, "afi", afi2str(nhe->afi));
+               json_object_string_add(json, "afi", zebra_nhg_afi2str(nhe));
 
        } else {
                vty_out(vty, "ID: %u (%s)\n", nhe->id,
@@ -1106,7 +1106,7 @@ static void show_nexthop_group_out(struct vty *vty, struct nhg_hash_entry *nhe,
 
                vty_out(vty, "     Uptime: %s\n", up_str);
                vty_out(vty, "     VRF: %s(%s)\n", vrf_id_to_name(nhe->vrf_id),
-                       afi2str(nhe->afi));
+                       zebra_nhg_afi2str(nhe));
        }
 
        if (CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID)) {