Browse Source

- dbg msg removed

Andrei Pelinescu-Onciul 19 years ago
parent
commit
bcdaee049f
1 changed files with 28 additions and 5 deletions
  1. 28 5
      test/udp_test_proxy.c

+ 28 - 5
test/udp_test_proxy.c

@@ -51,6 +51,7 @@ Options:\n\
     -d address    destination address\n\
     -p port       destination port\n\
     -n no         number of processes\n\
+    -2            use a different socket for sending\n\
     -v            increase verbosity level\n\
     -V            version number\n\
     -h            this help message\n\
@@ -61,6 +62,7 @@ static char buf[BUF_SIZE];
 int main(int argc, char** argv)
 {
 	int sock;
+	int s_sock;
 	pid_t pid;
 	struct sockaddr_in addr;
 	struct sockaddr_in to;
@@ -72,6 +74,7 @@ int main(int argc, char** argv)
 	char *dst;
 	char *src;
 	char* tmp;
+	int use_diff_ssock;
 
 
 	/* init */
@@ -80,10 +83,14 @@ int main(int argc, char** argv)
 	sport=dport=0;
 	src=dst=0;
 	n=0;
+	use_diff_ssock=0;
 	
 	opterr=0;
-	while ((c=getopt(argc,argv, "l:p:d:s:n:vhV"))!=-1){
+	while ((c=getopt(argc,argv, "l:p:d:s:n:2vhV"))!=-1){
 		switch(c){
+			case '2':
+				use_diff_ssock=1;
+				break;
 			case 'v':
 				verbose++;
 				break;
@@ -192,8 +199,14 @@ int main(int argc, char** argv)
 	addr.sin_port=htons(sport);
 	memcpy(&addr.sin_addr.s_addr, he->h_addr_list[0], he->h_length);
 
+	s_sock=-1;
 	sock = socket(he->h_addrtype, SOCK_DGRAM, 0);
-	if (sock==-1){
+	if (use_diff_ssock && (sock!=-1))
+		s_sock = socket(he->h_addrtype, SOCK_DGRAM, 0);
+	else
+		s_sock=sock;
+	
+	if ((sock==-1)||(s_sock==-1)){
 		fprintf(stderr, "ERROR: socket: %s\n", strerror(errno));
 		goto error;
 	}
@@ -201,6 +214,13 @@ int main(int argc, char** argv)
 		fprintf(stderr, "ERROR: bind: %s\n", strerror(errno));
 		goto error;
 	}
+	if (use_diff_ssock){
+		if (connect(s_sock, (struct sockaddr*) &to,
+					sizeof(struct sockaddr_in))==-1){
+			fprintf(stderr, "ERROR: connect: %s\n", strerror(errno));
+			goto error;
+		}
+	}
 
 	for(r=1; r<n; r++){
 		if ((pid=fork())==-1){
@@ -219,10 +239,13 @@ int main(int argc, char** argv)
 		}
 		if (verbose>2) putchar('r');
 		/* send it back*/
-		len=sendto(sock, buf, len, 0, (struct sockaddr*) &to,
-				sizeof(struct sockaddr_in));
+		if (use_diff_ssock)
+			len=send(s_sock, buf, len, 0);
+		else
+			len=sendto(s_sock, buf, len, 0,
+					(struct sockaddr*) &to, sizeof(struct sockaddr_in));
 		if (len==-1){
-			fprintf(stderr, "ERROR: sendto: %s\n", strerror(errno));
+			fprintf(stderr, "ERROR: send: %s\n", strerror(errno));
 			continue;
 		}
 		if (verbose>1) putchar('.');