Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Dec 2003 15:56:52 -0800 (PST)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 43592 for review
Message-ID:  <200312072356.hB7NuqQi011484@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=43592

Change 43592 by sam@sam_ebb on 2003/12/07 15:56:45

	micro-optimization from bde: use c99 local struct initializations
	instead of bzero calls

Affected files ...

.. //depot/projects/netperf/sys/netinet/ip_icmp.c#12 edit

Differences ...

==== //depot/projects/netperf/sys/netinet/ip_icmp.c#12 (text+ko) ====

@@ -248,7 +248,6 @@
 	struct icmp *icp;
 	struct in_ifaddr *ia;
 	struct ip *ip = mtod(m, struct ip *);
-	struct sockaddr_in icmpsrc, icmpdst, icmpgw;
 	int hlen = off;
 	int icmplen = ip->ip_len;
 	int i, code;
@@ -311,17 +310,6 @@
 	if (icp->icmp_type > ICMP_MAXTYPE)
 		goto raw;
 
-	/* Initialize */
-	bzero(&icmpsrc, sizeof(icmpsrc));
-	icmpsrc.sin_len = sizeof(struct sockaddr_in);
-	icmpsrc.sin_family = AF_INET;
-	bzero(&icmpdst, sizeof(icmpdst));
-	icmpdst.sin_len = sizeof(struct sockaddr_in);
-	icmpdst.sin_family = AF_INET;
-	bzero(&icmpgw, sizeof(icmpgw));
-	icmpgw.sin_len = sizeof(struct sockaddr_in);
-	icmpgw.sin_family = AF_INET;
-
 	icmpstat.icps_inhist[icp->icmp_type]++;
 	code = icp->icmp_code;
 	switch (icp->icmp_type) {
@@ -381,7 +369,10 @@
 		if (code)
 			goto badcode;
 		code = PRC_QUENCH;
-	deliver:
+	deliver: {
+		struct sockaddr_in icmpsrc =
+			{ sizeof(struct sockaddr_in), AF_INET };
+
 		/*
 		 * Problem with datagram; advise higher level routines.
 		 */
@@ -449,6 +440,7 @@
 			(*ctlfunc)(code, (struct sockaddr *)&icmpsrc,
 				   (void *)&icp->icmp_ip);
 		break;
+	}
 
 	badcode:
 		icmpstat.icps_badcode++;
@@ -484,7 +476,10 @@
 		else
 			goto reflect;
 
-	case ICMP_MASKREQ:
+	case ICMP_MASKREQ: {
+		struct sockaddr_in icmpdst =
+			{ sizeof(struct sockaddr_in), AF_INET };
+
 		if (icmpmaskrepl == 0)
 			break;
 		/*
@@ -526,8 +521,16 @@
 		icmpstat.icps_outhist[icp->icmp_type]++;
 		icmp_reflect(m);
 		return;
+	}
 
-	case ICMP_REDIRECT:
+	case ICMP_REDIRECT: {
+		struct sockaddr_in icmpsrc =
+			{ sizeof(struct sockaddr_in), AF_INET };
+		struct sockaddr_in icmpdst =
+			{ sizeof(struct sockaddr_in), AF_INET };
+		struct sockaddr_in icmpgw =
+			{ sizeof(struct sockaddr_in), AF_INET };
+
 		if (log_redirect) {
 			u_long src, dst, gw;
 
@@ -580,6 +583,7 @@
 		key_sa_routechange((struct sockaddr *)&icmpsrc);
 #endif
 		break;
+	}
 
 	/*
 	 * No kernel processing for the following;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200312072356.hB7NuqQi011484>