🦄 refactor(register_node with module): last para from arg to module

This commit is contained in:
yangwei
2024-11-26 15:31:51 +08:00
parent 9895e93214
commit 1b55f09ba7
5 changed files with 57 additions and 49 deletions

View File

@@ -109,7 +109,7 @@ TEST(PACKET_MANAGER, NEW_FREE)
#endif
#if 1
static void on_packet(struct packet *pkt, void *args)
static void on_packet(struct packet *pkt, struct module *mod)
{
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -123,7 +123,7 @@ static void on_packet(struct packet *pkt, void *args)
static int count = 0;
EXPECT_TRUE(count == stage);
EXPECT_TRUE(packet_get_type(pkt) == PACKET_TYPE_PSEUDO);
EXPECT_TRUE(args == NULL);
EXPECT_TRUE(mod == NULL);
count++;
}
@@ -176,7 +176,7 @@ TEST(PACKET_MANAGER, REGISTER)
#endif
#if 1
static void drop_packet(struct packet *pkt, void *args)
static void drop_packet(struct packet *pkt, struct module *mod)
{
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -190,7 +190,7 @@ static void drop_packet(struct packet *pkt, void *args)
static int count = 0;
EXPECT_TRUE(count == stage);
EXPECT_TRUE(packet_get_type(pkt) == PACKET_TYPE_PSEUDO);
EXPECT_TRUE(args == NULL);
EXPECT_TRUE(mod == NULL);
count++;
if (stage == PACKET_STAGE_FORWARD)
@@ -247,9 +247,9 @@ TEST(PACKET_MANAGER, DROP_PACKET)
#endif
#if 1
static void packet_claimed(struct packet *pkt, void *args)
static void packet_claimed(struct packet *pkt, struct module *mod)
{
char *str = (char *)args;
char *str = (char *)mod;
EXPECT_STREQ(str, "hello");
printf("packet_claimed: with ctx %s\n", str);
EXPECT_TRUE(packet_get_type(pkt) == PACKET_TYPE_PSEUDO);
@@ -257,9 +257,9 @@ static void packet_claimed(struct packet *pkt, void *args)
free(str);
}
static void claim_packet_success(struct packet *pkt, void *args)
static void claim_packet_success(struct packet *pkt, struct module *mod)
{
struct packet_manager *pkt_mgr = (struct packet_manager *)args;
struct packet_manager *pkt_mgr = (struct packet_manager *)module_get_ctx(mod);
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -278,9 +278,9 @@ static void claim_packet_success(struct packet *pkt, void *args)
count++;
}
static void claim_packet_failed(struct packet *pkt, void *args)
static void claim_packet_failed(struct packet *pkt, struct module *mod)
{
struct packet_manager *pkt_mgr = (struct packet_manager *)args;
struct packet_manager *pkt_mgr = (struct packet_manager *)module_get_ctx(mod);
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -303,18 +303,19 @@ TEST(PACKET_MANAGER, CLAIM_PACKET)
{
// module init
struct packet_manager *pkt_mgr = packet_manager_new(1);
struct module *pkt_mgr_mod = module_new("packet_manager", pkt_mgr);
EXPECT_TRUE(pkt_mgr);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_success, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_failed, pkt_mgr_mod) == 0);
// per-thread init
packet_manager_init(pkt_mgr, thread_id);
@@ -349,13 +350,14 @@ TEST(PACKET_MANAGER, CLAIM_PACKET)
// module free
packet_manager_free(pkt_mgr);
module_free(pkt_mgr_mod);
}
#endif
#if 1
static void schedule_packet(struct packet *pkt, void *args)
static void schedule_packet(struct packet *pkt, struct module *mod)
{
struct packet_manager *pkt_mgr = (struct packet_manager *)args;
struct packet_manager *pkt_mgr = (struct packet_manager *)module_get_ctx(mod);
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -380,12 +382,13 @@ TEST(PACKET_MANAGER, SCHEDULE_PACKET)
{
// module init
struct packet_manager *pkt_mgr = packet_manager_new(1);
struct module *pkt_mgr_mod = module_new("packet_manager", pkt_mgr);
EXPECT_TRUE(pkt_mgr);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, schedule_packet, pkt_mgr_mod) == 0);
// per-thread init
packet_manager_init(pkt_mgr, thread_id);
@@ -429,13 +432,15 @@ TEST(PACKET_MANAGER, SCHEDULE_PACKET)
// module free
packet_manager_free(pkt_mgr);
module_free(pkt_mgr_mod);
}
#endif
#if 1
static void schedule_claimed_packet(struct packet *pkt, void *args)
static void schedule_claimed_packet(struct packet *pkt, struct module *mod)
{
struct packet_manager *pkt_mgr = (struct packet_manager *)args;
struct packet_manager *pkt_mgr = (struct packet_manager *)module_get_ctx(mod);
printf("schedule_claimed_packet: %p\n", pkt);
EXPECT_TRUE(packet_get_type(pkt) == PACKET_TYPE_PSEUDO);
@@ -444,9 +449,9 @@ static void schedule_claimed_packet(struct packet *pkt, void *args)
packet_manager_schedule_packet(pkt_mgr, thread_id, pkt, PACKET_STAGE_POSTROUTING);
}
static void claim_packet_to_schedule(struct packet *pkt, void *args)
static void claim_packet_to_schedule(struct packet *pkt, struct module *mod)
{
struct packet_manager *pkt_mgr = (struct packet_manager *)args;
struct packet_manager *pkt_mgr = (struct packet_manager *)module_get_ctx(mod);
enum packet_stage stage = packet_get_stage(pkt);
printf("on_packet_stage: %s\n", packet_stage_to_str(stage));
@@ -462,7 +467,7 @@ static void claim_packet_to_schedule(struct packet *pkt, void *args)
if (stage == PACKET_STAGE_PREROUTING)
{
EXPECT_TRUE(count == 0); // packet not claim
EXPECT_TRUE(packet_manager_claim_packet(pkt_mgr, thread_id, pkt, schedule_claimed_packet, pkt_mgr) == 0); // claim packet success
EXPECT_TRUE(packet_manager_claim_packet(pkt_mgr, thread_id, pkt, schedule_claimed_packet, mod) == 0); // claim packet success
}
else if (stage == PACKET_STAGE_POSTROUTING)
{
@@ -480,12 +485,13 @@ TEST(PACKET_MANAGER, SCHEDULE_CLAIMED_PACKET)
{
// module init
struct packet_manager *pkt_mgr = packet_manager_new(1);
struct module *pkt_mgr_mod=module_new("packet_manager", pkt_mgr);
EXPECT_TRUE(pkt_mgr);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_PREROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_INPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_FORWARD, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_OUTPUT, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr_mod) == 0);
EXPECT_TRUE(packet_manager_register_node(pkt_mgr, "name", PACKET_STAGE_POSTROUTING, PKT_TAG_KEY_IPPROTO, PKT_TAG_VAL_IPPROTO_TCP, claim_packet_to_schedule, pkt_mgr_mod) == 0);
// per-thread init
packet_manager_init(pkt_mgr, thread_id);
@@ -520,6 +526,8 @@ TEST(PACKET_MANAGER, SCHEDULE_CLAIMED_PACKET)
// module free
packet_manager_free(pkt_mgr);
module_free(pkt_mgr_mod);
}
#endif