From: Brian Haley <Brian.Haley@hp.com>
To: yoshfuji@linux-ipv6.org
Cc: davem@davemloft.net, netdev@oss.sgi.com, kazunori@miyazawa.org
Subject: Re: [PATCH, TAKE 2] [IPV6] XFRM: extract xfrm_lookup() from ip6_dst_lookup() (is Re: [PATCH][IPv6] separation xfrm_lookup from ip6_dst_lookup)
Date: Mon, 25 Oct 2004 17:27:44 -0400 [thread overview]
Message-ID: <417D6FD0.7010903@hp.com> (raw)
In-Reply-To: <20040828.014935.131415609.yoshfuji@linux-ipv6.org>
[-- Attachment #1: Type: text/plain, Size: 539 bytes --]
YOSHIFUJI Hideaki / 吉藤英明 wrote:
> Here's the updated patch.
<snip>
Hi,
I finally tracked-down the patch that fixed the IPv6 routing header
problems I'd been seeing :) But I think you missed one code path from
the original patch Kazunori posted in tcp_v6_xmit(), which I think is
only called from the ND code.
Attached is a patch that fixes that and also brings the rt0_hdr struct
in-line with RFC 3542 by removing the "bitmap" field.
Thanks,
-Brian
--
Brian Haley, HP Linux and Open Source Lab
[-- Attachment #2: rt0.diffs --]
[-- Type: text/plain, Size: 2800 bytes --]
Signed-off-by: Brian.Haley@hp.com
--- linux-2.6.9.orig/include/linux/ipv6.h 2004-10-18 17:54:39.000000000 -0400
+++ linux-2.6.9.rt0/include/linux/ipv6.h 2004-10-22 17:15:52.000000000 -0400
@@ -68,7 +68,7 @@
struct rt0_hdr {
struct ipv6_rt_hdr rt_hdr;
- __u32 bitmap; /* strict/loose bit map */
+ __u32 reserved;
struct in6_addr addr[0];
#define rt0_type rt_hdr.type
--- linux-2.6.9.orig/net/ipv6/netfilter/ip6t_rt.c 2004-10-22 16:09:32.000000000 -0400
+++ linux-2.6.9.rt0/net/ipv6/netfilter/ip6t_rt.c 2004-10-22 17:14:55.410800617 -0400
@@ -159,8 +159,8 @@
((rtinfo->hdrlen == hdrlen) ^
!!(rtinfo->invflags & IP6T_RT_INV_LEN))));
DEBUGP("res %02X %02X %02X ",
- (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)route)->bitmap,
- !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)route)->bitmap)));
+ (rtinfo->flags & IP6T_RT_RES), ((struct rt0_hdr *)route)->reserved,
+ !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)route)->reserved)));
ret = (route != NULL)
&&
@@ -176,7 +176,7 @@
((rtinfo->rt_type == route->type) ^
!!(rtinfo->invflags & IP6T_RT_INV_TYP)))
&&
- !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)route)->bitmap));
+ !((rtinfo->flags & IP6T_RT_RES) && (((struct rt0_hdr *)route)->reserved));
DEBUGP("#%d ",rtinfo->addrnr);
temp = len = ptr = 0;
--- linux-2.6.9.orig/net/ipv6/tcp_ipv6.c 2004-10-18 17:54:32.000000000 -0400
+++ linux-2.6.9.rt0/net/ipv6/tcp_ipv6.c 2004-10-22 17:13:43.386387437 -0400
@@ -1802,6 +1802,7 @@
struct ipv6_pinfo *np = inet6_sk(sk);
struct flowi fl;
struct dst_entry *dst;
+ struct in6_addr *final_p = NULL, final;
memset(&fl, 0, sizeof(fl));
fl.proto = IPPROTO_TCP;
@@ -1815,7 +1816,9 @@
if (np->opt && np->opt->srcrt) {
struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
+ ipv6_addr_copy(&final, &fl.fl6_dst);
ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
+ final_p = &final;
}
dst = __sk_dst_check(sk, np->dst_cookie);
@@ -1828,6 +1831,9 @@
return err;
}
+ if (final_p)
+ ipv6_addr_copy(&fl.fl6_dst, final_p);
+
if ((err = xfrm_lookup(&dst, &fl, sk, 0)) < 0) {
sk->sk_route_caps = 0;
dst_release(dst);
--- linux-2.6.9.orig/net/ipv6/exthdrs.c 2004-10-18 17:53:07.000000000 -0400
+++ linux-2.6.9.rt0/net/ipv6/exthdrs.c 2004-10-22 17:14:12.413730831 -0400
@@ -404,8 +404,7 @@
memcpy(opt->srcrt, hdr, sizeof(*hdr));
irthdr = (struct rt0_hdr*)opt->srcrt;
- /* Obsolete field, MBZ, when originated by us */
- irthdr->bitmap = 0;
+ irthdr->reserved = 0;
opt->srcrt->segments_left = n;
for (i=0; i<n; i++)
memcpy(irthdr->addr+i, rthdr->addr+(n-1-i), 16);
next prev parent reply other threads:[~2004-10-25 21:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-30 8:12 [PATCH][IPv6] separation xfrm_lookup from ip6_dst_lookup Kazunori Miyazawa
2004-08-02 2:51 ` David S. Miller
2004-08-03 9:00 ` YOSHIFUJI Hideaki / 吉藤英明
2004-08-03 9:21 ` Kazunori Miyazawa
2004-08-09 23:35 ` David S. Miller
2004-08-10 1:38 ` YOSHIFUJI Hideaki / 吉藤英明
2004-08-27 16:49 ` [PATCH, TAKE 2] [IPV6] XFRM: extract xfrm_lookup() from ip6_dst_lookup() (is Re: [PATCH][IPv6] separation xfrm_lookup from ip6_dst_lookup) YOSHIFUJI Hideaki / 吉藤英明
2004-08-28 0:02 ` David S. Miller
2004-10-25 21:27 ` Brian Haley [this message]
2004-10-26 3:55 ` YOSHIFUJI Hideaki / 吉藤英明
2004-10-26 14:29 ` Brian Haley
2004-10-26 15:43 ` YOSHIFUJI Hideaki / 吉藤英明
2004-10-26 18:09 ` Brian Haley
2004-10-27 0:10 ` YOSHIFUJI Hideaki / 吉藤英明
2004-10-27 15:21 ` Brian Haley
2004-08-02 7:41 ` [PATCH][IPv6] separation xfrm_lookup from ip6_dst_lookup Herbert Xu
2004-08-03 2:09 ` David S. Miller
2004-08-03 8:19 ` YOSHIFUJI Hideaki / 吉藤英明
2004-08-03 10:55 ` Herbert Xu
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=417D6FD0.7010903@hp.com \
--to=brian.haley@hp.com \
--cc=davem@davemloft.net \
--cc=kazunori@miyazawa.org \
--cc=netdev@oss.sgi.com \
--cc=yoshfuji@linux-ipv6.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.