summaryrefslogtreecommitdiff
path: root/test/packet_inject
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2024-06-07 15:17:35 +0800
committerluwenpeng <[email protected]>2024-06-07 16:50:21 +0800
commit10528bcfd3b6cce87fd4c913899ee41b39f1b943 (patch)
tree6599a019b5399062a21350fb129ec7617b0f0748 /test/packet_inject
parent4c0ad823d488cc5aaf6470453ca0a2fca3f72ece (diff)
remove tuple.h from include/stellar
Diffstat (limited to 'test/packet_inject')
-rw-r--r--test/packet_inject/packet_inject_main.cpp8
-rw-r--r--test/packet_inject/packet_inject_main.h7
-rw-r--r--test/packet_inject/packet_inject_plugin.cpp27
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;
}