From: osprey67 <osprey67@yahoo.com>
To: netdev@vger.kernel.org
Subject: [PATCH 01/01] iproute2-2.6.23: RFC4214 Support (4)
Date: Mon, 12 Nov 2007 07:57:52 -0800 [thread overview]
Message-ID: <47387800.3080200@yahoo.com> (raw)
In-Reply-To: <4734FE8D.5070107@yahoo.com>
From: Fred L. Templin <fred.l.templin@boeing.com>
This is experimental support for the Intra-Site Automatic
Tunnel Addressing Protocol (ISATAP) per RFC4214. It uses
the SIT module, and is configured using the unmodified
"ip" utility with device names beginning with: "isatap".
The following diffs are specific to the iproute2-2.6.23
software distribution. The diff text file itself is also
attached and should be suitable for use with the patch
utility.
Signed-off-by: Fred L. Templin <fred.l.templin@boeing.com>
---
--- iproute2-2.6.23/ip/iptunnel.c.orig 2007-11-08 16:27:24.000000000 -0800
+++ iproute2-2.6.23/ip/iptunnel.c 2007-11-12 06:53:38.000000000 -0800
@@ -39,7 +39,8 @@ static void usage(void) __attribute__((n
static void usage(void)
{
fprintf(stderr, "Usage: ip tunnel { add | change | del | show } [ NAME ]\n");
- fprintf(stderr, " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n");
+ fprintf(stderr, " [ mode { ipip | gre | sit | isatap } ]\n");
+ fprintf(stderr, " [ remote ADDR ] [ local ADDR ] [ router ADDR ] [ lifetime NUMBER ]\n");
fprintf(stderr, " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n");
fprintf(stderr, " [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]\n");
fprintf(stderr, "\n");
@@ -55,6 +56,9 @@ static int parse_args(int argc, char **a
{
int count = 0;
char medium[IFNAMSIZ];
+ int isatap = 0;
+ unsigned router = 0;
+ unsigned lifetime = 0;
memset(p, 0, sizeof(*p));
memset(&medium, 0, sizeof(medium));
@@ -90,6 +94,13 @@ static int parse_args(int argc, char **a
exit(-1);
}
p->iph.protocol = IPPROTO_IPV6;
+ } else if (strcmp(*argv, "isatap") == 0) {
+ if (p->iph.protocol && p->iph.protocol != IPPROTO_IPV6) {
+ fprintf(stderr,"You managed to ask for more than one tunnel mode.\n");
+ exit(-1);
+ }
+ p->iph.protocol = IPPROTO_IPV6;
+ isatap++;
} else {
fprintf(stderr,"Cannot guess tunnel mode.\n");
exit(-1);
@@ -160,6 +171,18 @@ static int parse_args(int argc, char **a
NEXT_ARG();
if (strcmp(*argv, "any"))
p->iph.saddr = get_addr32(*argv);
+ } else if (strcmp(*argv, "router") == 0) {
+ NEXT_ARG();
+ if (strcmp(*argv, "any"))
+ router = get_addr32(*argv);
+ } else if (strcmp(*argv, "lifetime") == 0) {
+ unsigned uval;
+ NEXT_ARG();
+ if (get_unsigned(&uval, *argv, 0)) {
+ invarg("invalid lifetime\n", *argv);
+ exit(-1);
+ }
+ lifetime = uval;
} else if (strcmp(*argv, "dev") == 0) {
NEXT_ARG();
strncpy(medium, *argv, IFNAMSIZ-1);
@@ -212,6 +235,10 @@ static int parse_args(int argc, char **a
p->iph.protocol = IPPROTO_IPIP;
else if (memcmp(p->name, "sit", 3) == 0)
p->iph.protocol = IPPROTO_IPV6;
+ else if (memcmp(p->name, "isatap", 6) == 0) {
+ p->iph.protocol = IPPROTO_IPV6;
+ isatap++;
+ }
}
if (p->iph.protocol == IPPROTO_IPIP || p->iph.protocol == IPPROTO_IPV6) {
@@ -239,6 +266,20 @@ static int parse_args(int argc, char **a
fprintf(stderr, "Broadcast tunnel requires a source address.\n");
return -1;
}
+ if (isatap) {
+ if (p->iph.daddr) {
+ fprintf(stderr, "no remote with isatap.\n");
+ return -1;
+ }
+ p->i_key = router ? router : INADDR_NONE;
+ p->o_key = lifetime ? lifetime : 120; /* RFC4214 default */
+ } else {
+ if (router || lifetime) {
+ fprintf(stderr, "router/lifetime only for isatap.\n");
+ return -1;
+ }
+ }
+
return 0;
}
next prev parent reply other threads:[~2007-11-12 18:22 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-08 20:29 [PATCH 01/05] ipv6: RFC4214 Support (2) osprey67
2007-11-10 0:34 ` [PATCH 01/05] ipv6: RFC4214 Support (3) osprey67
2007-11-10 0:35 ` [PATCH 02/05] " osprey67
2007-11-10 0:35 ` [PATCH 03/05] " osprey67
2007-11-10 0:35 ` [PATCH 04/05] " osprey67
2007-11-10 0:35 ` [PATCH 05/05] " osprey67
2007-11-10 0:42 ` [PATCH 01/01] iproute2-2.6.23: " osprey67
2007-11-10 1:04 ` Patrick McHardy
2007-11-12 15:57 ` osprey67 [this message]
2007-11-12 17:55 ` [PATCH 01/01] iproute2-2.6.23: RFC4214 Support (4) Templin, Fred L
2007-11-10 1:44 ` [PATCH 05/05] ipv6: RFC4214 Support (3) YOSHIFUJI Hideaki / 吉藤英明
2007-11-12 15:54 ` [PATCH 01/05] ipv6: RFC4214 Support (4) osprey67
2007-11-12 15:54 ` [PATCH 02/05] " osprey67
2007-11-12 15:54 ` [PATCH 03/05] " osprey67
2007-11-12 15:55 ` [PATCH 04/05] " osprey67
2007-11-12 15:55 ` [PATCH 05/05] " osprey67
2007-11-12 17:48 ` Templin, Fred L
2007-11-13 20:53 ` [PATCH 05/05] ipv6: RFC4214 Support (3) Stephen Hemminger
2007-11-14 5:05 ` David Miller
2007-11-14 5:11 ` Stephen Hemminger
2007-11-14 20:09 ` Vlad Yasevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47387800.3080200@yahoo.com \
--to=osprey67@yahoo.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.