summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuchang <[email protected]>2023-04-04 14:00:12 +0000
committerliuchang <[email protected]>2023-04-04 14:00:12 +0000
commit199771d91feaa061dc2d19dc2b4917e63ea0930c (patch)
tree0682a85231fa4b8705dc4c3fa191cb0ec03a9779
parent00d035db8063aef61076138b116fc06dde2ea4f0 (diff)
ignore opening ctrl_pkt, create session when receive active ctrl pktv1.1.6
-rw-r--r--shaping/include/shaper_session.h2
-rw-r--r--shaping/src/shaper.cpp4
-rw-r--r--shaping/src/shaper_session.cpp11
3 files changed, 9 insertions, 8 deletions
diff --git a/shaping/include/shaper_session.h b/shaping/include/shaper_session.h
index a78c3dc..1cfdf6d 100644
--- a/shaping/include/shaper_session.h
+++ b/shaping/include/shaper_session.h
@@ -2,6 +2,6 @@
struct shaping_flow* shaper_session_opening(struct shaping_thread_ctx *ctx, struct metadata *meta, struct ctrl_pkt_data *ctrl_data, struct raw_pkt_parser *raw_parser);
struct shaping_flow* shaper_session_close(struct shaping_thread_ctx *ctx, struct metadata *meta);
-struct shaping_flow* shaper_session_active(struct shaping_thread_ctx *ctx, struct metadata *meta, struct ctrl_pkt_data *ctrl_data);
+struct shaping_flow* shaper_session_active(struct shaping_thread_ctx *ctx, struct metadata *meta, struct ctrl_pkt_data *ctrl_data, struct raw_pkt_parser *raw_parser);
struct shaping_flow* shaper_session_reset_all(struct shaping_thread_ctx *ctx, struct metadata *meta);
void shaper_session_data_free_cb(void *session_data, void *data); \ No newline at end of file
diff --git a/shaping/src/shaper.cpp b/shaping/src/shaper.cpp
index 64775e0..95277f1 100644
--- a/shaping/src/shaper.cpp
+++ b/shaping/src/shaper.cpp
@@ -879,11 +879,11 @@ static struct shaping_flow* shaper_ctrl_pkt_session_handle(struct shaping_thread
switch (ctrl_data.state) {
case SESSION_STATE_OPENING:
shaper_global_stat_ctrlpkt_opening_inc(ctx->global_stat);
- sf = shaper_session_opening(ctx, meta, &ctrl_data, &raw_parser);
+ //sf = shaper_session_opening(ctx, meta, &ctrl_data, &raw_parser);
break;
case SESSION_STATE_ACTIVE:
shaper_global_stat_ctrlpkt_active_inc(ctx->global_stat);
- sf = shaper_session_active(ctx, meta, &ctrl_data);
+ sf = shaper_session_active(ctx, meta, &ctrl_data, &raw_parser);
break;
case SESSION_STATE_CLOSING:
shaper_global_stat_ctrlpkt_close_inc(ctx->global_stat);
diff --git a/shaping/src/shaper_session.cpp b/shaping/src/shaper_session.cpp
index f45c8d7..587dca1 100644
--- a/shaping/src/shaper_session.cpp
+++ b/shaping/src/shaper_session.cpp
@@ -23,7 +23,7 @@ struct shaping_flow* shaper_session_opening(struct shaping_thread_ctx *ctx, stru
sf = shaping_flow_new();
raw_packet_parser_get_most_inner_tuple4(raw_parser, &sf->tuple4);
- shaper_rules_update(ctx, sf, ctrl_data->shaping_rule_ids, ctrl_data->shaping_rule_num);
+ //shaper_rules_update(ctx, sf, ctrl_data->shaping_rule_ids, ctrl_data->shaping_rule_num);
session_table_insert(ctx->session_table, meta->session_id, &sf->tuple4, sf, NULL);
@@ -51,17 +51,18 @@ struct shaping_flow* shaper_session_close(struct shaping_thread_ctx *ctx, struct
return sf;
}
-struct shaping_flow* shaper_session_active(struct shaping_thread_ctx *ctx, struct metadata *meta, struct ctrl_pkt_data *ctrl_data)
+struct shaping_flow* shaper_session_active(struct shaping_thread_ctx *ctx, struct metadata *meta, struct ctrl_pkt_data *ctrl_data, struct raw_pkt_parser *raw_parser)
{
struct shaping_flow *sf = NULL;
struct session_node *node = NULL;
node = session_table_search_by_id(ctx->session_table, meta->session_id);
if (!node) {
- return NULL;
+ sf = shaper_session_opening(ctx, meta, ctrl_data, raw_parser);
+ } else {
+ sf = (struct shaping_flow *)node->val_data;
}
-
- sf = (struct shaping_flow *)node->val_data;
+
shaper_rules_update(ctx, sf, ctrl_data->shaping_rule_ids, ctrl_data->shaping_rule_num);
return sf;