Treat label=0 as an invalid next-hop-via-label 25/9025/1
authorNeale Ranns <[email protected]>
Tue, 19 Sep 2017 01:04:10 +0000 (18:04 -0700)
committerNeale Ranns <[email protected]>
Wed, 25 Oct 2017 18:38:42 +0000 (18:38 +0000)
Change-Id: I831226111d26f5c8a795e0773e23fddcddfb1613
Signed-off-by: Neale Ranns <[email protected]>
(cherry picked from commit caac350076e386e5caf6322a3439ea0c36d77cc5)

src/vnet/ip/ip_api.c

index 2680d60..fde636c 100644 (file)
@@ -734,7 +734,13 @@ add_del_route_t_handler (u8 is_multipath,
   fib_route_path_t *paths = NULL;
   fib_entry_flag_t entry_flags = FIB_ENTRY_FLAG_NONE;
 
-  if (MPLS_LABEL_INVALID != next_hop_via_label)
+  /*
+   * the special INVALID label meams we are not recursing via a
+   * label. Exp-null value is never a valid via-label so that
+   * also means it's not a via-label and means clients that set
+   * it to 0 by default get the expected behaviour
+   */
+  if ((MPLS_LABEL_INVALID != next_hop_via_label) && (0 != next_hop_via_label))
     {
       path.frp_proto = FIB_PROTOCOL_MPLS;
       path.frp_local_label = next_hop_via_label;