diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/arp.c | 2 | ||||
-rw-r--r-- | net/ipv4/datagram.c | 2 | ||||
-rw-r--r-- | net/ipv4/devinet.c | 4 | ||||
-rw-r--r-- | net/ipv4/fib_frontend.c | 6 | ||||
-rw-r--r-- | net/ipv4/igmp.c | 12 | ||||
-rw-r--r-- | net/ipv4/ip_gre.c | 23 | ||||
-rw-r--r-- | net/ipv4/ipmr.c | 6 | ||||
-rw-r--r-- | net/ipv4/raw.c | 2 | ||||
-rw-r--r-- | net/ipv4/route.c | 52 | ||||
-rw-r--r-- | net/ipv4/udp.c | 2 |
10 files changed, 60 insertions, 51 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 1102fb3d8018..fdf12d1c350e 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c | |||
@@ -777,7 +777,7 @@ static int arp_process(struct sk_buff *skb) | |||
777 | * Check for bad requests for 127.x.x.x and requests for multicast | 777 | * Check for bad requests for 127.x.x.x and requests for multicast |
778 | * addresses. If this is one such, delete it. | 778 | * addresses. If this is one such, delete it. |
779 | */ | 779 | */ |
780 | if (LOOPBACK(tip) || MULTICAST(tip)) | 780 | if (ipv4_is_loopback(tip) || ipv4_is_multicast(tip)) |
781 | goto out; | 781 | goto out; |
782 | 782 | ||
783 | /* | 783 | /* |
diff --git a/net/ipv4/datagram.c b/net/ipv4/datagram.c index 0301dd468cf4..0c0c73f368ce 100644 --- a/net/ipv4/datagram.c +++ b/net/ipv4/datagram.c | |||
@@ -40,7 +40,7 @@ int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) | |||
40 | 40 | ||
41 | oif = sk->sk_bound_dev_if; | 41 | oif = sk->sk_bound_dev_if; |
42 | saddr = inet->saddr; | 42 | saddr = inet->saddr; |
43 | if (MULTICAST(usin->sin_addr.s_addr)) { | 43 | if (ipv4_is_multicast(usin->sin_addr.s_addr)) { |
44 | if (!oif) | 44 | if (!oif) |
45 | oif = inet->mc_index; | 45 | oif = inet->mc_index; |
46 | if (!saddr) | 46 | if (!saddr) |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 1f21f4a2df86..44cb252d2f61 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -404,7 +404,7 @@ static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa) | |||
404 | in_dev_hold(in_dev); | 404 | in_dev_hold(in_dev); |
405 | ifa->ifa_dev = in_dev; | 405 | ifa->ifa_dev = in_dev; |
406 | } | 406 | } |
407 | if (LOOPBACK(ifa->ifa_local)) | 407 | if (ipv4_is_loopback(ifa->ifa_local)) |
408 | ifa->ifa_scope = RT_SCOPE_HOST; | 408 | ifa->ifa_scope = RT_SCOPE_HOST; |
409 | return inet_insert_ifa(ifa); | 409 | return inet_insert_ifa(ifa); |
410 | } | 410 | } |
@@ -583,7 +583,7 @@ static __inline__ int inet_abc_len(__be32 addr) | |||
583 | { | 583 | { |
584 | int rc = -1; /* Something else, probably a multicast. */ | 584 | int rc = -1; /* Something else, probably a multicast. */ |
585 | 585 | ||
586 | if (ZERONET(addr)) | 586 | if (ipv4_is_zeronet(addr)) |
587 | rc = 0; | 587 | rc = 0; |
588 | else { | 588 | else { |
589 | __u32 haddr = ntohl(addr); | 589 | __u32 haddr = ntohl(addr); |
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index d90b42f3630c..ac6238a3b0fd 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -167,9 +167,9 @@ static inline unsigned __inet_dev_addr_type(const struct net_device *dev, | |||
167 | unsigned ret = RTN_BROADCAST; | 167 | unsigned ret = RTN_BROADCAST; |
168 | struct fib_table *local_table; | 168 | struct fib_table *local_table; |
169 | 169 | ||
170 | if (ZERONET(addr) || BADCLASS(addr)) | 170 | if (ipv4_is_zeronet(addr) || ipv4_is_badclass(addr)) |
171 | return RTN_BROADCAST; | 171 | return RTN_BROADCAST; |
172 | if (MULTICAST(addr)) | 172 | if (ipv4_is_multicast(addr)) |
173 | return RTN_MULTICAST; | 173 | return RTN_MULTICAST; |
174 | 174 | ||
175 | #ifdef CONFIG_IP_MULTIPLE_TABLES | 175 | #ifdef CONFIG_IP_MULTIPLE_TABLES |
@@ -710,7 +710,7 @@ void fib_add_ifaddr(struct in_ifaddr *ifa) | |||
710 | if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF)) | 710 | if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF)) |
711 | fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); | 711 | fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); |
712 | 712 | ||
713 | if (!ZERONET(prefix) && !(ifa->ifa_flags&IFA_F_SECONDARY) && | 713 | if (!ipv4_is_zeronet(prefix) && !(ifa->ifa_flags&IFA_F_SECONDARY) && |
714 | (prefix != addr || ifa->ifa_prefixlen < 32)) { | 714 | (prefix != addr || ifa->ifa_prefixlen < 32)) { |
715 | fib_magic(RTM_NEWROUTE, dev->flags&IFF_LOOPBACK ? RTN_LOCAL : | 715 | fib_magic(RTM_NEWROUTE, dev->flags&IFF_LOOPBACK ? RTN_LOCAL : |
716 | RTN_UNICAST, prefix, ifa->ifa_prefixlen, prim); | 716 | RTN_UNICAST, prefix, ifa->ifa_prefixlen, prim); |
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index d3d5906e1b3d..285d26218a51 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c | |||
@@ -1742,7 +1742,7 @@ int ip_mc_join_group(struct sock *sk , struct ip_mreqn *imr) | |||
1742 | int ifindex; | 1742 | int ifindex; |
1743 | int count = 0; | 1743 | int count = 0; |
1744 | 1744 | ||
1745 | if (!MULTICAST(addr)) | 1745 | if (!ipv4_is_multicast(addr)) |
1746 | return -EINVAL; | 1746 | return -EINVAL; |
1747 | 1747 | ||
1748 | rtnl_lock(); | 1748 | rtnl_lock(); |
@@ -1855,7 +1855,7 @@ int ip_mc_source(int add, int omode, struct sock *sk, struct | |||
1855 | int leavegroup = 0; | 1855 | int leavegroup = 0; |
1856 | int i, j, rv; | 1856 | int i, j, rv; |
1857 | 1857 | ||
1858 | if (!MULTICAST(addr)) | 1858 | if (!ipv4_is_multicast(addr)) |
1859 | return -EINVAL; | 1859 | return -EINVAL; |
1860 | 1860 | ||
1861 | rtnl_lock(); | 1861 | rtnl_lock(); |
@@ -1985,7 +1985,7 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex) | |||
1985 | struct ip_sf_socklist *newpsl, *psl; | 1985 | struct ip_sf_socklist *newpsl, *psl; |
1986 | int leavegroup = 0; | 1986 | int leavegroup = 0; |
1987 | 1987 | ||
1988 | if (!MULTICAST(addr)) | 1988 | if (!ipv4_is_multicast(addr)) |
1989 | return -EINVAL; | 1989 | return -EINVAL; |
1990 | if (msf->imsf_fmode != MCAST_INCLUDE && | 1990 | if (msf->imsf_fmode != MCAST_INCLUDE && |
1991 | msf->imsf_fmode != MCAST_EXCLUDE) | 1991 | msf->imsf_fmode != MCAST_EXCLUDE) |
@@ -2068,7 +2068,7 @@ int ip_mc_msfget(struct sock *sk, struct ip_msfilter *msf, | |||
2068 | struct inet_sock *inet = inet_sk(sk); | 2068 | struct inet_sock *inet = inet_sk(sk); |
2069 | struct ip_sf_socklist *psl; | 2069 | struct ip_sf_socklist *psl; |
2070 | 2070 | ||
2071 | if (!MULTICAST(addr)) | 2071 | if (!ipv4_is_multicast(addr)) |
2072 | return -EINVAL; | 2072 | return -EINVAL; |
2073 | 2073 | ||
2074 | rtnl_lock(); | 2074 | rtnl_lock(); |
@@ -2130,7 +2130,7 @@ int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf, | |||
2130 | if (psin->sin_family != AF_INET) | 2130 | if (psin->sin_family != AF_INET) |
2131 | return -EINVAL; | 2131 | return -EINVAL; |
2132 | addr = psin->sin_addr.s_addr; | 2132 | addr = psin->sin_addr.s_addr; |
2133 | if (!MULTICAST(addr)) | 2133 | if (!ipv4_is_multicast(addr)) |
2134 | return -EINVAL; | 2134 | return -EINVAL; |
2135 | 2135 | ||
2136 | rtnl_lock(); | 2136 | rtnl_lock(); |
@@ -2180,7 +2180,7 @@ int ip_mc_sf_allow(struct sock *sk, __be32 loc_addr, __be32 rmt_addr, int dif) | |||
2180 | struct ip_sf_socklist *psl; | 2180 | struct ip_sf_socklist *psl; |
2181 | int i; | 2181 | int i; |
2182 | 2182 | ||
2183 | if (!MULTICAST(loc_addr)) | 2183 | if (!ipv4_is_multicast(loc_addr)) |
2184 | return 1; | 2184 | return 1; |
2185 | 2185 | ||
2186 | for (pmc=inet->mc_list; pmc; pmc=pmc->next) { | 2186 | for (pmc=inet->mc_list; pmc; pmc=pmc->next) { |
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 0832f6e028b8..8b81deb8ff1f 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
@@ -176,7 +176,8 @@ static struct ip_tunnel * ipgre_tunnel_lookup(__be32 remote, __be32 local, __be3 | |||
176 | } | 176 | } |
177 | for (t = tunnels_l[h1]; t; t = t->next) { | 177 | for (t = tunnels_l[h1]; t; t = t->next) { |
178 | if (local == t->parms.iph.saddr || | 178 | if (local == t->parms.iph.saddr || |
179 | (local == t->parms.iph.daddr && MULTICAST(local))) { | 179 | (local == t->parms.iph.daddr && |
180 | ipv4_is_multicast(local))) { | ||
180 | if (t->parms.i_key == key && (t->dev->flags&IFF_UP)) | 181 | if (t->parms.i_key == key && (t->dev->flags&IFF_UP)) |
181 | return t; | 182 | return t; |
182 | } | 183 | } |
@@ -201,7 +202,7 @@ static struct ip_tunnel **__ipgre_bucket(struct ip_tunnel_parm *parms) | |||
201 | 202 | ||
202 | if (local) | 203 | if (local) |
203 | prio |= 1; | 204 | prio |= 1; |
204 | if (remote && !MULTICAST(remote)) { | 205 | if (remote && !ipv4_is_multicast(remote)) { |
205 | prio |= 2; | 206 | prio |= 2; |
206 | h ^= HASH(remote); | 207 | h ^= HASH(remote); |
207 | } | 208 | } |
@@ -367,7 +368,8 @@ static void ipgre_err(struct sk_buff *skb, u32 info) | |||
367 | 368 | ||
368 | read_lock(&ipgre_lock); | 369 | read_lock(&ipgre_lock); |
369 | t = ipgre_tunnel_lookup(iph->daddr, iph->saddr, (flags&GRE_KEY) ? *(((__be32*)p) + (grehlen>>2) - 1) : 0); | 370 | t = ipgre_tunnel_lookup(iph->daddr, iph->saddr, (flags&GRE_KEY) ? *(((__be32*)p) + (grehlen>>2) - 1) : 0); |
370 | if (t == NULL || t->parms.iph.daddr == 0 || MULTICAST(t->parms.iph.daddr)) | 371 | if (t == NULL || t->parms.iph.daddr == 0 || |
372 | ipv4_is_multicast(t->parms.iph.daddr)) | ||
371 | goto out; | 373 | goto out; |
372 | 374 | ||
373 | if (t->parms.iph.ttl == 0 && type == ICMP_TIME_EXCEEDED) | 375 | if (t->parms.iph.ttl == 0 && type == ICMP_TIME_EXCEEDED) |
@@ -619,7 +621,7 @@ static int ipgre_rcv(struct sk_buff *skb) | |||
619 | skb_postpull_rcsum(skb, skb_transport_header(skb), offset); | 621 | skb_postpull_rcsum(skb, skb_transport_header(skb), offset); |
620 | skb->pkt_type = PACKET_HOST; | 622 | skb->pkt_type = PACKET_HOST; |
621 | #ifdef CONFIG_NET_IPGRE_BROADCAST | 623 | #ifdef CONFIG_NET_IPGRE_BROADCAST |
622 | if (MULTICAST(iph->daddr)) { | 624 | if (ipv4_is_multicast(iph->daddr)) { |
623 | /* Looped back packet, drop it! */ | 625 | /* Looped back packet, drop it! */ |
624 | if (((struct rtable*)skb->dst)->fl.iif == 0) | 626 | if (((struct rtable*)skb->dst)->fl.iif == 0) |
625 | goto drop; | 627 | goto drop; |
@@ -783,7 +785,8 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | |||
783 | struct rt6_info *rt6 = (struct rt6_info*)skb->dst; | 785 | struct rt6_info *rt6 = (struct rt6_info*)skb->dst; |
784 | 786 | ||
785 | if (rt6 && mtu < dst_mtu(skb->dst) && mtu >= IPV6_MIN_MTU) { | 787 | if (rt6 && mtu < dst_mtu(skb->dst) && mtu >= IPV6_MIN_MTU) { |
786 | if ((tunnel->parms.iph.daddr && !MULTICAST(tunnel->parms.iph.daddr)) || | 788 | if ((tunnel->parms.iph.daddr && |
789 | !ipv4_is_multicast(tunnel->parms.iph.daddr)) || | ||
787 | rt6->rt6i_dst.plen == 128) { | 790 | rt6->rt6i_dst.plen == 128) { |
788 | rt6->rt6i_flags |= RTF_MODIFIED; | 791 | rt6->rt6i_flags |= RTF_MODIFIED; |
789 | skb->dst->metrics[RTAX_MTU-1] = mtu; | 792 | skb->dst->metrics[RTAX_MTU-1] = mtu; |
@@ -1009,7 +1012,7 @@ ipgre_tunnel_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd) | |||
1009 | 1012 | ||
1010 | t = netdev_priv(dev); | 1013 | t = netdev_priv(dev); |
1011 | 1014 | ||
1012 | if (MULTICAST(p.iph.daddr)) | 1015 | if (ipv4_is_multicast(p.iph.daddr)) |
1013 | nflags = IFF_BROADCAST; | 1016 | nflags = IFF_BROADCAST; |
1014 | else if (p.iph.daddr) | 1017 | else if (p.iph.daddr) |
1015 | nflags = IFF_POINTOPOINT; | 1018 | nflags = IFF_POINTOPOINT; |
@@ -1143,7 +1146,7 @@ static int ipgre_header(struct sk_buff *skb, struct net_device *dev, | |||
1143 | memcpy(&iph->daddr, daddr, 4); | 1146 | memcpy(&iph->daddr, daddr, 4); |
1144 | return t->hlen; | 1147 | return t->hlen; |
1145 | } | 1148 | } |
1146 | if (iph->daddr && !MULTICAST(iph->daddr)) | 1149 | if (iph->daddr && !ipv4_is_multicast(iph->daddr)) |
1147 | return t->hlen; | 1150 | return t->hlen; |
1148 | 1151 | ||
1149 | return -t->hlen; | 1152 | return -t->hlen; |
@@ -1166,7 +1169,7 @@ static int ipgre_open(struct net_device *dev) | |||
1166 | { | 1169 | { |
1167 | struct ip_tunnel *t = netdev_priv(dev); | 1170 | struct ip_tunnel *t = netdev_priv(dev); |
1168 | 1171 | ||
1169 | if (MULTICAST(t->parms.iph.daddr)) { | 1172 | if (ipv4_is_multicast(t->parms.iph.daddr)) { |
1170 | struct flowi fl = { .oif = t->parms.link, | 1173 | struct flowi fl = { .oif = t->parms.link, |
1171 | .nl_u = { .ip4_u = | 1174 | .nl_u = { .ip4_u = |
1172 | { .daddr = t->parms.iph.daddr, | 1175 | { .daddr = t->parms.iph.daddr, |
@@ -1189,7 +1192,7 @@ static int ipgre_open(struct net_device *dev) | |||
1189 | static int ipgre_close(struct net_device *dev) | 1192 | static int ipgre_close(struct net_device *dev) |
1190 | { | 1193 | { |
1191 | struct ip_tunnel *t = netdev_priv(dev); | 1194 | struct ip_tunnel *t = netdev_priv(dev); |
1192 | if (MULTICAST(t->parms.iph.daddr) && t->mlink) { | 1195 | if (ipv4_is_multicast(t->parms.iph.daddr) && t->mlink) { |
1193 | struct in_device *in_dev = inetdev_by_index(t->mlink); | 1196 | struct in_device *in_dev = inetdev_by_index(t->mlink); |
1194 | if (in_dev) { | 1197 | if (in_dev) { |
1195 | ip_mc_dec_group(in_dev, t->parms.iph.daddr); | 1198 | ip_mc_dec_group(in_dev, t->parms.iph.daddr); |
@@ -1236,7 +1239,7 @@ static int ipgre_tunnel_init(struct net_device *dev) | |||
1236 | 1239 | ||
1237 | if (iph->daddr) { | 1240 | if (iph->daddr) { |
1238 | #ifdef CONFIG_NET_IPGRE_BROADCAST | 1241 | #ifdef CONFIG_NET_IPGRE_BROADCAST |
1239 | if (MULTICAST(iph->daddr)) { | 1242 | if (ipv4_is_multicast(iph->daddr)) { |
1240 | if (!iph->saddr) | 1243 | if (!iph->saddr) |
1241 | return -EINVAL; | 1244 | return -EINVAL; |
1242 | dev->flags = IFF_BROADCAST; | 1245 | dev->flags = IFF_BROADCAST; |
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index 9947f523862e..772daf77878f 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
@@ -749,7 +749,7 @@ static int ipmr_mfc_add(struct mfcctl *mfc, int mrtsock) | |||
749 | return 0; | 749 | return 0; |
750 | } | 750 | } |
751 | 751 | ||
752 | if (!MULTICAST(mfc->mfcc_mcastgrp.s_addr)) | 752 | if (!ipv4_is_multicast(mfc->mfcc_mcastgrp.s_addr)) |
753 | return -EINVAL; | 753 | return -EINVAL; |
754 | 754 | ||
755 | c=ipmr_cache_alloc(); | 755 | c=ipmr_cache_alloc(); |
@@ -1461,7 +1461,7 @@ int pim_rcv_v1(struct sk_buff * skb) | |||
1461 | b. packet is not a NULL-REGISTER | 1461 | b. packet is not a NULL-REGISTER |
1462 | c. packet is not truncated | 1462 | c. packet is not truncated |
1463 | */ | 1463 | */ |
1464 | if (!MULTICAST(encap->daddr) || | 1464 | if (!ipv4_is_multicast(encap->daddr) || |
1465 | encap->tot_len == 0 || | 1465 | encap->tot_len == 0 || |
1466 | ntohs(encap->tot_len) + sizeof(*pim) > skb->len) | 1466 | ntohs(encap->tot_len) + sizeof(*pim) > skb->len) |
1467 | goto drop; | 1467 | goto drop; |
@@ -1517,7 +1517,7 @@ static int pim_rcv(struct sk_buff * skb) | |||
1517 | /* check if the inner packet is destined to mcast group */ | 1517 | /* check if the inner packet is destined to mcast group */ |
1518 | encap = (struct iphdr *)(skb_transport_header(skb) + | 1518 | encap = (struct iphdr *)(skb_transport_header(skb) + |
1519 | sizeof(struct pimreghdr)); | 1519 | sizeof(struct pimreghdr)); |
1520 | if (!MULTICAST(encap->daddr) || | 1520 | if (!ipv4_is_multicast(encap->daddr) || |
1521 | encap->tot_len == 0 || | 1521 | encap->tot_len == 0 || |
1522 | ntohs(encap->tot_len) + sizeof(*pim) > skb->len) | 1522 | ntohs(encap->tot_len) + sizeof(*pim) > skb->len) |
1523 | goto drop; | 1523 | goto drop; |
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 2ff8214a530b..5aec5a5e5f16 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
@@ -530,7 +530,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
530 | if (msg->msg_flags & MSG_DONTROUTE) | 530 | if (msg->msg_flags & MSG_DONTROUTE) |
531 | tos |= RTO_ONLINK; | 531 | tos |= RTO_ONLINK; |
532 | 532 | ||
533 | if (MULTICAST(daddr)) { | 533 | if (ipv4_is_multicast(daddr)) { |
534 | if (!ipc.oif) | 534 | if (!ipc.oif) |
535 | ipc.oif = inet->mc_index; | 535 | ipc.oif = inet->mc_index; |
536 | if (!saddr) | 536 | if (!saddr) |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 36c7add8de84..1cc6c23cf758 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1154,7 +1154,8 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw, | |||
1154 | return; | 1154 | return; |
1155 | 1155 | ||
1156 | if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev) | 1156 | if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev) |
1157 | || MULTICAST(new_gw) || BADCLASS(new_gw) || ZERONET(new_gw)) | 1157 | || ipv4_is_multicast(new_gw) || ipv4_is_badclass(new_gw) |
1158 | || ipv4_is_zeronet(new_gw)) | ||
1158 | goto reject_redirect; | 1159 | goto reject_redirect; |
1159 | 1160 | ||
1160 | if (!IN_DEV_SHARED_MEDIA(in_dev)) { | 1161 | 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, | |||
1633 | if (in_dev == NULL) | 1634 | if (in_dev == NULL) |
1634 | return -EINVAL; | 1635 | return -EINVAL; |
1635 | 1636 | ||
1636 | if (MULTICAST(saddr) || BADCLASS(saddr) || LOOPBACK(saddr) || | 1637 | if (ipv4_is_multicast(saddr) || ipv4_is_badclass(saddr) || |
1637 | skb->protocol != htons(ETH_P_IP)) | 1638 | ipv4_is_loopback(saddr) || skb->protocol != htons(ETH_P_IP)) |
1638 | goto e_inval; | 1639 | goto e_inval; |
1639 | 1640 | ||
1640 | if (ZERONET(saddr)) { | 1641 | if (ipv4_is_zeronet(saddr)) { |
1641 | if (!LOCAL_MCAST(daddr)) | 1642 | if (!ipv4_is_local_multicast(daddr)) |
1642 | goto e_inval; | 1643 | goto e_inval; |
1643 | spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); | 1644 | spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); |
1644 | } else if (fib_validate_source(saddr, 0, tos, 0, | 1645 | } 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, | |||
1680 | } | 1681 | } |
1681 | 1682 | ||
1682 | #ifdef CONFIG_IP_MROUTE | 1683 | #ifdef CONFIG_IP_MROUTE |
1683 | if (!LOCAL_MCAST(daddr) && IN_DEV_MFORWARD(in_dev)) | 1684 | if (!ipv4_is_local_multicast(daddr) && IN_DEV_MFORWARD(in_dev)) |
1684 | rth->u.dst.input = ip_mr_input; | 1685 | rth->u.dst.input = ip_mr_input; |
1685 | #endif | 1686 | #endif |
1686 | RT_CACHE_STAT_INC(in_slow_mc); | 1687 | 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, | |||
1890 | by fib_lookup. | 1891 | by fib_lookup. |
1891 | */ | 1892 | */ |
1892 | 1893 | ||
1893 | if (MULTICAST(saddr) || BADCLASS(saddr) || LOOPBACK(saddr)) | 1894 | if (ipv4_is_multicast(saddr) || ipv4_is_badclass(saddr) || |
1895 | ipv4_is_loopback(saddr)) | ||
1894 | goto martian_source; | 1896 | goto martian_source; |
1895 | 1897 | ||
1896 | if (daddr == htonl(0xFFFFFFFF) || (saddr == 0 && daddr == 0)) | 1898 | 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, | |||
1899 | /* Accept zero addresses only to limited broadcast; | 1901 | /* Accept zero addresses only to limited broadcast; |
1900 | * I even do not know to fix it or not. Waiting for complains :-) | 1902 | * I even do not know to fix it or not. Waiting for complains :-) |
1901 | */ | 1903 | */ |
1902 | if (ZERONET(saddr)) | 1904 | if (ipv4_is_zeronet(saddr)) |
1903 | goto martian_source; | 1905 | goto martian_source; |
1904 | 1906 | ||
1905 | if (BADCLASS(daddr) || ZERONET(daddr) || LOOPBACK(daddr)) | 1907 | if (ipv4_is_badclass(daddr) || ipv4_is_zeronet(daddr) || |
1908 | ipv4_is_loopback(daddr)) | ||
1906 | goto martian_destination; | 1909 | goto martian_destination; |
1907 | 1910 | ||
1908 | /* | 1911 | /* |
@@ -1949,7 +1952,7 @@ brd_input: | |||
1949 | if (skb->protocol != htons(ETH_P_IP)) | 1952 | if (skb->protocol != htons(ETH_P_IP)) |
1950 | goto e_inval; | 1953 | goto e_inval; |
1951 | 1954 | ||
1952 | if (ZERONET(saddr)) | 1955 | if (ipv4_is_zeronet(saddr)) |
1953 | spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); | 1956 | spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); |
1954 | else { | 1957 | else { |
1955 | err = fib_validate_source(saddr, 0, tos, 0, dev, &spec_dst, | 1958 | 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, | |||
2079 | Note, that multicast routers are not affected, because | 2082 | Note, that multicast routers are not affected, because |
2080 | route cache entry is created eventually. | 2083 | route cache entry is created eventually. |
2081 | */ | 2084 | */ |
2082 | if (MULTICAST(daddr)) { | 2085 | if (ipv4_is_multicast(daddr)) { |
2083 | struct in_device *in_dev; | 2086 | struct in_device *in_dev; |
2084 | 2087 | ||
2085 | rcu_read_lock(); | 2088 | rcu_read_lock(); |
@@ -2088,7 +2091,8 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr, | |||
2088 | ip_hdr(skb)->protocol); | 2091 | ip_hdr(skb)->protocol); |
2089 | if (our | 2092 | if (our |
2090 | #ifdef CONFIG_IP_MROUTE | 2093 | #ifdef CONFIG_IP_MROUTE |
2091 | || (!LOCAL_MCAST(daddr) && IN_DEV_MFORWARD(in_dev)) | 2094 | || (!ipv4_is_local_multicast(daddr) && |
2095 | IN_DEV_MFORWARD(in_dev)) | ||
2092 | #endif | 2096 | #endif |
2093 | ) { | 2097 | ) { |
2094 | rcu_read_unlock(); | 2098 | rcu_read_unlock(); |
@@ -2114,14 +2118,14 @@ static inline int __mkroute_output(struct rtable **result, | |||
2114 | u32 tos = RT_FL_TOS(oldflp); | 2118 | u32 tos = RT_FL_TOS(oldflp); |
2115 | int err = 0; | 2119 | int err = 0; |
2116 | 2120 | ||
2117 | if (LOOPBACK(fl->fl4_src) && !(dev_out->flags&IFF_LOOPBACK)) | 2121 | if (ipv4_is_loopback(fl->fl4_src) && !(dev_out->flags&IFF_LOOPBACK)) |
2118 | return -EINVAL; | 2122 | return -EINVAL; |
2119 | 2123 | ||
2120 | if (fl->fl4_dst == htonl(0xFFFFFFFF)) | 2124 | if (fl->fl4_dst == htonl(0xFFFFFFFF)) |
2121 | res->type = RTN_BROADCAST; | 2125 | res->type = RTN_BROADCAST; |
2122 | else if (MULTICAST(fl->fl4_dst)) | 2126 | else if (ipv4_is_multicast(fl->fl4_dst)) |
2123 | res->type = RTN_MULTICAST; | 2127 | res->type = RTN_MULTICAST; |
2124 | else if (BADCLASS(fl->fl4_dst) || ZERONET(fl->fl4_dst)) | 2128 | else if (ipv4_is_badclass(fl->fl4_dst) || ipv4_is_zeronet(fl->fl4_dst)) |
2125 | return -EINVAL; | 2129 | return -EINVAL; |
2126 | 2130 | ||
2127 | if (dev_out->flags & IFF_LOOPBACK) | 2131 | if (dev_out->flags & IFF_LOOPBACK) |
@@ -2201,7 +2205,7 @@ static inline int __mkroute_output(struct rtable **result, | |||
2201 | #ifdef CONFIG_IP_MROUTE | 2205 | #ifdef CONFIG_IP_MROUTE |
2202 | if (res->type == RTN_MULTICAST) { | 2206 | if (res->type == RTN_MULTICAST) { |
2203 | if (IN_DEV_MFORWARD(in_dev) && | 2207 | if (IN_DEV_MFORWARD(in_dev) && |
2204 | !LOCAL_MCAST(oldflp->fl4_dst)) { | 2208 | !ipv4_is_local_multicast(oldflp->fl4_dst)) { |
2205 | rth->u.dst.input = ip_mr_input; | 2209 | rth->u.dst.input = ip_mr_input; |
2206 | rth->u.dst.output = ip_mc_output; | 2210 | rth->u.dst.output = ip_mc_output; |
2207 | } | 2211 | } |
@@ -2271,9 +2275,9 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp) | |||
2271 | 2275 | ||
2272 | if (oldflp->fl4_src) { | 2276 | if (oldflp->fl4_src) { |
2273 | err = -EINVAL; | 2277 | err = -EINVAL; |
2274 | if (MULTICAST(oldflp->fl4_src) || | 2278 | if (ipv4_is_multicast(oldflp->fl4_src) || |
2275 | BADCLASS(oldflp->fl4_src) || | 2279 | ipv4_is_badclass(oldflp->fl4_src) || |
2276 | ZERONET(oldflp->fl4_src)) | 2280 | ipv4_is_zeronet(oldflp->fl4_src)) |
2277 | goto out; | 2281 | goto out; |
2278 | 2282 | ||
2279 | /* It is equivalent to inet_addr_type(saddr) == RTN_LOCAL */ | 2283 | /* 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) | |||
2290 | */ | 2294 | */ |
2291 | 2295 | ||
2292 | if (oldflp->oif == 0 | 2296 | if (oldflp->oif == 0 |
2293 | && (MULTICAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF))) { | 2297 | && (ipv4_is_multicast(oldflp->fl4_dst) || |
2298 | oldflp->fl4_dst == htonl(0xFFFFFFFF))) { | ||
2294 | /* Special hack: user can direct multicasts | 2299 | /* Special hack: user can direct multicasts |
2295 | and limited broadcast via necessary interface | 2300 | and limited broadcast via necessary interface |
2296 | without fiddling with IP_MULTICAST_IF or IP_PKTINFO. | 2301 | 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) | |||
2327 | goto out; /* Wrong error code */ | 2332 | goto out; /* Wrong error code */ |
2328 | } | 2333 | } |
2329 | 2334 | ||
2330 | if (LOCAL_MCAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF)) { | 2335 | if (ipv4_is_local_multicast(oldflp->fl4_dst) || |
2336 | oldflp->fl4_dst == htonl(0xFFFFFFFF)) { | ||
2331 | if (!fl.fl4_src) | 2337 | if (!fl.fl4_src) |
2332 | fl.fl4_src = inet_select_addr(dev_out, 0, | 2338 | fl.fl4_src = inet_select_addr(dev_out, 0, |
2333 | RT_SCOPE_LINK); | 2339 | RT_SCOPE_LINK); |
2334 | goto make_route; | 2340 | goto make_route; |
2335 | } | 2341 | } |
2336 | if (!fl.fl4_src) { | 2342 | if (!fl.fl4_src) { |
2337 | if (MULTICAST(oldflp->fl4_dst)) | 2343 | if (ipv4_is_multicast(oldflp->fl4_dst)) |
2338 | fl.fl4_src = inet_select_addr(dev_out, 0, | 2344 | fl.fl4_src = inet_select_addr(dev_out, 0, |
2339 | fl.fl4_scope); | 2345 | fl.fl4_scope); |
2340 | else if (!oldflp->fl4_dst) | 2346 | else if (!oldflp->fl4_dst) |
@@ -2618,7 +2624,7 @@ static int rt_fill_info(struct sk_buff *skb, u32 pid, u32 seq, int event, | |||
2618 | #ifdef CONFIG_IP_MROUTE | 2624 | #ifdef CONFIG_IP_MROUTE |
2619 | __be32 dst = rt->rt_dst; | 2625 | __be32 dst = rt->rt_dst; |
2620 | 2626 | ||
2621 | if (MULTICAST(dst) && !LOCAL_MCAST(dst) && | 2627 | if (ipv4_is_multicast(dst) && !ipv4_is_local_multicast(dst) && |
2622 | IPV4_DEVCONF_ALL(&init_net, MC_FORWARDING)) { | 2628 | IPV4_DEVCONF_ALL(&init_net, MC_FORWARDING)) { |
2623 | int err = ipmr_get_route(skb, r, nowait); | 2629 | int err = ipmr_get_route(skb, r, nowait); |
2624 | if (err <= 0) { | 2630 | if (err <= 0) { |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 3d6021585658..1ce6b60b7f93 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -626,7 +626,7 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
626 | connected = 0; | 626 | connected = 0; |
627 | } | 627 | } |
628 | 628 | ||
629 | if (MULTICAST(daddr)) { | 629 | if (ipv4_is_multicast(daddr)) { |
630 | if (!ipc.oif) | 630 | if (!ipc.oif) |
631 | ipc.oif = inet->mc_index; | 631 | ipc.oif = inet->mc_index; |
632 | if (!saddr) | 632 | if (!saddr) |