On Thu, Nov 03, 2022 at 03:26:35PM +0100, Claudio Jeker wrote:
> Noticed while figuring out the kroute bug with MPLS.
> I think it would be nice to know the MPLS label of a fib MPLS route.
>
> bgpctl show fib table 13
> flags: B = BGP, C = Connected, S = Static
> N = BGP Nexthop reachable via this route
> r = reject route, b = blackhole route
>
> flags prio destination gateway
> C 1 127.0.0.1/32 link#129
> B 48 192.168.44.0/24 10.12.57.2 mpls 44
> C 1 192.168.237.242/32 link#128
>
> Not sure if the keyword should be "mpls" or "label".
I think something containing mpls is clearer. Did you deliberately use
mpls in output.c and mplslabel in output_json.c?
ok
> --
> :wq Claudio
>
> Index: bgpctl.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.h,v
> retrieving revision 1.17
> diff -u -p -r1.17 bgpctl.h
> --- bgpctl.h 17 Oct 2022 12:01:19 -0000 1.17
> +++ bgpctl.h 3 Nov 2022 14:21:14 -0000
> @@ -58,3 +58,5 @@ const char *fmt_community(uint16_t, uint
> const char *fmt_large_community(uint32_t, uint32_t, uint32_t);
> const char *fmt_ext_community(uint8_t *);
> const char *fmt_set_type(struct ctl_show_set *);
> +
> +#define MPLS_LABEL_OFFSET 12
> Index: output.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/output.c,v
> retrieving revision 1.30
> diff -u -p -r1.30 output.c
> --- output.c 17 Oct 2022 12:01:19 -0000 1.30
> +++ output.c 3 Nov 2022 14:21:33 -0000
> @@ -477,6 +477,8 @@ show_fib(struct kroute_full *kf)
> printf("link#%u", kf->ifindex);
> else
> printf("%s", log_addr(&kf->nexthop));
> + if (kf->flags & F_MPLS)
> + printf(" mpls %d", ntohl(kf->mplslabel) >> MPLS_LABEL_OFFSET);
> printf("\n");
> }
>
> Index: output_json.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpctl/output_json.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 output_json.c
> --- output_json.c 17 Oct 2022 12:01:19 -0000 1.24
> +++ output_json.c 3 Nov 2022 14:22:48 -0000
> @@ -385,6 +385,9 @@ json_fib(struct kroute_full *kf)
> else
> json_do_printf("nexthop", "%s", log_addr(&kf->nexthop));
>
> + if (kf->flags & F_CONNECTED)
> + json_do_printf("mplslabel", "%d",
> + ntohl(kf->mplslabel) >> MPLS_LABEL_OFFSET);
> json_do_end();
> }
>
>