support packet_tag_set/get()
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user