support packet_tag_set/get()

This commit is contained in:
luwenpeng
2024-11-22 10:30:51 +08:00
parent 5dbaa67160
commit 6c9e6e3fbe
4 changed files with 28 additions and 4 deletions

View File

@@ -183,7 +183,10 @@ const char *packet_get_payload_data(const struct packet *pkt);
uint16_t packet_get_payload_len(const struct packet *pkt);
void packet_set_exdata(struct packet *pkt, int idx, void *ex_ptr);
void *packet_get_exdata(struct packet *pkt, int idx);
void *packet_get_exdata(const struct packet *pkt, int idx);
void packet_tag_set(struct packet *pkt, uint64_t key_bits, uint64_t val_bits);
void packet_tag_get(const struct packet *pkt, uint64_t *key_bits, uint64_t *val_bits);
/******************************************************************************
* packet manager

View File

@@ -80,6 +80,9 @@ struct packet
uint16_t data_len;
uint16_t trim_len; // trim eth padding
uint64_t tag_key_bits;
uint64_t tag_val_bits;
TAILQ_ENTRY(packet) pool_tqe; // for packet pool
TAILQ_ENTRY(packet) frag_tqe; // for IP reassembly
TAILQ_ENTRY(packet) stage_tqe; // for packet manager

View File

@@ -956,18 +956,30 @@ uint16_t packet_get_payload_len(const struct packet *pkt)
void packet_set_exdata(struct packet *pkt, int idx, void *ex_ptr)
{
struct exdata_runtime *exdata_rt = (struct exdata_runtime *)packet_get_user_data(pkt);
struct exdata_runtime *exdata_rt = (struct exdata_runtime *)pkt->user_data;
assert(exdata_rt);
exdata_set(exdata_rt, idx, ex_ptr);
}
void *packet_get_exdata(struct packet *pkt, int idx)
void *packet_get_exdata(const struct packet *pkt, int idx)
{
struct exdata_runtime *exdata_rt = (struct exdata_runtime *)packet_get_user_data(pkt);
struct exdata_runtime *exdata_rt = (struct exdata_runtime *)pkt->user_data;
assert(exdata_rt);
return exdata_get(exdata_rt, idx);
}
void packet_tag_set(struct packet *pkt, uint64_t key_bits, uint64_t val_bits)
{
pkt->tag_key_bits |= key_bits;
pkt->tag_val_bits |= val_bits;
}
void packet_tag_get(const struct packet *pkt, uint64_t *key_bits, uint64_t *val_bits)
{
*key_bits = pkt->tag_key_bits;
*val_bits = pkt->tag_val_bits;
}
void packet_set_user_data(struct packet *pkt, void *data)
{
pkt->user_data = data;

View File

@@ -14,6 +14,11 @@ global:
packet_get_raw_len;
packet_get_payload_data;
packet_get_payload_len;
packet_set_exdata;
packet_get_exdata;
packet_tag_set;
packet_tag_get;
packet_manager_on_init;
packet_manager_on_exit;
packet_manager_on_thread_init;
@@ -43,6 +48,7 @@ global:
session_set_discard;
session_get_exdata;
session_set_exdata;
session_manager_on_init;
session_manager_on_exit;
session_manager_on_thread_init;