patch-2.1.15 linux/net/ipv6/ipv6_route.c
Next file: linux/net/ipv6/ipv6_sockglue.c
Previous file: linux/net/ipv6/ipv6_output.c
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Thu Dec 12 16:54:25 1996
- Orig file:
v2.1.14/linux/net/ipv6/ipv6_route.c
- Orig date:
Thu Dec 12 17:02:47 1996
diff -u --recursive --new-file v2.1.14/linux/net/ipv6/ipv6_route.c linux/net/ipv6/ipv6_route.c
@@ -1233,7 +1233,7 @@
if (dc->dc_nexthop)
{
- ndisc_dec_neigh(dc->dc_nexthop);
+ neighbour_unlock(dc->dc_nexthop);
}
if (dc->dc_flags & RTI_DCACHE)
@@ -1406,14 +1406,16 @@
if (rt->rt_nexthop)
{
- if (ipv6_addr_cmp(&rt->rt_nexthop->addr, target) == 0)
+ struct nd_neigh *ndn = (struct nd_neigh *) rt->rt_nexthop;
+
+ if (ipv6_addr_cmp(&ndn->ndn_addr, target) == 0)
{
- atomic_inc(&rt->rt_nexthop->refcnt);
+ rt->rt_nexthop = neighbour_clone(rt->rt_nexthop);
goto exit;
}
else
{
- ndisc_dec_neigh(rt->rt_nexthop);
+ neighbour_unlock(rt->rt_nexthop);
}
}
@@ -1688,8 +1690,6 @@
if (skb == NULL)
return;
- skb->free = 1;
-
memcpy(skb_put(skb, sizeof(struct in6_rtmsg)), &rtmsg,
sizeof(struct in6_rtmsg));
@@ -1848,8 +1848,11 @@
{
for (i=0; i<16; i++)
{
+ struct nd_neigh *ndn;
+
+ ndn = (struct nd_neigh *) rt->rt_nexthop;
sprintf(arg->buffer + arg->len, "%02x",
- rt->rt_nexthop->addr.s6_addr[i]);
+ ndn->ndn_addr.s6_addr[i]);
arg->len += 2;
}
}
@@ -2011,7 +2014,6 @@
if (skb == NULL)
return;
- skb->free = 1;
msg = (struct in6_rtmsg *) skb_put(skb, sizeof(struct in6_rtmsg));
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov