summaryrefslogtreecommitdiff
path: root/bgpd/bgp_table.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_table.c')
-rw-r--r--bgpd/bgp_table.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c
index 7e3aa2a48a..833bdec2ed 100644
--- a/bgpd/bgp_table.c
+++ b/bgpd/bgp_table.c
@@ -201,18 +201,17 @@ struct bgp_node *bgp_table_subtree_lookup(const struct bgp_table *table,
}
printfrr_ext_autoreg_p("BD", printfrr_bd)
-static ssize_t printfrr_bd(char *buf, size_t bsz, const char *fmt,
- int prec, const void *ptr)
+static ssize_t printfrr_bd(struct fbuf *buf, struct printfrr_eargs *ea,
+ const void *ptr)
{
const struct bgp_dest *dest = ptr;
- const struct prefix *p;
+ const struct prefix *p = bgp_dest_get_prefix(dest);
+ char cbuf[PREFIX_STRLEN];
- if (dest) {
- p = bgp_dest_get_prefix(dest);
- prefix2str(p, buf, bsz);
- } else {
- strlcpy(buf, "NULL", bsz);
- }
+ if (!dest)
+ return bputs(buf, "(null)");
- return 2;
+ /* need to get the real length even if buffer too small */
+ prefix2str(p, cbuf, sizeof(cbuf));
+ return bputs(buf, cbuf);
}