Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Fix icmp/udp/tcp punt/drop paths
[vpp.git]
/
src
/
vnet
/
udp
/
udp_local.c
diff --git
a/src/vnet/udp/udp_local.c
b/src/vnet/udp/udp_local.c
index
ce9bb02
..
f0d9530
100644
(file)
--- a/
src/vnet/udp/udp_local.c
+++ b/
src/vnet/udp/udp_local.c
@@
-24,8
+24,10
@@
udp_main_t udp_main;
#define foreach_udp_local_next \
udp_main_t udp_main;
#define foreach_udp_local_next \
- _ (PUNT, "error-punt") \
- _ (DROP, "error-drop") \
+ _ (PUNT4, "ip4-punt") \
+ _ (PUNT6, "ip6-punt") \
+ _ (DROP4, "ip4-drop") \
+ _ (DROP6, "ip6-drop") \
_ (ICMP4_ERROR, "ip4-icmp-error") \
_ (ICMP6_ERROR, "ip6-icmp-error")
_ (ICMP4_ERROR, "ip4-icmp-error") \
_ (ICMP6_ERROR, "ip6-icmp-error")
@@
-37,6
+39,9
@@
typedef enum
UDP_LOCAL_N_NEXT,
} udp_local_next_t;
UDP_LOCAL_N_NEXT,
} udp_local_next_t;
+#define udp_local_next_drop(is_ip4) ((is_ip4) ? UDP_LOCAL_NEXT_DROP4 : UDP_LOCAL_NEXT_DROP6)
+#define udp_local_next_punt(is_ip4) ((is_ip4) ? UDP_LOCAL_NEXT_PUNT4 : UDP_LOCAL_NEXT_PUNT6)
+
typedef struct
{
u16 src_port;
typedef struct
{
u16 src_port;
@@
-132,7
+137,7
@@
udp46_local_inline (vlib_main_t * vm,
if (PREDICT_FALSE (b0->current_length < advance0 + sizeof (*h0)))
{
error0 = UDP_ERROR_LENGTH_ERROR;
if (PREDICT_FALSE (b0->current_length < advance0 + sizeof (*h0)))
{
error0 = UDP_ERROR_LENGTH_ERROR;
- next0 =
UDP_LOCAL_NEXT_DROP
;
+ next0 =
udp_local_next_drop (is_ip4)
;
}
else
{
}
else
{
@@
-143,14
+148,14
@@
udp46_local_inline (vlib_main_t * vm,
vlib_buffer_length_in_chain (vm, b0)))
{
error0 = UDP_ERROR_LENGTH_ERROR;
vlib_buffer_length_in_chain (vm, b0)))
{
error0 = UDP_ERROR_LENGTH_ERROR;
- next0 =
UDP_LOCAL_NEXT_DROP
;
+ next0 =
udp_local_next_drop (is_ip4)
;
}
}
if (PREDICT_FALSE (b1->current_length < advance1 + sizeof (*h1)))
{
error1 = UDP_ERROR_LENGTH_ERROR;
}
}
if (PREDICT_FALSE (b1->current_length < advance1 + sizeof (*h1)))
{
error1 = UDP_ERROR_LENGTH_ERROR;
- next1 =
UDP_LOCAL_NEXT_DROP
;
+ next1 =
udp_local_next_drop (is_ip4)
;
}
else
{
}
else
{
@@
-161,7
+166,7
@@
udp46_local_inline (vlib_main_t * vm,
vlib_buffer_length_in_chain (vm, b1)))
{
error1 = UDP_ERROR_LENGTH_ERROR;
vlib_buffer_length_in_chain (vm, b1)))
{
error1 = UDP_ERROR_LENGTH_ERROR;
- next1 =
UDP_LOCAL_NEXT_DROP
;
+ next1 =
udp_local_next_drop (is_ip4)
;
}
}
}
}
@@
-187,7
+192,7
@@
udp46_local_inline (vlib_main_t * vm,
if (PREDICT_FALSE (punt_unknown))
{
b0->error = node->errors[UDP_ERROR_PUNT];
if (PREDICT_FALSE (punt_unknown))
{
b0->error = node->errors[UDP_ERROR_PUNT];
- next0 =
UDP_LOCAL_NEXT_PUNT
;
+ next0 =
udp_local_next_punt (is_ip4)
;
}
else if (is_ip4)
{
}
else if (is_ip4)
{
@@
-224,7
+229,7
@@
udp46_local_inline (vlib_main_t * vm,
if (PREDICT_FALSE (punt_unknown))
{
b1->error = node->errors[UDP_ERROR_PUNT];
if (PREDICT_FALSE (punt_unknown))
{
b1->error = node->errors[UDP_ERROR_PUNT];
- next1 =
UDP_LOCAL_NEXT_PUNT
;
+ next1 =
udp_local_next_punt (is_ip4)
;
}
else if (is_ip4)
{
}
else if (is_ip4)
{
@@
-308,7
+313,7
@@
udp46_local_inline (vlib_main_t * vm,
if (PREDICT_FALSE (b0->current_length < advance0 + sizeof (*h0)))
{
b0->error = node->errors[UDP_ERROR_LENGTH_ERROR];
if (PREDICT_FALSE (b0->current_length < advance0 + sizeof (*h0)))
{
b0->error = node->errors[UDP_ERROR_LENGTH_ERROR];
- next0 =
UDP_LOCAL_NEXT_DROP
;
+ next0 =
udp_local_next_drop (is_ip4)
;
goto trace_x1;
}
goto trace_x1;
}
@@
-333,7
+338,7
@@
udp46_local_inline (vlib_main_t * vm,
if (PREDICT_FALSE (punt_unknown))
{
b0->error = node->errors[UDP_ERROR_PUNT];
if (PREDICT_FALSE (punt_unknown))
{
b0->error = node->errors[UDP_ERROR_PUNT];
- next0 =
UDP_LOCAL_NEXT_PUNT
;
+ next0 =
udp_local_next_punt (is_ip4)
;
}
else if (is_ip4)
{
}
else if (is_ip4)
{
@@
-364,7
+369,7
@@
udp46_local_inline (vlib_main_t * vm,
else
{
b0->error = node->errors[UDP_ERROR_LENGTH_ERROR];
else
{
b0->error = node->errors[UDP_ERROR_LENGTH_ERROR];
- next0 =
UDP_LOCAL_NEXT_DROP
;
+ next0 =
udp_local_next_drop (is_ip4)
;
}
trace_x1:
}
trace_x1: