summaryrefslogtreecommitdiff
path: root/net/bounce/files/patch-03
blob: 199811db2d05cf103ea5bb60c5adb0fedc19d856 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
--- bounce.c.orig	Mon May 28 09:07:37 2007
+++ bounce.c	Mon May 28 09:08:41 2007
@@ -138,7 +138,7 @@
 }
 
 int main(int argc,char *argv[]) {
-    int srv_fd, rem_fd, len, cl_fd, on=1, b=0;
+    int srv_fd, rem_fd, len, cl_fd, on=1, b=0, d=0;
     int myport=DEFAULT_PORT, remoteport;
     struct sockaddr_in rem_addr, srv_addr, cl_addr;
     char *myname;
@@ -153,9 +153,10 @@
 
     /* Process arguments */
 
-    while( (ch = getopt(argc, argv, "p:a:b:")) != -1  ) {
+    while( (ch = getopt(argc, argv, "p:a:b:d")) != -1  ) {
       switch(ch) { 
       case 'b': b = 1;
+      case 'd': d = 1; break;
       case 'a':
 	hostname = malloc( strlen(optarg) + 1);
 	if( !hostname ) {
@@ -178,7 +179,7 @@
     argv += optind;
 
     if (argc!=2) {
-	fprintf(stderr,"Use: %s [-a localaddr | -b localaddr] [-p localport] machine port \n",myname);
+	fprintf(stderr,"Use: %s [-a localaddr | -b localaddr] [-p localport] [-d] machine port \n",myname);
 	exit(-1);
     }
     if ((remoteport=atoi(argv[1]))<=0) {
@@ -261,6 +262,11 @@
 	    if (bind(cl_fd,(struct sockaddr *)&srv_addr,sizeof(srv_addr))<0) {
 		close(rem_fd);
 		exit(-1);
+	    }
+	    }
+	    if (d) {
+	    if ((hp=gethostbyname(argv[0]))!=NULL) {
+		cl_addr.sin_addr=*(struct in_addr *)(hp->h_addr_list[0]);
 	    }
 	    }
 	    if (connect(cl_fd, (struct sockaddr *)&cl_addr,