FIB path preference
[vpp.git] / src / vnet / mfib / ip6_mfib.c
index 8f3dae8..5c6f812 100644 (file)
@@ -195,6 +195,7 @@ ip6_create_mfib_with_table_id (u32 table_id)
     mfib_table_entry_update(mfib_table->mft_index,
                             &all_zeros,
                             MFIB_SOURCE_DEFAULT_ROUTE,
+                            MFIB_RPF_ID_NONE,
                             MFIB_ENTRY_FLAG_DROP);
 
     /*
@@ -431,7 +432,7 @@ ip6_mfib_table_entry_insert (ip6_mfib_t *mfib,
 {
     ip6_mfib_node_t *i6mn = clib_mem_alloc(sizeof(*i6mn));
 
-    memset(i6mn, 0, sizeof(*i6mn));
+    memset(i6mn->i6mn_nodes, 0, sizeof(i6mn->i6mn_nodes));
 
     IP6_MFIB_MK_KEY_MASK(grp, src, len, &i6mn->i6mn_key);
     i6mn->i6mn_entry = mfib_entry_index;
@@ -584,16 +585,19 @@ ip6_show_mfib (vlib_main_t * vm,
                            unformat_ip6_address, &grp))
         {
             matching = 1;
-            mask = 64;
+            mask = 256;
         }
-        else if (unformat (input, "%U", unformat_ip6_address, &grp))
+        else if (unformat (input, "%U/%d", unformat_ip6_address, &grp, &mask))
         {
+            memset(&src, 0, sizeof(src));
             matching = 1;
-            mask = 32;
         }
-        else if (unformat (input, "%U/%d",
-                           unformat_ip6_address, &grp, &mask))
+        else if (unformat (input, "%U", unformat_ip6_address, &grp))
+        {
+            memset(&src, 0, sizeof(src));
             matching = 1;
+            mask = 128;
+        }
         else if (unformat (input, "table %d", &table_id))
             ;
         else if (unformat (input, "index %d", &fib_index))