summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authormycroft <mycroft@NetBSD.org>1995-06-01 21:35:34 +0000
committermycroft <mycroft@NetBSD.org>1995-06-01 21:35:34 +0000
commiteb216fd6c2dc48f5df3ffcfca36cd0d19cc482c4 (patch)
treead26d59695b3dd46ae479a7401c462f8f3826226 /sys
parentd045544ebdf4f6b44a2c9546a3a632b4848aaf0e (diff)
Avoid byte-swapping IP addresses at run time.
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/igmp.c28
-rw-r--r--sys/netinet/in.c71
-rw-r--r--sys/netinet/in.h66
-rw-r--r--sys/netinet/in_pcb.c8
-rw-r--r--sys/netinet/in_var.h5
-rw-r--r--sys/netinet/ip_icmp.c8
-rw-r--r--sys/netinet/ip_input.c25
-rw-r--r--sys/netinet/ip_mroute.c6
-rw-r--r--sys/netinet/ip_output.c11
-rw-r--r--sys/netinet/tcp_input.c6
-rw-r--r--sys/netinet/udp_usrreq.c4
-rw-r--r--sys/netiso/iso.c11
12 files changed, 105 insertions, 144 deletions
diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c
index fcd97c50a7e..9a823927129 100644
--- a/sys/netinet/igmp.c
+++ b/sys/netinet/igmp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: igmp.c,v 1.11 1995/06/01 15:59:04 mycroft Exp $ */
+/* $NetBSD: igmp.c,v 1.12 1995/06/01 21:35:34 mycroft Exp $ */
/*
* Internet Group Management Protocol (IGMP) routines.
@@ -27,13 +27,8 @@
#include <netinet/igmp_var.h>
#define IP_MULTICASTOPTS 0
-#define IN_LOCAL_GROUP(addr) \
- (((addr) & igmp_local_group_mask) == igmp_local_group)
int igmp_timers_are_running;
-u_int32_t igmp_all_hosts_group;
-u_int32_t igmp_local_group;
-u_int32_t igmp_local_group_mask;
static struct router_info *rti_head;
void igmp_sendpkt __P((struct in_multi *, int));
@@ -46,9 +41,6 @@ igmp_init()
* To avoid byte-swapping the same value over and over again.
*/
igmp_timers_are_running = 0;
- igmp_all_hosts_group = htonl(INADDR_ALLHOSTS_GROUP);
- igmp_local_group = htonl(INADDR_UNSPEC_GROUP);
- igmp_local_group_mask = htonl(IN_CLASSC_NET);
rti_head = 0;
}
@@ -161,7 +153,7 @@ igmp_input(m, iphlen)
rti->rti_type = IGMP_v1_ROUTER;
rti->rti_age = 0;
- if (ip->ip_dst.s_addr != igmp_all_hosts_group) {
+ if (ip->ip_dst.s_addr != INADDR_ALLHOSTS_GROUP) {
++igmpstat.igps_rcv_badqueries;
m_freem(m);
return;
@@ -186,7 +178,7 @@ igmp_input(m, iphlen)
IN_NEXT_MULTI(step, inm);
}
} else {
- if (!IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
+ if (!IN_MULTICAST(ip->ip_dst.s_addr)) {
++igmpstat.igps_rcv_badqueries;
m_freem(m);
return;
@@ -206,7 +198,7 @@ igmp_input(m, iphlen)
while (inm != NULL) {
if (inm->inm_ifp == ifp &&
!IN_LOCAL_GROUP(inm->inm_addr.s_addr) &&
- (ip->ip_dst.s_addr == igmp_all_hosts_group ||
+ (ip->ip_dst.s_addr == INADDR_ALLHOSTS_GROUP ||
ip->ip_dst.s_addr == inm->inm_addr.s_addr)) {
switch (inm->inm_state) {
case IGMP_DELAYING_MEMBER:
@@ -240,7 +232,7 @@ igmp_input(m, iphlen)
if (ifp->if_flags & IFF_LOOPBACK)
break;
- if (!IN_MULTICAST(ntohl(igmp->igmp_group.s_addr)) ||
+ if (!IN_MULTICAST(igmp->igmp_group.s_addr) ||
igmp->igmp_group.s_addr != ip->ip_dst.s_addr) {
++igmpstat.igps_rcv_badreports;
m_freem(m);
@@ -256,10 +248,10 @@ igmp_input(m, iphlen)
* to compensate for the lack of any way for a process to
* determine the arrival interface of an incoming packet.
*/
- if ((ntohl(ip->ip_src.s_addr) & IN_CLASSA_NET) == 0) {
+ if ((ip->ip_src.s_addr & IN_CLASSA_NET) == 0) {
IFP_TO_IA(ifp, ia);
if (ia)
- ip->ip_src.s_addr = htonl(ia->ia_subnet);
+ ip->ip_src.s_addr = ia->ia_subnet;
}
/*
@@ -306,7 +298,7 @@ igmp_input(m, iphlen)
if (ifp->if_flags & IFF_LOOPBACK)
break;
- if (!IN_MULTICAST(ntohl(igmp->igmp_group.s_addr)) ||
+ if (!IN_MULTICAST(igmp->igmp_group.s_addr) ||
igmp->igmp_group.s_addr != ip->ip_dst.s_addr) {
++igmpstat.igps_rcv_badreports;
m_freem(m);
@@ -322,12 +314,12 @@ igmp_input(m, iphlen)
* to compensate for the lack of any way for a process to
* determine the arrival interface of an incoming packet.
*/
- if ((ntohl(ip->ip_src.s_addr) & IN_CLASSA_NET) == 0) {
+ if ((ip->ip_src.s_addr & IN_CLASSA_NET) == 0) {
#ifndef MROUTING
IFP_TO_IA(ifp, ia);
#endif
if (ia)
- ip->ip_src.s_addr = htonl(ia->ia_subnet);
+ ip->ip_src.s_addr = ia->ia_subnet;
}
/*
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 2b511a2078f..5b9fe7f702a 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1,4 +1,4 @@
-/* $NetBSD: in.c,v 1.19 1995/05/31 21:50:34 mycroft Exp $ */
+/* $NetBSD: in.c,v 1.20 1995/06/01 21:35:58 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1991, 1993
@@ -54,37 +54,6 @@
#include "ether.h"
#ifdef INET
-/*
- * Return the network number from an internet address.
- */
-u_int32_t
-in_netof(in)
- struct in_addr in;
-{
- register u_int32_t i = ntohl(in.s_addr);
- register u_int32_t net;
- register struct in_ifaddr *ia;
-
- if (IN_CLASSA(i))
- net = i & IN_CLASSA_NET;
- else if (IN_CLASSB(i))
- net = i & IN_CLASSB_NET;
- else if (IN_CLASSC(i))
- net = i & IN_CLASSC_NET;
- else if (IN_CLASSD(i))
- net = i & IN_CLASSD_NET;
- else
- return (0);
-
- /*
- * Check whether network is a subnet;
- * if so, return subnet number.
- */
- for (ia = in_ifaddr; ia; ia = ia->ia_next)
- if (net == ia->ia_net)
- return (i & ia->ia_subnetmask);
- return (net);
-}
#ifndef SUBNETSARELOCAL
#define SUBNETSARELOCAL 1
@@ -100,16 +69,15 @@ int
in_localaddr(in)
struct in_addr in;
{
- register u_int32_t i = ntohl(in.s_addr);
register struct in_ifaddr *ia;
if (subnetsarelocal) {
for (ia = in_ifaddr; ia; ia = ia->ia_next)
- if ((i & ia->ia_netmask) == ia->ia_net)
+ if ((in.s_addr & ia->ia_netmask) == ia->ia_net)
return (1);
} else {
for (ia = in_ifaddr; ia; ia = ia->ia_next)
- if ((i & ia->ia_subnetmask) == ia->ia_subnet)
+ if ((in.s_addr & ia->ia_subnetmask) == ia->ia_subnet)
return (1);
}
return (0);
@@ -124,14 +92,13 @@ int
in_canforward(in)
struct in_addr in;
{
- register u_int32_t i = ntohl(in.s_addr);
register u_int32_t net;
- if (IN_EXPERIMENTAL(i) || IN_MULTICAST(i))
+ if (IN_EXPERIMENTAL(in.s_addr) || IN_MULTICAST(in.s_addr))
return (0);
- if (IN_CLASSA(i)) {
- net = i & IN_CLASSA_NET;
- if (net == 0 || net == (IN_LOOPBACKNET << IN_CLASSA_NSHIFT))
+ if (IN_CLASSA(in.s_addr)) {
+ net = in.s_addr & IN_CLASSA_NET;
+ if (net == 0 || net == htonl(IN_LOOPBACKNET << IN_CLASSA_NSHIFT))
return (0);
}
return (1);
@@ -176,7 +143,6 @@ in_control(so, cmd, data, ifp)
struct in_aliasreq *ifra = (struct in_aliasreq *)data;
struct sockaddr_in oldaddr;
int error, hostIsNew, maskIsNew;
- u_int32_t i;
/*
* Find address for this interface, if it exists.
@@ -308,8 +274,8 @@ in_control(so, cmd, data, ifp)
(struct sockaddr_in *) &ifr->ifr_addr, 1));
case SIOCSIFNETMASK:
- i = ifra->ifra_addr.sin_addr.s_addr;
- ia->ia_subnetmask = ntohl(ia->ia_sockmask.sin_addr.s_addr = i);
+ ia->ia_subnetmask = ia->ia_sockmask.sin_addr.s_addr =
+ ifra->ifra_addr.sin_addr.s_addr;
break;
case SIOCAIFADDR:
@@ -327,8 +293,7 @@ in_control(so, cmd, data, ifp)
if (ifra->ifra_mask.sin_len) {
in_ifscrub(ifp, ia);
ia->ia_sockmask = ifra->ifra_mask;
- ia->ia_subnetmask =
- ntohl(ia->ia_sockmask.sin_addr.s_addr);
+ ia->ia_subnetmask = ia->ia_sockmask.sin_addr.s_addr;
maskIsNew = 1;
}
if ((ifp->if_flags & IFF_POINTOPOINT) &&
@@ -415,7 +380,7 @@ in_ifinit(ifp, ia, sin, scrub)
struct sockaddr_in *sin;
int scrub;
{
- register u_int32_t i = ntohl(sin->sin_addr.s_addr);
+ register u_int32_t i = sin->sin_addr.s_addr;
struct sockaddr_in oldaddr;
int s = splimp(), flags = RTF_UP, error, ether_output();
@@ -451,7 +416,7 @@ in_ifinit(ifp, ia, sin, scrub)
*/
if (ia->ia_subnetmask == 0) {
ia->ia_subnetmask = ia->ia_netmask;
- ia->ia_sockmask.sin_addr.s_addr = htonl(ia->ia_subnetmask);
+ ia->ia_sockmask.sin_addr.s_addr = ia->ia_subnetmask;
} else
ia->ia_netmask &= ia->ia_subnetmask;
ia->ia_net = i & ia->ia_netmask;
@@ -463,9 +428,9 @@ in_ifinit(ifp, ia, sin, scrub)
ia->ia_ifa.ifa_metric = ifp->if_metric;
if (ifp->if_flags & IFF_BROADCAST) {
ia->ia_broadaddr.sin_addr.s_addr =
- htonl(ia->ia_subnet | ~ia->ia_subnetmask);
+ ia->ia_subnet | ~ia->ia_subnetmask;
ia->ia_netbroadcast.s_addr =
- htonl(ia->ia_net | ~ ia->ia_netmask);
+ 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;
@@ -483,7 +448,7 @@ in_ifinit(ifp, ia, sin, scrub)
if (ifp->if_flags & IFF_MULTICAST) {
struct in_addr addr;
- addr.s_addr = htonl(INADDR_ALLHOSTS_GROUP);
+ addr.s_addr = INADDR_ALLHOSTS_GROUP;
in_addmulti(&addr, ifp);
}
return (error);
@@ -499,14 +464,12 @@ in_broadcast(in, ifp)
struct ifnet *ifp;
{
register struct ifaddr *ifa;
- u_int32_t t;
if (in.s_addr == INADDR_BROADCAST ||
in.s_addr == INADDR_ANY)
return 1;
if ((ifp->if_flags & IFF_BROADCAST) == 0)
return 0;
- t = ntohl(in.s_addr);
/*
* Look through the list of addresses for a match
* with a broadcast address.
@@ -519,7 +482,8 @@ in_broadcast(in, ifp)
/*
* Check for old-style (host 0) broadcast.
*/
- t == ia->ia_subnet || t == ia->ia_net))
+ in.s_addr == ia->ia_subnet ||
+ in.s_addr == ia->ia_net))
return 1;
return (0);
#undef ia
@@ -631,4 +595,5 @@ in_delmulti(inm)
}
splx(s);
}
+
#endif
diff --git a/sys/netinet/in.h b/sys/netinet/in.h
index 555e068850d..a33b5698ddf 100644
--- a/sys/netinet/in.h
+++ b/sys/netinet/in.h
@@ -1,4 +1,4 @@
-/* $NetBSD: in.h,v 1.15 1995/05/31 07:39:33 mycroft Exp $ */
+/* $NetBSD: in.h,v 1.16 1995/06/01 21:36:05 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1990, 1993
@@ -85,43 +85,62 @@ struct in_addr {
* Definitions of bits in internet address integers.
* On subnets, the decomposition of addresses to host and net parts
* is done according to subnet mask, not the masks here.
+ *
+ * By byte-swapping the constants, we avoid ever having to byte-swap IP
+ * addresses inside the kernel. Unfortunately, user-level programs rely
+ * on these macros not doing byte-swapping.
*/
-#define IN_CLASSA(i) (((int32_t)(i) & 0x80000000) == 0)
-#define IN_CLASSA_NET 0xff000000
+#ifdef _KERNEL
+#define __IPADDR(x) htonl((u_int32_t)(x))
+#else
+#define __IPADDR(x) ((u_int32_t)(x))
+#endif
+
+#define IN_CLASSA(i) (((u_int32_t)(i) & __IPADDR(0x80000000)) == \
+ __IPADDR(0x00000000))
+#define IN_CLASSA_NET __IPADDR(0xff000000)
#define IN_CLASSA_NSHIFT 24
-#define IN_CLASSA_HOST 0x00ffffff
+#define IN_CLASSA_HOST __IPADDR(0x00ffffff)
#define IN_CLASSA_MAX 128
-#define IN_CLASSB(i) (((int32_t)(i) & 0xc0000000) == 0x80000000)
-#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB(i) (((u_int32_t)(i) & __IPADDR(0xc0000000)) == \
+ __IPADDR(0x80000000))
+#define IN_CLASSB_NET __IPADDR(0xffff0000)
#define IN_CLASSB_NSHIFT 16
-#define IN_CLASSB_HOST 0x0000ffff
+#define IN_CLASSB_HOST __IPADDR(0x0000ffff)
#define IN_CLASSB_MAX 65536
-#define IN_CLASSC(i) (((int32_t)(i) & 0xe0000000) == 0xc0000000)
-#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC(i) (((u_int32_t)(i) & __IPADDR(0xe0000000)) == \
+ __IPADDR(0xc0000000))
+#define IN_CLASSC_NET __IPADDR(0xffffff00)
#define IN_CLASSC_NSHIFT 8
-#define IN_CLASSC_HOST 0x000000ff
+#define IN_CLASSC_HOST __IPADDR(0x000000ff)
-#define IN_CLASSD(i) (((int32_t)(i) & 0xf0000000) == 0xe0000000)
-#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
-#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
-#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
+#define IN_CLASSD(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
+ __IPADDR(0xe0000000))
+/* These ones aren't really net and host fields, but routing needn't know. */
+#define IN_CLASSD_NET __IPADDR(0xf0000000)
+#define IN_CLASSD_NSHIFT 28
+#define IN_CLASSD_HOST __IPADDR(0x0fffffff)
#define IN_MULTICAST(i) IN_CLASSD(i)
-#define IN_EXPERIMENTAL(i) (((int32_t)(i) & 0xf0000000) == 0xf0000000)
-#define IN_BADCLASS(i) (((int32_t)(i) & 0xf0000000) == 0xf0000000)
+#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
+ __IPADDR(0xf0000000))
+#define IN_BADCLASS(i) (((u_int32_t)(i) & __IPADDR(0xf0000000)) == \
+ __IPADDR(0xf0000000))
+
+#define IN_LOCAL_GROUP(i) (((u_int32_t)(i) & __IPADDR(0xffffff00)) == \
+ __IPADDR(0xe0000000))
-#define INADDR_ANY (u_int32_t)0x00000000
-#define INADDR_LOOPBACK (u_int32_t)0x7f000001
-#define INADDR_BROADCAST (u_int32_t)0xffffffff /* must be masked */
+#define INADDR_ANY __IPADDR(0x00000000)
+#define INADDR_LOOPBACK __IPADDR(0x7f000001)
+#define INADDR_BROADCAST __IPADDR(0xffffffff) /* must be masked */
#ifndef _KERNEL
-#define INADDR_NONE 0xffffffff /* -1 return */
+#define INADDR_NONE __IPADDR(0xffffffff) /* -1 return */
#endif
-#define INADDR_UNSPEC_GROUP (u_int32_t)0xe0000000 /* 224.0.0.0 */
-#define INADDR_ALLHOSTS_GROUP (u_int32_t)0xe0000001 /* 224.0.0.1 */
-#define INADDR_MAX_LOCAL_GROUP (u_int32_t)0xe00000ff /* 224.0.0.255 */
+#define INADDR_UNSPEC_GROUP __IPADDR(0xe0000000) /* 224.0.0.0 */
+#define INADDR_ALLHOSTS_GROUP __IPADDR(0xe0000001) /* 224.0.0.1 */
#define IN_LOOPBACKNET 127 /* official! */
@@ -240,7 +259,6 @@ int in_broadcast __P((struct in_addr, struct ifnet *));
int in_canforward __P((struct in_addr));
int in_cksum __P((struct mbuf *, int));
int in_localaddr __P((struct in_addr));
-u_int32_t in_netof __P((struct in_addr));
void in_socktrim __P((struct sockaddr_in *));
#endif
#endif /* !_NETINET_IN_H_ */
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index 3a28aa51beb..c9303068e7d 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -1,4 +1,4 @@
-/* $NetBSD: in_pcb.c,v 1.13 1995/04/13 06:28:21 cgd Exp $ */
+/* $NetBSD: in_pcb.c,v 1.14 1995/06/01 21:36:11 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1991, 1993
@@ -111,7 +111,7 @@ in_pcbbind(inp, nam)
return (EAFNOSUPPORT);
#endif
lport = sin->sin_port;
- if (IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) {
+ if (IN_MULTICAST(sin->sin_addr.s_addr)) {
/*
* Treat SO_REUSEADDR as SO_REUSEPORT for multicast;
* allow complete duplication of binding if
@@ -186,7 +186,7 @@ in_pcbconnect(inp, nam)
#define ifatoia(ifa) ((struct in_ifaddr *)(ifa))
if (sin->sin_addr.s_addr == INADDR_ANY)
sin->sin_addr = IA_SIN(in_ifaddr)->sin_addr;
- else if (sin->sin_addr.s_addr == (u_int32_t)INADDR_BROADCAST &&
+ else if (sin->sin_addr.s_addr == INADDR_BROADCAST &&
(in_ifaddr->ia_ifp->if_flags & IFF_BROADCAST))
sin->sin_addr = satosin(&in_ifaddr->ia_broadaddr)->sin_addr;
}
@@ -242,7 +242,7 @@ in_pcbconnect(inp, nam)
* interface has been set as a multicast option, use the
* address of that interface as our source address.
*/
- if (IN_MULTICAST(ntohl(sin->sin_addr.s_addr)) &&
+ if (IN_MULTICAST(sin->sin_addr.s_addr) &&
inp->inp_moptions != NULL) {
struct ip_moptions *imo;
struct ifnet *ifp;
diff --git a/sys/netinet/in_var.h b/sys/netinet/in_var.h
index ea2e68fd71f..bc84bc833da 100644
--- a/sys/netinet/in_var.h
+++ b/sys/netinet/in_var.h
@@ -1,4 +1,4 @@
-/* $NetBSD: in_var.h,v 1.12 1995/05/31 06:08:29 mycroft Exp $ */
+/* $NetBSD: in_var.h,v 1.13 1995/06/01 21:36:16 mycroft Exp $ */
/*
* Copyright (c) 1985, 1986, 1993
@@ -72,9 +72,6 @@ struct in_aliasreq {
*/
#define IA_SIN(ia) (&(((struct in_ifaddr *)(ia))->ia_addr))
-#define IN_LNAOF(in, ifa) \
- ((ntohl((in).s_addr) & ~((struct in_ifaddr *)(ifa)->ia_subnetmask))
-
#ifdef _KERNEL
extern struct in_ifaddr *in_ifaddr;
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c
index 4ce6389cf22..5137e85e41a 100644
--- a/sys/netinet/ip_icmp.c
+++ b/sys/netinet/ip_icmp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_icmp.c,v 1.13 1995/05/31 21:50:38 mycroft Exp $ */
+/* $NetBSD: ip_icmp.c,v 1.14 1995/06/01 21:36:22 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1993
@@ -286,7 +286,7 @@ icmp_input(m, hlen)
icmpstat.icps_badlen++;
goto freeit;
}
- if (IN_MULTICAST(ntohl(icp->icmp_ip.ip_dst.s_addr)))
+ if (IN_MULTICAST(icp->icmp_ip.ip_dst.s_addr))
goto badcode;
NTOHS(icp->icmp_ip.ip_len);
#ifdef ICMPPRINTFS
@@ -422,8 +422,8 @@ icmp_reflect(m)
int optlen = (ip->ip_hl << 2) - sizeof(struct ip);
if (!in_canforward(ip->ip_src) &&
- ((ntohl(ip->ip_src.s_addr) & IN_CLASSA_NET) !=
- (IN_LOOPBACKNET << IN_CLASSA_NSHIFT))) {
+ ((ip->ip_src.s_addr & IN_CLASSA_NET) !=
+ htonl(IN_LOOPBACKNET << IN_CLASSA_NSHIFT))) {
m_freem(m); /* Bad return address */
goto done; /* ip_output() will check for broadcast */
}
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index bbf1dcf6581..bf3290ebddf 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_input.c,v 1.17 1995/05/15 02:09:58 cgd Exp $ */
+/* $NetBSD: ip_input.c,v 1.18 1995/06/01 21:36:27 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1993
@@ -248,10 +248,8 @@ next:
ia->ia_ifp == m->m_pkthdr.rcvif &&
#endif
(ia->ia_ifp->if_flags & IFF_BROADCAST)) {
- u_int32_t t;
-
- if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr ==
- ip->ip_dst.s_addr)
+ if (ip->ip_dst.s_addr ==
+ satosin(&ia->ia_broadaddr)->sin_addr.s_addr)
goto ours;
if (ip->ip_dst.s_addr == ia->ia_netbroadcast.s_addr)
goto ours;
@@ -259,14 +257,12 @@ next:
* Look for all-0's host part (old broadcast addr),
* either for subnet or net.
*/
- t = ntohl(ip->ip_dst.s_addr);
- if (t == ia->ia_subnet)
- goto ours;
- if (t == ia->ia_net)
+ if (ip->ip_dst.s_addr == ia->ia_subnet ||
+ ip->ip_dst.s_addr == ia->ia_net)
goto ours;
}
}
- if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
+ if (IN_MULTICAST(ip->ip_dst.s_addr)) {
struct in_multi *inm;
#ifdef MROUTING
extern struct socket *ip_mrouter;
@@ -322,7 +318,7 @@ next:
}
goto ours;
}
- if (ip->ip_dst.s_addr == (u_int32_t)INADDR_BROADCAST)
+ if (ip->ip_dst.s_addr == INADDR_BROADCAST)
goto ours;
if (ip->ip_dst.s_addr == INADDR_ANY)
goto ours;
@@ -746,7 +742,7 @@ ip_dooptions(m)
/*
* Let ip_intr's mcast routing check handle mcast pkts
*/
- forward = !IN_MULTICAST(ntohl(ip->ip_dst.s_addr));
+ forward = !IN_MULTICAST(ip->ip_dst.s_addr);
break;
case IPOPT_RR:
@@ -1083,10 +1079,9 @@ ip_forward(m, srcrt)
satosin(rt_key(rt))->sin_addr.s_addr != 0 &&
ipsendredirects && !srcrt) {
#define RTA(rt) ((struct in_ifaddr *)(rt->rt_ifa))
- u_int32_t src = ntohl(ip->ip_src.s_addr);
-
if (RTA(rt) &&
- (src & RTA(rt)->ia_subnetmask) == RTA(rt)->ia_subnet) {
+ (ip->ip_src.s_addr & RTA(rt)->ia_subnetmask) ==
+ RTA(rt)->ia_subnet) {
if (rt->rt_flags & RTF_GATEWAY)
dest = satosin(rt->rt_gateway)->sin_addr.s_addr;
else
diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c
index 0c3dc2ffa76..a760e3884b2 100644
--- a/sys/netinet/ip_mroute.c
+++ b/sys/netinet/ip_mroute.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_mroute.c,v 1.15 1995/05/31 21:50:39 mycroft Exp $ */
+/* $NetBSD: ip_mroute.c,v 1.16 1995/06/01 21:36:32 mycroft Exp $ */
/*
* IP multicast forwarding procedures
@@ -997,7 +997,7 @@ ip_mforward(m, ifp)
* or a packet destined to a local-only group.
*/
if (ip->ip_ttl <= 1 ||
- ntohl(ip->ip_dst.s_addr) <= INADDR_MAX_LOCAL_GROUP)
+ IN_LOCAL_GROUP(ip->ip_dst.s_addr))
return (0);
/*
@@ -1447,7 +1447,7 @@ ipip_input(m, hlen)
* uniquely identifies the tunnel (i.e., that this site has
* at most one tunnel with the remote site).
*/
- if (! IN_MULTICAST(ntohl(((struct ip *)((char *)ip + hlen))->ip_dst.s_addr))) {
+ if (!IN_MULTICAST(((struct ip *)((char *)ip + hlen))->ip_dst.s_addr)) {
++mrtstat.mrts_bad_tunnel;
m_freem(m);
return;
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 33a89833e8c..a0ba78f86a0 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_output.c,v 1.22 1995/05/15 01:24:53 cgd Exp $ */
+/* $NetBSD: ip_output.c,v 1.23 1995/06/01 21:36:40 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1990, 1993
@@ -157,7 +157,7 @@ ip_output(m0, opt, ro, flags, imo)
if (ro->ro_rt->rt_flags & RTF_GATEWAY)
dst = (struct sockaddr_in *)ro->ro_rt->rt_gateway;
}
- if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
+ if (IN_MULTICAST(ip->ip_dst.s_addr)) {
struct in_multi *inm;
m->m_flags |= M_MCAST;
@@ -833,7 +833,7 @@ ip_setmoptions(optname, imop, m)
break;
}
mreq = mtod(m, struct ip_mreq *);
- if (!IN_MULTICAST(ntohl(mreq->imr_multiaddr.s_addr))) {
+ if (!IN_MULTICAST(mreq->imr_multiaddr.s_addr)) {
error = EINVAL;
break;
}
@@ -854,8 +854,7 @@ ip_setmoptions(optname, imop, m)
}
ifp = ro.ro_rt->rt_ifp;
rtfree(ro.ro_rt);
- }
- else {
+ } else {
INADDR_TO_IFP(mreq->imr_interface, ifp);
}
/*
@@ -906,7 +905,7 @@ ip_setmoptions(optname, imop, m)
break;
}
mreq = mtod(m, struct ip_mreq *);
- if (!IN_MULTICAST(ntohl(mreq->imr_multiaddr.s_addr))) {
+ if (!IN_MULTICAST(mreq->imr_multiaddr.s_addr)) {
error = EINVAL;
break;
}
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 308c9e9188d..1c2df2c476d 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_input.c,v 1.12 1995/04/13 06:36:37 cgd Exp $ */
+/* $NetBSD: tcp_input.c,v 1.13 1995/06/01 21:36:45 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1990, 1993, 1994
@@ -556,7 +556,7 @@ findpcb:
* packet with M_BCAST not set.
*/
if (m->m_flags & (M_BCAST|M_MCAST) ||
- IN_MULTICAST(ntohl(ti->ti_dst.s_addr)))
+ IN_MULTICAST(ti->ti_dst.s_addr))
goto drop;
am = m_get(M_DONTWAIT, MT_SONAME); /* XXX */
if (am == NULL)
@@ -1282,7 +1282,7 @@ dropwithreset:
* Don't bother to respond if destination was broadcast/multicast.
*/
if ((tiflags & TH_RST) || m->m_flags & (M_BCAST|M_MCAST) ||
- IN_MULTICAST(ntohl(ti->ti_dst.s_addr)))
+ IN_MULTICAST(ti->ti_dst.s_addr))
goto drop;
if (tiflags & TH_ACK)
tcp_respond(tp, ti, m, (tcp_seq)0, ti->ti_ack, TH_RST);
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 946f0bc0f73..484dd6102ea 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1,4 +1,4 @@
-/* $NetBSD: udp_usrreq.c,v 1.15 1995/04/13 06:37:18 cgd Exp $ */
+/* $NetBSD: udp_usrreq.c,v 1.16 1995/06/01 21:36:51 mycroft Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1990, 1993
@@ -152,7 +152,7 @@ udp_input(m, iphlen)
}
}
- if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) ||
+ if (IN_MULTICAST(ip->ip_dst.s_addr) ||
in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) {
struct socket *last;
/*
diff --git a/sys/netiso/iso.c b/sys/netiso/iso.c
index 921e3437945..d2e2e8d42b2 100644
--- a/sys/netiso/iso.c
+++ b/sys/netiso/iso.c
@@ -1,4 +1,4 @@
-/* $NetBSD: iso.c,v 1.9 1995/04/11 04:30:59 mycroft Exp $ */
+/* $NetBSD: iso.c,v 1.10 1995/06/01 21:41:40 mycroft Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -353,16 +353,11 @@ caddr_t buf; /* RESULT: network portion of address here */
*/
len += ADDROSINET_IDI_LEN;
else if (idi == IDI_RFC986) {
- u_long inetaddr;
struct ovl_rfc986 *o986 = (struct ovl_rfc986 *)isoa;
/* bump len to include idi and version (1 byte) */
len += ADDRRFC986_IDI_LEN + 1;
- /* get inet addr long aligned */
- bcopy(o986->o986_inetaddr, &inetaddr, sizeof(inetaddr));
- inetaddr = ntohl(inetaddr); /* convert to host byte order */
-
IFDEBUG(D_ROUTE)
printf("iso_netof: isoa ");
dump_buf(isoa, sizeof(*isoa));
@@ -370,12 +365,12 @@ caddr_t buf; /* RESULT: network portion of address here */
ENDDEBUG
/* bump len by size of network portion of inet address */
- if (IN_CLASSA(inetaddr)) {
+ if (IN_CLASSA(o986->o986_inetaddr)) {
len += 4-IN_CLASSA_NSHIFT/8;
IFDEBUG(D_ROUTE)
printf("iso_netof: class A net len is now %d\n", len);
ENDDEBUG
- } else if (IN_CLASSB(inetaddr)) {
+ } else if (IN_CLASSB(o986->o986_inetaddr)) {
len += 4-IN_CLASSB_NSHIFT/8;
IFDEBUG(D_ROUTE)
printf("iso_netof: class B net len is now %d\n", len);