summaryrefslogtreecommitdiff
path: root/src/tcpdump.c
diff options
context:
space:
mode:
authorlijia <[email protected]>2021-09-14 17:47:16 +0800
committerlijia <[email protected]>2021-09-14 17:47:16 +0800
commit45789bc03ead18b8ff545f2a6f9095a7cd83c1e0 (patch)
tree2a7a86eddec0ac7053586135edc42764520c9b2b /src/tcpdump.c
parentda3eeea4e6e26ce51a9aeade42d5fd966f8b6e04 (diff)
更新隧道跳层功能时, 需要同时更新sapp和tcpdump_mesa, 以后可能还有其他模块也引用此文件,
移除net_common.c, 使用公共库libMESA_jump_layer, 统一实现隧道跳层功能.
Diffstat (limited to 'src/tcpdump.c')
-rw-r--r--src/tcpdump.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/tcpdump.c b/src/tcpdump.c
index e5d6d78..13a4cf3 100644
--- a/src/tcpdump.c
+++ b/src/tcpdump.c
@@ -54,7 +54,6 @@ static int greedy_seek_flag = 0; /* 偏移到最内层IP, 便于隧道模式下�
static int dump_to_file_flag = 0; /* 是否有-w 参数, 原有标准的WFileName变量是main()的局部变量, 不方便使用, 使用此变量表示是否写文件 */
static int has_device_flag = 0; /* 是否有-i, -r参数, 原有标准的device变量是main()的局部变量, 不方便使用, 使用此变量表示是否从某个网卡捕包 */
static int has_bpf_filter_flag = 0; /* 是否有正确的BPF过滤条件 */
-extern int treat_vlan_as_mac_in_mac_sw;
static short pkt_classify_flag = 0;
static char pkt_classify_watermark_sw = 0;
int tcpdump_r_offline_mode = 0; /* 从pcap文件里读包, 而不是来源于sapp, 主要是应对有-o参数时处理模式不一样 */
@@ -533,7 +532,7 @@ show_devices_and_exit (void)
#define OPTION_IMMEDIATE_MODE 130
#if MESA_DUMP
-#define OPTION_VLAN_AS_MAC_IN_MAC 131 /* 短参数不够用了, 增加长参数 */
+//#define OPTION_VLAN_AS_MAC_IN_MAC 131 /* 短参数不够用了, 增加长参数 */
#define OPTION_PKT_CLASSIFY 132 /* 增加长参数包类型,定义见PKT_DUMP_OPT_CLASSIFY */
#define OPTION_PKT_CLASSIFY_WATERMARK 133 /* PKT_DUMP_OPT_CLASSIFY_WATERMARK */
#endif
@@ -578,7 +577,7 @@ static const struct option longopts[] = {
{ "number", no_argument, NULL, '#' },
{ "version", no_argument, NULL, OPTION_VERSION },
#if MESA_DUMP
- { "vlan-as-mac-in-mac", no_argument, NULL, OPTION_VLAN_AS_MAC_IN_MAC },
+ //{ "vlan-as-mac-in-mac", no_argument, NULL, OPTION_VLAN_AS_MAC_IN_MAC },
{ "classify", required_argument, NULL, OPTION_PKT_CLASSIFY },
{ "enable_classify_watermark", no_argument, NULL, OPTION_PKT_CLASSIFY_WATERMARK },
#endif
@@ -833,7 +832,7 @@ static int MESA_dump_seek_to_inner(char *pkt_buf, int pktlen)
first_ip_layer = NULL;
}
- ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_net_jump_to_layer_greedy(pkt_buf, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
+ ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_jump_layer_greedy(pkt_buf, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
if(ip4hdr_greedy){
if((char *)ip4hdr_greedy == first_ip_layer){
bpf_match_pkt_len = pktlen; /* 最内层和第一层IP一样, 说明是非常标准的ethernet->IPv4包, 且无隧道, 无需memmove操作 */
@@ -861,7 +860,7 @@ static int MESA_dump_seek_to_inner(char *pkt_buf, int pktlen)
bpf_match_ipv4 = 0;
}
- ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_net_jump_to_layer_greedy(pkt_buf, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
+ ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_jump_layer_greedy(pkt_buf, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
if(ip6hdr_greedy){
if((char *)ip6hdr_greedy == first_ip_layer){
bpf_match_pkt_len = pktlen; /* 最内层和第一层IP一样, 说明是非常标准的ethernet->IPv6包, 且无隧道, 无需memmove操作 */
@@ -1929,9 +1928,9 @@ main(int argc, char **argv)
#endif
#if MESA_DUMP
- case OPTION_VLAN_AS_MAC_IN_MAC:
- treat_vlan_as_mac_in_mac_sw = 1;
- break;
+ //case OPTION_VLAN_AS_MAC_IN_MAC:
+ //treat_vlan_as_mac_in_mac_sw = 1;
+ //break;
case OPTION_PKT_CLASSIFY:
pkt_classify_flag = get_pkt_classify_optarg(optarg);
if(pkt_classify_flag == 0)
@@ -3092,7 +3091,7 @@ MESA_dump_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *raw_pk
struct mesa_ip4_hdr *ip4hdr_greedy;
struct mesa_ip6_hdr *ip6hdr_greedy;
const unsigned char *inner_iphdr = NULL;
- ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_net_jump_to_layer_greedy(raw_pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
+ ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_jump_layer_greedy(raw_pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
if(ip4hdr_greedy)
{
inner_iphdr = (const unsigned char *)ip4hdr_greedy;
@@ -3100,7 +3099,7 @@ MESA_dump_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *raw_pk
}
else
{
- ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_net_jump_to_layer_greedy(raw_pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
+ ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_jump_layer_greedy(raw_pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
if(ip6hdr_greedy)
{
inner_iphdr = (const unsigned char *)ip6hdr_greedy;
@@ -3187,7 +3186,7 @@ MESA_dump_print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *
struct mesa_ip4_hdr *ip4hdr_greedy;
struct mesa_ip6_hdr *ip6hdr_greedy;
const unsigned char *inner_iphdr = NULL;
- ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_net_jump_to_layer_greedy(pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
+ ip4hdr_greedy = (struct mesa_ip4_hdr *)MESA_jump_layer_greedy(pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V4);
if(ip4hdr_greedy)
{
inner_iphdr = (const unsigned char *)ip4hdr_greedy;
@@ -3195,7 +3194,7 @@ MESA_dump_print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *
}
else
{
- ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_net_jump_to_layer_greedy(pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
+ ip6hdr_greedy = (struct mesa_ip6_hdr *)MESA_jump_layer_greedy(pkt, ADDR_TYPE_MAC, __ADDR_TYPE_IP_PAIR_V6);
if(ip6hdr_greedy)
{
inner_iphdr = (const unsigned char *)ip6hdr_greedy;
@@ -3365,8 +3364,7 @@ print_usage(void)
"\t\t[ -o offset ] to assign offset from MAC, for skip some low layer data, for example: jump vxlan using -o 50, jump mac_in_mac using -o 14.\n");
(void)fprintf(stderr,
"\t\t[ -P port ] to assign sapp recv command port.\n");
- (void)fprintf(stderr,
-"\t\t[ --vlan-as-mac-in-mac ] force VLAN to be analysed as MAC-IN-MAC format.\n");
+ //(void)fprintf(stderr, "\t\t[ --vlan-as-mac-in-mac ] force VLAN to be analysed as MAC-IN-MAC format.\n");
(void)fprintf(stderr,
"\t\t[ --classify in|forward|inject|drop|error|repeat|bypass ]. specify packet capture classifier by direction and operation\n");
(void)fprintf(stderr,