diff options
| author | yangwei <[email protected]> | 2023-11-03 14:23:38 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-11-03 14:23:38 +0800 |
| commit | ee6b7e01559bb96dacbcdfc725e77e7a5bffae61 (patch) | |
| tree | c9be866cbb79043680d5c65b0ec2e55a65d0ea22 /examples | |
| parent | 10bd9896f01688a5a725f76d5dbaf7aeab1a8723 (diff) | |
✨ feat(ctrl packet): add EV_CONTROL in session.h
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/sapp_plugin/simple_loader.c | 15 |
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); |
