Ver Fonte

refactor

wangyu- há 8 anos atrás
pai
commit
698504aca0
3 ficheiros alterados com 25 adições e 16 exclusões
  1. 6 6
      main.cpp
  2. 15 8
      network.cpp
  3. 4 2
      network.h

+ 6 - 6
main.cpp

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

+ 15 - 8
network.cpp

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

+ 4 - 2
network.h

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