summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-11-03 14:23:38 +0800
committeryangwei <[email protected]>2023-11-03 14:23:38 +0800
commitee6b7e01559bb96dacbcdfc725e77e7a5bffae61 (patch)
treec9be866cbb79043680d5c65b0ec2e55a65d0ea22 /examples
parent10bd9896f01688a5a725f76d5dbaf7aeab1a8723 (diff)
✨ feat(ctrl packet): add EV_CONTROL in session.h
Diffstat (limited to 'examples')
-rw-r--r--examples/sapp_plugin/simple_loader.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/examples/sapp_plugin/simple_loader.c b/examples/sapp_plugin/simple_loader.c
index 3d64774..9ef03eb 100644
--- a/examples/sapp_plugin/simple_loader.c
+++ b/examples/sapp_plugin/simple_loader.c
@@ -95,7 +95,8 @@ static char loader_transfer_stream_entry(struct streaminfo *pstream, UCHAR state
{
struct simple_stream_ctx *ctx=(struct simple_stream_ctx *)*pme;
struct tcpdetail *pdetail=(struct tcpdetail *)pstream->pdetail;
-
+ int is_ctrl_pkt=0;
+ const void *raw_pkt=NULL;
if(state == OP_STATE_PENDING && (is_l7_type_tunnels(pstream)==1))
{
return APP_STATE_DROPME;
@@ -125,7 +126,17 @@ static char loader_transfer_stream_entry(struct streaminfo *pstream, UCHAR state
stream_bridge_async_data_put(pstream, g_session_bridge_id, ctx->sess);
break;
case OP_STATE_DATA:
- adapter_session_active(pstream, ctx->sess, a_packet);
+ raw_pkt = get_rawpkt_from_streaminfo(pstream);
+ get_opt_from_rawpkt(raw_pkt, RAW_PKT_GET_IS_CTRL_PKT, (void *)&is_ctrl_pkt);
+ if(is_ctrl_pkt==1)
+ {
+ adapter_session_control(pstream, ctx->sess, a_packet);
+ return APP_STATE_GIVEME|APP_STATE_DROPPKT;
+ }
+ else
+ {
+ adapter_session_active(pstream, ctx->sess, a_packet);
+ }
break;
case OP_STATE_CLOSE:
FREE(*pme);