This commit is contained in:
wangyu- 2017-09-06 01:31:29 -05:00
parent 934a65e7bf
commit 698504aca0
3 changed files with 25 additions and 16 deletions

@ -1131,7 +1131,7 @@ int client_on_timer(conn_info_t &conn_info) //for client. called when a timer is
send_handshake(raw_info,conn_info.my_id,0,const_id);
send_info.seq+=raw_info.last_send_len;
send_info.seq+=raw_info.send_info.data_len;
}
else
{
@ -1165,13 +1165,13 @@ int client_on_timer(conn_info_t &conn_info) //for client. called when a timer is
{
if(conn_info.last_hb_sent_time==0)
{
send_info.ack_seq=recv_info.seq+raw_info.last_recv_len;
send_info.ack_seq=recv_info.seq+raw_info.recv_info.data_len;
send_info.ts_ack=recv_info.ts;
raw_info.reserved_seq=send_info.seq;
}
send_info.seq=raw_info.reserved_seq;
send_handshake(raw_info,conn_info.my_id,conn_info.oppsite_id,const_id);
send_info.seq+=raw_info.last_send_len;
send_info.seq+=raw_info.send_info.data_len;
}
else
@ -1705,7 +1705,7 @@ int server_on_raw_recv_handshake1(conn_info_t &conn_info,char * ip_port,char * d
if(raw_mode==mode_faketcp)
{
send_info.seq=recv_info.ack_seq;
send_info.ack_seq=recv_info.seq+raw_info.last_recv_len;
send_info.ack_seq=recv_info.seq+raw_info.recv_info.data_len;
send_info.ts_ack=recv_info.ts;
}
if(raw_mode==mode_icmp)
@ -1729,7 +1729,7 @@ int server_on_raw_recv_handshake1(conn_info_t &conn_info,char * ip_port,char * d
if(raw_mode==mode_faketcp)
{
send_info.seq=recv_info.ack_seq;
send_info.ack_seq=recv_info.seq+raw_info.last_recv_len;
send_info.ack_seq=recv_info.seq+raw_info.recv_info.data_len;
send_info.ts_ack=recv_info.ts;
}
@ -3063,7 +3063,7 @@ void process_arg(int argc, char *argv[]) //process all options
else if(strcmp(long_options[option_index].name,"seq-mode")==0)
{
sscanf(optarg,"%d",&seq_mode);
if(0<=seq_mode&&seq_mode<=2)
if(0<=seq_mode&&seq_mode<=3)
{
}
else

@ -981,7 +981,7 @@ int send_raw_tcp(raw_info_t &raw_info,const char * payload, int payloadlen) {
}
raw_info.last_send_len=payloadlen;
raw_info.send_info.data_len=payloadlen;
return 0;
}
/*
@ -1434,7 +1434,7 @@ int recv_raw_tcp(raw_info_t &raw_info,char * &payload,int &payloadlen)
{
send_info.ack_seq=recv_info.seq;
}*/
raw_info.last_recv_len=payloadlen;
raw_info.recv_info.data_len=payloadlen;
return 0;
}
/*
@ -1636,18 +1636,18 @@ int after_send_raw0(raw_info_t &raw_info)
if(raw_mode==mode_faketcp)
{
if (send_info.syn == 0 && send_info.ack == 1&& raw_info.last_send_len != 0) //only modify send_info when the packet is not part of handshake
if (send_info.syn == 0 && send_info.ack == 1&& raw_info.send_info.data_len != 0) //only modify send_info when the packet is not part of handshake
{
if (seq_mode == 0)
{
} else if (seq_mode == 1)
{
send_info.seq += raw_info.last_send_len; //////////////////modify
send_info.seq += raw_info.send_info.data_len; //////////////////modify
} else if (seq_mode == 2)
{
if (random() % 5 == 3)
send_info.seq += raw_info.last_send_len; //////////////////modify
send_info.seq += raw_info.send_info.data_len; //////////////////modify
}
}
}
@ -1669,10 +1669,17 @@ int after_recv_raw0(raw_info_t &raw_info)
{
if(recv_info.has_ts)
send_info.ts_ack=recv_info.ts;
if (recv_info.syn == 0 && recv_info.ack == 1 && raw_info.last_recv_len != 0) //only modify send_info when the packet is not part of handshake
if (recv_info.syn == 0 && recv_info.ack == 1 && raw_info.recv_info.data_len != 0) //only modify send_info when the packet is not part of handshake
{
if(larger_than_u32(recv_info.seq+raw_info.last_recv_len,send_info.ack_seq))
send_info.ack_seq = recv_info.seq+raw_info.last_recv_len;//TODO only update if its larger
if(seq_mode==0||seq_mode==1||seq_mode==2)
{
if(larger_than_u32(recv_info.seq+raw_info.recv_info.data_len,send_info.ack_seq))
send_info.ack_seq = recv_info.seq+raw_info.recv_info.data_len;//TODO only update if its larger
}
else if(seq_mode==3)
{
}
}
}
if(raw_mode==mode_icmp)

@ -64,6 +64,8 @@ struct packet_info_t //todo change this to union
sockaddr_ll addr_ll;
i32_t data_len;
packet_info_t();
};
@ -72,8 +74,8 @@ struct raw_info_t
packet_info_t send_info;
packet_info_t recv_info;
int last_send_len;
int last_recv_len;
//int last_send_len;
//int last_recv_len;
u32_t reserved_seq;
//uint32_t first_seq,first_ack_seq;