Date: Fri, 16 Mar 2001 11:29:15 +0200 From: Eugene Polovnikov <paranoid@brain-fag.org> To: net@freebsd.org, current@freebsd.org Subject: nos-tun & multihomed machines Message-ID: <20010316112914.A50671@zssm.zp.ua>
next in thread | raw e-mail | index | archive | help
--OXfL5xGRrasGEqWY Content-Type: text/plain; charset=us-ascii Content-Disposition: inline hi! Please, review the following PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=25847 Same patch is in the attach. -- -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS/CC/IT d-@ s: a- C++ UBSC++++$ P++>+++@ L- E--- W+ N++ o? K? w>-- O- M- V- PS@ PE@ Y+ PGP>+ t 5 X R tv- b+++(++++) DI-- D+(++) G>++ e- h--- r y+++ ------END GEEK CODE BLOCK------ --OXfL5xGRrasGEqWY Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=p --- nos-tun.c.orig Fri Mar 16 11:01:38 2001 +++ nos-tun.c Fri Mar 16 11:17:35 2001 @@ -239,11 +239,13 @@ char *point_to = NULL; char *to_point = NULL; char *target; + char *source = NULL; char *protocol = NULL; int protnum; struct sockaddr t_laddr; /* Source address of tunnel */ struct sockaddr whereto; /* Destination of tunnel */ + struct sockaddr wherefrom; /* Source of tunnel */ struct sockaddr_in *to; char buf[0x2000]; /* Packets buffer */ @@ -272,7 +274,7 @@ argc -= optind; argv += optind; - if (argc != 1 || (devname == NULL) || + if ((argc != 1 && argc != 2) || (devname == NULL) || (point_to == NULL) || (to_point == NULL)) { usage(); } @@ -282,7 +284,11 @@ else protnum = atoi(protocol); - target = *argv; + if (argc == 1) { + target = *argv; + } else { + source = *argv++; target = *argv; + } /* Establish logging through 'syslog' */ openlog("nos-tun", LOG_PID, LOG_DAEMON); @@ -306,6 +312,15 @@ Finish(5); } + if (source) { + if (Set_address(source, (struct sockaddr_in *)&wherefrom)) + Finish(9); + if (bind(net, &wherefrom, sizeof(wherefrom)) < 0) { + syslog(LOG_ERR, "can't bind source address - %m"); + Finish(10); + } + } + if (connect(net,&whereto,sizeof(struct sockaddr_in)) < 0 ) { syslog(LOG_ERR,"can't connect to target - %m"); close(net); @@ -365,7 +380,7 @@ usage() { fprintf(stderr, -"usage: nos-tun -t <tun_name> -s <source_addr> -d <dest_addr> -p <protocol_number> <target_addr>\n"); +"usage: nos-tun -t <tun_name> -s <source_addr> -d <dest_addr> -p <protocol_number> [<source_addr>] <target_addr>\n"); exit(1); } --OXfL5xGRrasGEqWY-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010316112914.A50671>