Skip to contentSkip to conversation

ipv6: Use ip6_route_output() instead of icmp6_dst_alloc().

PATCH In review YOSHIFUJI Hideaki 1 participant 1 message Jan 15, 2013

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 11/13 ipv6: Use ip6_route_output() instead of icmp6_dst_alloc().

---
 net/ipv6/mcast.c |    5 ++---
 net/ipv6/ndisc.c |    3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)
net/ipv6/mcast.c +2 -3
index 8237ee1..e041c39 100644
@@ -1391,9 +1391,8 @@ static void mld_sendpack(struct sk_buff *skb)
 	icmpv6_flow_init(net->ipv6.igmp_sk, &fl6, ICMPV6_MLD2_REPORT,
 			 &ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr,
 			 skb->dev->ifindex);
-	dst = icmp6_dst_alloc(skb->dev, NULL, &fl6);
-
 	err = 0;
+	dst = ip6_route_output(net, net->ipv6.igmp_sk, &fl6);
 	if (IS_ERR(dst)) {
 		err = PTR_ERR(dst);
 		dst = NULL;
@@ -1759,7 +1758,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
 	icmpv6_flow_init(sk, &fl6, type,
 			 &ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr,
 			 skb->dev->ifindex);
-	dst = icmp6_dst_alloc(skb->dev, NULL, &fl6);
+	dst = ip6_route_output(net, sk, &fl6);
 	if (IS_ERR(dst)) {
 		err = PTR_ERR(dst);
 		goto err_out;
net/ipv6/ndisc.c +2 -1
index 5733cd2..f19fe55 100644
@@ -448,7 +448,8 @@ static void ndisc_send_skb(struct sk_buff *skb, struct net_device *dev,
 	type = icmp6h->icmp6_type;
 
 	icmpv6_flow_init(sk, &fl6, type, saddr, daddr, dev->ifindex);
-	dst = icmp6_dst_alloc(dev, neigh, &fl6);
+
+	dst = ip6_route_output(net, sk, &fl6);
 	if (IS_ERR(dst)) {
 		kfree_skb(skb);
 		return;
Signature · 1 line
1.7.9.5