Add ability to set protocol number.

PR:		10753
Submitted by:	Isao SEKI <iseki@gongon.com>
This commit is contained in:
Poul-Henning Kamp 1999-03-29 13:58:27 +00:00
parent 31f9b07613
commit d59cf2acdd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=45114
2 changed files with 30 additions and 5 deletions

View File

@ -6,7 +6,7 @@
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
.\" ----------------------------------------------------------------------------
.\"
.\" $Id: nos-tun.8,v 1.1 1998/04/11 19:33:05 phk Exp $
.\" $Id: nos-tun.8,v 1.2 1998/05/05 06:24:12 charnier Exp $
.\"
.Dd April 11, 1998
.Dt NOS-TUN 8
@ -22,6 +22,8 @@
.Ar source
.Fl d
.Ar destination
.Fl p
.Ar protocol_number
.Ar target
.Sh DESCRIPTION
.Nm Nos-tun
@ -51,6 +53,10 @@ in the
.Bx Free
end, a concept cisco doesn't really implement.
.Pp
.Ar Protocol number
sets tunnel mode. Original KA9Q NOS uses 94 but many peoples use 4
in worldwide backbone of ampr.org.
.Pp
.Ar Target
is the address of the remote tunnel device, this must match the source
address set on the remote end.
@ -77,3 +83,5 @@ We don't allow for setting our source address for multihomed machines.
wrote the program,
.An Poul-Henning Kamp Aq phk@FreeBSD.org
wrote the man-page.
.An Isao SEKI Aq iseki@gongon.com
added a new flag, IP protocol number.

View File

@ -48,9 +48,16 @@
* (and why do you want more ?)
*/
/*
* Mar. 23 1999 by Isao SEKI <iseki@gongon.com>
* I added a new flag for ip protocol number.
* We are using 4 as protocol number in ampr.org.
*
*/
#ifndef lint
static const char rcsid[] =
"$Id: nos-tun.c,v 1.3 1998/07/15 06:38:53 charnier Exp $";
"$Id: nos-tun.c,v 1.4 1998/08/02 16:06:34 bde Exp $";
#endif /* not lint */
#include <fcntl.h>
@ -232,6 +239,8 @@ int main (int argc, char **argv)
char *point_to = NULL;
char *to_point = NULL;
char *target;
char *protocol = NULL;
int protnum;
struct sockaddr t_laddr; /* Source address of tunnel */
struct sockaddr whereto; /* Destination of tunnel */
@ -244,7 +253,7 @@ int main (int argc, char **argv)
int nfds; /* Return from select() */
while ((c = getopt(argc, argv, "d:s:t:")) != -1) {
while ((c = getopt(argc, argv, "d:s:t:p:")) != -1) {
switch (c) {
case 'd':
to_point = optarg;
@ -255,6 +264,9 @@ int main (int argc, char **argv)
case 't':
devname = optarg;
break;
case 'p':
protocol = optarg;
break;
}
}
argc -= optind;
@ -265,6 +277,11 @@ int main (int argc, char **argv)
usage();
}
if(protocol == NULL)
protnum = 94;
else
protnum = atoi(protocol);
target = *argv;
/* Establish logging through 'syslog' */
@ -284,7 +301,7 @@ int main (int argc, char **argv)
if(Set_address(target, to))
Finish(4);
if ((net = socket(AF_INET, SOCK_RAW, 94)) < 0) {
if ((net = socket(AF_INET, SOCK_RAW, protnum)) < 0) {
syslog(LOG_ERR,"can't open socket - %m");
Finish(5);
}
@ -348,7 +365,7 @@ static void
usage()
{
fprintf(stderr,
"usage: nos_tun -t <tun_name> -s <source_addr> -d <dest_addr> <target_addr>\n");
"usage: nos_tun -t <tun_name> -s <source_addr> -d <dest_addr> -p <protocol_number> <target_addr>\n");
exit(1);
}