This adjusts the output of bgpctl show fib. It removes the F_DOWN check
since kroutes no longer track this. And it changes the flag printing code
to reserve the space needed so that adjusting the flags does not break the
output. Last but not least increase the size of destination and gateway to
32bytes so that more IPv6 addrs fit.

Before:
> bgpctl show fib con
flags: * = valid, B = BGP, C = Connected, S = Static
       N = BGP Nexthop reachable via this route
       r = reject route, b = blackhole route

flags prio destination          gateway
*CN     4 10.83.0.0/24         link#1
*C      1 10.83.66.5/32        link#4

After:
> bgpctl show fib con
flags: B = BGP, C = Connected, S = Static
       N = BGP Nexthop reachable via this route
       r = reject route, b = blackhole route

flags prio destination                      gateway                         
CN       4 10.83.0.0/24                     link#1
C        1 10.83.66.5/32                    link#4

 
-- 
:wq Claudio

Index: bgpctl.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v
retrieving revision 1.280
diff -u -p -r1.280 bgpctl.c
--- bgpctl.c    7 Jul 2022 12:17:57 -0000       1.280
+++ bgpctl.c    28 Jul 2022 10:03:31 -0000
@@ -625,19 +625,14 @@ fmt_fib_flags(uint16_t flags)
 {
        static char buf[8];
 
-       if (flags & F_DOWN)
-               strlcpy(buf, " ", sizeof(buf));
-       else
-               strlcpy(buf, "*", sizeof(buf));
-
        if (flags & F_BGPD)
-               strlcat(buf, "B", sizeof(buf));
+               strlcpy(buf, "B", sizeof(buf));
        else if (flags & F_CONNECTED)
-               strlcat(buf, "C", sizeof(buf));
+               strlcpy(buf, "C", sizeof(buf));
        else if (flags & F_STATIC)
-               strlcat(buf, "S", sizeof(buf));
+               strlcpy(buf, "S", sizeof(buf));
        else
-               strlcat(buf, " ", sizeof(buf));
+               strlcpy(buf, " ", sizeof(buf));
 
        if (flags & F_NEXTHOP)
                strlcat(buf, "N", sizeof(buf));
@@ -652,9 +647,6 @@ fmt_fib_flags(uint16_t flags)
                strlcat(buf, "b", sizeof(buf));
        else
                strlcat(buf, " ", sizeof(buf));
-
-       if (strlcat(buf, " ", sizeof(buf)) >= sizeof(buf))
-               errx(1, "%s buffer too small", __func__);
 
        return buf;
 }
Index: output.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpctl/output.c,v
retrieving revision 1.24
diff -u -p -r1.24 output.c
--- output.c    8 Jul 2022 16:12:11 -0000       1.24
+++ output.c    28 Jul 2022 09:59:13 -0000
@@ -45,12 +45,12 @@ show_head(struct parse_result *res)
                    "MsgRcvd", "MsgSent", "OutQ", "Up/Down", "State/PrfRcvd");
                break;
        case SHOW_FIB:
-               printf("flags: * = valid, B = BGP, C = Connected, "
-                   "S = Static\n");
+               printf("flags: B = BGP, C = Connected, S = Static\n");
                printf("       "
                    "N = BGP Nexthop reachable via this route\n");
                printf("       r = reject route, b = blackhole route\n\n");
-               printf("flags prio destination          gateway\n");
+               printf("%-5s %-4s %-32s %-32s\n", "flags", "prio",
+                   "destination", "gateway");
                break;
        case SHOW_FIB_TABLES:
                printf("%-5s %-20s %-8s\n", "Table", "Description", "State");
@@ -467,7 +467,7 @@ show_fib(struct kroute_full *kf)
 
        if (asprintf(&p, "%s/%u", log_addr(&kf->prefix), kf->prefixlen) == -1)
                err(1, NULL);
-       printf("%s%4i %-20s ", fmt_fib_flags(kf->flags), kf->priority, p);
+       printf("%-5s %4i %-32s ", fmt_fib_flags(kf->flags), kf->priority, p);
        free(p);
 
        if (kf->flags & F_CONNECTED)
Index: output_json.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpctl/output_json.c,v
retrieving revision 1.19
diff -u -p -r1.19 output_json.c
--- output_json.c       8 Jul 2022 16:12:11 -0000       1.19
+++ output_json.c       28 Jul 2022 10:04:44 -0000
@@ -362,7 +362,6 @@ json_fib(struct kroute_full *kf)
 
        json_do_printf("prefix", "%s/%u", log_addr(&kf->prefix), kf->prefixlen);
        json_do_uint("priority", kf->priority);
-       json_do_bool("up", !(kf->flags & F_DOWN));
        if (kf->flags & F_BGPD)
                origin = "bgp";
        else if (kf->flags & F_CONNECTED)

Reply via email to