diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-03-10 04:30:37 -0400 |
---|---|---|
committer | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-03-24 21:23:59 -0400 |
commit | c8cdaf998df221b01134a051aba38c570105061b (patch) | |
tree | 1335a3a0b377621f1c38adbdade34abd6b621c94 /net/ipv6/ip6_output.c | |
parent | a9b05723ffa2e427b0257b81ea74363fcd7c304f (diff) |
[IPV4,IPV6]: Share cork.rt between IPv4 and IPv6.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 98762fde2b65..ed6482667a25 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1115,7 +1115,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1115 | /* need source address above miyazawa*/ | 1115 | /* need source address above miyazawa*/ |
1116 | } | 1116 | } |
1117 | dst_hold(&rt->u.dst); | 1117 | dst_hold(&rt->u.dst); |
1118 | np->cork.rt = rt; | 1118 | inet->cork.dst = &rt->u.dst; |
1119 | inet->cork.fl = *fl; | 1119 | inet->cork.fl = *fl; |
1120 | np->cork.hop_limit = hlimit; | 1120 | np->cork.hop_limit = hlimit; |
1121 | np->cork.tclass = tclass; | 1121 | np->cork.tclass = tclass; |
@@ -1136,7 +1136,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
1136 | length += exthdrlen; | 1136 | length += exthdrlen; |
1137 | transhdrlen += exthdrlen; | 1137 | transhdrlen += exthdrlen; |
1138 | } else { | 1138 | } else { |
1139 | rt = np->cork.rt; | 1139 | rt = (struct rt6_info *)inet->cork.dst; |
1140 | fl = &inet->cork.fl; | 1140 | fl = &inet->cork.fl; |
1141 | if (inet->cork.flags & IPCORK_OPT) | 1141 | if (inet->cork.flags & IPCORK_OPT) |
1142 | opt = np->cork.opt; | 1142 | opt = np->cork.opt; |
@@ -1381,9 +1381,9 @@ static void ip6_cork_release(struct inet_sock *inet, struct ipv6_pinfo *np) | |||
1381 | inet->cork.flags &= ~IPCORK_OPT; | 1381 | inet->cork.flags &= ~IPCORK_OPT; |
1382 | kfree(np->cork.opt); | 1382 | kfree(np->cork.opt); |
1383 | np->cork.opt = NULL; | 1383 | np->cork.opt = NULL; |
1384 | if (np->cork.rt) { | 1384 | if (inet->cork.dst) { |
1385 | dst_release(&np->cork.rt->u.dst); | 1385 | dst_release(inet->cork.dst); |
1386 | np->cork.rt = NULL; | 1386 | inet->cork.dst = NULL; |
1387 | inet->cork.flags &= ~IPCORK_ALLFRAG; | 1387 | inet->cork.flags &= ~IPCORK_ALLFRAG; |
1388 | } | 1388 | } |
1389 | memset(&inet->cork.fl, 0, sizeof(inet->cork.fl)); | 1389 | memset(&inet->cork.fl, 0, sizeof(inet->cork.fl)); |
@@ -1398,7 +1398,7 @@ int ip6_push_pending_frames(struct sock *sk) | |||
1398 | struct ipv6_pinfo *np = inet6_sk(sk); | 1398 | struct ipv6_pinfo *np = inet6_sk(sk); |
1399 | struct ipv6hdr *hdr; | 1399 | struct ipv6hdr *hdr; |
1400 | struct ipv6_txoptions *opt = np->cork.opt; | 1400 | struct ipv6_txoptions *opt = np->cork.opt; |
1401 | struct rt6_info *rt = np->cork.rt; | 1401 | struct rt6_info *rt = (struct rt6_info *)inet->cork.dst; |
1402 | struct flowi *fl = &inet->cork.fl; | 1402 | struct flowi *fl = &inet->cork.fl; |
1403 | unsigned char proto = fl->proto; | 1403 | unsigned char proto = fl->proto; |
1404 | int err = 0; | 1404 | int err = 0; |