Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: use IPv6 flowlabel in flow hash computation
[vpp.git]
/
src
/
vnet
/
ip
/
ip6_forward.c
diff --git
a/src/vnet/ip/ip6_forward.c
b/src/vnet/ip/ip6_forward.c
index
294f632
..
0ed20ee
100644
(file)
--- a/
src/vnet/ip/ip6_forward.c
+++ b/
src/vnet/ip/ip6_forward.c
@@
-369,8
+369,8
@@
ip6_add_del_interface_address (vlib_main_t * vm,
ip_interface_address_t *ia;
vnet_sw_interface_t *sif;
ip_interface_address_t *ia;
vnet_sw_interface_t *sif;
- pool_foreach
(sif, vnm->interface_main.sw_interfaces,
-
(
{
+ pool_foreach
(sif, vnm->interface_main.sw_interfaces)
+
{
if (im->fib_index_by_sw_if_index[sw_if_index] ==
im->fib_index_by_sw_if_index[sif->sw_if_index])
{
if (im->fib_index_by_sw_if_index[sw_if_index] ==
im->fib_index_by_sw_if_index[sif->sw_if_index])
{
@@
-417,7
+417,7
@@
ip6_add_del_interface_address (vlib_main_t * vm,
}
}));
}
}
}));
}
- }
));
+ }
}
/* *INDENT-ON* */
}
/* *INDENT-ON* */
@@
-956,7
+956,10
@@
format_ip6_forward_next_trace (u8 * s, va_list * args)
ip6_forward_next_trace_t *t = va_arg (*args, ip6_forward_next_trace_t *);
u32 indent = format_get_indent (s);
ip6_forward_next_trace_t *t = va_arg (*args, ip6_forward_next_trace_t *);
u32 indent = format_get_indent (s);
- s = format (s, "%U%U",
+ s = format (s, "%Ufib:%d adj:%d flow:%d",
+ format_white_space, indent,
+ t->fib_index, t->adj_index, t->flow_hash);
+ s = format (s, "\n%U%U",
format_white_space, indent,
format_ip6_header, t->packet_data, sizeof (t->packet_data));
return s;
format_white_space, indent,
format_ip6_header, t->packet_data, sizeof (t->packet_data));
return s;
@@
-1310,7
+1313,7
@@
ip6_local_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
vlib_prefetch_buffer_data (b[3], LOAD);
}
vlib_prefetch_buffer_data (b[3], LOAD);
}
-
u8
error[2];
+
ip6_error_t
error[2];
error[0] = IP6_ERROR_UNKNOWN_PROTOCOL;
error[1] = IP6_ERROR_UNKNOWN_PROTOCOL;
error[0] = IP6_ERROR_UNKNOWN_PROTOCOL;
error[1] = IP6_ERROR_UNKNOWN_PROTOCOL;
@@
-1467,8
+1470,8
@@
ip6_local_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
next[1] =
error[1] != IP6_ERROR_UNKNOWN_PROTOCOL ? IP_LOCAL_NEXT_DROP : next[1];
next[1] =
error[1] != IP6_ERROR_UNKNOWN_PROTOCOL ? IP_LOCAL_NEXT_DROP : next[1];
- b[0]->error = error_node->errors[
0
];
- b[1]->error = error_node->errors[
1
];
+ b[0]->error = error_node->errors[
error[0]
];
+ b[1]->error = error_node->errors[
error[1]
];
if (head_of_feature_arc)
{
if (head_of_feature_arc)
{
@@
-1587,7
+1590,7
@@
ip6_local_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
next[0] =
error != IP6_ERROR_UNKNOWN_PROTOCOL ? IP_LOCAL_NEXT_DROP : next[0];
next[0] =
error != IP6_ERROR_UNKNOWN_PROTOCOL ? IP_LOCAL_NEXT_DROP : next[0];
- b[0]->error = error_node->errors[
0
];
+ b[0]->error = error_node->errors[
error
];
if (head_of_feature_arc)
{
if (head_of_feature_arc)
{
@@
-2829,24
+2832,6
@@
ip6_lookup_init (vlib_main_t * vm)
VLIB_INIT_FUNCTION (ip6_lookup_init);
VLIB_INIT_FUNCTION (ip6_lookup_init);
-#ifndef CLIB_MARCH_VARIANT
-int
-vnet_set_ip6_flow_hash (u32 table_id, u32 flow_hash_config)
-{
- u32 fib_index;
-
- fib_index = fib_table_find (FIB_PROTOCOL_IP6, table_id);
-
- if (~0 == fib_index)
- return VNET_API_ERROR_NO_SUCH_FIB;
-
- fib_table_set_flow_hash_config (fib_index, FIB_PROTOCOL_IP6,
- flow_hash_config);
-
- return 0;
-}
-#endif
-
static clib_error_t *
set_ip6_flow_hash_command_fn (vlib_main_t * vm,
unformat_input_t * input,
static clib_error_t *
set_ip6_flow_hash_command_fn (vlib_main_t * vm,
unformat_input_t * input,
@@
-2861,8
+2846,12
@@
set_ip6_flow_hash_command_fn (vlib_main_t * vm,
{
if (unformat (input, "table %d", &table_id))
matched = 1;
{
if (unformat (input, "table %d", &table_id))
matched = 1;
-#define _(a,v) \
- else if (unformat (input, #a)) { flow_hash_config |= v; matched=1;}
+#define _(a, b, v) \
+ else if (unformat (input, #a)) \
+ { \
+ flow_hash_config |= v; \
+ matched = 1; \
+ }
foreach_flow_hash_bit
#undef _
else
foreach_flow_hash_bit
#undef _
else
@@
-2873,7
+2862,7
@@
set_ip6_flow_hash_command_fn (vlib_main_t * vm,
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);
- rv =
vnet_set_ip6_flow_hash (
table_id, flow_hash_config);
+ rv =
ip_flow_hash_set (AF_IP6,
table_id, flow_hash_config);
switch (rv)
{
case 0:
switch (rv)
{
case 0:
@@
-2966,11
+2955,10
@@
set_ip6_flow_hash_command_fn (vlib_main_t * vm,
* @endparblock
?*/
/* *INDENT-OFF* */
* @endparblock
?*/
/* *INDENT-OFF* */
-VLIB_CLI_COMMAND (set_ip6_flow_hash_command, static) =
-{
+VLIB_CLI_COMMAND (set_ip6_flow_hash_command, static) = {
.path = "set ip6 flow-hash",
.path = "set ip6 flow-hash",
- .short_help =
-
"set ip6 flow-hash table <table-id> [src] [dst] [sport] [dport] [proto] [reverse
]",
+ .short_help =
"set ip6 flow-hash table <table-id> [src] [dst] [sport] "
+
"[dport] [proto] [reverse] [flowlabel
]",
.function = set_ip6_flow_hash_command_fn,
};
/* *INDENT-ON* */
.function = set_ip6_flow_hash_command_fn,
};
/* *INDENT-ON* */