refactor: packet dump utils

This commit is contained in:
luwenpeng
2024-08-13 10:24:26 +08:00
parent ff8630e436
commit 03468d55be
13 changed files with 200 additions and 186 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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"

View File

@@ -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__)
@@ -84,3 +97,95 @@ void packet_dump_hex(const struct packet *pkt, int fd)
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);
}

View File

@@ -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
}

View File

@@ -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)
{
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)
switch (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;
return "ETH";
case LAYER_PROTO_PWETH:
break;
return "PWETH";
case LAYER_PROTO_PPP:
break;
return "PPP";
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;
return "L2TP";
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;
return "VLAN";
case LAYER_PROTO_PPPOE:
break;
return "PPPOE";
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;
return "MPLS";
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;
return "IPV4";
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;
return "IPV6";
case LAYER_PROTO_IPAH:
break;
return "IPAH";
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;
return "GRE";
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;
return "UDP";
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;
return "TCP";
case LAYER_PROTO_ICMP:
break;
return "ICMP";
case LAYER_PROTO_ICMP6:
break;
return "ICMP6";
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;
return "VXLAN";
case LAYER_PROTO_GTP_C:
return "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;
return "GTP-U";
default:
break;
return "UNKNOWN";
}
}
return used;
}

View File

@@ -6,20 +6,9 @@ extern "C"
#endif
#include <stdint.h>
#include <stdio.h>
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
}

View File

@@ -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");

View File

@@ -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"

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)