Browse Source

new option set-ttl

wangyu- 7 years ago
parent
commit
5c7d48e711
3 changed files with 13 additions and 2 deletions
  1. 9 0
      misc.cpp
  2. 2 0
      misc.h
  3. 2 2
      network.cpp

+ 9 - 0
misc.cpp

@@ -24,6 +24,7 @@ int max_rst_allowed=-1;
 
 int enable_dns_resolve=0;
 
+int ttl_value=64;
 
 fd_manager_t fd_manager;
 
@@ -277,6 +278,7 @@ void process_arg(int argc, char *argv[])  //process all options
 		{"mtu-warn", required_argument,    0, 1},
 		{"max-rst-to-show", required_argument,    0, 1},
 		{"max-rst-allowed", required_argument,    0, 1},
+		{"set-ttl", required_argument,    0, 1},
 		{"dns-resolve", no_argument,    0, 1},
 		{NULL, 0, 0, 0}
 	  };
@@ -650,6 +652,13 @@ void process_arg(int argc, char *argv[])  //process all options
 				assert(max_rst_allowed>=-1);
 				mylog(log_info,"max_rst_allowed=%d \n",max_rst_allowed);
 			}
+			else if(strcmp(long_options[option_index].name,"set-ttl")==0)
+			{
+				sscanf(optarg,"%d",&ttl_value);
+				assert(ttl_value>=0&&ttl_value<=255);
+				mylog(log_info,"ttl_value=%d",ttl_value);
+			}
+
 			else if(strcmp(long_options[option_index].name,"dns-resolve")==0)
 			{
 				enable_dns_resolve=1;

+ 2 - 0
misc.h

@@ -22,6 +22,8 @@ extern int max_rst_to_show;
 
 extern int enable_dns_resolve;
 
+extern int ttl_value;
+
 
 const u32_t max_handshake_conn_num=10000;
 const u32_t max_ready_conn_num=1000;

+ 2 - 2
network.cpp

@@ -591,7 +591,7 @@ int send_raw_ip(raw_info_t &raw_info,const char * payload,int payloadlen)
 
     iph->frag_off = htons(0x4000); //DF set,others are zero
    // iph->frag_off = htons(0x0000); //DF set,others are zero
-    iph->ttl = 64;
+    iph->ttl = (unsigned char)ttl_value;
     iph->protocol = send_info.protocol;
     iph->check = 0; //Set to 0 before calculating checksum
     iph->saddr = send_info.src_ip;    //Spoof the source ip address
@@ -1039,7 +1039,7 @@ int send_raw_tcp_deprecated(const packet_info_t &info,const char * payload,int p
 
     iph->id = htonl (ip_id++); //Id of this packet
     iph->frag_off = htons(0x4000); //DF set,others are zero
-    iph->ttl = 64;
+    iph->ttl = (unsigned char)ttl_value;
     iph->protocol = IPPROTO_TCP;
     iph->check = 0; //Set to 0 before calculating checksum
     iph->saddr = info.src_ip;    //Spoof the source ip address