diff options
Diffstat (limited to 'bgpd/bgp_table.c')
| -rw-r--r-- | bgpd/bgp_table.c | 19 |
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); } |
