diff options
| author | yangwei <[email protected]> | 2024-04-22 16:46:31 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-04-22 16:58:23 +0800 |
| commit | 9680527900302d8c9bbd9cf11690237b263f1d48 (patch) | |
| tree | 67cc0d0dd3b3fb05745677d0eb099c5306c89b47 | |
| parent | ada07baa8aa4f0422f57f42820aeb52e9ed10fe2 (diff) | |
✨ feat(rawpkt api): get link_id&route_dir from rawpktv4.3.46
| -rw-r--r-- | include/public/stream_inc/stream_rawpkt.h | 2 | ||||
| -rw-r--r-- | src/dealpkt/plug_support.c | 18 | ||||
| -rw-r--r-- | src/packet_io/packet_io_marsio.c | 12 |
3 files changed, 31 insertions, 1 deletions
diff --git a/include/public/stream_inc/stream_rawpkt.h b/include/public/stream_inc/stream_rawpkt.h index 7f0c698..26ddbb8 100644 --- a/include/public/stream_inc/stream_rawpkt.h +++ b/include/public/stream_inc/stream_rawpkt.h @@ -30,6 +30,8 @@ enum{ RAW_PKT_GET_ROUTE_CTX, /* get current stream route_dir route_ctx, max value size char[64] */
RAW_PKT_GET_SID_LIST, /* get current stream route_dir route_ctx, value defined in stream_control.h, struct segment_id_list */
RAW_PKT_GET_IS_CTRL_PKT,
+ RAW_PKT_GET_LINK_ID,
+ RAW_PKT_GET_ROUTE_DIR,
};
diff --git a/src/dealpkt/plug_support.c b/src/dealpkt/plug_support.c index 00ff455..6568d5e 100644 --- a/src/dealpkt/plug_support.c +++ b/src/dealpkt/plug_support.c @@ -150,6 +150,10 @@ int MESA_retain_pkt_update(const raw_pkt_t *p_raw_pkt, int pkt_ret) return update_ret;
}
+
+extern int marsio_get_route_dir_from_mbuff(void *pkt_reference);
+extern int marsio_get_link_id_from_mbuff(void *pkt_reference);
+
int get_opt_from_rawpkt(const void *voidpkt, int type, void *void_value)
{
int ret = 0;
@@ -256,6 +260,20 @@ int get_opt_from_rawpkt(const void *voidpkt, int type, void *void_value) ret = sizeof(int);
break;
+ case RAW_PKT_GET_ROUTE_DIR:
+ {
+ int *out_value = (int *)void_value;
+ *out_value = marsio_get_route_dir_from_mbuff((void *)rawpkt->io_lib_pkt_reference);
+ ret = *out_value;
+ }
+ break;
+ case RAW_PKT_GET_LINK_ID:
+ {
+ int *out_value = (int *)void_value;
+ *out_value = marsio_get_link_id_from_mbuff((void *)rawpkt->io_lib_pkt_reference);
+ ret = *out_value;
+ }
+ break;
default:
sapp_runtime_log(RLOG_LV_FATAL, "get_opt_from_rawpkt(): not support option type: %d", type);
diff --git a/src/packet_io/packet_io_marsio.c b/src/packet_io/packet_io_marsio.c index 26a5027..a2b30d6 100644 --- a/src/packet_io/packet_io_marsio.c +++ b/src/packet_io/packet_io_marsio.c @@ -1329,13 +1329,23 @@ int marsio_get_route_dir_from_mbuff(void *pkt_reference) {
int dir = -1;
- if(ptr_marsio_buff_get_metadata){
+ if(ptr_marsio_buff_get_metadata && pkt_reference){
ptr_marsio_buff_get_metadata((marsio_buff_t *)pkt_reference, MR_BUFF_DIR, &dir, sizeof(int));
}
return dir;
}
+int marsio_get_link_id_from_mbuff(void *pkt_reference)
+{
+ int link_id = -1;
+
+ if(ptr_marsio_buff_get_metadata && pkt_reference){
+ ptr_marsio_buff_get_metadata((marsio_buff_t *)pkt_reference, MR_BUFF_LINK_ID, &link_id, sizeof(int));
+ }
+
+ return link_id;
+}
int marsio_set_vlan_id_to_mbuff(void *pkt_reference, unsigned int vlan_id_host_order)
{
|
