Show the MPLS label of a L3VPN route in show fib output.
authorclaudio <claudio@openbsd.org>
Wed, 9 Nov 2022 14:20:11 +0000 (14:20 +0000)
committerclaudio <claudio@openbsd.org>
Wed, 9 Nov 2022 14:20:11 +0000 (14:20 +0000)
OK tb@

usr.sbin/bgpctl/bgpctl.h
usr.sbin/bgpctl/output.c
usr.sbin/bgpctl/output_json.c

index 7014095..e911bd5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bgpctl.h,v 1.17 2022/10/17 12:01:19 claudio Exp $ */
+/*     $OpenBSD: bgpctl.h,v 1.18 2022/11/09 14:20:11 claudio Exp $ */
 
 /*
  * Copyright (c) 2019 Claudio Jeker <claudio@openbsd.org>
@@ -58,3 +58,5 @@ const char    *fmt_community(uint16_t, uint16_t);
 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 4c746b1..1597d48 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: output.c,v 1.31 2022/11/07 11:33:24 mbuhl Exp $ */
+/*     $OpenBSD: output.c,v 1.32 2022/11/09 14:20:11 claudio Exp $ */
 
 /*
  * Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
@@ -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 6def8a3..22752f1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: output_json.c,v 1.25 2022/11/07 11:33:24 mbuhl Exp $ */
+/*     $OpenBSD: output_json.c,v 1.26 2022/11/09 14:20:11 claudio Exp $ */
 
 /*
  * Copyright (c) 2020 Claudio Jeker <claudio@openbsd.org>
@@ -385,6 +385,12 @@ json_fib(struct kroute_full *kf)
        else
                json_do_printf("nexthop", "%s", log_addr(&kf->nexthop));
 
+       if (kf->flags & F_MPLS) {
+               json_do_array("mplslabel");
+               json_do_uint("mplslabel", 
+                   ntohl(kf->mplslabel) >> MPLS_LABEL_OFFSET);
+               json_do_end();
+       }
        json_do_end();
 }