diff options
Diffstat (limited to 'net/ipv6/ndisc.c')
| -rw-r--r-- | net/ipv6/ndisc.c | 16 | 
1 files changed, 5 insertions, 11 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 7596f071d30..9da6e02eaae 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -107,8 +107,6 @@ static const struct neigh_ops ndisc_generic_ops = {  	.error_report =		ndisc_error_report,  	.output =		neigh_resolve_output,  	.connected_output =	neigh_connected_output, -	.hh_output =		dev_queue_xmit, -	.queue_xmit =		dev_queue_xmit,  };  static const struct neigh_ops ndisc_hh_ops = { @@ -117,17 +115,13 @@ static const struct neigh_ops ndisc_hh_ops = {  	.error_report =		ndisc_error_report,  	.output =		neigh_resolve_output,  	.connected_output =	neigh_resolve_output, -	.hh_output =		dev_queue_xmit, -	.queue_xmit =		dev_queue_xmit,  };  static const struct neigh_ops ndisc_direct_ops = {  	.family =		AF_INET6, -	.output =		dev_queue_xmit, -	.connected_output =	dev_queue_xmit, -	.hh_output =		dev_queue_xmit, -	.queue_xmit =		dev_queue_xmit, +	.output =		neigh_direct_output, +	.connected_output =	neigh_direct_output,  };  struct neigh_table nd_tbl = { @@ -392,7 +386,7 @@ static int ndisc_constructor(struct neighbour *neigh)  	if (!dev->header_ops) {  		neigh->nud_state = NUD_NOARP;  		neigh->ops = &ndisc_direct_ops; -		neigh->output = neigh->ops->queue_xmit; +		neigh->output = neigh_direct_output;  	} else {  		if (is_multicast) {  			neigh->nud_state = NUD_NOARP; @@ -1244,7 +1238,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)  	rt = rt6_get_dflt_router(&ipv6_hdr(skb)->saddr, skb->dev);  	if (rt) -		neigh = rt->rt6i_nexthop; +		neigh = dst_get_neighbour(&rt->dst);  	if (rt && lifetime == 0) {  		neigh_clone(neigh); @@ -1265,7 +1259,7 @@ static void ndisc_router_discovery(struct sk_buff *skb)  			return;  		} -		neigh = rt->rt6i_nexthop; +		neigh = dst_get_neighbour(&rt->dst);  		if (neigh == NULL) {  			ND_PRINTK0(KERN_ERR  				   "ICMPv6 RA: %s() got default router without neighbour.\n",  |