|
@@ -1154,7 +1154,8 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
|
|
|
return;
|
|
|
|
|
|
if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev)
|
|
|
- || MULTICAST(new_gw) || BADCLASS(new_gw) || ZERONET(new_gw))
|
|
|
+ || ipv4_is_multicast(new_gw) || ipv4_is_badclass(new_gw)
|
|
|
+ || ipv4_is_zeronet(new_gw))
|
|
|
goto reject_redirect;
|
|
|
|
|
|
if (!IN_DEV_SHARED_MEDIA(in_dev)) {
|
|
@@ -1633,12 +1634,12 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
if (in_dev == NULL)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (MULTICAST(saddr) || BADCLASS(saddr) || LOOPBACK(saddr) ||
|
|
|
- skb->protocol != htons(ETH_P_IP))
|
|
|
+ if (ipv4_is_multicast(saddr) || ipv4_is_badclass(saddr) ||
|
|
|
+ ipv4_is_loopback(saddr) || skb->protocol != htons(ETH_P_IP))
|
|
|
goto e_inval;
|
|
|
|
|
|
- if (ZERONET(saddr)) {
|
|
|
- if (!LOCAL_MCAST(daddr))
|
|
|
+ if (ipv4_is_zeronet(saddr)) {
|
|
|
+ if (!ipv4_is_local_multicast(daddr))
|
|
|
goto e_inval;
|
|
|
spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
|
|
|
} else if (fib_validate_source(saddr, 0, tos, 0,
|
|
@@ -1680,7 +1681,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_IP_MROUTE
|
|
|
- if (!LOCAL_MCAST(daddr) && IN_DEV_MFORWARD(in_dev))
|
|
|
+ if (!ipv4_is_local_multicast(daddr) && IN_DEV_MFORWARD(in_dev))
|
|
|
rth->u.dst.input = ip_mr_input;
|
|
|
#endif
|
|
|
RT_CACHE_STAT_INC(in_slow_mc);
|
|
@@ -1890,7 +1891,8 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
by fib_lookup.
|
|
|
*/
|
|
|
|
|
|
- if (MULTICAST(saddr) || BADCLASS(saddr) || LOOPBACK(saddr))
|
|
|
+ if (ipv4_is_multicast(saddr) || ipv4_is_badclass(saddr) ||
|
|
|
+ ipv4_is_loopback(saddr))
|
|
|
goto martian_source;
|
|
|
|
|
|
if (daddr == htonl(0xFFFFFFFF) || (saddr == 0 && daddr == 0))
|
|
@@ -1899,10 +1901,11 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
/* Accept zero addresses only to limited broadcast;
|
|
|
* I even do not know to fix it or not. Waiting for complains :-)
|
|
|
*/
|
|
|
- if (ZERONET(saddr))
|
|
|
+ if (ipv4_is_zeronet(saddr))
|
|
|
goto martian_source;
|
|
|
|
|
|
- if (BADCLASS(daddr) || ZERONET(daddr) || LOOPBACK(daddr))
|
|
|
+ if (ipv4_is_badclass(daddr) || ipv4_is_zeronet(daddr) ||
|
|
|
+ ipv4_is_loopback(daddr))
|
|
|
goto martian_destination;
|
|
|
|
|
|
/*
|
|
@@ -1949,7 +1952,7 @@ brd_input:
|
|
|
if (skb->protocol != htons(ETH_P_IP))
|
|
|
goto e_inval;
|
|
|
|
|
|
- if (ZERONET(saddr))
|
|
|
+ if (ipv4_is_zeronet(saddr))
|
|
|
spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
|
|
|
else {
|
|
|
err = fib_validate_source(saddr, 0, tos, 0, dev, &spec_dst,
|
|
@@ -2079,7 +2082,7 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
Note, that multicast routers are not affected, because
|
|
|
route cache entry is created eventually.
|
|
|
*/
|
|
|
- if (MULTICAST(daddr)) {
|
|
|
+ if (ipv4_is_multicast(daddr)) {
|
|
|
struct in_device *in_dev;
|
|
|
|
|
|
rcu_read_lock();
|
|
@@ -2088,7 +2091,8 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
ip_hdr(skb)->protocol);
|
|
|
if (our
|
|
|
#ifdef CONFIG_IP_MROUTE
|
|
|
- || (!LOCAL_MCAST(daddr) && IN_DEV_MFORWARD(in_dev))
|
|
|
+ || (!ipv4_is_local_multicast(daddr) &&
|
|
|
+ IN_DEV_MFORWARD(in_dev))
|
|
|
#endif
|
|
|
) {
|
|
|
rcu_read_unlock();
|
|
@@ -2114,14 +2118,14 @@ static inline int __mkroute_output(struct rtable **result,
|
|
|
u32 tos = RT_FL_TOS(oldflp);
|
|
|
int err = 0;
|
|
|
|
|
|
- if (LOOPBACK(fl->fl4_src) && !(dev_out->flags&IFF_LOOPBACK))
|
|
|
+ if (ipv4_is_loopback(fl->fl4_src) && !(dev_out->flags&IFF_LOOPBACK))
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (fl->fl4_dst == htonl(0xFFFFFFFF))
|
|
|
res->type = RTN_BROADCAST;
|
|
|
- else if (MULTICAST(fl->fl4_dst))
|
|
|
+ else if (ipv4_is_multicast(fl->fl4_dst))
|
|
|
res->type = RTN_MULTICAST;
|
|
|
- else if (BADCLASS(fl->fl4_dst) || ZERONET(fl->fl4_dst))
|
|
|
+ else if (ipv4_is_badclass(fl->fl4_dst) || ipv4_is_zeronet(fl->fl4_dst))
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (dev_out->flags & IFF_LOOPBACK)
|
|
@@ -2201,7 +2205,7 @@ static inline int __mkroute_output(struct rtable **result,
|
|
|
#ifdef CONFIG_IP_MROUTE
|
|
|
if (res->type == RTN_MULTICAST) {
|
|
|
if (IN_DEV_MFORWARD(in_dev) &&
|
|
|
- !LOCAL_MCAST(oldflp->fl4_dst)) {
|
|
|
+ !ipv4_is_local_multicast(oldflp->fl4_dst)) {
|
|
|
rth->u.dst.input = ip_mr_input;
|
|
|
rth->u.dst.output = ip_mc_output;
|
|
|
}
|
|
@@ -2271,9 +2275,9 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
|
|
|
|
|
if (oldflp->fl4_src) {
|
|
|
err = -EINVAL;
|
|
|
- if (MULTICAST(oldflp->fl4_src) ||
|
|
|
- BADCLASS(oldflp->fl4_src) ||
|
|
|
- ZERONET(oldflp->fl4_src))
|
|
|
+ if (ipv4_is_multicast(oldflp->fl4_src) ||
|
|
|
+ ipv4_is_badclass(oldflp->fl4_src) ||
|
|
|
+ ipv4_is_zeronet(oldflp->fl4_src))
|
|
|
goto out;
|
|
|
|
|
|
/* It is equivalent to inet_addr_type(saddr) == RTN_LOCAL */
|
|
@@ -2290,7 +2294,8 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
|
|
*/
|
|
|
|
|
|
if (oldflp->oif == 0
|
|
|
- && (MULTICAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF))) {
|
|
|
+ && (ipv4_is_multicast(oldflp->fl4_dst) ||
|
|
|
+ oldflp->fl4_dst == htonl(0xFFFFFFFF))) {
|
|
|
/* Special hack: user can direct multicasts
|
|
|
and limited broadcast via necessary interface
|
|
|
without fiddling with IP_MULTICAST_IF or IP_PKTINFO.
|
|
@@ -2327,14 +2332,15 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
|
|
goto out; /* Wrong error code */
|
|
|
}
|
|
|
|
|
|
- if (LOCAL_MCAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF)) {
|
|
|
+ if (ipv4_is_local_multicast(oldflp->fl4_dst) ||
|
|
|
+ oldflp->fl4_dst == htonl(0xFFFFFFFF)) {
|
|
|
if (!fl.fl4_src)
|
|
|
fl.fl4_src = inet_select_addr(dev_out, 0,
|
|
|
RT_SCOPE_LINK);
|
|
|
goto make_route;
|
|
|
}
|
|
|
if (!fl.fl4_src) {
|
|
|
- if (MULTICAST(oldflp->fl4_dst))
|
|
|
+ if (ipv4_is_multicast(oldflp->fl4_dst))
|
|
|
fl.fl4_src = inet_select_addr(dev_out, 0,
|
|
|
fl.fl4_scope);
|
|
|
else if (!oldflp->fl4_dst)
|
|
@@ -2618,7 +2624,7 @@ static int rt_fill_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
|
|
|
#ifdef CONFIG_IP_MROUTE
|
|
|
__be32 dst = rt->rt_dst;
|
|
|
|
|
|
- if (MULTICAST(dst) && !LOCAL_MCAST(dst) &&
|
|
|
+ if (ipv4_is_multicast(dst) && !ipv4_is_local_multicast(dst) &&
|
|
|
IPV4_DEVCONF_ALL(&init_net, MC_FORWARDING)) {
|
|
|
int err = ipmr_get_route(skb, r, nowait);
|
|
|
if (err <= 0) {
|