diff options
| author | luwenpeng <[email protected]> | 2024-06-07 15:17:35 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-06-07 16:50:21 +0800 |
| commit | 10528bcfd3b6cce87fd4c913899ee41b39f1b943 (patch) | |
| tree | 6599a019b5399062a21350fb129ec7617b0f0748 /test/packet_inject | |
| parent | 4c0ad823d488cc5aaf6470453ca0a2fca3f72ece (diff) | |
remove tuple.h from include/stellar
Diffstat (limited to 'test/packet_inject')
| -rw-r--r-- | test/packet_inject/packet_inject_main.cpp | 8 | ||||
| -rw-r--r-- | test/packet_inject/packet_inject_main.h | 7 | ||||
| -rw-r--r-- | test/packet_inject/packet_inject_plugin.cpp | 27 |
3 files changed, 24 insertions, 18 deletions
diff --git a/test/packet_inject/packet_inject_main.cpp b/test/packet_inject/packet_inject_main.cpp index e4a3872..0a4a521 100644 --- a/test/packet_inject/packet_inject_main.cpp +++ b/test/packet_inject/packet_inject_main.cpp @@ -58,21 +58,21 @@ static int parse_cmd(int argc, char **argv) if (host) { - if (inet_pton(AF_INET, host, &rule.v4) != 1) + if (inet_pton(AF_INET, host, &rule.addr.data.v4) != 1) { - if (inet_pton(AF_INET6, host, &rule.v6) != 1) + if (inet_pton(AF_INET6, host, &rule.addr.data.v6) != 1) { printf("unable to convert host %s to IPv4 / IPv6\n", host); return -1; } else { - rule.ip_type = 6; + rule.addr.family = AF_INET6; } } else { - rule.ip_type = 4; + rule.addr.family = AF_INET; } } diff --git a/test/packet_inject/packet_inject_main.h b/test/packet_inject/packet_inject_main.h index a11cdb0..edf64fd 100644 --- a/test/packet_inject/packet_inject_main.h +++ b/test/packet_inject/packet_inject_main.h @@ -7,6 +7,7 @@ extern "C" #endif #include <arpa/inet.h> +#include "stellar/packet.h" #define AFTER_RECV_C2S_N_PACKET 1 #define AFTER_RECV_S2C_N_PACKET 2 @@ -23,10 +24,8 @@ enum packet_inject_type struct packet_inject_rule { - int ip_type; - struct in_addr v4; /* network order */ - struct in6_addr v6; /* network order */ - int port; /* network order */ + struct address addr; /* network order */ + uint16_t port; /* network order */ enum packet_inject_type inject_type; diff --git a/test/packet_inject/packet_inject_plugin.cpp b/test/packet_inject/packet_inject_plugin.cpp index 1c2917b..c9b84b3 100644 --- a/test/packet_inject/packet_inject_plugin.cpp +++ b/test/packet_inject/packet_inject_plugin.cpp @@ -2,7 +2,7 @@ #include <stdlib.h> #include <string.h> -#include "stellar/tuple.h" +#include "stellar/packet.h" #include "stellar/session_mq.h" #include "packet_inject_main.h" @@ -36,22 +36,29 @@ static void on_sess_msg(struct session *sess, int topic_id, const void *msg, voi session_get_stat(sess, FLOW_DIRECTION_C2S, STAT_RAW_PACKETS_RECEIVED), session_get_stat(sess, FLOW_DIRECTION_S2C, STAT_RAW_PACKETS_RECEIVED)); + struct packet *pkt = (struct packet *)msg; char buffer[1024] = {0}; - // struct packet *pkt = (struct packet *)msg; - const struct tuple6 *tuple = session_get_tuple6(sess); - if (rule.ip_type == 4 && - memcmp(&tuple->src_addr.v4, &rule.v4, sizeof(struct in_addr)) && - memcmp(&tuple->dst_addr.v4, &rule.v4, sizeof(struct in_addr))) + uint16_t src_port = 0; + uint16_t dst_port = 0; + struct address src_addr = {0}; + struct address dst_addr = {0}; + + packet_get_addr(pkt, &src_addr, &dst_addr); + packet_get_port(pkt, &src_port, &dst_port); + + if (rule.addr.family == AF_INET && + memcmp(&src_addr.data.v4, &rule.addr.data.v4, sizeof(struct in_addr)) && + memcmp(&dst_addr.data.v4, &rule.addr.data.v4, sizeof(struct in_addr))) { return; } - if (rule.ip_type == 6 && - memcmp(&tuple->src_addr.v6, &rule.v6, sizeof(struct in6_addr)) && - memcmp(&tuple->dst_addr.v6, &rule.v6, sizeof(struct in6_addr))) + if (rule.addr.family == AF_INET6 && + memcmp(&src_addr.data.v6, &rule.addr.data.v6, sizeof(struct in6_addr)) && + memcmp(&dst_addr.data.v6, &rule.addr.data.v6, sizeof(struct in6_addr))) { return; } - if (rule.port != 0 && tuple->src_port != rule.port && tuple->dst_port != rule.port) + if (rule.port != 0 && src_port != rule.port && dst_port != rule.port) { return; } |
