rename packet_manager_runtime_input/output to packet_manager_runtime_ingress/egress
This commit is contained in:
@@ -24,7 +24,6 @@ struct packet_manager_schema
|
|||||||
|
|
||||||
struct packet_manager_runtime
|
struct packet_manager_runtime
|
||||||
{
|
{
|
||||||
uint16_t idx;
|
|
||||||
void *cb_args;
|
void *cb_args;
|
||||||
on_packet_claimed_callback *claimed_cb;
|
on_packet_claimed_callback *claimed_cb;
|
||||||
enum packet_stage stage;
|
enum packet_stage stage;
|
||||||
@@ -199,7 +198,7 @@ static void packet_manager_runtime_free(struct packet_manager_runtime *runtime)
|
|||||||
runtime = NULL;
|
runtime = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct packet_manager_runtime *packet_manager_runtime_new(uint16_t idx)
|
static struct packet_manager_runtime *packet_manager_runtime_new()
|
||||||
{
|
{
|
||||||
struct packet_manager_runtime *runtime = calloc(1, sizeof(struct packet_manager_runtime));
|
struct packet_manager_runtime *runtime = calloc(1, sizeof(struct packet_manager_runtime));
|
||||||
if (runtime == NULL)
|
if (runtime == NULL)
|
||||||
@@ -208,8 +207,6 @@ static struct packet_manager_runtime *packet_manager_runtime_new(uint16_t idx)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime->idx = idx;
|
|
||||||
|
|
||||||
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
||||||
{
|
{
|
||||||
TAILQ_INIT(&runtime->queue[i]);
|
TAILQ_INIT(&runtime->queue[i]);
|
||||||
@@ -220,13 +217,13 @@ static struct packet_manager_runtime *packet_manager_runtime_new(uint16_t idx)
|
|||||||
|
|
||||||
void packet_manager_runtime_print_stat(struct packet_manager_runtime *runtime)
|
void packet_manager_runtime_print_stat(struct packet_manager_runtime *runtime)
|
||||||
{
|
{
|
||||||
PACKET_MANAGER_LOG_DEBUG("runtime[%d] current stage: %s, pkts_input: %lu, pkts_output: %lu",
|
PACKET_MANAGER_LOG_DEBUG("runtime[%p] current stage: %s, pkts_ingress: %lu, pkts_egress: %lu",
|
||||||
runtime->idx, packet_stage_to_str(runtime->stage),
|
runtime, packet_stage_to_str(runtime->stage),
|
||||||
runtime->stat.total.pkts_input, runtime->stat.total.pkts_output);
|
runtime->stat.total.pkts_ingress, runtime->stat.total.pkts_egress);
|
||||||
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
||||||
{
|
{
|
||||||
PACKET_MANAGER_LOG_DEBUG("runtime[%d] (%11s) queue stat => pkts_in: %lu, pkts_out: %lu, pkts_claim: %lu, pkts_schedule: %lu",
|
PACKET_MANAGER_LOG_DEBUG("runtime[%p] (%11s) queue stat => pkts_in: %lu, pkts_out: %lu, pkts_claim: %lu, pkts_schedule: %lu",
|
||||||
runtime->idx,
|
runtime,
|
||||||
packet_stage_to_str(i),
|
packet_stage_to_str(i),
|
||||||
runtime->stat.queue[i].pkts_in,
|
runtime->stat.queue[i].pkts_in,
|
||||||
runtime->stat.queue[i].pkts_out,
|
runtime->stat.queue[i].pkts_out,
|
||||||
@@ -245,19 +242,19 @@ void packet_manager_runtime_init(struct packet_manager_runtime *pkt_mgr_rt, stru
|
|||||||
pkt_mgr_rt->mq = mq_rt;
|
pkt_mgr_rt->mq = mq_rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void packet_manager_runtime_input(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt)
|
void packet_manager_runtime_ingress(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt)
|
||||||
{
|
{
|
||||||
pkt_mgr_rt->stat.total.pkts_input++;
|
pkt_mgr_rt->stat.total.pkts_ingress++;
|
||||||
pkt_mgr_rt->stat.queue[PACKET_STAGE_PREROUTING].pkts_in++;
|
pkt_mgr_rt->stat.queue[PACKET_STAGE_PREROUTING].pkts_in++;
|
||||||
TAILQ_INSERT_TAIL(&pkt_mgr_rt->queue[PACKET_STAGE_PREROUTING], pkt, stage_tqe);
|
TAILQ_INSERT_TAIL(&pkt_mgr_rt->queue[PACKET_STAGE_PREROUTING], pkt, stage_tqe);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct packet *packet_manager_runtime_output(struct packet_manager_runtime *pkt_mgr_rt)
|
struct packet *packet_manager_runtime_egress(struct packet_manager_runtime *pkt_mgr_rt)
|
||||||
{
|
{
|
||||||
struct packet *pkt = TAILQ_FIRST(&pkt_mgr_rt->queue[PACKET_STAGE_MAX]);
|
struct packet *pkt = TAILQ_FIRST(&pkt_mgr_rt->queue[PACKET_STAGE_MAX]);
|
||||||
if (pkt)
|
if (pkt)
|
||||||
{
|
{
|
||||||
pkt_mgr_rt->stat.total.pkts_output++;
|
pkt_mgr_rt->stat.total.pkts_egress++;
|
||||||
pkt_mgr_rt->stat.queue[PACKET_STAGE_MAX].pkts_out++;
|
pkt_mgr_rt->stat.queue[PACKET_STAGE_MAX].pkts_out++;
|
||||||
TAILQ_REMOVE(&pkt_mgr_rt->queue[PACKET_STAGE_MAX], pkt, stage_tqe);
|
TAILQ_REMOVE(&pkt_mgr_rt->queue[PACKET_STAGE_MAX], pkt, stage_tqe);
|
||||||
}
|
}
|
||||||
@@ -361,7 +358,7 @@ struct packet_manager *packet_manager_new(struct mq_schema *mq, const char *toml
|
|||||||
|
|
||||||
for (uint16_t i = 0; i < pkt_mgr->cfg->nr_worker_thread; i++)
|
for (uint16_t i = 0; i < pkt_mgr->cfg->nr_worker_thread; i++)
|
||||||
{
|
{
|
||||||
pkt_mgr->runtime[i] = packet_manager_runtime_new(i);
|
pkt_mgr->runtime[i] = packet_manager_runtime_new();
|
||||||
if (pkt_mgr->runtime[i] == NULL)
|
if (pkt_mgr->runtime[i] == NULL)
|
||||||
{
|
{
|
||||||
PACKET_MANAGER_LOG_ERROR("failed to create packet_manager_runtime");
|
PACKET_MANAGER_LOG_ERROR("failed to create packet_manager_runtime");
|
||||||
@@ -384,7 +381,6 @@ void packet_manager_free(struct packet_manager *pkt_mgr)
|
|||||||
{
|
{
|
||||||
if (pkt_mgr->runtime[i])
|
if (pkt_mgr->runtime[i])
|
||||||
{
|
{
|
||||||
// packet_manager_runtime_print_stat(pkt_mgr->runtime[i]);
|
|
||||||
packet_manager_runtime_free(pkt_mgr->runtime[i]);
|
packet_manager_runtime_free(pkt_mgr->runtime[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ struct packet_manager *packet_manager_new(struct mq_schema *mq_schema, const cha
|
|||||||
void packet_manager_free(struct packet_manager *pkt_mgr);
|
void packet_manager_free(struct packet_manager *pkt_mgr);
|
||||||
|
|
||||||
void packet_manager_runtime_init(struct packet_manager_runtime *pkt_mgr_rt, struct mq_runtime *mq_rt);
|
void packet_manager_runtime_init(struct packet_manager_runtime *pkt_mgr_rt, struct mq_runtime *mq_rt);
|
||||||
void packet_manager_runtime_input(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt);
|
void packet_manager_runtime_ingress(struct packet_manager_runtime *pkt_mgr_rt, struct packet *pkt);
|
||||||
struct packet *packet_manager_runtime_output(struct packet_manager_runtime *pkt_mgr_rt);
|
struct packet *packet_manager_runtime_egress(struct packet_manager_runtime *pkt_mgr_rt);
|
||||||
void packet_manager_runtime_dispatch(struct packet_manager_runtime *pkt_mgr_rt);
|
void packet_manager_runtime_dispatch(struct packet_manager_runtime *pkt_mgr_rt);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -25,8 +25,8 @@ struct packet_manager_runtime_stat
|
|||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint64_t pkts_input;
|
uint64_t pkts_ingress;
|
||||||
uint64_t pkts_output;
|
uint64_t pkts_egress;
|
||||||
} total;
|
} total;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ static struct packet_manager_runtime_stat init_stat = {};
|
|||||||
|
|
||||||
static void check_stat(struct packet_manager_runtime_stat *curr_stat, struct packet_manager_runtime_stat *expect_stat)
|
static void check_stat(struct packet_manager_runtime_stat *curr_stat, struct packet_manager_runtime_stat *expect_stat)
|
||||||
{
|
{
|
||||||
EXPECT_TRUE(curr_stat->total.pkts_input == expect_stat->total.pkts_input);
|
EXPECT_TRUE(curr_stat->total.pkts_ingress == expect_stat->total.pkts_ingress);
|
||||||
EXPECT_TRUE(curr_stat->total.pkts_output == expect_stat->total.pkts_output);
|
EXPECT_TRUE(curr_stat->total.pkts_egress == expect_stat->total.pkts_egress);
|
||||||
|
|
||||||
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
for (int i = 0; i < PACKET_QUEUE_MAX; i++)
|
||||||
{
|
{
|
||||||
@@ -146,12 +146,12 @@ TEST(PACKET_MANAGER, SUBSCRIBER_PACKET_STAGE)
|
|||||||
|
|
||||||
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
||||||
check_stat(curr_stat, &init_stat);
|
check_stat(curr_stat, &init_stat);
|
||||||
packet_manager_runtime_input(runtime, &pkt);
|
packet_manager_runtime_ingress(runtime, &pkt);
|
||||||
packet_manager_runtime_dispatch(runtime);
|
packet_manager_runtime_dispatch(runtime);
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == &pkt);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == &pkt);
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == NULL);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == NULL);
|
||||||
struct packet_manager_runtime_stat expect_stat = {
|
struct packet_manager_runtime_stat expect_stat = {
|
||||||
.total = {.pkts_input = 1, .pkts_output = 1},
|
.total = {.pkts_ingress = 1, .pkts_egress = 1},
|
||||||
.queue = {
|
.queue = {
|
||||||
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
||||||
[PACKET_STAGE_INPUT] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
[PACKET_STAGE_INPUT] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
||||||
@@ -257,11 +257,11 @@ TEST(PACKET_MANAGER, CLAIM_PACKET)
|
|||||||
|
|
||||||
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
||||||
check_stat(curr_stat, &init_stat);
|
check_stat(curr_stat, &init_stat);
|
||||||
packet_manager_runtime_input(runtime, &pkt);
|
packet_manager_runtime_ingress(runtime, &pkt);
|
||||||
packet_manager_runtime_dispatch(runtime);
|
packet_manager_runtime_dispatch(runtime);
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == NULL);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == NULL);
|
||||||
struct packet_manager_runtime_stat expect_stat = {
|
struct packet_manager_runtime_stat expect_stat = {
|
||||||
.total = {.pkts_input = 1, .pkts_output = 0},
|
.total = {.pkts_ingress = 1, .pkts_egress = 0},
|
||||||
.queue = {
|
.queue = {
|
||||||
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 1, .pkts_schedule = 0},
|
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 1, .pkts_schedule = 0},
|
||||||
[PACKET_STAGE_INPUT] = {.pkts_in = 0, .pkts_out = 0, .pkts_claim = 0, .pkts_schedule = 0},
|
[PACKET_STAGE_INPUT] = {.pkts_in = 0, .pkts_out = 0, .pkts_claim = 0, .pkts_schedule = 0},
|
||||||
@@ -336,20 +336,20 @@ TEST(PACKET_MANAGER, SCHEDULE_PACKET)
|
|||||||
|
|
||||||
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
||||||
check_stat(curr_stat, &init_stat);
|
check_stat(curr_stat, &init_stat);
|
||||||
packet_manager_runtime_input(runtime, &pkt);
|
packet_manager_runtime_ingress(runtime, &pkt);
|
||||||
packet_manager_runtime_dispatch(runtime);
|
packet_manager_runtime_dispatch(runtime);
|
||||||
|
|
||||||
struct packet *tmp = NULL;
|
struct packet *tmp = NULL;
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
tmp = packet_manager_runtime_output(runtime);
|
tmp = packet_manager_runtime_egress(runtime);
|
||||||
EXPECT_TRUE(tmp);
|
EXPECT_TRUE(tmp);
|
||||||
packet_free(tmp);
|
packet_free(tmp);
|
||||||
}
|
}
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == &pkt);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == &pkt);
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == NULL);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == NULL);
|
||||||
struct packet_manager_runtime_stat expect_stat = {
|
struct packet_manager_runtime_stat expect_stat = {
|
||||||
.total = {.pkts_input = 1, .pkts_output = 5},
|
.total = {.pkts_ingress = 1, .pkts_egress = 5},
|
||||||
.queue = {
|
.queue = {
|
||||||
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 0, .pkts_schedule = 0},
|
||||||
[PACKET_STAGE_INPUT] = {.pkts_in = 2, .pkts_out = 2, .pkts_claim = 0, .pkts_schedule = 1},
|
[PACKET_STAGE_INPUT] = {.pkts_in = 2, .pkts_out = 2, .pkts_claim = 0, .pkts_schedule = 1},
|
||||||
@@ -443,11 +443,11 @@ TEST(PACKET_MANAGER, SCHEDULE_CLAIMED_PACKET)
|
|||||||
|
|
||||||
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
struct packet_manager_runtime_stat *curr_stat = packet_manager_runtime_get_stat(runtime);
|
||||||
check_stat(curr_stat, &init_stat);
|
check_stat(curr_stat, &init_stat);
|
||||||
packet_manager_runtime_input(runtime, &pkt);
|
packet_manager_runtime_ingress(runtime, &pkt);
|
||||||
packet_manager_runtime_dispatch(runtime);
|
packet_manager_runtime_dispatch(runtime);
|
||||||
EXPECT_TRUE(packet_manager_runtime_output(runtime) == &pkt);
|
EXPECT_TRUE(packet_manager_runtime_egress(runtime) == &pkt);
|
||||||
struct packet_manager_runtime_stat expect_stat = {
|
struct packet_manager_runtime_stat expect_stat = {
|
||||||
.total = {.pkts_input = 1, .pkts_output = 1},
|
.total = {.pkts_ingress = 1, .pkts_egress = 1},
|
||||||
.queue = {
|
.queue = {
|
||||||
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 1, .pkts_schedule = 0},
|
[PACKET_STAGE_PREROUTING] = {.pkts_in = 1, .pkts_out = 1, .pkts_claim = 1, .pkts_schedule = 0},
|
||||||
[PACKET_STAGE_INPUT] = {.pkts_in = 0, .pkts_out = 0, .pkts_claim = 0, .pkts_schedule = 0},
|
[PACKET_STAGE_INPUT] = {.pkts_in = 0, .pkts_out = 0, .pkts_claim = 0, .pkts_schedule = 0},
|
||||||
|
|||||||
Reference in New Issue
Block a user