MPLS: cannot delete a path from the CLI 91/7091/3
authorNeale Ranns <nranns@cisco.com>
Fri, 9 Jun 2017 19:41:00 +0000 (12:41 -0700)
committerChris Luke <chris_luke@comcast.com>
Sat, 10 Jun 2017 15:15:38 +0000 (15:15 +0000)
Change-Id: I7f85870ef99405727312a5de6839c8875c9fa1c5
Signed-off-by: Neale Ranns <nranns@cisco.com>
src/vnet/mpls/mpls.c

index a67f47a..068d31f 100644 (file)
@@ -428,7 +428,7 @@ vnet_mpls_local_label (vlib_main_t * vm,
   }
   else
   {
-      fib_node_index_t lfe, fib_index;
+      fib_node_index_t fib_index;
       u32 fi;
 
       if (NULL == rpaths)
@@ -469,19 +469,31 @@ vnet_mpls_local_label (vlib_main_t * vm,
           goto done;
       }
 
-      lfe = fib_table_entry_path_add2(fib_index,
-                                     &pfx,
-                                     FIB_SOURCE_CLI,
-                                     FIB_ENTRY_FLAG_NONE,
-                                     rpaths);
-
-      if (FIB_NODE_INDEX_INVALID == lfe)
+      if (is_del)
       {
-          error = clib_error_return (0, "Failed to create %U-%U in MPLS table-id %d",
-                                     format_mpls_unicast_label, local_label,
-                                     format_mpls_eos_bit, eos,
-                                     table_id);
-          goto done;
+          fib_table_entry_path_remove2(fib_index,
+                                       &pfx,
+                                       FIB_SOURCE_CLI,
+                                       rpaths);
+      }
+      else
+      {
+          fib_node_index_t lfe;
+
+          lfe = fib_table_entry_path_add2(fib_index,
+                                          &pfx,
+                                          FIB_SOURCE_CLI,
+                                          FIB_ENTRY_FLAG_NONE,
+                                          rpaths);
+
+          if (FIB_NODE_INDEX_INVALID == lfe)
+          {
+              error = clib_error_return (0, "Failed to create %U-%U in MPLS table-id %d",
+                                         format_mpls_unicast_label, local_label,
+                                         format_mpls_eos_bit, eos,
+                                         table_id);
+              goto done;
+          }
       }
   }