diff --git a/src/ip_reassembly/test/gtest_ipv4_reassembly.cpp b/src/ip_reassembly/test/gtest_ipv4_reassembly.cpp index be8d2c2..7bd5b0f 100644 --- a/src/ip_reassembly/test/gtest_ipv4_reassembly.cpp +++ b/src/ip_reassembly/test/gtest_ipv4_reassembly.cpp @@ -239,7 +239,7 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER) 0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 20 /* IPv4 */ + 20 /* TCP */ + 28 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); @@ -334,7 +334,7 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER) 0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 20 /* IPv4 */ + 20 /* TCP */ + 28 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); @@ -494,7 +494,7 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG) 0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 20 /* IPv4 */ + 20 /* TCP */ + 28 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); @@ -601,7 +601,7 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG) 0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 20 /* IPv4 */ + 20 /* TCP */ + 28 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); diff --git a/src/ip_reassembly/test/gtest_ipv6_reassembly.cpp b/src/ip_reassembly/test/gtest_ipv6_reassembly.cpp index 3dea70b..57dc93a 100644 --- a/src/ip_reassembly/test/gtest_ipv6_reassembly.cpp +++ b/src/ip_reassembly/test/gtest_ipv6_reassembly.cpp @@ -674,7 +674,7 @@ TEST(IPV6_REASSEMBLE, NORMAL) 0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 40 /* IPv6 */ + 8 /* UDP */ + 5379 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); @@ -852,7 +852,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG) 0, 0, 0, 0, 1, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 40 /* IPv6 */ + 8 /* UDP */ + 5379 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); @@ -977,7 +977,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG) 0, 0, 0, 0, 0, 1); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag // check packet - // packet_print(new_pkt); + packet_dump_stdio(new_pkt); EXPECT_TRUE(new_pkt->data_len == 14 /* ETH */ + 40 /* IPv6 */ + 8 /* UDP */ + 5379 /* DATA */); EXPECT_TRUE(new_pkt->data_len == sizeof(expect)); EXPECT_TRUE(memcmp(new_pkt->data_ptr, expect, new_pkt->data_len) == 0); diff --git a/src/ip_reassembly/test/gtest_utils.h b/src/ip_reassembly/test/gtest_utils.h index 4f9a611..fcff07a 100644 --- a/src/ip_reassembly/test/gtest_utils.h +++ b/src/ip_reassembly/test/gtest_utils.h @@ -13,6 +13,7 @@ extern "C" #include "ip6_utils.h" #include "ip_reassembly.h" #include "packet_def.h" +#include "packet_dump.h" #include "packet_utils.h" #include "packet_parse.h" #include "packet_layer.h" diff --git a/src/packet/packet_dump.cpp b/src/packet/packet_dump.cpp index 270a5db..e895ff0 100644 --- a/src/packet/packet_dump.cpp +++ b/src/packet/packet_dump.cpp @@ -6,7 +6,20 @@ #include "log.h" #include "hexdump.h" +#include "eth_utils.h" +#include "gre_utils.h" +#include "udp_utils.h" +#include "tcp_utils.h" +#include "ip4_utils.h" +#include "ip6_utils.h" +#include "gtp_utils.h" +#include "mpls_utils.h" +#include "l2tp_utils.h" +#include "vlan_utils.h" +#include "vxlan_utils.h" +#include "packet_def.h" #include "packet_dump.h" +#include "packet_parse.h" #include "packet_utils.h" #define PACKET_DUMP_LOG_ERROR(format, ...) LOG_ERROR("packet dump", format, ##__VA_ARGS__) @@ -83,4 +96,96 @@ void packet_dump_hex(const struct packet *pkt, int fd) const char *data = packet_get_raw_data(pkt); hexdump_to_fd(fd, data, len); +} + +int packet_dump_str(const struct packet *pkt, char *buff, int size) +{ + if (pkt == NULL) + { + return 0; + } + + int used = 0; + memset(buff, 0, size); + used += snprintf(buff + used, size - used, "packet: %p, data_ptr: %p, data_len: %u, trim_len: %u, layers_used: %d, layers_size: %d\n", + pkt, pkt->data_ptr, pkt->data_len, pkt->trim_len, + pkt->layers_used, pkt->layers_size); + for (uint8_t i = 0; i < pkt->layers_used; i++) + { + const struct raw_layer *layer = &pkt->layers[i]; + used += snprintf(buff + used, size - used, "=> layer[%u]: %p, proto: %s, header: {offset: %u, ptr: %p, len: %u}, payload: {ptr: %p, len: %u}\n", + i, layer, layer_proto_to_str(layer->proto), layer->hdr_offset, + layer->hdr_ptr, layer->hdr_len, layer->pld_ptr, layer->pld_len); + switch (layer->proto) + { + case LAYER_PROTO_ETHER: + used += eth_hdr_to_str((const struct ethhdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_PWETH: + break; + case LAYER_PROTO_PPP: + break; + case LAYER_PROTO_L2TP: + used += l2tp_hdr_to_str((const struct l2tp_hdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_VLAN: + used += vlan_hdr_to_str((const struct vlan_hdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_PPPOE: + break; + case LAYER_PROTO_MPLS: + used += mpls_label_to_str((const struct mpls_label *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_IPV4: + used += ip4_hdr_to_str((const struct ip *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_IPV6: + used += ip6_hdr_to_str((const struct ip6_hdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_IPAH: + break; + case LAYER_PROTO_GRE: + used += gre_hdr_to_str(layer->hdr_ptr, layer->hdr_len, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_UDP: + used += udp_hdr_to_str((const struct udphdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_TCP: + used += tcp_hdr_to_str((const struct tcphdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_ICMP: + break; + case LAYER_PROTO_ICMP6: + break; + case LAYER_PROTO_VXLAN: + used += vxlan_hdr_to_str((const struct vxlan_hdr *)layer->hdr_ptr, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + case LAYER_PROTO_GTP_C: + case LAYER_PROTO_GTP_U: + used += gtp_hdr_to_str(layer->hdr_ptr, layer->hdr_len, buff + used, size - used); + used += snprintf(buff + used, size - used, "\n"); + break; + default: + break; + } + } + + return used; +} + +void packet_dump_stdio(const struct packet *pkt) +{ + char buff[4096] = {}; + packet_dump_str(pkt, buff, sizeof(buff)); + printf("%s\n", buff); } \ No newline at end of file diff --git a/src/packet/packet_dump.h b/src/packet/packet_dump.h index e365f09..047a061 100644 --- a/src/packet/packet_dump.h +++ b/src/packet/packet_dump.h @@ -11,6 +11,9 @@ extern "C" // return -1: failed int packet_dump_pcap(const struct packet *pkt, const char *file); void packet_dump_hex(const struct packet *pkt, int fd); +// return number of bytes written +int packet_dump_str(const struct packet *pkt, char *buff, int size); +void packet_dump_stdio(const struct packet *pkt); #ifdef __cplusplus } diff --git a/src/packet/packet_parse.cpp b/src/packet/packet_parse.cpp index 1bc18f5..46c9821 100644 --- a/src/packet/packet_parse.cpp +++ b/src/packet/packet_parse.cpp @@ -54,7 +54,6 @@ * Static API ******************************************************************************/ -static inline const char *layer_proto_to_str(enum layer_proto proto); static inline struct raw_layer *get_free_layer(struct packet *pkt); // 数据链路层 @@ -92,51 +91,6 @@ static inline const char *parse_l4(struct packet *pkt, uint8_t next_proto, const * Private API -- Utils ******************************************************************************/ -static inline const char *layer_proto_to_str(enum layer_proto proto) -{ - switch (proto) - { - case LAYER_PROTO_ETHER: - return "ETH"; - case LAYER_PROTO_PWETH: - return "PWETH"; - case LAYER_PROTO_PPP: - return "PPP"; - case LAYER_PROTO_L2TP: - return "L2TP"; - case LAYER_PROTO_VLAN: - return "VLAN"; - case LAYER_PROTO_PPPOE: - return "PPPOE"; - case LAYER_PROTO_MPLS: - return "MPLS"; - case LAYER_PROTO_IPV4: - return "IPV4"; - case LAYER_PROTO_IPV6: - return "IPV6"; - case LAYER_PROTO_IPAH: - return "IPAH"; - case LAYER_PROTO_GRE: - return "GRE"; - case LAYER_PROTO_UDP: - return "UDP"; - case LAYER_PROTO_TCP: - return "TCP"; - case LAYER_PROTO_ICMP: - return "ICMP"; - case LAYER_PROTO_ICMP6: - return "ICMP6"; - case LAYER_PROTO_VXLAN: - return "VXLAN"; - case LAYER_PROTO_GTP_C: - return "GTP-C"; - case LAYER_PROTO_GTP_U: - return "GTP-U"; - default: - return "UNKNOWN"; - } -} - static inline struct raw_layer *get_free_layer(struct packet *pkt) { if (pkt->layers_used >= pkt->layers_size) @@ -986,87 +940,47 @@ const char *packet_parse(struct packet *pkt, const char *data, uint16_t len) return parse_ether(pkt, data, len); } -int packet_to_str(const struct packet *pkt, char *buff, int size) +const char *layer_proto_to_str(enum layer_proto proto) { - if (pkt == NULL) + switch (proto) { - return 0; + case LAYER_PROTO_ETHER: + return "ETH"; + case LAYER_PROTO_PWETH: + return "PWETH"; + case LAYER_PROTO_PPP: + return "PPP"; + case LAYER_PROTO_L2TP: + return "L2TP"; + case LAYER_PROTO_VLAN: + return "VLAN"; + case LAYER_PROTO_PPPOE: + return "PPPOE"; + case LAYER_PROTO_MPLS: + return "MPLS"; + case LAYER_PROTO_IPV4: + return "IPV4"; + case LAYER_PROTO_IPV6: + return "IPV6"; + case LAYER_PROTO_IPAH: + return "IPAH"; + case LAYER_PROTO_GRE: + return "GRE"; + case LAYER_PROTO_UDP: + return "UDP"; + case LAYER_PROTO_TCP: + return "TCP"; + case LAYER_PROTO_ICMP: + return "ICMP"; + case LAYER_PROTO_ICMP6: + return "ICMP6"; + case LAYER_PROTO_VXLAN: + return "VXLAN"; + case LAYER_PROTO_GTP_C: + return "GTP-C"; + case LAYER_PROTO_GTP_U: + return "GTP-U"; + default: + return "UNKNOWN"; } - - int used = 0; - memset(buff, 0, size); - used += snprintf(buff + used, size - used, "packet: %p, data_ptr: %p, data_len: %u, trim_len: %u, layers_used: %d, layers_size: %d\n", - pkt, pkt->data_ptr, pkt->data_len, pkt->trim_len, - pkt->layers_used, pkt->layers_size); - for (uint8_t i = 0; i < pkt->layers_used; i++) - { - const struct raw_layer *layer = &pkt->layers[i]; - used += snprintf(buff + used, size - used, "=> layer[%u]: %p, proto: %s, header: {offset: %u, ptr: %p, len: %u}, payload: {ptr: %p, len: %u}\n", - i, layer, layer_proto_to_str(layer->proto), layer->hdr_offset, - layer->hdr_ptr, layer->hdr_len, layer->pld_ptr, layer->pld_len); - switch (layer->proto) - { - case LAYER_PROTO_ETHER: - used += eth_hdr_to_str((const struct ethhdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_PWETH: - break; - case LAYER_PROTO_PPP: - break; - case LAYER_PROTO_L2TP: - used += l2tp_hdr_to_str((const struct l2tp_hdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_VLAN: - used += vlan_hdr_to_str((const struct vlan_hdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_PPPOE: - break; - case LAYER_PROTO_MPLS: - used += mpls_label_to_str((const struct mpls_label *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_IPV4: - used += ip4_hdr_to_str((const struct ip *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_IPV6: - used += ip6_hdr_to_str((const struct ip6_hdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_IPAH: - break; - case LAYER_PROTO_GRE: - used += gre_hdr_to_str(layer->hdr_ptr, layer->hdr_len, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_UDP: - used += udp_hdr_to_str((const struct udphdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_TCP: - used += tcp_hdr_to_str((const struct tcphdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_ICMP: - break; - case LAYER_PROTO_ICMP6: - break; - case LAYER_PROTO_VXLAN: - used += vxlan_hdr_to_str((const struct vxlan_hdr *)layer->hdr_ptr, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - case LAYER_PROTO_GTP_C: - case LAYER_PROTO_GTP_U: - used += gtp_hdr_to_str(layer->hdr_ptr, layer->hdr_len, buff + used, size - used); - used += snprintf(buff + used, size - used, "\n"); - break; - default: - break; - } - } - - return used; } \ No newline at end of file diff --git a/src/packet/packet_parse.h b/src/packet/packet_parse.h index 5a47ef4..5a8ce86 100644 --- a/src/packet/packet_parse.h +++ b/src/packet/packet_parse.h @@ -6,20 +6,9 @@ extern "C" #endif #include -#include const char *packet_parse(struct packet *pkt, const char *data, uint16_t len); - -// bref : 1, output packet bref info -// bref : 0, output packet detail info -int packet_to_str(const struct packet *pkt, char *buff, int size); - -static inline void packet_print(const struct packet *pkt) -{ - char buff[4096]; - packet_to_str(pkt, buff, sizeof(buff)); - printf("%s\n", buff); -} +const char *layer_proto_to_str(enum layer_proto proto); #ifdef __cplusplus } diff --git a/src/packet/test/gtest_packet_craft.cpp b/src/packet/test/gtest_packet_craft.cpp index 6c8f08a..fa954c2 100644 --- a/src/packet/test/gtest_packet_craft.cpp +++ b/src/packet/test/gtest_packet_craft.cpp @@ -135,12 +135,12 @@ TEST(PACKET_CRAFT_TCP, ETH_IP4_TCP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data1, sizeof(data1)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct packet *new_pkt = craft_tcp_packet(&orig_pkt, 1, 2, TH_ACK, (const char *)&ts_pad_opt, sizeof(ts_pad_opt), "Hello", 5); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv4-tcp.pcap"); @@ -272,12 +272,12 @@ TEST(PACKET_CRAFT_TCP, ETH_IP4_IP6_TCP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data2, sizeof(data2)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct packet *new_pkt = craft_tcp_packet(&orig_pkt, 1234, 2345, TH_ACK, NULL, 0, "Hello", 5); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv4-ipv6-tcp.pcap"); @@ -488,12 +488,12 @@ TEST(PACKET_CRAFT_TCP, ETH_IP6_UDP_GTP_IP4_TCP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data3, sizeof(data3)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct packet *new_pkt = craft_tcp_packet(&orig_pkt, 1, 2, TH_ACK, NULL, 0, "Hello", 5); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv6-udp-gtp-ipv4-tcp.pcap"); @@ -709,12 +709,12 @@ TEST(PACKET_CRAFT_TCP, ETH_IP4_GRE_IP6_TCP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data4, sizeof(data4)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct packet *new_pkt = craft_tcp_packet(&orig_pkt, 1, 2, TH_ACK, NULL, 0, "Hello", 5); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv4-gre-ipv6-tcp.pcap"); @@ -936,12 +936,12 @@ TEST(PACKET_CRAFT_UDP, ETH_VLAN_IPv6_IPv4_GRE_PPP_IPv4_UDP_DNS) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data5, sizeof(data5)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct packet *new_pkt = craft_udp_packet(&orig_pkt, "Hello", 5); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-vlan-ipv6-ipv4-gre-ppp-ipv4-udp-dns.pcap"); @@ -1060,7 +1060,7 @@ TEST(PACKET_CRAFT_L3, ETH_IP4_ICMP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data1, sizeof(data1)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct icmphdr *icmp = (struct icmphdr *)icmp_resp; icmp->checksum = 0; @@ -1069,7 +1069,7 @@ TEST(PACKET_CRAFT_L3, ETH_IP4_ICMP) struct packet *new_pkt = craft_l3_packet(&orig_pkt, IPPROTO_ICMP, (const char *)icmp_resp, sizeof(icmp_resp)); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv4-icmpv4.pcap"); @@ -1145,7 +1145,7 @@ TEST(PACKET_CRAFT_L3, ETH_IP6_ICMP) memset(&orig_pkt, 0, sizeof(orig_pkt)); packet_parse(&orig_pkt, (const char *)data2, sizeof(data2)); PRINT_GREEN("origin packet:"); - packet_print(&orig_pkt); + packet_dump_stdio(&orig_pkt); struct icmp6_hdr *icmp = (struct icmp6_hdr *)icmp_resp; icmp->icmp6_cksum = 0; @@ -1164,7 +1164,7 @@ TEST(PACKET_CRAFT_L3, ETH_IP6_ICMP) struct packet *new_pkt = craft_l3_packet(&orig_pkt, IPPROTO_ICMPV6, (const char *)icmp_resp, sizeof(icmp_resp)); EXPECT_TRUE(new_pkt != nullptr); PRINT_GREEN("new packet:"); - packet_print(new_pkt); + packet_dump_stdio(new_pkt); packet_dump_hex(new_pkt, STDOUT_FILENO); packet_dump_pcap(new_pkt, "craft-eth-ipv4-ipv6-icmpv6.pcap"); diff --git a/src/packet/test/gtest_packet_ldbc.cpp b/src/packet/test/gtest_packet_ldbc.cpp index 8834753..2f74c77 100644 --- a/src/packet/test/gtest_packet_ldbc.cpp +++ b/src/packet/test/gtest_packet_ldbc.cpp @@ -4,6 +4,7 @@ #include "packet_def.h" #include "packet_ldbc.h" #include "packet_parse.h" +#include "packet_dump.h" /****************************************************************************** * [Protocols in frame: eth:ethertype:ip:ipv6:tcp] @@ -76,7 +77,7 @@ TEST(PACKET_LDBC, HASH_VALUE) const char *payload = packet_parse(&handler, (const char *)data, sizeof(data)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data == 106); - packet_print(&handler); + packet_dump_stdio(&handler); // buffer: "2001:da8:200:900e:200:5efe:d24d:58a3 0 2600:140e:6::1702:1058 0" // buffer: "210.77.88.163 0 59.66.4.50 0" diff --git a/src/packet/test/gtest_packet_parse.cpp b/src/packet/test/gtest_packet_parse.cpp index 5415fbc..3446de7 100644 --- a/src/packet/test/gtest_packet_parse.cpp +++ b/src/packet/test/gtest_packet_parse.cpp @@ -6,6 +6,7 @@ #include "packet_parse.h" #include "packet_utils.h" #include "packet_layer.h" +#include "packet_dump.h" /****************************************************************************** * [Protocols in frame: eth:ethertype:vlan:ethertype:vlan:ethertype:ip:ip:udp:data] @@ -87,7 +88,7 @@ TEST(PACKET_PARSE, ETH_VLAN_VLAN_IP4_IP4_UDP) const char *payload = packet_parse(&handler, (const char *)data1, sizeof(data1)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data1 == 70); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -291,7 +292,7 @@ TEST(PACKET_PARSE, ETH_IP6_IP4_TCP_SSH) const char *payload = packet_parse(&handler, (const char *)data2, sizeof(data2)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data2 == 94); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -484,7 +485,7 @@ TEST(PACKET_PARSE, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS) const char *payload = packet_parse(&handler, (const char *)data3, sizeof(data3)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data3 == 126); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -691,7 +692,7 @@ TEST(PACKET_PARSE, ETH_IP4_IP6_TCP) const char *payload = packet_parse(&handler, (const char *)data4, sizeof(data4)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data4 == 106); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -846,7 +847,7 @@ TEST(PACKET_PARSE, ETH_IP6_IP6_UDP) const char *payload = packet_parse(&handler, (const char *)data5, sizeof(data5)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data5 == 102); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -1002,7 +1003,7 @@ TEST(PACKET_PARSE, ETH_MPLS_IP4_TCP) const char *payload = packet_parse(&handler, (const char *)data6, sizeof(data6)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data6 == 70); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -1169,7 +1170,7 @@ TEST(PACKET_PARSE, ETH_MPLS_MPLS_IP4_TCP) const char *payload = packet_parse(&handler, (const char *)data7, sizeof(data7)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data7 == 66); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -1346,7 +1347,7 @@ TEST(PACKET_PARSE, ETH_VLAN_PPPOE_IP4_TCP) const char *payload = packet_parse(&handler, (const char *)data8, sizeof(data8)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data8 == 78); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -1599,7 +1600,7 @@ TEST(PACKET_PARSE, ETH_IP6_UDP_GTP_IP6_TCP_TLS) const char *payload = packet_parse(&handler, (const char *)data9, sizeof(data9)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data9 == 130); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -1853,7 +1854,7 @@ TEST(PACKET_PARSE, ETH_IP6_UDP_GTP_IP4_TCP_TLS) const char *payload = packet_parse(&handler, (const char *)data10, sizeof(data10)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data10 == 122); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2055,7 +2056,7 @@ TEST(PACKET_PARSE, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS) const char *payload = packet_parse(&handler, (const char *)data11, sizeof(data11)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data11 == 92); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2212,7 +2213,7 @@ TEST(PACKET_PARSE, ETH_MPLS_MPLS_PWETHCW_ETH_ARP) const char *payload = packet_parse(&handler, (const char *)data12, sizeof(data12)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data12 == 40); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2349,7 +2350,7 @@ TEST(PACKET_PARSE, ETH_IP4_ICMP) const char *payload = packet_parse(&handler, (const char *)data13, sizeof(data13)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data13 == 14 + 20 + 8); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2455,7 +2456,7 @@ TEST(PACKET_PARSE, ETH_IP6_ICMP6) const char *payload = packet_parse(&handler, (const char *)data14, sizeof(data14)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data14 == 14 + 40 + 8); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2620,7 +2621,7 @@ TEST(PACKET_PARSE, ETH_IP4_UDP_L2TPV2_PPP_IP4_UDP) const char *payload = packet_parse(&handler, (const char *)data15, sizeof(data15)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data15 == 14 + 20 + 8 + 8 + 4 + 20 + 8); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer @@ -2785,7 +2786,7 @@ TEST(PACKET_PARSE, ETH_IP4_TCP_PADDING) const char *payload = packet_parse(&handler, (const char *)data16, sizeof(data16)); EXPECT_TRUE(payload != nullptr); EXPECT_TRUE((char *)payload - (char *)&data16 == 14 + 20 + 20); - packet_print(&handler); + packet_dump_stdio(&handler); /****************************************************** * packet_get_outermost/innermost_layer diff --git a/src/packet/test/gtest_tunnel.cpp b/src/packet/test/gtest_tunnel.cpp index e92e92e..04e1f32 100644 --- a/src/packet/test/gtest_tunnel.cpp +++ b/src/packet/test/gtest_tunnel.cpp @@ -7,6 +7,7 @@ #include "vxlan_utils.h" #include "packet_def.h" #include "packet_parse.h" +#include "packet_dump.h" #include "stellar/layer.h" #include "stellar/tunnel.h" @@ -549,7 +550,7 @@ TEST(TUNNEL, IPV4) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data1, sizeof(data1)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 1); @@ -577,7 +578,7 @@ TEST(TUNNEL, GRE) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data2, sizeof(data2)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 2); @@ -611,7 +612,7 @@ TEST(TUNNEL, GTP) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data3, sizeof(data3)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 1); @@ -640,7 +641,7 @@ TEST(TUNNEL, VXLAN) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data4, sizeof(data4)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 1); @@ -669,7 +670,7 @@ TEST(TUNNEL, L2TP) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data5, sizeof(data5)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 1); @@ -698,7 +699,7 @@ TEST(TUNNEL, TEREDO) memset(&pkt, 0, sizeof(pkt)); packet_parse(&pkt, (const char *)data6, sizeof(data6)); - packet_print(&pkt); + packet_dump_stdio(&pkt); EXPECT_TRUE(packet_get_tunnel_count(&pkt) == 1); diff --git a/test/debug_plugin/debug_plugin.cpp b/test/debug_plugin/debug_plugin.cpp index 6ab8de9..ed8199e 100644 --- a/test/debug_plugin/debug_plugin.cpp +++ b/test/debug_plugin/debug_plugin.cpp @@ -12,7 +12,6 @@ #include "hexdump.h" #include "session_utils.h" #include "packet_dump.h" -#include "packet_parse.h" #include "stellar/packet.h" #include "stellar/stellar_mq.h" @@ -104,7 +103,7 @@ static void on_sess_udp_msg(struct session *sess, int topic_id, const void *msg, log_print(ctx->fd, "debug plugin", "on UDP msg: %s", buff); memset(buff, 0, sizeof(buff)); - packet_to_str(pkt, buff, sizeof(buff) - 1); + packet_dump_str(pkt, buff, sizeof(buff) - 1); log_print(ctx->fd, "debug plugin", "rx UDP packet: \n%s", buff); pthread_spin_lock(&ctx->lock); @@ -128,7 +127,7 @@ static void on_sess_tcp_msg(struct session *sess, int topic_id, const void *msg, log_print(ctx->fd, "debug plugin", "on TCP msg: %s", buff); memset(buff, 0, sizeof(buff)); - packet_to_str(pkt, buff, sizeof(buff) - 1); + packet_dump_str(pkt, buff, sizeof(buff) - 1); log_print(ctx->fd, "debug plugin", "rx TCP packet: \n%s", buff); pthread_spin_lock(&ctx->lock); diff --git a/test/packet_tool/packet_tool.cpp b/test/packet_tool/packet_tool.cpp index 3946be1..bcd7868 100644 --- a/test/packet_tool/packet_tool.cpp +++ b/test/packet_tool/packet_tool.cpp @@ -256,7 +256,7 @@ static void packet_handler(u_char *user, const struct pcap_pkthdr *h, const u_ch if (rte->print_verbose) { PRINT_GREEN("frame=%lu len=%u", rte->pcap_count, h->caplen); - packet_print(&pkt); + packet_dump_stdio(&pkt); } if (rte->tshark_format)