Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
avoid using thread local storage for thread index
[vpp.git]
/
src
/
plugins
/
nat
/
dslite_in2out.c
diff --git
a/src/plugins/nat/dslite_in2out.c
b/src/plugins/nat/dslite_in2out.c
index
9a7751c
..
991d6ed
100644
(file)
--- a/
src/plugins/nat/dslite_in2out.c
+++ b/
src/plugins/nat/dslite_in2out.c
@@
-13,6
+13,7
@@
* limitations under the License.
*/
#include <nat/dslite.h>
* limitations under the License.
*/
#include <nat/dslite.h>
+#include <nat/nat_inlines.h>
vlib_node_registration_t dslite_in2out_node;
vlib_node_registration_t dslite_in2out_slowpath_node;
vlib_node_registration_t dslite_in2out_node;
vlib_node_registration_t dslite_in2out_slowpath_node;
@@
-20,7
+21,7
@@
vlib_node_registration_t dslite_in2out_slowpath_node;
typedef enum
{
DSLITE_IN2OUT_NEXT_IP4_LOOKUP,
typedef enum
{
DSLITE_IN2OUT_NEXT_IP4_LOOKUP,
- DSLITE_IN2OUT_NEXT_IP6_
LOOKU
P,
+ DSLITE_IN2OUT_NEXT_IP6_
ICM
P,
DSLITE_IN2OUT_NEXT_DROP,
DSLITE_IN2OUT_NEXT_SLOWPATH,
DSLITE_IN2OUT_N_NEXT,
DSLITE_IN2OUT_NEXT_DROP,
DSLITE_IN2OUT_NEXT_SLOWPATH,
DSLITE_IN2OUT_N_NEXT,
@@
-108,13
+109,13
@@
slow_path (dslite_main_t * dm, dslite_session_key_t * in2out_key,
if (snat_alloc_outside_address_and_port
(dm->addr_pool, 0, thread_index, &out2in_key,
if (snat_alloc_outside_address_and_port
(dm->addr_pool, 0, thread_index, &out2in_key,
- &s->outside_address_index,
0,
dm->port_per_thread, thread_index))
+ &s->outside_address_index, dm->port_per_thread, thread_index))
ASSERT (0);
}
else
{
if (snat_alloc_outside_address_and_port
ASSERT (0);
}
else
{
if (snat_alloc_outside_address_and_port
- (dm->addr_pool, 0, thread_index, &out2in_key, &address_index,
0,
+ (dm->addr_pool, 0, thread_index, &out2in_key, &address_index,
dm->port_per_thread, thread_index))
{
*error = DSLITE_ERROR_OUT_OF_PORTS;
dm->port_per_thread, thread_index))
{
*error = DSLITE_ERROR_OUT_OF_PORTS;
@@
-227,7
+228,7
@@
dslite_in2out_node_fn_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
dslite_in2out_next_t next_index;
u32 node_index;
vlib_node_runtime_t *error_node;
dslite_in2out_next_t next_index;
u32 node_index;
vlib_node_runtime_t *error_node;
- u32 thread_index = v
lib_get_thread_index ()
;
+ u32 thread_index = v
m->thread_index
;
f64 now = vlib_time_now (vm);
dslite_main_t *dm = &dslite_main;
f64 now = vlib_time_now (vm);
dslite_main_t *dm = &dslite_main;
@@
-278,6
+279,11
@@
dslite_in2out_node_fn_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
if (PREDICT_FALSE (ip60->protocol != IP_PROTOCOL_IP_IN_IP))
{
if (PREDICT_FALSE (ip60->protocol != IP_PROTOCOL_IP_IN_IP))
{
+ if (ip60->protocol == IP_PROTOCOL_ICMP6)
+ {
+ next0 = DSLITE_IN2OUT_NEXT_IP6_ICMP;
+ goto trace0;
+ }
error0 = DSLITE_ERROR_BAD_IP6_PROTOCOL;
next0 = DSLITE_IN2OUT_NEXT_DROP;
goto trace0;
error0 = DSLITE_ERROR_BAD_IP6_PROTOCOL;
next0 = DSLITE_IN2OUT_NEXT_DROP;
goto trace0;
@@
-443,7
+449,7
@@
VLIB_REGISTER_NODE (dslite_in2out_node) = {
.next_nodes = {
[DSLITE_IN2OUT_NEXT_DROP] = "error-drop",
[DSLITE_IN2OUT_NEXT_IP4_LOOKUP] = "ip4-lookup",
.next_nodes = {
[DSLITE_IN2OUT_NEXT_DROP] = "error-drop",
[DSLITE_IN2OUT_NEXT_IP4_LOOKUP] = "ip4-lookup",
- [DSLITE_IN2OUT_NEXT_IP6_
LOOKUP] = "ip6-lookup
",
+ [DSLITE_IN2OUT_NEXT_IP6_
ICMP] = "ip6-icmp-input
",
[DSLITE_IN2OUT_NEXT_SLOWPATH] = "dslite-in2out-slowpath",
},
};
[DSLITE_IN2OUT_NEXT_SLOWPATH] = "dslite-in2out-slowpath",
},
};
@@
-472,7
+478,7
@@
VLIB_REGISTER_NODE (dslite_in2out_slowpath_node) = {
.next_nodes = {
[DSLITE_IN2OUT_NEXT_DROP] = "error-drop",
[DSLITE_IN2OUT_NEXT_IP4_LOOKUP] = "ip4-lookup",
.next_nodes = {
[DSLITE_IN2OUT_NEXT_DROP] = "error-drop",
[DSLITE_IN2OUT_NEXT_IP4_LOOKUP] = "ip4-lookup",
- [DSLITE_IN2OUT_NEXT_IP6_
LOOKU
P] = "ip6-lookup",
+ [DSLITE_IN2OUT_NEXT_IP6_
ICM
P] = "ip6-lookup",
[DSLITE_IN2OUT_NEXT_SLOWPATH] = "dslite-in2out-slowpath",
},
};
[DSLITE_IN2OUT_NEXT_SLOWPATH] = "dslite-in2out-slowpath",
},
};