freebsd-ports/net/bounce/files/patch-02
Pav Lucistnik b74350bdb3 - Add new -b option for outcoming connection binding
PR:		ports/96263 (in follow-up)
Submitted by:	SeaD <sead@mail.ru>
Approved by:	Matt Wilbur <matt@efs.org> (maintainer)
2006-07-04 14:49:27 +00:00

52 lines
1.5 KiB
Text

--- bounce.c.orig Fri Jun 2 12:58:37 2006
+++ bounce.c Fri Jun 2 13:25:28 2006
@@ -138,7 +138,7 @@
}
int main(int argc,char *argv[]) {
- int srv_fd, rem_fd, len, cl_fd, on=1;
+ int srv_fd, rem_fd, len, cl_fd, on=1, b=0;
int myport=DEFAULT_PORT, remoteport;
struct sockaddr_in rem_addr, srv_addr, cl_addr;
char *myname;
@@ -153,8 +153,9 @@
/* Process arguments */
- while( (ch = getopt(argc, argv, "p:a:")) != -1 ) {
+ while( (ch = getopt(argc, argv, "p:a:b:")) != -1 ) {
switch(ch) {
+ case 'b': b = 1;
case 'a':
hostname = malloc( strlen(optarg) + 1);
if( !hostname ) {
@@ -177,7 +178,7 @@
argv += optind;
if (argc!=2) {
- fprintf(stderr,"Use: %s [-a localaddr] [-p localport] machine port \n",myname);
+ fprintf(stderr,"Use: %s [-a localaddr | -b localaddr] [-p localport] machine port \n",myname);
exit(-1);
}
if ((remoteport=atoi(argv[1]))<=0) {
@@ -220,6 +221,7 @@
exit(-1);
}
listen(srv_fd,QLEN);
+ srv_addr.sin_port=0;
signal(SIGCHLD, sigchld);
printf("Ready to bounce connections from port %i to %s on port %i\n",
@@ -254,6 +256,12 @@
if ((cl_fd=socket(PF_INET, SOCK_STREAM, 0))<0) {
close(rem_fd);
exit(-1);
+ }
+ if (b) {
+ if (bind(cl_fd,(struct sockaddr *)&srv_addr,sizeof(srv_addr))<0) {
+ close(rem_fd);
+ exit(-1);
+ }
}
if (connect(cl_fd, (struct sockaddr *)&cl_addr,
sizeof(cl_addr))<0) {