Commit 4c7e622d authored by David S. Miller's avatar David S. Miller

Merge branch 'ipv4-routing-cleanups'

Alexander Duyck says:

====================
Minor IPv4 routing cleanups

These patches just contain some minor cleanups to address a few minor
issues.  The first and the third mostly just improve readability.  The
second patch should improve the performance for multicast destination
addresses that do not have a localhost source IP address by avoiding some
unnecessary dereferences.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 0f50c10d 0d753960
...@@ -110,7 +110,7 @@ struct ip_mc_list { ...@@ -110,7 +110,7 @@ struct ip_mc_list {
#define IGMPV3_QQIC(value) IGMPV3_EXP(0x80, 4, 3, value) #define IGMPV3_QQIC(value) IGMPV3_EXP(0x80, 4, 3, value)
#define IGMPV3_MRC(value) IGMPV3_EXP(0x80, 4, 3, value) #define IGMPV3_MRC(value) IGMPV3_EXP(0x80, 4, 3, value)
extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto); extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u8 proto);
extern int igmp_rcv(struct sk_buff *); extern int igmp_rcv(struct sk_buff *);
extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr); extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr); extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr);
......
...@@ -2569,7 +2569,7 @@ void ip_mc_drop_socket(struct sock *sk) ...@@ -2569,7 +2569,7 @@ void ip_mc_drop_socket(struct sock *sk)
} }
/* called with rcu_read_lock() */ /* called with rcu_read_lock() */
int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u16 proto) int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u8 proto)
{ {
struct ip_mc_list *im; struct ip_mc_list *im;
struct ip_mc_list __rcu **mc_hash; struct ip_mc_list __rcu **mc_hash;
......
...@@ -1487,9 +1487,8 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr, ...@@ -1487,9 +1487,8 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
skb->protocol != htons(ETH_P_IP)) skb->protocol != htons(ETH_P_IP))
goto e_inval; goto e_inval;
if (likely(!IN_DEV_ROUTE_LOCALNET(in_dev))) if (ipv4_is_loopback(saddr) && !IN_DEV_ROUTE_LOCALNET(in_dev))
if (ipv4_is_loopback(saddr)) goto e_inval;
goto e_inval;
if (ipv4_is_zeronet(saddr)) { if (ipv4_is_zeronet(saddr)) {
if (!ipv4_is_local_multicast(daddr)) if (!ipv4_is_local_multicast(daddr))
...@@ -1760,7 +1759,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr, ...@@ -1760,7 +1759,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
err = fib_validate_source(skb, saddr, daddr, tos, err = fib_validate_source(skb, saddr, daddr, tos,
0, dev, in_dev, &itag); 0, dev, in_dev, &itag);
if (err < 0) if (err < 0)
goto martian_source_keep_err; goto martian_source;
goto local_input; goto local_input;
} }
...@@ -1782,7 +1781,7 @@ out: return err; ...@@ -1782,7 +1781,7 @@ out: return err;
err = fib_validate_source(skb, saddr, 0, tos, 0, dev, err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
in_dev, &itag); in_dev, &itag);
if (err < 0) if (err < 0)
goto martian_source_keep_err; goto martian_source;
} }
flags |= RTCF_BROADCAST; flags |= RTCF_BROADCAST;
res.type = RTN_BROADCAST; res.type = RTN_BROADCAST;
...@@ -1858,8 +1857,6 @@ out: return err; ...@@ -1858,8 +1857,6 @@ out: return err;
goto out; goto out;
martian_source: martian_source:
err = -EINVAL;
martian_source_keep_err:
ip_handle_martian_source(dev, in_dev, skb, daddr, saddr); ip_handle_martian_source(dev, in_dev, skb, daddr, saddr);
goto out; goto out;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment