summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-04-22 16:46:31 +0800
committeryangwei <[email protected]>2024-04-22 16:58:23 +0800
commit9680527900302d8c9bbd9cf11690237b263f1d48 (patch)
tree67cc0d0dd3b3fb05745677d0eb099c5306c89b47
parentada07baa8aa4f0422f57f42820aeb52e9ed10fe2 (diff)
✨ feat(rawpkt api): get link_id&route_dir from rawpktv4.3.46
-rw-r--r--include/public/stream_inc/stream_rawpkt.h2
-rw-r--r--src/dealpkt/plug_support.c18
-rw-r--r--src/packet_io/packet_io_marsio.c12
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)
{