IP Flow Hash Config fixes
[vpp.git] / src / vnet / fib / ip6_fib.c
index 0ee029d..e046b34 100644 (file)
@@ -35,8 +35,7 @@ vnet_ip6_fib_init (u32 fib_index)
     fib_table_entry_special_add(fib_index,
                                &pfx,
                                FIB_SOURCE_DEFAULT_ROUTE,
-                               FIB_ENTRY_FLAG_DROP,
-                               ADJ_INDEX_INVALID);
+                               FIB_ENTRY_FLAG_DROP);
 
     /*
      * all link local for us
@@ -47,8 +46,7 @@ vnet_ip6_fib_init (u32 fib_index)
     fib_table_entry_special_add(fib_index,
                                &pfx,
                                FIB_SOURCE_SPECIAL,
-                               FIB_ENTRY_FLAG_LOCAL,
-                               ADJ_INDEX_INVALID);
+                               FIB_ENTRY_FLAG_LOCAL);
 }
 
 static u32
@@ -76,9 +74,7 @@ create_fib_with_table_id (u32 table_id)
     fib_table->ft_table_id =
        v6_fib->table_id =
            table_id;
-    fib_table->ft_flow_hash_config = 
-       v6_fib->flow_hash_config =
-           IP_FLOW_HASH_DEFAULT;
+    fib_table->ft_flow_hash_config = IP_FLOW_HASH_DEFAULT;
 
     vnet_ip6_fib_init(fib_table->ft_index);
     fib_table_lock(fib_table->ft_index, FIB_PROTOCOL_IP6);
@@ -392,12 +388,6 @@ u32 ip6_fib_table_fwding_lookup_with_if_index (ip6_main_t * im,
     return ip6_fib_table_fwding_lookup(im, fib_index, dst);
 }
 
-flow_hash_config_t
-ip6_fib_table_get_flow_hash_config (u32 fib_index)
-{
-    return (ip6_fib_get(fib_index)->flow_hash_config);
-}
-
 u32
 ip6_fib_table_get_index_for_sw_if_index (u32 sw_if_index)
 {
@@ -560,12 +550,15 @@ static void
 ip6_fib_table_show_one (ip6_fib_t *fib,
                        vlib_main_t * vm,
                        ip6_address_t *address,
-                       u32 mask_len)
+                       u32 mask_len,
+                        int detail)
 {
     vlib_cli_output(vm, "%U",
                     format_fib_entry,
                     ip6_fib_table_lookup(fib->index, address, mask_len),
-                    FIB_ENTRY_FORMAT_DETAIL);
+                    (detail ?
+                     FIB_ENTRY_FORMAT_DETAIL2:
+                     FIB_ENTRY_FORMAT_DETAIL));
 }
 
 typedef struct {
@@ -573,8 +566,9 @@ typedef struct {
   u64 count_by_prefix_length[129];
 } count_routes_in_fib_at_prefix_length_arg_t;
 
-static void count_routes_in_fib_at_prefix_length 
-(BVT(clib_bihash_kv) * kvp, void *arg)
+static void
+count_routes_in_fib_at_prefix_length (BVT(clib_bihash_kv) * kvp,
+                                      void *arg)
 {
   count_routes_in_fib_at_prefix_length_arg_t * ap = arg;
   int mask_width;
@@ -600,6 +594,7 @@ ip6_show_fib (vlib_main_t * vm,
     ip6_address_t matching_address;
     u32 mask_len  = 128;
     int table_id = -1, fib_index = ~0;
+    int detail = 0;
 
     verbose = 1;
     matching = 0;
@@ -610,6 +605,10 @@ ip6_show_fib (vlib_main_t * vm,
            unformat (input, "summary") ||
            unformat (input, "sum"))
            verbose = 0;
+       else if (unformat (input, "detail")   ||
+                 unformat (input, "det"))
+           detail = 1;
 
        else if (unformat (input, "%U/%d",
                           unformat_ip6_address, &matching_address, &mask_len))
@@ -636,7 +635,7 @@ ip6_show_fib (vlib_main_t * vm,
 
        vlib_cli_output (vm, "%s, fib_index %d, flow hash: %U", 
                         fib_table->ft_desc, fib->index,
-                        format_ip_flow_hash_config, fib->flow_hash_config);
+                        format_ip_flow_hash_config, fib_table->ft_flow_hash_config);
 
        /* Show summary? */
        if (! verbose)
@@ -667,7 +666,7 @@ ip6_show_fib (vlib_main_t * vm,
        }
        else
        {
-           ip6_fib_table_show_one(fib, vm, &matching_address, mask_len);
+           ip6_fib_table_show_one(fib, vm, &matching_address, mask_len, detail);
        }
     }));
 
@@ -771,7 +770,7 @@ ip6_show_fib (vlib_main_t * vm,
 /* *INDENT-OFF* */
 VLIB_CLI_COMMAND (ip6_show_fib_command, static) = {
     .path = "show ip6 fib",
-    .short_help = "show ip6 fib [summary] [table <table-id>] [index <fib-id>] [<ip6-addr>[/<width>]]",
+    .short_help = "show ip6 fib [summary] [table <table-id>] [index <fib-id>] [<ip6-addr>[/<width>]] [detail]",
     .function = ip6_show_fib,
 };
 /* *INDENT-ON* */