@@ -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;
@@ -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;
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> --- net/ipv6/mcast.c | 5 ++--- net/ipv6/ndisc.c | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-)