增加-g参数, 并通过控制连接传输给sapp.
This commit is contained in:
30
tcpdump.c
30
tcpdump.c
@@ -959,7 +959,11 @@ static int pkt_dump_recv_ack(int connfd)
|
||||
}
|
||||
|
||||
#include <pthread.h>
|
||||
static void *detect_sapp_thread(void *arg)
|
||||
/*
|
||||
<09><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>sapp<70>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>sapp<70>˳<EFBFBD><CBB3><EFBFBD>,
|
||||
tcpdump_mesaҲӦ<D2B2><D3A6><EFBFBD>˳<EFBFBD>.
|
||||
*/
|
||||
static void *detect_sapp_alive_thread(void *arg)
|
||||
{
|
||||
int tcp_cmd_fd = (int)arg;
|
||||
int ret;
|
||||
@@ -1020,9 +1024,17 @@ static int MESA_dump_start(unsigned short udp_rcv_port, unsigned short sapp_cmd_
|
||||
opt_num++;
|
||||
}
|
||||
|
||||
if(greedy_seek_flag != 0){
|
||||
if(tcpdump_data_offset != 0){
|
||||
printf("option -o and -g is exclusive, can't use at same time!\n");
|
||||
exit(1);
|
||||
}
|
||||
opt_num++;
|
||||
}
|
||||
|
||||
/************** pkt handshake *************/
|
||||
pkt_hdr.magic = htonl(PKT_DUMP_HDR_MAGIC);
|
||||
pkt_hdr.version = htonl(tcpdump_mesa_version_VERSION_20181114);
|
||||
pkt_hdr.version = htonl(20180119); /* ֮ǰsapp<70><70>20180119<31>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>У<EFBFBD><D0A3>, <20>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>ȹ̶<C8B9><CCB6>ô<EFBFBD>ֵ, <20>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD>sapp<70><70>, <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>汾 */
|
||||
pkt_hdr.opt_num = htonl(opt_num);
|
||||
ret = write(tcp_cmd_fd, &pkt_hdr, sizeof(pkt_hdr));
|
||||
if(ret < 0){
|
||||
@@ -1106,12 +1118,24 @@ static int MESA_dump_start(unsigned short udp_rcv_port, unsigned short sapp_cmd_
|
||||
}
|
||||
}
|
||||
|
||||
/************** greedy seek *************/
|
||||
if(greedy_seek_flag != 0){
|
||||
opt.opt_type = htons(PKT_DUMP_OPT_GREEDY_SEEK);
|
||||
opt.opt_len = 0;
|
||||
ret = write(tcp_cmd_fd, &opt, sizeof(opt));
|
||||
if(ret < 0){
|
||||
printf("connection down!\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/********** after send opt, start recv sapp ACK *******/
|
||||
if(pkt_dump_recv_ack(tcp_cmd_fd) < 0){
|
||||
printf("connection down!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
pthread_create(&pid, NULL, detect_sapp_thread, (void *)tcp_cmd_fd);
|
||||
pthread_create(&pid, NULL, detect_sapp_alive_thread, (void *)tcp_cmd_fd);
|
||||
|
||||
return tcp_cmd_fd;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user