diff options
author | David S. Miller <davem@davemloft.net> | 2011-05-03 23:25:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-03 23:25:42 -0400 |
commit | 31e4543db29fb85496a122b965d6482c8d1a2bfe (patch) | |
tree | 3e49d61a1202e1b3c8c71e422f3fd8e4f2616d01 /net/ipv4/igmp.c | |
parent | f1390160ddcd64a3cfd48b3280d0a616a31b9520 (diff) |
ipv4: Make caller provide on-stack flow key to ip_route_output_ports().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/igmp.c')
-rw-r--r-- | net/ipv4/igmp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 8ae0a5702f56..7c2ef59e3f7d 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c | |||
@@ -309,6 +309,7 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, int size) | |||
309 | struct iphdr *pip; | 309 | struct iphdr *pip; |
310 | struct igmpv3_report *pig; | 310 | struct igmpv3_report *pig; |
311 | struct net *net = dev_net(dev); | 311 | struct net *net = dev_net(dev); |
312 | struct flowi4 fl4; | ||
312 | 313 | ||
313 | while (1) { | 314 | while (1) { |
314 | skb = alloc_skb(size + LL_ALLOCATED_SPACE(dev), | 315 | skb = alloc_skb(size + LL_ALLOCATED_SPACE(dev), |
@@ -321,7 +322,7 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, int size) | |||
321 | } | 322 | } |
322 | igmp_skb_size(skb) = size; | 323 | igmp_skb_size(skb) = size; |
323 | 324 | ||
324 | rt = ip_route_output_ports(net, NULL, IGMPV3_ALL_MCR, 0, | 325 | rt = ip_route_output_ports(net, &fl4, NULL, IGMPV3_ALL_MCR, 0, |
325 | 0, 0, | 326 | 0, 0, |
326 | IPPROTO_IGMP, 0, dev->ifindex); | 327 | IPPROTO_IGMP, 0, dev->ifindex); |
327 | if (IS_ERR(rt)) { | 328 | if (IS_ERR(rt)) { |
@@ -650,6 +651,7 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc, | |||
650 | struct net_device *dev = in_dev->dev; | 651 | struct net_device *dev = in_dev->dev; |
651 | struct net *net = dev_net(dev); | 652 | struct net *net = dev_net(dev); |
652 | __be32 group = pmc ? pmc->multiaddr : 0; | 653 | __be32 group = pmc ? pmc->multiaddr : 0; |
654 | struct flowi4 fl4; | ||
653 | __be32 dst; | 655 | __be32 dst; |
654 | 656 | ||
655 | if (type == IGMPV3_HOST_MEMBERSHIP_REPORT) | 657 | if (type == IGMPV3_HOST_MEMBERSHIP_REPORT) |
@@ -659,7 +661,7 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc, | |||
659 | else | 661 | else |
660 | dst = group; | 662 | dst = group; |
661 | 663 | ||
662 | rt = ip_route_output_ports(net, NULL, dst, 0, | 664 | rt = ip_route_output_ports(net, &fl4, NULL, dst, 0, |
663 | 0, 0, | 665 | 0, 0, |
664 | IPPROTO_IGMP, 0, dev->ifindex); | 666 | IPPROTO_IGMP, 0, dev->ifindex); |
665 | if (IS_ERR(rt)) | 667 | if (IS_ERR(rt)) |