TSG-18285 TFE的Packet IO模块支持重复流量识别
This commit is contained in:
@@ -86,7 +86,7 @@ uint64_t session_table_count(struct session_table *table)
|
||||
|
||||
// session_addr : deep copy
|
||||
// val_data : shallow copy (malloc by user, free by val_freecb)
|
||||
int session_table_insert(struct session_table *table, uint64_t session_id, const struct addr_tuple4 *session_addr, void *val_data, const fn_free_cb *val_freecb)
|
||||
int session_table_insert(struct session_table *table, uint64_t session_id, const struct tuple4 *session_addr, void *val_data, const fn_free_cb *val_freecb)
|
||||
{
|
||||
struct session_node *temp = NULL;
|
||||
HASH_FIND(hh1, table->root_by_id, &session_id, sizeof(session_id), temp);
|
||||
@@ -100,7 +100,7 @@ int session_table_insert(struct session_table *table, uint64_t session_id, const
|
||||
assert(temp);
|
||||
|
||||
temp->session_id = session_id;
|
||||
memcpy(&temp->session_addr, session_addr, sizeof(struct addr_tuple4));
|
||||
memcpy(&temp->session_addr, session_addr, sizeof(struct tuple4));
|
||||
temp->val_data = val_data;
|
||||
temp->val_freecb = val_freecb;
|
||||
|
||||
@@ -141,20 +141,21 @@ int session_table_delete_by_id(struct session_table *table, uint64_t session_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int session_table_delete_by_addr(struct session_table *table, const struct addr_tuple4 *session_addr)
|
||||
int session_table_delete_by_addr(struct session_table *table, const struct tuple4 *session_addr)
|
||||
{
|
||||
struct session_node *temp = NULL;
|
||||
char *addr_str = addr_tuple4_to_str(session_addr);
|
||||
HASH_FIND(hh2, table->root_by_addr, session_addr, sizeof(struct addr_tuple4), temp);
|
||||
char buffer[128] = {0};
|
||||
tuple4_tostring(session_addr, buffer, sizeof(buffer));
|
||||
HASH_FIND(hh2, table->root_by_addr, session_addr, sizeof(struct tuple4), temp);
|
||||
if (!temp)
|
||||
{
|
||||
struct addr_tuple4 reverse_addr;
|
||||
addr_tuple4_reverse(session_addr, &reverse_addr);
|
||||
HASH_FIND(hh2, table->root_by_addr, &reverse_addr, sizeof(struct addr_tuple4), temp);
|
||||
struct tuple4 reverse_addr;
|
||||
memset(&reverse_addr, 0, sizeof(struct tuple4));
|
||||
tuple4_reverse(session_addr, &reverse_addr);
|
||||
HASH_FIND(hh2, table->root_by_addr, &reverse_addr, sizeof(struct tuple4), temp);
|
||||
if (!temp)
|
||||
{
|
||||
TFE_LOG_DEBUG(g_packet_io_logger, "%s: delete: key %s not exists", LOG_TAG_STABLE, addr_str);
|
||||
free(addr_str);
|
||||
TFE_LOG_DEBUG(g_packet_io_logger, "%s: delete: key %s not exists", LOG_TAG_STABLE, buffer);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -171,9 +172,7 @@ int session_table_delete_by_addr(struct session_table *table, const struct addr_
|
||||
free(temp);
|
||||
temp = NULL;
|
||||
|
||||
TFE_LOG_DEBUG(g_packet_io_logger, "%s: delete: key %s success", LOG_TAG_STABLE, addr_str);
|
||||
free(addr_str);
|
||||
addr_str = NULL;
|
||||
TFE_LOG_DEBUG(g_packet_io_logger, "%s: delete: key %s success", LOG_TAG_STABLE, buffer);
|
||||
table->session_node_count--;
|
||||
|
||||
return 0;
|
||||
@@ -194,15 +193,16 @@ struct session_node *session_table_search_by_id(struct session_table *table, uin
|
||||
return temp;
|
||||
}
|
||||
|
||||
struct session_node *session_table_search_by_addr(struct session_table *table, const struct addr_tuple4 *session_addr)
|
||||
struct session_node *session_table_search_by_addr(struct session_table *table, const struct tuple4 *session_addr)
|
||||
{
|
||||
struct session_node *temp = NULL;
|
||||
HASH_FIND(hh2, table->root_by_addr, session_addr, sizeof(struct addr_tuple4), temp);
|
||||
HASH_FIND(hh2, table->root_by_addr, session_addr, sizeof(struct tuple4), temp);
|
||||
if (!temp)
|
||||
{
|
||||
struct addr_tuple4 reverse_addr;
|
||||
addr_tuple4_reverse(session_addr, &reverse_addr);
|
||||
HASH_FIND(hh2, table->root_by_addr, &reverse_addr, sizeof(struct addr_tuple4), temp);
|
||||
struct tuple4 reverse_addr;
|
||||
memset(&reverse_addr, 0, sizeof(struct tuple4));
|
||||
tuple4_reverse(session_addr, &reverse_addr);
|
||||
HASH_FIND(hh2, table->root_by_addr, &reverse_addr, sizeof(struct tuple4), temp);
|
||||
if (!temp)
|
||||
{
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user