Index: netinet/in.c =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/in.c,v retrieving revision 1.75 diff -u -p -r1.75 in.c --- netinet/in.c 7 Apr 2004 20:46:13 -0000 1.75 +++ netinet/in.c 20 May 2004 13:19:39 -0000 @@ -59,10 +59,6 @@ static void in_socktrim(struct sockaddr_ static int in_ifinit(struct ifnet *, struct in_ifaddr *, struct sockaddr_in *, int); -static int subnetsarelocal = 0; -SYSCTL_INT(_net_inet_ip, OID_AUTO, subnets_are_local, CTLFLAG_RW, - &subnetsarelocal, 0, "Treat all subnets as directly connected"); - struct in_multihead in_multihead; /* XXX BSS initialization */ extern struct inpcbinfo ripcbinfo; @@ -81,14 +77,9 @@ in_localaddr(in) register u_long i = ntohl(in.s_addr); register struct in_ifaddr *ia; - if (subnetsarelocal) { - TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) - if ((i & ia->ia_netmask) == ia->ia_net) - return (1); - } else { - TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) - if ((i & ia->ia_subnetmask) == ia->ia_subnet) - return (1); + TAILQ_FOREACH(ia, &in_ifaddrhead, ia_link) { + if ((i & ia->ia_subnetmask) == ia->ia_subnet) + return (1); } return (0); } @@ -661,6 +652,7 @@ in_ifinit(ifp, ia, sin, scrub) register u_long i = ntohl(sin->sin_addr.s_addr); struct sockaddr_in oldaddr; int s = splimp(), flags = RTF_UP, error = 0; + u_long netmask; oldaddr = ia->ia_addr; if (oldaddr.sin_family == AF_INET) @@ -691,22 +683,20 @@ in_ifinit(ifp, ia, sin, scrub) ia->ia_ifa.ifa_addr = (struct sockaddr *)&ia->ia_addr; } if (IN_CLASSA(i)) - ia->ia_netmask = IN_CLASSA_NET; + netmask = IN_CLASSA_NET; else if (IN_CLASSB(i)) - ia->ia_netmask = IN_CLASSB_NET; + netmask = IN_CLASSB_NET; else - ia->ia_netmask = IN_CLASSC_NET; + netmask = IN_CLASSC_NET; /* * The subnet mask usually includes at least the standard network part, * but may may be smaller in the case of supernetting. * If it is set, we believe it. */ if (ia->ia_subnetmask == 0) { - ia->ia_subnetmask = ia->ia_netmask; + ia->ia_subnetmask = netmask; ia->ia_sockmask.sin_addr.s_addr = htonl(ia->ia_subnetmask); - } else - ia->ia_netmask &= ia->ia_subnetmask; - ia->ia_net = i & ia->ia_netmask; + } ia->ia_subnet = i & ia->ia_subnetmask; in_socktrim(&ia->ia_sockmask); /* @@ -716,8 +706,6 @@ in_ifinit(ifp, ia, sin, scrub) if (ifp->if_flags & IFF_BROADCAST) { ia->ia_broadaddr.sin_addr.s_addr = htonl(ia->ia_subnet | ~ia->ia_subnetmask); - ia->ia_netbroadcast.s_addr = - htonl(ia->ia_net | ~ ia->ia_netmask); } else if (ifp->if_flags & IFF_LOOPBACK) { ia->ia_ifa.ifa_dstaddr = ia->ia_ifa.ifa_addr; flags |= RTF_HOST; @@ -737,7 +725,7 @@ in_ifinit(ifp, ia, sin, scrub) * say that they don't want a host route. */ if (ia->ia_addr.sin_addr.s_addr != INADDR_ANY || - ia->ia_netmask != IN_CLASSA_NET || + netmask != IN_CLASSA_NET || ia->ia_dstaddr.sin_addr.s_addr != htonl(IN_CLASSA_HOST)) { if ((error = rtinit(&ia->ia_ifa, (int)RTM_ADD, flags)) != 0) { ia->ia_addr = oldaddr; @@ -785,11 +773,7 @@ in_broadcast(in, ifp) TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) if (ifa->ifa_addr->sa_family == AF_INET && (in.s_addr == ia->ia_broadaddr.sin_addr.s_addr || - in.s_addr == ia->ia_netbroadcast.s_addr || - /* - * Check for old-style (host 0) broadcast. - */ - t == ia->ia_subnet || t == ia->ia_net) && + t == ia->ia_subnet) && /* * Check for an all one subnetmask. These * only exist when an interface gets a secondary Index: netinet/in_var.h =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/in_var.h,v retrieving revision 1.50 diff -u -p -r1.50 in_var.h --- netinet/in_var.h 7 Apr 2004 20:46:13 -0000 1.50 +++ netinet/in_var.h 20 May 2004 13:19:58 -0000 @@ -47,11 +47,8 @@ struct in_ifaddr { #define ia_ifp ia_ifa.ifa_ifp #define ia_flags ia_ifa.ifa_flags /* ia_{,sub}net{,mask} in host order */ - u_long ia_net; /* network number of interface */ - u_long ia_netmask; /* mask of net part */ u_long ia_subnet; /* subnet number, including net */ u_long ia_subnetmask; /* mask of subnet part */ - struct in_addr ia_netbroadcast; /* to recognize net broadcasts */ LIST_ENTRY(in_ifaddr) ia_hash; /* entry in bucket of inet addresses */ TAILQ_ENTRY(in_ifaddr) ia_link; /* list of internet addresses */ struct sockaddr_in ia_addr; /* reserve space for interface name */ Index: netinet/ip_fastfwd.c =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/ip_fastfwd.c,v retrieving revision 1.11 diff -u -p -r1.11 ip_fastfwd.c --- netinet/ip_fastfwd.c 6 May 2004 18:46:03 -0000 1.11 +++ netinet/ip_fastfwd.c 20 May 2004 13:20:10 -0000 @@ -337,8 +337,6 @@ ip_fastforward(struct mbuf *m) if (ifa->ifa_addr->sa_family != AF_INET) continue; ia = ifatoia(ifa); - if (ia->ia_netbroadcast.s_addr == ip->ip_dst.s_addr) - return 0; if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == ip->ip_dst.s_addr) return 0; Index: netinet/ip_input.c =================================================================== RCS file: /private/FreeBSD/src/sys/netinet/ip_input.c,v retrieving revision 1.271 diff -u -p -r1.271 ip_input.c --- netinet/ip_input.c 6 May 2004 18:46:02 -0000 1.271 +++ netinet/ip_input.c 20 May 2004 13:20:20 -0000 @@ -589,8 +589,6 @@ pass: if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == pkt_dst.s_addr) goto ours; - if (ia->ia_netbroadcast.s_addr == pkt_dst.s_addr) - goto ours; #ifdef BOOTP_COMPAT if (IA_SIN(ia)->sin_addr.s_addr == INADDR_ANY) goto ours; Index: netinet6/in6_var.h =================================================================== RCS file: /private/FreeBSD/src/sys/netinet6/in6_var.h,v retrieving revision 1.19 diff -u -p -r1.19 in6_var.h --- netinet6/in6_var.h 7 Apr 2004 20:46:15 -0000 1.19 +++ netinet6/in6_var.h 20 May 2004 13:21:04 -0000 @@ -100,7 +100,6 @@ struct in6_ifaddr { #define ia_ifp ia_ifa.ifa_ifp #define ia_flags ia_ifa.ifa_flags struct sockaddr_in6 ia_addr; /* interface address */ - struct sockaddr_in6 ia_net; /* network number of interface */ struct sockaddr_in6 ia_dstaddr; /* space for destination addr */ struct sockaddr_in6 ia_prefixmask; /* prefix mask */ u_int32_t ia_plen; /* prefix length */ Index: netipx/ipx_if.h =================================================================== RCS file: /private/FreeBSD/src/sys/netipx/ipx_if.h,v retrieving revision 1.13 diff -u -p -r1.13 ipx_if.h --- netipx/ipx_if.h 4 Mar 2003 23:19:53 -0000 1.13 +++ netipx/ipx_if.h 20 May 2004 13:20:45 -0000 @@ -54,7 +54,6 @@ struct ipx_ifaddr { struct sockaddr_ipx ia_addr; /* reserve space for my address */ struct sockaddr_ipx ia_dstaddr; /* space for my broadcast address */ #define ia_broadaddr ia_dstaddr - struct sockaddr_ipx ia_netmask; /* space for my network mask */ }; struct ipx_aliasreq {