diff --git a/include/stellar/session.h b/include/stellar/session.h index 148fcb0..10bd35c 100644 --- a/include/stellar/session.h +++ b/include/stellar/session.h @@ -147,7 +147,7 @@ uint64_t session_get_id(const struct session *sess); uint64_t session_get_timestamp(const struct session *sess, enum session_timestamp type); uint64_t session_get_stat(const struct session *sess, enum flow_direction dir, enum session_stat stat); -const char *session_get0_readable_addr(struct session *sess); +const char *session_get0_readable_addr(const struct session *sess); #ifdef __cplusplus } diff --git a/include/stellar/tuple.h b/include/stellar/tuple.h index 799977d..8c9b2ff 100644 --- a/include/stellar/tuple.h +++ b/include/stellar/tuple.h @@ -80,8 +80,6 @@ void tuple6_reverse(const struct tuple6 *in, struct tuple6 *out); void tuple2_to_str(const struct tuple2 *tuple, char *buf, uint32_t size); void tuple4_to_str(const struct tuple4 *tuple, char *buf, uint32_t size); void tuple5_to_str(const struct tuple5 *tuple, char *buf, uint32_t size); -// output format: "src_addr:src_port -> dst_addr:dst_port, proto: ip_proto, domain: domain" -// output max len: 46 + 1 + 5 + 4 + 46 + 1 + 5 + 9 + 1 + 10 + 20 = 107 void tuple6_to_str(const struct tuple6 *tuple, char *buf, uint32_t size); #ifdef __cplusplus diff --git a/src/packet/test/gtest_packet.cpp b/src/packet/test/gtest_packet.cpp index c779e5a..dbf6efd 100644 --- a/src/packet/test/gtest_packet.cpp +++ b/src/packet/test/gtest_packet.cpp @@ -183,10 +183,10 @@ TEST(PACKET, ETH_VLAN_VLAN_IP4_IP4_UDP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "69.67.35.146 -> 41.202.46.110"); + EXPECT_STREQ(buffer, "69.67.35.146-41.202.46.110"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.10.100.25 -> 10.10.101.2"); + EXPECT_STREQ(buffer, "10.10.100.25-10.10.101.2"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -198,10 +198,10 @@ TEST(PACKET, ETH_VLAN_VLAN_IP4_IP4_UDP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.10.100.25:62367 -> 10.10.101.2:17000"); + EXPECT_STREQ(buffer, "10.10.100.25:62367-10.10.101.2:17000"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.10.100.25:62367 -> 10.10.101.2:17000"); + EXPECT_STREQ(buffer, "10.10.100.25:62367-10.10.101.2:17000"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -213,10 +213,10 @@ TEST(PACKET, ETH_VLAN_VLAN_IP4_IP4_UDP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.10.100.25:62367 -> 10.10.101.2:17000, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "10.10.100.25:62367-10.10.101.2:17000-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.10.100.25:62367 -> 10.10.101.2:17000, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "10.10.100.25:62367-10.10.101.2:17000-17-0"); } #endif @@ -410,10 +410,10 @@ TEST(PACKET, ETH_IP6_IP4_TCP_SSH) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001::192:168:40:134 -> 2001::192:168:40:133"); + EXPECT_STREQ(buffer, "2001::192:168:40:134-2001::192:168:40:133"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "1.1.1.1 -> 2.2.2.2"); + EXPECT_STREQ(buffer, "1.1.1.1-2.2.2.2"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -425,9 +425,9 @@ TEST(PACKET, ETH_IP6_IP4_TCP_SSH) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "1.1.1.1:57639 -> 2.2.2.2:22"); + EXPECT_STREQ(buffer, "1.1.1.1:57639-2.2.2.2:22"); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "1.1.1.1:57639 -> 2.2.2.2:22"); + EXPECT_STREQ(buffer, "1.1.1.1:57639-2.2.2.2:22"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -439,10 +439,10 @@ TEST(PACKET, ETH_IP6_IP4_TCP_SSH) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "1.1.1.1:57639 -> 2.2.2.2:22, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "1.1.1.1:57639-2.2.2.2:22-6-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "1.1.1.1:57639 -> 2.2.2.2:22, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "1.1.1.1:57639-2.2.2.2:22-6-0"); } #endif @@ -692,10 +692,10 @@ TEST(PACKET, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2607:fcd0:100:2300::b108:2a6b -> 2402:f000:1:8e01::5555"); + EXPECT_STREQ(buffer, "2607:fcd0:100:2300::b108:2a6b-2402:f000:1:8e01::5555"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "8.8.8.8 -> 172.16.44.3"); + EXPECT_STREQ(buffer, "8.8.8.8-172.16.44.3"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -707,10 +707,10 @@ TEST(PACKET, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "8.8.8.8:53 -> 172.16.44.3:9879"); + EXPECT_STREQ(buffer, "8.8.8.8:53-172.16.44.3:9879"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "8.8.8.8:53 -> 172.16.44.3:9879"); + EXPECT_STREQ(buffer, "8.8.8.8:53-172.16.44.3:9879"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -722,10 +722,10 @@ TEST(PACKET, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "8.8.8.8:53 -> 172.16.44.3:9879, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "8.8.8.8:53-172.16.44.3:9879-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "8.8.8.8:53 -> 172.16.44.3:9879, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "8.8.8.8:53-172.16.44.3:9879-17-0"); } #endif @@ -891,10 +891,10 @@ TEST(PACKET, ETH_IP4_IP6_TCP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "210.77.88.163 -> 59.66.4.50"); + EXPECT_STREQ(buffer, "210.77.88.163-59.66.4.50"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3 -> 2600:140e:6::1702:1058"); + EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3-2600:140e:6::1702:1058"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -906,10 +906,10 @@ TEST(PACKET, ETH_IP4_IP6_TCP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556 -> 2600:140e:6::1702:1058:80"); + EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556-2600:140e:6::1702:1058:80"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556 -> 2600:140e:6::1702:1058:80"); + EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556-2600:140e:6::1702:1058:80"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -921,10 +921,10 @@ TEST(PACKET, ETH_IP4_IP6_TCP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556 -> 2600:140e:6::1702:1058:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556-2600:140e:6::1702:1058:80-6-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556 -> 2600:140e:6::1702:1058:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "2001:da8:200:900e:200:5efe:d24d:58a3:52556-2600:140e:6::1702:1058:80-6-0"); } #endif @@ -1070,10 +1070,10 @@ TEST(PACKET, ETH_IP6_IP6_UDP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:4f8:4:7:2e0:81ff:fe52:ffff -> 2001:4f8:4:7:2e0:81ff:fe52:9a6b"); + EXPECT_STREQ(buffer, "2001:4f8:4:7:2e0:81ff:fe52:ffff-2001:4f8:4:7:2e0:81ff:fe52:9a6b"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "dead::beef -> cafe::babe"); + EXPECT_STREQ(buffer, "dead::beef-cafe::babe"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -1085,10 +1085,10 @@ TEST(PACKET, ETH_IP6_IP6_UDP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "dead::beef:30000 -> cafe::babe:13000"); + EXPECT_STREQ(buffer, "dead::beef:30000-cafe::babe:13000"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "dead::beef:30000 -> cafe::babe:13000"); + EXPECT_STREQ(buffer, "dead::beef:30000-cafe::babe:13000"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -1100,10 +1100,10 @@ TEST(PACKET, ETH_IP6_IP6_UDP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "dead::beef:30000 -> cafe::babe:13000, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "dead::beef:30000-cafe::babe:13000-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "dead::beef:30000 -> cafe::babe:13000, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "dead::beef:30000-cafe::babe:13000-17-0"); } #endif @@ -1268,10 +1268,10 @@ TEST(PACKET, ETH_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65 -> 123.125.29.250"); + EXPECT_STREQ(buffer, "119.40.37.65-123.125.29.250"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65 -> 123.125.29.250"); + EXPECT_STREQ(buffer, "119.40.37.65-123.125.29.250"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -1283,10 +1283,10 @@ TEST(PACKET, ETH_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65:61853 -> 123.125.29.250:80"); + EXPECT_STREQ(buffer, "119.40.37.65:61853-123.125.29.250:80"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65:61853 -> 123.125.29.250:80"); + EXPECT_STREQ(buffer, "119.40.37.65:61853-123.125.29.250:80"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -1298,10 +1298,10 @@ TEST(PACKET, ETH_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65:61853 -> 123.125.29.250:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "119.40.37.65:61853-123.125.29.250:80-6-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "119.40.37.65:61853 -> 123.125.29.250:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "119.40.37.65:61853-123.125.29.250:80-6-0"); } #endif @@ -1479,10 +1479,10 @@ TEST(PACKET, ETH_MPLS_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1 -> 10.34.0.1"); + EXPECT_STREQ(buffer, "10.31.0.1-10.34.0.1"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1 -> 10.34.0.1"); + EXPECT_STREQ(buffer, "10.31.0.1-10.34.0.1"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -1494,10 +1494,10 @@ TEST(PACKET, ETH_MPLS_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1:11001 -> 10.34.0.1:23"); + EXPECT_STREQ(buffer, "10.31.0.1:11001-10.34.0.1:23"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1:11001 -> 10.34.0.1:23"); + EXPECT_STREQ(buffer, "10.31.0.1:11001-10.34.0.1:23"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -1509,10 +1509,10 @@ TEST(PACKET, ETH_MPLS_MPLS_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1:11001 -> 10.34.0.1:23, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "10.31.0.1:11001-10.34.0.1:23-6-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.31.0.1:11001 -> 10.34.0.1:23, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "10.31.0.1:11001-10.34.0.1:23-6-0"); } #endif @@ -1702,9 +1702,9 @@ TEST(PACKET, ETH_VLAN_PPPOE_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0 -> 91.185.14.33"); + EXPECT_STREQ(buffer, "100.65.55.0-91.185.14.33"); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0 -> 91.185.14.33"); + EXPECT_STREQ(buffer, "100.65.55.0-91.185.14.33"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -1716,10 +1716,10 @@ TEST(PACKET, ETH_VLAN_PPPOE_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0:34532 -> 91.185.14.33:443"); + EXPECT_STREQ(buffer, "100.65.55.0:34532-91.185.14.33:443"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0:34532 -> 91.185.14.33:443"); + EXPECT_STREQ(buffer, "100.65.55.0:34532-91.185.14.33:443"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -1731,10 +1731,10 @@ TEST(PACKET, ETH_VLAN_PPPOE_IP4_TCP) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0:34532 -> 91.185.14.33:443, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "100.65.55.0:34532-91.185.14.33:443-6-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "100.65.55.0:34532 -> 91.185.14.33:443, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "100.65.55.0:34532-91.185.14.33:443-6-0"); } #endif @@ -1981,10 +1981,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4040:5300::105 -> 2409:8034:4025::60:61"); + EXPECT_STREQ(buffer, "2409:8034:4040:5300::105-2409:8034:4025::60:61"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3 -> 2409:8934:5082:2100:ecad:e0e4:530a:c269"); + EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3-2409:8934:5082:2100:ecad:e0e4:530a:c269"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -1996,10 +1996,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4040:5300::105:2152 -> 2409:8034:4025::60:61:2152"); + EXPECT_STREQ(buffer, "2409:8034:4040:5300::105:2152-2409:8034:4025::60:61:2152"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3:443 -> 2409:8934:5082:2100:ecad:e0e4:530a:c269:46582"); + EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3:443-2409:8934:5082:2100:ecad:e0e4:530a:c269:46582"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -2011,10 +2011,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4040:5300::105:2152 -> 2409:8034:4025::60:61:2152, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "2409:8034:4040:5300::105:2152-2409:8034:4025::60:61:2152-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3:443 -> 2409:8934:5082:2100:ecad:e0e4:530a:c269:46582, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "2409:8c34:4400:700:0:4:0:3:443-2409:8934:5082:2100:ecad:e0e4:530a:c269:46582-6-0"); } #endif @@ -2274,10 +2274,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4025::50:a31 -> 2409:8034:4040:5301::204"); + EXPECT_STREQ(buffer, "2409:8034:4025::50:a31-2409:8034:4040:5301::204"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.49.115.138 -> 121.196.250.66"); + EXPECT_STREQ(buffer, "10.49.115.138-121.196.250.66"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -2289,10 +2289,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4025::50:a31:2152 -> 2409:8034:4040:5301::204:2152"); + EXPECT_STREQ(buffer, "2409:8034:4025::50:a31:2152-2409:8034:4040:5301::204:2152"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.49.115.138:50081 -> 121.196.250.66:443"); + EXPECT_STREQ(buffer, "10.49.115.138:50081-121.196.250.66:443"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -2304,10 +2304,10 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2409:8034:4025::50:a31:2152 -> 2409:8034:4040:5301::204:2152, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "2409:8034:4025::50:a31:2152-2409:8034:4040:5301::204:2152-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.49.115.138:50081 -> 121.196.250.66:443, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "10.49.115.138:50081-121.196.250.66:443-6-0"); } #endif @@ -2506,10 +2506,10 @@ TEST(PACKET, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.1.1.1 -> 192.168.1.10"); + EXPECT_STREQ(buffer, "10.1.1.1-192.168.1.10"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.11.193 -> 114.114.114.114"); + EXPECT_STREQ(buffer, "192.168.11.193-114.114.114.114"); /****************************************************** * packet_get_outermost/innermost_tuple4 @@ -2521,10 +2521,10 @@ TEST(PACKET, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.1.1.1:50709 -> 192.168.1.10:4789"); + EXPECT_STREQ(buffer, "10.1.1.1:50709-192.168.1.10:4789"); memset(buffer, 0, sizeof(buffer)); tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.11.193:65290 -> 114.114.114.114:53"); + EXPECT_STREQ(buffer, "192.168.11.193:65290-114.114.114.114:53"); /****************************************************** * packet_get_outermost/innermost_tuple6 @@ -2536,10 +2536,10 @@ TEST(PACKET, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS) EXPECT_TRUE(packet_get_innermost_tuple6(&handler, &inner_tuple6) == 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&outer_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "10.1.1.1:50709 -> 192.168.1.10:4789, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "10.1.1.1:50709-192.168.1.10:4789-17-0"); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(&inner_tuple6, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.11.193:65290 -> 114.114.114.114:53, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "192.168.11.193:65290-114.114.114.114:53-17-0"); } #endif @@ -2815,10 +2815,10 @@ TEST(PACKET, ETH_IP4_ICMP) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.40.138 -> 192.168.40.134"); + EXPECT_STREQ(buffer, "192.168.40.138-192.168.40.134"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.40.138 -> 192.168.40.134"); + EXPECT_STREQ(buffer, "192.168.40.138-192.168.40.134"); } #endif @@ -2947,10 +2947,10 @@ TEST(PACKET, ETH_IP6_ICMP6) EXPECT_TRUE(packet_get_innermost_tuple2(&handler, &inner_tuple2) == 0); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&outer_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:db8:0:12::1 -> 2001:db8:0:12::2"); + EXPECT_STREQ(buffer, "2001:db8:0:12::1-2001:db8:0:12::2"); memset(buffer, 0, sizeof(buffer)); tuple2_to_str(&inner_tuple2, buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2001:db8:0:12::1 -> 2001:db8:0:12::2"); + EXPECT_STREQ(buffer, "2001:db8:0:12::1-2001:db8:0:12::2"); } #endif diff --git a/src/session/session.cpp b/src/session/session.cpp index 5432055..3a8c12c 100644 --- a/src/session/session.cpp +++ b/src/session/session.cpp @@ -66,11 +66,6 @@ const char *session_get0_readable_addr(const struct session *sess) return sess->tuple_str; } -const char *session_get0_readable_addr(struct session *sess) -{ - return sess->tuple_str; -} - void session_set_direction(struct session *sess, enum session_direction dir) { sess->sess_dir = dir; diff --git a/src/session/session_priv.h b/src/session/session_priv.h index 6c70b99..41d6c59 100644 --- a/src/session/session_priv.h +++ b/src/session/session_priv.h @@ -17,9 +17,9 @@ extern "C" #define EX_DATA_MAX_COUNT 4 -// tuple6 str format: "src_addr:src_port -> dst_addr:dst_port, proto: ip_proto, domain: domain" -// tuple6 max len: 46 + 1 + 5 + 4 + 46 + 1 + 5 + 9 + 1 + 10 + 20 = 107 -#define TUPLE6_STR_SIZE 108 +// output format: "${src_addr}:${src_port}-${dst_addr}:${dst_port}-${ip_proto}-${domain}" +// output max len: (46 + 1 + 5) + 1 + (46 + 1 + 5) + 1 + 1 + 1 + 20 = 129 +#define TUPLE6_STR_SIZE 130 struct tcp_half { diff --git a/src/session/test/gtest_case_tcp_fast_open.cpp b/src/session/test/gtest_case_tcp_fast_open.cpp index 53a5b2f..4844198 100644 --- a/src/session/test/gtest_case_tcp_fast_open.cpp +++ b/src/session/test/gtest_case_tcp_fast_open.cpp @@ -320,7 +320,7 @@ TEST(CASE, TCP_FAST_OPEN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "2400:ac40:620:a4d8:484f:d2b0:d539:bd4c:51682 -> 2001:4860:4860::8844:853, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "2400:ac40:620:a4d8:484f:d2b0:d539:bd4c:51682-2001:4860:4860::8844:853-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_tcp_active_to_closing.cpp b/src/session/test/gtest_state_tcp_active_to_closing.cpp index a489b43..aa3db34 100644 --- a/src/session/test/gtest_state_tcp_active_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_active_to_closing.cpp @@ -118,7 +118,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -205,7 +205,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -292,7 +292,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -420,7 +420,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -500,7 +500,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_tcp_init_to_opening.cpp b/src/session/test/gtest_state_tcp_init_to_opening.cpp index 7f328f6..40963d6 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening.cpp @@ -77,7 +77,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -155,7 +155,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "93.184.216.34:80 -> 192.168.38.105:60111, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "93.184.216.34:80-192.168.38.105:60111-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_S2C); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -244,7 +244,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -344,7 +344,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -440,7 +440,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -537,7 +537,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "93.184.216.34:80 -> 192.168.38.105:60111, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "93.184.216.34:80-192.168.38.105:60111-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_S2C); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -626,7 +626,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -715,7 +715,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "93.184.216.34:80 -> 192.168.38.105:60111, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "93.184.216.34:80-192.168.38.105:60111-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_S2C); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp index 1e6fe40..239b704 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp @@ -73,7 +73,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -104,7 +104,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -135,7 +135,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -166,7 +166,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -197,7 +197,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -228,7 +228,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -259,7 +259,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -290,7 +290,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -321,7 +321,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -352,7 +352,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -383,7 +383,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) EXPECT_TRUE(session_get_id(sess) != 0); memset(buffer, 0, sizeof(buffer)); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_tcp_opening_to_active.cpp b/src/session/test/gtest_state_tcp_opening_to_active.cpp index c9e6a48..a46b588 100644 --- a/src/session/test/gtest_state_tcp_opening_to_active.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_active.cpp @@ -87,7 +87,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -176,7 +176,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "93.184.216.34:80 -> 192.168.38.105:60111, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "93.184.216.34:80-192.168.38.105:60111-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_S2C); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_tcp_opening_to_closing.cpp b/src/session/test/gtest_state_tcp_opening_to_closing.cpp index 8d83f6e..004220c 100644 --- a/src/session/test/gtest_state_tcp_opening_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_closing.cpp @@ -99,7 +99,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -194,7 +194,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -289,7 +289,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -434,7 +434,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -534,7 +534,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -623,7 +623,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); @@ -711,7 +711,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:60111 -> 93.184.216.34:80, proto: 6, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:60111-93.184.216.34:80-6-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_TCP); diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp index d8a659a..2bb0a6b 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp @@ -72,7 +72,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:61099 -> 121.14.154.93:53, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:61099-121.14.154.93:53-17-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_UDP); @@ -102,7 +102,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:61099 -> 121.14.154.93:53, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:61099-121.14.154.93:53-17-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_UDP); diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp index da49207..6f37776 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp @@ -77,7 +77,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "192.168.38.105:61099 -> 121.14.154.93:53, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "192.168.38.105:61099-121.14.154.93:53-17-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_C2S); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_UDP); @@ -156,7 +156,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C) EXPECT_TRUE(session_get_id(sess) != 0); tuple6_to_str(session_get_tuple6(sess), buffer, sizeof(buffer)); - EXPECT_STREQ(buffer, "121.14.154.93:53 -> 192.168.38.105:61099, proto: 17, domain: 0"); + EXPECT_STREQ(buffer, "121.14.154.93:53-192.168.38.105:61099-17-0"); EXPECT_TRUE(session_get_tuple6_direction(sess) == FLOW_DIRECTION_S2C); EXPECT_TRUE(session_get_current_state(sess) == SESSION_STATE_OPENING); EXPECT_TRUE(session_get_type(sess) == SESSION_TYPE_UDP); diff --git a/src/stellar/inject.cpp b/src/stellar/inject.cpp index ad1b5d6..e34bec2 100644 --- a/src/stellar/inject.cpp +++ b/src/stellar/inject.cpp @@ -192,14 +192,14 @@ static inline void calc_tcp_seq_ack(const struct session *sess, enum flow_direct if (inject_dir == curr_dir) { *seq = uint32_add(tcp_curr_half->seq, tcp_curr_half->inject_inc_seq_offset); - *ack = uint32_add(tcp_curr_half->ack, tcp_curr_half->inject_inc_ack_offset); + *ack = tcp_curr_half->ack; tcp_curr_half->inject_inc_seq_offset += len; } else { *seq = uint32_add(tcp_curr_half->ack, tcp_curr_half->inject_inc_ack_offset); - *ack = uint32_add(tcp_curr_half->seq, tcp_curr_half->inject_inc_seq_offset + tcp_curr_half->len + (tcp_curr_half->flags & TH_SYN ? 1 : 0)); + *ack = uint32_add(tcp_curr_half->seq, tcp_curr_half->len + (tcp_curr_half->flags & TH_SYN ? 1 : 0)); tcp_curr_half->inject_inc_ack_offset += len; } @@ -392,8 +392,9 @@ int inject_tcp_packet(const struct session *sess, enum flow_direction inject_dir if (session_get_type(sess) != SESSION_TYPE_TCP) { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); - INJECT_PACKET_LOG_ERROR("session %ld is not a TCP session, cannot inject TCP packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d)", - session_get_id(sess), TCP_FLAGS_LOG_VALUE(tcp_flags), len); + INJECT_PACKET_LOG_ERROR("session %ld %s is not a TCP session, cannot inject TCP packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d)", + session_get_id(sess), session_get0_readable_addr(sess), + TCP_FLAGS_LOG_VALUE(tcp_flags), len); return 0; } @@ -401,8 +402,9 @@ int inject_tcp_packet(const struct session *sess, enum flow_direction inject_dir if (pkt == NULL) { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); - INJECT_PACKET_LOG_ERROR("session %ld has no %s first packet, cannot inject TCP packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d)", - session_get_id(sess), flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); + INJECT_PACKET_LOG_ERROR("session %ld %s has no %s first packet, cannot inject TCP packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d)", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); return 0; } @@ -416,8 +418,9 @@ int inject_tcp_packet(const struct session *sess, enum flow_direction inject_dir int pkt_len = build_tcp_packet(pkt, finger.ipid, finger.ttl, tcp_seq, tcp_ack, tcp_flags, finger.win, payload, len, buff, sizeof(buff)); if (pkt_len <= 0) { - INJECT_PACKET_LOG_ERROR("session %ld build TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) failed, %s", - session_get_id(sess), flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len, strerror(len)); + INJECT_PACKET_LOG_ERROR("session %ld %s build TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) failed, %s", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len, strerror(len)); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); return 0; } @@ -436,14 +439,16 @@ int inject_tcp_packet(const struct session *sess, enum flow_direction inject_dir { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_SUCCESS, 1); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_BYTES_SUCCESS, pkt_len); - INJECT_PACKE_LOG_DEBUG("session %ld inject TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) success", - session_get_id(sess), flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); + INJECT_PACKE_LOG_DEBUG("session %ld %s inject TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) success", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); return pkt_len; } else { - INJECT_PACKET_LOG_ERROR("session %ld inject TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) failed, packet I/O nospace", - session_get_id(sess), flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); + INJECT_PACKET_LOG_ERROR("session %ld %s inject TCP %s packet (" TCP_FLAGS_LOG_FORMAT ", payload len:%d) failed, packet I/O nospace", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), TCP_FLAGS_LOG_VALUE(tcp_flags), len); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); return 0; } @@ -457,8 +462,8 @@ int inject_udp_packet(const struct session *sess, enum flow_direction inject_dir if (session_get_type(sess) != SESSION_TYPE_UDP) { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); - INJECT_PACKET_LOG_ERROR("session %ld is not a UDP session, cannot inject UDP packet (payload len:%d)", - session_get_id(sess), len); + INJECT_PACKET_LOG_ERROR("session %ld %s is not a UDP session, cannot inject UDP packet (payload len:%d)", + session_get_id(sess), session_get0_readable_addr(sess), len); return 0; } @@ -466,8 +471,9 @@ int inject_udp_packet(const struct session *sess, enum flow_direction inject_dir if (pkt == NULL) { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); - INJECT_PACKET_LOG_ERROR("session %ld has no %s first packet, cannot inject UDP packet (payload len:%d)", - session_get_id(sess), flow_direction_to_str(inject_dir), len); + INJECT_PACKET_LOG_ERROR("session %ld %s has no %s first packet, cannot inject UDP packet (payload len:%d)", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), len); return 0; } @@ -475,8 +481,9 @@ int inject_udp_packet(const struct session *sess, enum flow_direction inject_dir int pkt_len = build_udp_packet(pkt, payload, len, buff, sizeof(buff)); if (pkt_len <= 0) { - INJECT_PACKET_LOG_ERROR("session %ld build UDP %s packet (payload len:%d) failed, %s", - session_get_id(sess), flow_direction_to_str(inject_dir), len, strerror(len)); + INJECT_PACKET_LOG_ERROR("session %ld %s build UDP %s packet (payload len:%d) failed, %s", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), len, strerror(len)); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); return 0; } @@ -495,14 +502,16 @@ int inject_udp_packet(const struct session *sess, enum flow_direction inject_dir { session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_SUCCESS, 1); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_BYTES_SUCCESS, pkt_len); - INJECT_PACKE_LOG_DEBUG("session %ld inject UDP %s packet (payload len:%d) success", - session_get_id(sess), flow_direction_to_str(inject_dir), len); + INJECT_PACKE_LOG_DEBUG("session %ld %s inject UDP %s packet (payload len:%d) success", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), len); return pkt_len; } else { - INJECT_PACKET_LOG_ERROR("session %ld inject UDP %s packet (payload len:%d) failed, packet I/O nospace", - session_get_id(sess), flow_direction_to_str(inject_dir), len); + INJECT_PACKET_LOG_ERROR("session %ld %s inject UDP %s packet (payload len:%d) failed, packet I/O nospace", + session_get_id(sess), session_get0_readable_addr(sess), + flow_direction_to_str(inject_dir), len); session_inc_stat((struct session *)sess, inject_dir, STAT_INJECTED_PACKETS_FAILED, 1); return 0; } diff --git a/src/tuple/test/gtest_tuple.cpp b/src/tuple/test/gtest_tuple.cpp index 415a435..f1772e5 100644 --- a/src/tuple/test/gtest_tuple.cpp +++ b/src/tuple/test/gtest_tuple.cpp @@ -28,20 +28,20 @@ TEST(TUPLE, TUPLE2) // to_str memset(buf, 0, sizeof(buf)); tuple2_to_str(&tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.2 -> 192.168.1.3"); + EXPECT_STREQ(buf, "192.168.1.2-192.168.1.3"); memset(buf, 0, sizeof(buf)); tuple2_to_str(&tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:8329 -> 2001:db8::ff00:42:832a"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:8329-2001:db8::ff00:42:832a"); // reverse tuple2_reverse(&tuple_a, &reversed_tuple_a); tuple2_reverse(&tuple_b, &reversed_tuple_b); memset(buf, 0, sizeof(buf)); tuple2_to_str(&reversed_tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.3 -> 192.168.1.2"); + EXPECT_STREQ(buf, "192.168.1.3-192.168.1.2"); memset(buf, 0, sizeof(buf)); tuple2_to_str(&reversed_tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:832a -> 2001:db8::ff00:42:8329"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:832a-2001:db8::ff00:42:8329"); // hash EXPECT_TRUE(tuple2_hash(&tuple_a) == tuple2_hash(&reversed_tuple_a)); @@ -91,20 +91,20 @@ TEST(TUPLE, TUPLE4) // to_str memset(buf, 0, sizeof(buf)); tuple4_to_str(&tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.2:1234 -> 192.168.1.3:5678"); + EXPECT_STREQ(buf, "192.168.1.2:1234-192.168.1.3:5678"); memset(buf, 0, sizeof(buf)); tuple4_to_str(&tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234 -> 2001:db8::ff00:42:832a:5678"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234-2001:db8::ff00:42:832a:5678"); // reverse tuple4_reverse(&tuple_a, &reversed_tuple_a); tuple4_reverse(&tuple_b, &reversed_tuple_b); memset(buf, 0, sizeof(buf)); tuple4_to_str(&reversed_tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.3:5678 -> 192.168.1.2:1234"); + EXPECT_STREQ(buf, "192.168.1.3:5678-192.168.1.2:1234"); memset(buf, 0, sizeof(buf)); tuple4_to_str(&reversed_tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678 -> 2001:db8::ff00:42:8329:1234"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678-2001:db8::ff00:42:8329:1234"); // hash EXPECT_TRUE(tuple4_hash(&tuple_a) == tuple4_hash(&reversed_tuple_a)); @@ -156,20 +156,20 @@ TEST(TUPLE, TUPLE5) // to_str memset(buf, 0, sizeof(buf)); tuple5_to_str(&tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.2:1234 -> 192.168.1.3:5678, proto: 6"); + EXPECT_STREQ(buf, "192.168.1.2:1234-192.168.1.3:5678-6"); memset(buf, 0, sizeof(buf)); tuple5_to_str(&tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234 -> 2001:db8::ff00:42:832a:5678, proto: 17"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234-2001:db8::ff00:42:832a:5678-17"); // reverse tuple5_reverse(&tuple_a, &reversed_tuple_a); tuple5_reverse(&tuple_b, &reversed_tuple_b); memset(buf, 0, sizeof(buf)); tuple5_to_str(&reversed_tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.3:5678 -> 192.168.1.2:1234, proto: 6"); + EXPECT_STREQ(buf, "192.168.1.3:5678-192.168.1.2:1234-6"); memset(buf, 0, sizeof(buf)); tuple5_to_str(&reversed_tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678 -> 2001:db8::ff00:42:8329:1234, proto: 17"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678-2001:db8::ff00:42:8329:1234-17"); // hash EXPECT_TRUE(tuple5_hash(&tuple_a) == tuple5_hash(&reversed_tuple_a)); @@ -223,20 +223,20 @@ TEST(TUPLE, TUPLE6) // to_str memset(buf, 0, sizeof(buf)); tuple6_to_str(&tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.2:1234 -> 192.168.1.3:5678, proto: 6, domain: 0"); + EXPECT_STREQ(buf, "192.168.1.2:1234-192.168.1.3:5678-6-0"); memset(buf, 0, sizeof(buf)); tuple6_to_str(&tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234 -> 2001:db8::ff00:42:832a:5678, proto: 17, domain: 0"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:8329:1234-2001:db8::ff00:42:832a:5678-17-0"); // reverse tuple6_reverse(&tuple_a, &reversed_tuple_a); tuple6_reverse(&tuple_b, &reversed_tuple_b); memset(buf, 0, sizeof(buf)); tuple6_to_str(&reversed_tuple_a, buf, sizeof(buf)); - EXPECT_STREQ(buf, "192.168.1.3:5678 -> 192.168.1.2:1234, proto: 6, domain: 0"); + EXPECT_STREQ(buf, "192.168.1.3:5678-192.168.1.2:1234-6-0"); memset(buf, 0, sizeof(buf)); tuple6_to_str(&reversed_tuple_b, buf, sizeof(buf)); - EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678 -> 2001:db8::ff00:42:8329:1234, proto: 17, domain: 0"); + EXPECT_STREQ(buf, "2001:db8::ff00:42:832a:5678-2001:db8::ff00:42:8329:1234-17-0"); // hash EXPECT_TRUE(tuple6_hash(&tuple_a) == tuple6_hash(&reversed_tuple_a)); diff --git a/src/tuple/tuple.cpp b/src/tuple/tuple.cpp index 661d35f..9c5bccf 100644 --- a/src/tuple/tuple.cpp +++ b/src/tuple/tuple.cpp @@ -355,7 +355,7 @@ void tuple2_to_str(const struct tuple2 *tuple, char *buf, uint32_t size) inet_ntop(AF_INET6, &tuple->dst_addr.v6, dst_addr, INET6_ADDRSTRLEN); } - snprintf(buf, size, "%s -> %s", src_addr, dst_addr); + snprintf(buf, size, "%s-%s", src_addr, dst_addr); } void tuple4_to_str(const struct tuple4 *tuple, char *buf, uint32_t size) @@ -374,7 +374,7 @@ void tuple4_to_str(const struct tuple4 *tuple, char *buf, uint32_t size) inet_ntop(AF_INET6, &tuple->dst_addr.v6, dst_addr, INET6_ADDRSTRLEN); } - snprintf(buf, size, "%s:%u -> %s:%u", + snprintf(buf, size, "%s:%u-%s:%u", src_addr, ntohs(tuple->src_port), dst_addr, ntohs(tuple->dst_port)); } @@ -395,7 +395,7 @@ void tuple5_to_str(const struct tuple5 *tuple, char *buf, uint32_t size) inet_ntop(AF_INET6, &tuple->dst_addr.v6, dst_addr, INET6_ADDRSTRLEN); } - snprintf(buf, size, "%s:%u -> %s:%u, proto: %u", + snprintf(buf, size, "%s:%u-%s:%u-%u", src_addr, ntohs(tuple->src_port), dst_addr, ntohs(tuple->dst_port), tuple->ip_proto); @@ -417,7 +417,7 @@ void tuple6_to_str(const struct tuple6 *tuple, char *buf, uint32_t size) inet_ntop(AF_INET6, &tuple->dst_addr.v6, dst_addr, INET6_ADDRSTRLEN); } - snprintf(buf, size, "%s:%u -> %s:%u, proto: %u, domain: %lu", + snprintf(buf, size, "%s:%u-%s:%u-%u-%lu", src_addr, ntohs(tuple->src_port), dst_addr, ntohs(tuple->dst_port), tuple->ip_proto, tuple->domain); diff --git a/test/packet_injector.cpp b/test/packet_injector.cpp index ef2df91..4475597 100644 --- a/test/packet_injector.cpp +++ b/test/packet_injector.cpp @@ -72,6 +72,13 @@ static void inject_packet_plugin(struct session *sess, int topic_id, const void { return; } + if (session_get_stat(sess, FLOW_DIRECTION_C2S, STAT_INJECTED_PACKETS_SUCCESS) > 0 || + session_get_stat(sess, FLOW_DIRECTION_S2C, STAT_INJECTED_PACKETS_SUCCESS) > 0) + { + // later packets need drop + packet_set_action(pkt, PACKET_ACTION_DROP); + return; + } if (p_rule->count_dir == AFTER_RECV_C2S_N_PACKET && session_get_stat(sess, FLOW_DIRECTION_C2S, STAT_RAW_PACKETS_RECEIVED) != p_rule->count_num) { return; @@ -80,24 +87,22 @@ static void inject_packet_plugin(struct session *sess, int topic_id, const void { return; } - if (session_get_stat(sess, FLOW_DIRECTION_C2S, STAT_INJECTED_PACKETS_SUCCESS) > 0 || - session_get_stat(sess, FLOW_DIRECTION_S2C, STAT_INJECTED_PACKETS_SUCCESS) > 0) - { - return; - } switch (p_rule->inject_type) { case INJECT_TYPE_TCP_RST: + // current packet need drop packet_set_action(pkt, PACKET_ACTION_DROP); EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_C2S) > 0); EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_S2C) > 0); break; case INJECT_TYPE_TCP_FIN: + // current packet need drop packet_set_action(pkt, PACKET_ACTION_DROP); EXPECT_TRUE(stellar_inject_tcp_fin(sess, FLOW_DIRECTION_C2S) > 0); EXPECT_TRUE(stellar_inject_tcp_fin(sess, FLOW_DIRECTION_S2C) > 0); break; case INJECT_TYPE_TCP_PAYLOAD: + // current packet need drop packet_set_action(pkt, PACKET_ACTION_DROP); snprintf(buffer, sizeof(buffer), "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s", 5 + 5 + 2, "Hello"); EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)) > 0); // inject payload to client @@ -106,6 +111,7 @@ static void inject_packet_plugin(struct session *sess, int topic_id, const void EXPECT_TRUE(stellar_inject_tcp_rst(sess, FLOW_DIRECTION_C2S) > 0); // inject RST to server break; case INJECT_TYPE_UDP_PAYLOAD: + // current packet need drop packet_set_action(pkt, PACKET_ACTION_DROP); EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_C2S, "Hello Server", 12) > 0); EXPECT_TRUE(stellar_inject_payload(sess, FLOW_DIRECTION_S2C, "Hello Client", 12) > 0);