VPP-387: Fixed ipsec-input trace

Change-Id: I0a687c5d5f745a6c82a58c8e20b987180704a685
Signed-off-by: Matus Fabian <matfabia@cisco.com>
This commit is contained in:
Matus Fabian
2016-09-07 05:57:09 -07:00
committed by Damjan Marion
parent ba1d046414
commit 5539a077ef

View File

@ -56,7 +56,7 @@ static char *ipsec_input_error_strings[] = {
typedef struct
{
u32 tunnel_index;
u32 sa_id;
u32 spi;
u32 seq;
} ipsec_input_trace_t;
@ -69,15 +69,19 @@ format_ipsec_input_trace (u8 * s, va_list * args)
CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *);
ipsec_input_trace_t *t = va_arg (*args, ipsec_input_trace_t *);
if (t->tunnel_index != ~0)
if (t->spi == 0 && t->seq == 0)
{
s =
format (s, "esp: tunnel %u spi %u seq %u", t->tunnel_index, t->spi,
t->seq);
s = format (s, "esp: no esp packet");
return s;
}
if (t->sa_id != 0)
{
s = format (s, "esp: sa_id %u spi %u seq %u", t->sa_id, t->spi, t->seq);
}
else
{
s = format (s, "esp: no tunnel spi %u seq %u", t->spi, t->seq);
s = format (s, "esp: no sa spi %u seq %u", t->spi, t->seq);
}
return s;
}
@ -207,8 +211,8 @@ ipsec_input_ip4_node_fn (vlib_main_t * vm,
ip4_header_t *ip0;
esp_header_t *esp0;
ip4_ipsec_config_t *c0;
u32 tunnel_index0 = ~0;
ipsec_spd_t *spd0;
ipsec_policy_t *p0 = 0;
bi0 = to_next[0] = from[0];
from += 1;
@ -236,14 +240,14 @@ ipsec_input_ip4_node_fn (vlib_main_t * vm,
clib_net_to_host_u32 (esp0->spi),
clib_net_to_host_u16 (ip0->length), spd0->id);
#endif
ipsec_policy_t *p0;
p0 = ipsec_input_protect_policy_match (spd0,
clib_net_to_host_u32
(ip0->
src_address.as_u32),
(ip0->src_address.
as_u32),
clib_net_to_host_u32
(ip0->
dst_address.as_u32),
(ip0->dst_address.
as_u32),
clib_net_to_host_u32
(esp0->spi));
@ -267,9 +271,13 @@ ipsec_input_ip4_node_fn (vlib_main_t * vm,
{
ipsec_input_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
tr->tunnel_index = tunnel_index0;
tr->spi = clib_host_to_net_u32 (esp0->spi);
tr->seq = clib_host_to_net_u32 (esp0->seq);
if (ip0->protocol == IP_PROTOCOL_IPSEC_ESP)
{
if (p0)
tr->sa_id = p0->sa_id;
tr->spi = clib_host_to_net_u32 (esp0->spi);
tr->seq = clib_host_to_net_u32 (esp0->seq);
}
}
vlib_validate_buffer_enqueue_x1 (vm, node, next_index,
@ -338,8 +346,8 @@ VLIB_NODE_FUNCTION_MULTIARCH (ipsec_input_ip4_node, ipsec_input_ip4_node_fn)
ip6_header_t *ip0;
esp_header_t *esp0;
ip4_ipsec_config_t *c0;
u32 tunnel_index0 = ~0;
ipsec_spd_t *spd0;
ipsec_policy_t *p0 = 0;
u32 header_size = sizeof (ip0[0]);
bi0 = to_next[0] = from[0];
@ -368,7 +376,6 @@ VLIB_NODE_FUNCTION_MULTIARCH (ipsec_input_ip4_node, ipsec_input_ip4_node_fn)
clib_net_to_host_u16 (ip0->payload_length) + header_size,
spd0->id);
#endif
ipsec_policy_t *p0;
p0 = ipsec_input_ip6_protect_policy_match (spd0,
&ip0->src_address,
&ip0->dst_address,
@ -395,9 +402,13 @@ VLIB_NODE_FUNCTION_MULTIARCH (ipsec_input_ip4_node, ipsec_input_ip4_node_fn)
{
ipsec_input_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
tr->tunnel_index = tunnel_index0;
tr->spi = clib_host_to_net_u32 (esp0->spi);
tr->seq = clib_host_to_net_u32 (esp0->seq);
if (ip0->protocol == IP_PROTOCOL_IPSEC_ESP)
{
if (p0)
tr->sa_id = p0->sa_id;
tr->spi = clib_host_to_net_u32 (esp0->spi);
tr->seq = clib_host_to_net_u32 (esp0->seq);
}
}
vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,