[IPV6]: Always copy rt->u.dst.error when copying a rt6_info.
authorVille Nuorvala <vnuorval@tcs.hut.fi>
Tue, 17 Oct 2006 05:14:26 +0000 (22:14 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 19 Oct 2006 02:55:30 +0000 (19:55 -0700)
Signed-off-by: Ville Nuorvala <vnuorval@tcs.hut.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index 263c057d17c6d96fad3d15e2a7990633ec96f6b7..aa96be860e969aa223b22a1704c9f69b73af0dee 100644 (file)
@@ -618,8 +618,6 @@ static struct rt6_info *rt6_alloc_clone(struct rt6_info *ort, struct in6_addr *d
                ipv6_addr_copy(&rt->rt6i_dst.addr, daddr);
                rt->rt6i_dst.plen = 128;
                rt->rt6i_flags |= RTF_CACHE;
-               if (rt->rt6i_flags & RTF_REJECT)
-                       rt->u.dst.error = ort->u.dst.error;
                rt->u.dst.flags |= DST_HOST;
                rt->rt6i_nexthop = neigh_clone(ort->rt6i_nexthop);
        }
@@ -1540,6 +1538,7 @@ static struct rt6_info * ip6_rt_copy(struct rt6_info *ort)
                rt->u.dst.output = ort->u.dst.output;
 
                memcpy(rt->u.dst.metrics, ort->u.dst.metrics, RTAX_MAX*sizeof(u32));
+               rt->u.dst.error = ort->u.dst.error;
                rt->u.dst.dev = ort->u.dst.dev;
                if (rt->u.dst.dev)
                        dev_hold(rt->u.dst.dev);