svn commit: r310352 - head/usr.sbin/syslogd

Hiroki Sato hrs at FreeBSD.org
Wed Dec 21 07:05:36 UTC 2016


Author: hrs
Date: Wed Dec 21 07:05:34 2016
New Revision: 310352
URL: https://svnweb.freebsd.org/changeset/base/310352

Log:
  Simplify type casting of struct sockaddr_in.

Modified:
  head/usr.sbin/syslogd/syslogd.c

Modified: head/usr.sbin/syslogd/syslogd.c
==============================================================================
--- head/usr.sbin/syslogd/syslogd.c	Wed Dec 21 06:49:21 2016	(r310351)
+++ head/usr.sbin/syslogd/syslogd.c	Wed Dec 21 07:05:34 2016	(r310352)
@@ -128,6 +128,7 @@ static const char include_ext[] = ".conf
 
 #define	sstosa(ss)	((struct sockaddr *)(ss))
 #define	satosin6(sa)	((struct sockaddr_in6 *)(void *)(sa))
+#define	sstosin(ss)	((struct sockaddr_in *)(ss))
 #define	satosin(sa)	((struct sockaddr_in *)(void *)(sa))
 #define	s6_addr32	__u6_addr.__u6_addr32
 #define	IN6_ARE_MASKED_ADDR_EQUAL(d, a, m)	(	\
@@ -2368,7 +2369,7 @@ allowaddr(char *s)
 	struct servent *se;
 	int masklen = -1;
 	struct addrinfo hints, *res;
-	struct in_addr *addrp, *maskp;
+	in_addr_t *addrp, *maskp;
 #ifdef INET6
 	int i;
 	u_int32_t *addr6p, *mask6p;
@@ -2434,28 +2435,27 @@ allowaddr(char *s)
 		ap->a_mask.ss_family = res->ai_family;
 		if (res->ai_family == AF_INET) {
 			ap->a_mask.ss_len = sizeof(struct sockaddr_in);
-			maskp = &((struct sockaddr_in *)&ap->a_mask)->sin_addr;
-			addrp = &((struct sockaddr_in *)&ap->a_addr)->sin_addr;
+			maskp = &sstosin(&ap->a_mask)->sin_addr.s_addr;
+			addrp = &sstosin(&ap->a_addr)->sin_addr.s_addr;
 			if (masklen < 0) {
 				/* use default netmask */
-				if (IN_CLASSA(ntohl(addrp->s_addr)))
-					maskp->s_addr = htonl(IN_CLASSA_NET);
-				else if (IN_CLASSB(ntohl(addrp->s_addr)))
-					maskp->s_addr = htonl(IN_CLASSB_NET);
+				if (IN_CLASSA(ntohl(*addrp)))
+					*maskp = htonl(IN_CLASSA_NET);
+				else if (IN_CLASSB(ntohl(*addrp)))
+					*maskp = htonl(IN_CLASSB_NET);
 				else
-					maskp->s_addr = htonl(IN_CLASSC_NET);
+					*maskp = htonl(IN_CLASSC_NET);
+			} else if (masklen == 0) {
+				*maskp = 0;
 			} else if (masklen <= 32) {
 				/* convert masklen to netmask */
-				if (masklen == 0)
-					maskp->s_addr = 0;
-				else
-					maskp->s_addr = htonl(~((1 << (32 - masklen)) - 1));
+				*maskp = htonl(~((1 << (32 - masklen)) - 1));
 			} else {
 				freeaddrinfo(res);
 				return (-1);
 			}
 			/* Lose any host bits in the network number. */
-			addrp->s_addr &= maskp->s_addr;
+			*addrp &= *maskp;
 		}
 #ifdef INET6
 		else if (res->ai_family == AF_INET6 && masklen <= 128) {


More information about the svn-src-head mailing list