增加-g参数, 并通过控制连接传输给sapp.

This commit is contained in:
lijia
2018-11-15 11:25:34 +08:00
parent ffef9008ed
commit 42956e1602
2 changed files with 31 additions and 3 deletions

View File

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