svn commit: r242956 - user/andre/tcp_workqueue/sys/netinet
Andre Oppermann
andre at FreeBSD.org
Tue Nov 13 08:35:26 UTC 2012
Author: andre
Date: Tue Nov 13 08:35:25 2012
New Revision: 242956
URL: http://svnweb.freebsd.org/changeset/base/242956
Log:
Remove IN_ZERONET macro and test from icmp_reflect() that was
added with r120958 to drop such packets. It was only applied
to ICMP while the normal ip_input() path continues to allow
it leading to inconsistent behavior between ICMP and TCP/UDP.
Due to the global IPv4 address shortage it may be helpful to
have 0.0.0.0/8, with the exception of 0.0.0.0/32, available as
another private IP range.
A close reading of RFC5735 and RFC1122 is not entirely conclusive.
While usage in a local ("this") scope may be allowed, forwarding
may be prohibited.
A survey on how other OS's handle 0.0.0.0/8 should be conducted.
Reported by: Sean Chittenden <sean-at-chittenden.org>
Modified:
user/andre/tcp_workqueue/sys/netinet/in.h
user/andre/tcp_workqueue/sys/netinet/ip_icmp.c
Modified: user/andre/tcp_workqueue/sys/netinet/in.h
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/in.h Tue Nov 13 07:39:49 2012 (r242955)
+++ user/andre/tcp_workqueue/sys/netinet/in.h Tue Nov 13 08:35:25 2012 (r242956)
@@ -367,7 +367,6 @@ __END_DECLS
#define IN_LINKLOCAL(i) (((u_int32_t)(i) & 0xffff0000) == 0xa9fe0000)
#define IN_LOOPBACK(i) (((u_int32_t)(i) & 0xff000000) == 0x7f000000)
-#define IN_ZERONET(i) (((u_int32_t)(i) & 0xff000000) == 0)
#define IN_PRIVATE(i) ((((u_int32_t)(i) & 0xff000000) == 0x0a000000) || \
(((u_int32_t)(i) & 0xfff00000) == 0xac100000) || \
Modified: user/andre/tcp_workqueue/sys/netinet/ip_icmp.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/ip_icmp.c Tue Nov 13 07:39:49 2012 (r242955)
+++ user/andre/tcp_workqueue/sys/netinet/ip_icmp.c Tue Nov 13 08:35:25 2012 (r242956)
@@ -694,8 +694,7 @@ icmp_reflect(struct mbuf *m)
int optlen = (ip->ip_hl << 2) - sizeof(struct ip);
if (IN_MULTICAST(ntohl(ip->ip_src.s_addr)) ||
- IN_EXPERIMENTAL(ntohl(ip->ip_src.s_addr)) ||
- IN_ZERONET(ntohl(ip->ip_src.s_addr)) ) {
+ IN_EXPERIMENTAL(ntohl(ip->ip_src.s_addr)) ) {
m_freem(m); /* Bad return address */
ICMPSTAT_INC(icps_badaddr);
goto done; /* Ip_output() will check for broadcast */
More information about the svn-src-user
mailing list