Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Repair vlib API socket server
[vpp.git]
/
src
/
plugins
/
nat
/
nat_api.c
diff --git
a/src/plugins/nat/nat_api.c
b/src/plugins/nat/nat_api.c
index
fa20f2c
..
3bacdfe
100644
(file)
--- a/
src/plugins/nat/nat_api.c
+++ b/
src/plugins/nat/nat_api.c
@@
-23,7
+23,7
@@
#include <nat/nat64.h>
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
#include <nat/nat64.h>
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
-#include <vlibsocket/api.h>
+
#include <nat/nat_msg_enum.h>
#include <vnet/fib/fib_table.h>
#include <nat/nat_msg_enum.h>
#include <vnet/fib/fib_table.h>
@@
-856,6
+856,7
@@
static void
snat_user_t *u;
u32 session_index, head_index, elt_index;
dlist_elt_t *head, *elt;
snat_user_t *u;
u32 session_index, head_index, elt_index;
dlist_elt_t *head, *elt;
+ ip4_header_t ip;
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0)
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0)
@@
-864,13
+865,16
@@
static void
return;
clib_memcpy (&ukey.addr, mp->ip_address, 4);
return;
clib_memcpy (&ukey.addr, mp->ip_address, 4);
+ ip.src_address.as_u32 = ukey.addr.as_u32;
ukey.fib_index = fib_table_find (FIB_PROTOCOL_IP4, ntohl (mp->vrf_id));
key.key = ukey.as_u64;
ukey.fib_index = fib_table_find (FIB_PROTOCOL_IP4, ntohl (mp->vrf_id));
key.key = ukey.as_u64;
- if (!clib_bihash_search_8_8 (&sm->worker_by_in, &key, &value))
- tsm = vec_elt_at_index (sm->per_thread_data, value.value);
+ if (sm->num_workers)
+ tsm =
+ vec_elt_at_index (sm->per_thread_data,
+ sm->worker_in2out_cb (&ip, ukey.fib_index));
else
tsm = vec_elt_at_index (sm->per_thread_data, sm->num_workers);
else
tsm = vec_elt_at_index (sm->per_thread_data, sm->num_workers);
- if (clib_bihash_search_8_8 (&sm->user_hash, &key, &value))
+ if (clib_bihash_search_8_8 (&
t
sm->user_hash, &key, &value))
return;
u = pool_elt_at_index (tsm->users, value.value);
if (!u->nsessions && !u->nstaticsessions)
return;
u = pool_elt_at_index (tsm->users, value.value);
if (!u->nsessions && !u->nstaticsessions)
@@
-2093,19
+2097,23
@@
vl_api_nat44_user_session_dump_t_handler (vl_api_nat44_user_session_dump_t *
snat_user_t *u;
u32 session_index, head_index, elt_index;
dlist_elt_t *head, *elt;
snat_user_t *u;
u32 session_index, head_index, elt_index;
dlist_elt_t *head, *elt;
+ ip4_header_t ip;
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0)
return;
clib_memcpy (&ukey.addr, mp->ip_address, 4);
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0)
return;
clib_memcpy (&ukey.addr, mp->ip_address, 4);
+ ip.src_address.as_u32 = ukey.addr.as_u32;
ukey.fib_index = fib_table_find (FIB_PROTOCOL_IP4, ntohl (mp->vrf_id));
key.key = ukey.as_u64;
ukey.fib_index = fib_table_find (FIB_PROTOCOL_IP4, ntohl (mp->vrf_id));
key.key = ukey.as_u64;
- if (!clib_bihash_search_8_8 (&sm->worker_by_in, &key, &value))
- tsm = vec_elt_at_index (sm->per_thread_data, value.value);
+ if (sm->num_workers)
+ tsm =
+ vec_elt_at_index (sm->per_thread_data,
+ sm->worker_in2out_cb (&ip, ukey.fib_index));
else
tsm = vec_elt_at_index (sm->per_thread_data, sm->num_workers);
else
tsm = vec_elt_at_index (sm->per_thread_data, sm->num_workers);
- if (clib_bihash_search_8_8 (&sm->user_hash, &key, &value))
+ if (clib_bihash_search_8_8 (&
t
sm->user_hash, &key, &value))
return;
u = pool_elt_at_index (tsm->users, value.value);
if (!u->nsessions && !u->nstaticsessions)
return;
u = pool_elt_at_index (tsm->users, value.value);
if (!u->nsessions && !u->nstaticsessions)