]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Add `%pNG` to zebra print routines
authorDonald Sharp <sharpd@nvidia.com>
Tue, 14 Jun 2022 18:45:01 +0000 (14:45 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Wed, 15 Jun 2022 00:25:56 +0000 (20:25 -0400)
Add `%pNG` so that a nexthop group can be displayed in debugs/logs
such that it can provide useful information.

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

index cf09902d5253cd1ecb3740e5b9642be98d0956b3..980a661298624f06b518f3329a6ab212af2b1f2d 100644 (file)
@@ -3425,3 +3425,32 @@ unsigned long zebra_nhg_score_proto(int type)
 
        return count;
 }
+
+printfrr_ext_autoreg_p("NG", printfrr_nhghe);
+static ssize_t printfrr_nhghe(struct fbuf *buf, struct printfrr_eargs *ea,
+                             const void *ptr)
+{
+       const struct nhg_hash_entry *nhe = ptr;
+       const struct nhg_connected *dep;
+       ssize_t ret = 0;
+
+       if (!nhe)
+               return bputs(buf, "[NULL]");
+
+       ret += bprintfrr(buf, "%u[", nhe->id);
+       if (nhe->ifp)
+               ret += printfrr_nhs(buf, nhe->nhg.nexthop);
+       else {
+               int count = zebra_nhg_depends_count(nhe);
+
+               frr_each (nhg_connected_tree_const, &nhe->nhg_depends, dep) {
+                       ret += bprintfrr(buf, "%u", dep->nhe->id);
+                       if (count > 1)
+                               ret += bputs(buf, "/");
+                       count--;
+               }
+       }
+
+       ret += bputs(buf, "]");
+       return ret;
+}
index 3fbf778be2eb4004017b639bb5f8263b73c51533..0863d90a7ead6fe78b2ce33b42db026bc93ff515 100644 (file)
@@ -364,6 +364,10 @@ extern void zebra_nhg_mark_keep(void);
 struct route_entry; /* Forward ref to avoid circular includes */
 extern int nexthop_active_update(struct route_node *rn, struct route_entry *re);
 
+#ifdef _FRR_ATTRIBUTE_PRINTFRR
+#pragma FRR printfrr_ext "%pNG" (const struct nhg_hash_entry *)
+#endif
+
 #ifdef __cplusplus
 }
 #endif