aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_output.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-03-10 04:30:37 -0400
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-03-24 21:23:59 -0400
commitc8cdaf998df221b01134a051aba38c570105061b (patch)
tree1335a3a0b377621f1c38adbdade34abd6b621c94 /net/ipv6/ip6_output.c
parenta9b05723ffa2e427b0257b81ea74363fcd7c304f (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.c12
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;