reset packet tags on packet exdata runtime new
This commit is contained in:
@@ -103,7 +103,6 @@ static int ring_buffer_push(struct ring_buffer *ring, void *data)
|
|||||||
{
|
{
|
||||||
if (__sync_val_compare_and_swap(&ring->buff[ring->tail], 0, data) != 0)
|
if (__sync_val_compare_and_swap(&ring->buff[ring->tail], 0, data) != 0)
|
||||||
{
|
{
|
||||||
PACKET_IO_LOG_ERROR("ring buffer is full, retry later");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ struct packet_origin *packet_get_origin(struct packet *pkt);
|
|||||||
|
|
||||||
void packet_set_stage(struct packet *pkt, enum packet_stage stage);
|
void packet_set_stage(struct packet *pkt, enum packet_stage stage);
|
||||||
|
|
||||||
|
void packet_tag_clean(struct packet *pkt);
|
||||||
|
|
||||||
const char *packet_stage_to_str(enum packet_stage stage);
|
const char *packet_stage_to_str(enum packet_stage stage);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -229,6 +229,7 @@ void packet_manager_ingress(struct packet_manager *pkt_mgr, uint16_t thread_id,
|
|||||||
{
|
{
|
||||||
struct packet_manager_rte *pkt_mgr_rte = pkt_mgr->rte[thread_id];
|
struct packet_manager_rte *pkt_mgr_rte = pkt_mgr->rte[thread_id];
|
||||||
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
||||||
|
packet_tag_clean(pkt);
|
||||||
|
|
||||||
pkt_mgr_rte->stat.pkts_ingress++;
|
pkt_mgr_rte->stat.pkts_ingress++;
|
||||||
pkt_mgr_rte->stat.queue[PACKET_STAGE_PREROUTING].pkts_in++;
|
pkt_mgr_rte->stat.queue[PACKET_STAGE_PREROUTING].pkts_in++;
|
||||||
@@ -257,13 +258,6 @@ struct packet *packet_manager_egress(struct packet_manager *pkt_mgr, uint16_t th
|
|||||||
|
|
||||||
static void packet_tag_set_ip_proto(struct packet *pkt)
|
static void packet_tag_set_ip_proto(struct packet *pkt)
|
||||||
{
|
{
|
||||||
uint64_t pkt_tag_key_bits = 0;
|
|
||||||
packet_tag_get(pkt, &pkt_tag_key_bits, NULL);
|
|
||||||
if (pkt_tag_key_bits & PKT_TAG_KEY_IPPROTO)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (packet_get_ip_proto(pkt))
|
switch (packet_get_ip_proto(pkt))
|
||||||
{
|
{
|
||||||
case IPPROTO_TCP:
|
case IPPROTO_TCP:
|
||||||
@@ -437,6 +431,7 @@ struct packet *packet_manager_build_tcp_packet(struct packet_manager *pkt_mgr, u
|
|||||||
}
|
}
|
||||||
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_tcp_succ++;
|
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_tcp_succ++;
|
||||||
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
||||||
|
packet_tag_clean(pkt);
|
||||||
|
|
||||||
return pkt;
|
return pkt;
|
||||||
}
|
}
|
||||||
@@ -453,6 +448,7 @@ struct packet *packet_manager_build_udp_packet(struct packet_manager *pkt_mgr, u
|
|||||||
}
|
}
|
||||||
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_udp_succ++;
|
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_udp_succ++;
|
||||||
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
||||||
|
packet_tag_clean(pkt);
|
||||||
|
|
||||||
return pkt;
|
return pkt;
|
||||||
}
|
}
|
||||||
@@ -469,6 +465,7 @@ struct packet *packet_manager_build_l3_packet(struct packet_manager *pkt_mgr, ui
|
|||||||
}
|
}
|
||||||
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_l3_succ++;
|
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_build_l3_succ++;
|
||||||
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
||||||
|
packet_tag_clean(pkt);
|
||||||
|
|
||||||
return pkt;
|
return pkt;
|
||||||
}
|
}
|
||||||
@@ -484,6 +481,7 @@ struct packet *packet_manager_dup_packet(struct packet_manager *pkt_mgr, uint16_
|
|||||||
}
|
}
|
||||||
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_dup_succ++;
|
pkt_mgr_rte->stat.queue[pkt_mgr_rte->curr_stage].pkts_dup_succ++;
|
||||||
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
packet_set_user_data(pkt, exdata_runtime_new(pkt_mgr->ex_sche));
|
||||||
|
packet_tag_clean(pkt);
|
||||||
|
|
||||||
return pkt;
|
return pkt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -968,6 +968,12 @@ void *packet_get_exdata(const struct packet *pkt, int idx)
|
|||||||
return exdata_get(exdata_rt, idx);
|
return exdata_get(exdata_rt, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void packet_tag_clean(struct packet *pkt)
|
||||||
|
{
|
||||||
|
pkt->tag_key_bits = 0;
|
||||||
|
pkt->tag_val_bits = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void packet_tag_set(struct packet *pkt, uint64_t key_bits, uint64_t val_bits)
|
void packet_tag_set(struct packet *pkt, uint64_t key_bits, uint64_t val_bits)
|
||||||
{
|
{
|
||||||
pkt->tag_key_bits |= key_bits;
|
pkt->tag_key_bits |= key_bits;
|
||||||
|
|||||||
Reference in New Issue
Block a user