summaryrefslogtreecommitdiff
path: root/tunnat
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2017-10-09 13:03:43 +0800
committerQiuwen Lu <[email protected]>2017-10-09 13:03:43 +0800
commit2a5658a37cf1f64b826fc91306853a251082984d (patch)
tree11cc99f9a12aea75bd7adac8e6817ae17d56451c /tunnat
parent92d822ddc5e63bd2e00e4068ca885325414bcd52 (diff)
在marsio_buff_alloc()调用时,清空控制域内的信息。修正选择就近Tunnat隧道信息时传入空指针的Bug。v4.2.25-20171009
- 原实现在调用marsio_buff_alloc()时,没有清空控制域信息。导致上层在处理该报文时,仍然读取应被销毁的控制域标记,导致Tunnat封装报文错误。此问题仅在用marsio_buff_alloc()申请,用rte_pktmbuf_free()释放时发生,因marsio_buff_free()也清空了控制域。 - 修正选择最近使用的Tunnat隧道信息时传入空指针的Bug。
Diffstat (limited to 'tunnat')
-rw-r--r--tunnat/src/runtime.cc2
-rw-r--r--tunnat/src/session.cc24
2 files changed, 13 insertions, 13 deletions
diff --git a/tunnat/src/runtime.cc b/tunnat/src/runtime.cc
index dc4d1e8..43dbe0a 100644
--- a/tunnat/src/runtime.cc
+++ b/tunnat/src/runtime.cc
@@ -419,4 +419,4 @@ void * tunnat_thread_loop(void * arg)
}
return 0;
-} \ No newline at end of file
+}
diff --git a/tunnat/src/session.cc b/tunnat/src/session.cc
index 4924b72..b4a58cd 100644
--- a/tunnat/src/session.cc
+++ b/tunnat/src/session.cc
@@ -27,18 +27,18 @@ reverse_dir:
}
return ss_entry;
-}
-
-SessionEntry * SessionTable::QueryRecent()
+}
+
+SessionEntry * SessionTable::QueryRecent()
{
SessionEntry * ss_entry = NULL;
/* 查找最近使用的隧道配置 */
MESA_htable_iterate_bytime(ht_table_, ITERATE_TYPE_NEWEST_FIRST,
- htable_iterate_recent, (void *)ss_entry);
+ htable_iterate_recent, (void *)&ss_entry);
- if (ss_entry == NULL) return NULL;
- return ss_entry;
+ if (ss_entry == NULL) return NULL;
+ return ss_entry;
}
int SessionTable::Add(SessionKey & key, SessionEntry & entry)
@@ -126,14 +126,14 @@ int SessionTable::htable_free_fun_cb(void * data)
int SessionTable::htable_expire_notify_cb(void *data, int eliminate_type)
{
return 1;
-}
-
-int SessionTable::htable_iterate_recent(const uchar * key, uint size, void * data, void * user)
+}
+
+int SessionTable::htable_iterate_recent(const uchar * key, uint size, void * data, void * user)
{
(void)key;
(void)size;
SessionEntry ** __entry_ret = (SessionEntry **)user;
- *__entry_ret = (SessionEntry *)data;
- return ITERATE_CB_RET_BREAK_FLAG;
-} \ No newline at end of file
+ *__entry_ret = (SessionEntry *)data;
+ return ITERATE_CB_RET_BREAK_FLAG;
+}