diff options
| author | yangwei <[email protected]> | 2023-10-08 19:32:39 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-10-08 19:50:58 +0800 |
| commit | 8056537cd57b471598cbb70cabf2a8bb818bb513 (patch) | |
| tree | aad63b1b7026e6c97675ac86f1a309711c2ab82b | |
| parent | c9f5ea36894c2443166f13b71b16d7822704287e (diff) | |
✨ feat(IN and OUT link_id): 支持按流获取IN和OUT方向的link_id
| -rw-r--r-- | include/private/packet_io.h | 1 | ||||
| -rw-r--r-- | include/public/stream_inc/stream_control.h | 2 | ||||
| -rw-r--r-- | src/dealpkt/plug_support.c | 84 | ||||
| -rw-r--r-- | src/packet_io/packet_io_marsio.c | 3 |
4 files changed, 73 insertions, 17 deletions
diff --git a/include/private/packet_io.h b/include/private/packet_io.h index e91b6e6..7828151 100644 --- a/include/private/packet_io.h +++ b/include/private/packet_io.h @@ -94,6 +94,7 @@ extern PACKET_IO_CB_T G_DEFAULT_PKT_CB; struct rawpkt_metadata
{
char data[MAX_METADATA_LEN];
+ unsigned int link_id;
unsigned int sz_data;
struct segment_id_list raw_sid_list;
};
diff --git a/include/public/stream_inc/stream_control.h b/include/public/stream_inc/stream_control.h index 5d47ebf..c475a56 100644 --- a/include/public/stream_inc/stream_control.h +++ b/include/public/stream_inc/stream_control.h @@ -54,6 +54,8 @@ enum MESA_stream_opt{ MSO_STREAM_S2C_RAWPKT_HDR,
MSO_STREAM_C2S_SYN_NUM,
MSO_STREAM_S2C_SYN_NUM,
+ MSO_STREAM_INBOND_LINK_ID,
+ MSO_STREAM_OUTBOND_LINK_ID,
__MSO_MAX,
};
diff --git a/src/dealpkt/plug_support.c b/src/dealpkt/plug_support.c index 20f41b4..2ae8f62 100644 --- a/src/dealpkt/plug_support.c +++ b/src/dealpkt/plug_support.c @@ -1720,33 +1720,83 @@ int MESA_get_stream_opt(const struct streaminfo *pstream, enum MESA_stream_opt o break;
case MSO_STREAM_C2S_SYN_NUM:
- case MSO_STREAM_S2C_SYN_NUM:
- if ((STREAM_TYPE_TCP != pstream->type) || pdetail_pr->flow_stat == NULL || *opt_val_len != sizeof(unsigned int))
+ case MSO_STREAM_S2C_SYN_NUM:
+ if ((STREAM_TYPE_TCP != pstream->type) || pdetail_pr->flow_stat == NULL || *opt_val_len != sizeof(unsigned int))
+ {
+ sapp_runtime_log(RLOG_LV_INFO,
+ "%s,MESA_get_stream_opt() MSO_STREAM_C2S_SYN_NUM error: stream type is not tcp or "
+ "empyt flow_stat!\n",
+ printaddr(&pstream->addr, pstream->threadnum));
+ ret = -1;
+ }
+ else
+ {
+
+ unsigned int *syn_cnt = (unsigned int *)opt_val;
+ if (opt == MSO_STREAM_C2S_SYN_NUM)
+ {
+ *syn_cnt = pdetail_pr->flow_stat->C2S_syn_pkt;
+ *opt_val_len = sizeof(*syn_cnt);
+ ret = 0;
+ }
+ else if (opt == MSO_STREAM_S2C_SYN_NUM)
+ {
+ *syn_cnt = pdetail_pr->flow_stat->S2C_syn_pkt;
+ *opt_val_len = sizeof(*syn_cnt);
+ ret = 0;
+ }
+ else
+ {
+ ret = -1;
+ }
+ }
+ break;
+
+ case MSO_STREAM_INBOND_LINK_ID:
+ ret=-1;
+ if(sapp_global_val->config.packet_io.inbound_route_dir == DIR_ROUTE_UP)
{
- sapp_runtime_log(RLOG_LV_INFO, "%s,MESA_get_stream_opt() MSO_STREAM_C2S_SYN_NUM error: stream type is not tcp or empyt flow_stat!\n", printaddr(&pstream->addr, pstream->threadnum));
- ret = -1;
- break;
+ if(pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP])
+ {
+ *(unsigned int *)(opt_val)=pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP]->link_id;
+ *opt_val_len = sizeof(pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP]->link_id);
+ ret=0;
+ }
}
- unsigned int *syn_cnt = (unsigned int *)opt_val;
- if (opt == MSO_STREAM_C2S_SYN_NUM)
+ else
{
- *syn_cnt = pdetail_pr->flow_stat->C2S_syn_pkt;
- *opt_val_len = sizeof(*syn_cnt);
- ret = 0;
+ if(pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN])
+ {
+ *(unsigned int *)(opt_val)=pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN]->link_id;
+ *opt_val_len = sizeof(pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN]->link_id);
+ ret=0;
+ }
}
- else if (opt == MSO_STREAM_S2C_SYN_NUM)
+ break;
+ case MSO_STREAM_OUTBOND_LINK_ID:
+ ret=-1;
+ *opt_val_len=0;
+ if(sapp_global_val->config.packet_io.inbound_route_dir == DIR_ROUTE_DOWN)
{
- *syn_cnt = pdetail_pr->flow_stat->S2C_syn_pkt;
- *opt_val_len = sizeof(*syn_cnt);
- ret = 0;
+ if(pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP])
+ {
+ *(unsigned int *)(opt_val)=pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP]->link_id;
+ *opt_val_len = sizeof(pstream_pr->polling_inject_context->meta[DIR_ROUTE_UP]->link_id);
+ ret=0;
+ }
}
- else
+ else
{
- ret = -1;
+ if(pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN])
+ {
+ *(unsigned int *)(opt_val)=pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN]->link_id;
+ *opt_val_len = sizeof(pstream_pr->polling_inject_context->meta[DIR_ROUTE_DOWN]->link_id);
+ ret=0;
+ }
}
break;
- default:
+ default:
sapp_runtime_log(RLOG_LV_INFO, "%s,MESA_get_stream_opt() error:unsupport MESA_stream_opt type:%d!\n",printaddr(&pstream->addr, pstream->threadnum), (int)opt);
ret = -1;
break;
diff --git a/src/packet_io/packet_io_marsio.c b/src/packet_io/packet_io_marsio.c index c29f650..0fa847a 100644 --- a/src/packet_io/packet_io_marsio.c +++ b/src/packet_io/packet_io_marsio.c @@ -460,6 +460,9 @@ struct rawpkt_metadata *marsio_dl_io_get1_rawpkt_meta(const raw_pkt_t *raw_pkt, {
meta->sz_data = ret;
}
+ ret = ptr_marsio_buff_get_metadata((marsio_buff_t *)raw_pkt->io_lib_pkt_reference,
+ MR_BUFF_LINK_ID, &meta->link_id, sizeof(meta->link_id));
+
}
if (ptr_marsio_buff_get_sid_list)
{
|
