PERFORCE change 111795 for review

John Baldwin jhb at FreeBSD.org
Sat Dec 16 06:46:44 PST 2006


http://perforce.freebsd.org/chv.cgi?CH=111795

Change 111795 by jhb at jhb_zion on 2006/12/16 14:46:07

	IFC @111793.

Affected files ...

.. //depot/projects/smpng/sys/netinet6/in6.c#38 integrate

Differences ...

==== //depot/projects/smpng/sys/netinet6/in6.c#38 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/netinet6/in6.c,v 1.66 2006/12/12 12:17:57 bz Exp $	*/
+/*	$FreeBSD: src/sys/netinet6/in6.c,v 1.67 2006/12/16 14:15:31 bz Exp $	*/
 /*	$KAME: in6.c,v 1.259 2002/01/21 11:37:50 keiichi Exp $	*/
 
 /*-
@@ -1904,7 +1904,7 @@
 	char *cp;
 	const u_int16_t *a = (const u_int16_t *)addr;
 	const u_int8_t *d;
-	int dcolon = 0;
+	int dcolon = 0, zero = 0;
 
 	cp = ip6buf;
 
@@ -1932,9 +1932,23 @@
 			continue;
 		}
 		d = (const u_char *)a;
-		*cp++ = digits[*d >> 4];
-		*cp++ = digits[*d++ & 0xf];
-		*cp++ = digits[*d >> 4];
+		/* Try to eliminate leading zeros in printout like in :0001. */
+		zero = 1;
+		*cp = digits[*d >> 4];
+		if (*cp != '0') {
+			zero = 0;
+			cp++;
+		}
+		*cp = digits[*d++ & 0xf];
+		if (zero == 0 || (*cp != '0')) {
+			zero = 0;
+			cp++;
+		}
+		*cp = digits[*d >> 4];
+		if (zero == 0 || (*cp != '0')) {
+			zero = 0;
+			cp++;
+		}
 		*cp++ = digits[*d & 0xf];
 		*cp++ = ':';
 		a++;


More information about the p4-projects mailing list