diff options
author | David S. Miller <davem@davemloft.net> | 2011-04-26 16:57:47 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-27 16:59:05 -0400 |
commit | 2e97e980b5653c23d01c911af6a0ab2d3431d7f1 (patch) | |
tree | 03993cc582cc2ed1488aac7223205a11753d60df /net/ipv4/igmp.c | |
parent | 2d7192d6cbab20e153c47fa1559ffd41ceef0e79 (diff) |
ipv4: Remove erroneous check in igmpv3_newpack() and igmp_send_report().
Output route resolution never returns a route with rt_src set to zero
(which is INADDR_ANY).
Even if the flow key for the output route lookup specifies INADDR_ANY
for the source address, the output route resolution chooses a real
source address to use in the final route.
This test has existed forever in igmp_send_report() and David Stevens
simply copied over the erroneous test when implementing support for
IGMPv3.
Signed-off-by: David S. Miller <davem@davemloft.net>
Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
Diffstat (limited to 'net/ipv4/igmp.c')
-rw-r--r-- | net/ipv4/igmp.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 1fd3d9ce8398..8ae0a5702f56 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c | |||
@@ -328,11 +328,6 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, int size) | |||
328 | kfree_skb(skb); | 328 | kfree_skb(skb); |
329 | return NULL; | 329 | return NULL; |
330 | } | 330 | } |
331 | if (rt->rt_src == 0) { | ||
332 | kfree_skb(skb); | ||
333 | ip_rt_put(rt); | ||
334 | return NULL; | ||
335 | } | ||
336 | 331 | ||
337 | skb_dst_set(skb, &rt->dst); | 332 | skb_dst_set(skb, &rt->dst); |
338 | skb->dev = dev; | 333 | skb->dev = dev; |
@@ -670,11 +665,6 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc, | |||
670 | if (IS_ERR(rt)) | 665 | if (IS_ERR(rt)) |
671 | return -1; | 666 | return -1; |
672 | 667 | ||
673 | if (rt->rt_src == 0) { | ||
674 | ip_rt_put(rt); | ||
675 | return -1; | ||
676 | } | ||
677 | |||
678 | skb = alloc_skb(IGMP_SIZE+LL_ALLOCATED_SPACE(dev), GFP_ATOMIC); | 668 | skb = alloc_skb(IGMP_SIZE+LL_ALLOCATED_SPACE(dev), GFP_ATOMIC); |
679 | if (skb == NULL) { | 669 | if (skb == NULL) { |
680 | ip_rt_put(rt); | 670 | ip_rt_put(rt); |