Text for IPv6 Scope

Crist J. Clark cristclark at comcast.net
Fri Jan 4 14:07:28 PST 2008


Anyone up for adding text to the scopeid field in the ifconfig(8)
output for IPv6 addresses? Other OSes do. To avoid too much
disruption to the current format, the text is appended after the
currently printed hexadecimal field.

Example:

fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::290:27ff:fe13:2540%fxp0 prefixlen 64 scopeid 0x5(site-local) 

While we're at it, update the in6.h file to include all scopes
in RFC4291.

Look OK? Anyone up for applying these?

Patches (diffs off of a not-too-current CURRENT):

Index: sbin/ifconfig/af_inet6.c
===================================================================
RCS file: /ncvs/freebsd/src/sbin/ifconfig/af_inet6.c,v
retrieving revision 1.5
diff -u -r1.5 af_inet6.c
--- sbin/ifconfig/af_inet6.c	3 Feb 2007 03:40:33 -0000	1.5
+++ sbin/ifconfig/af_inet6.c	4 Jan 2008 21:53:26 -0000
@@ -290,8 +290,31 @@
 	if ((flags6 & IN6_IFF_TEMPORARY) != 0)
 		printf("temporary ");
 
-        if (scopeid)
-		printf("scopeid 0x%x ", scopeid);
+        if (scopeid) {
+		printf("scopeid 0x%x", scopeid);
+		switch (scopeid) {
+		case __IPV6_ADDR_SCOPE_INTFACELOCAL:
+			printf("(interface-local) ");
+			break;
+		case __IPV6_ADDR_SCOPE_LINKLOCAL:
+			printf("(link-local) ");
+			break;
+		case __IPV6_ADDR_SCOPE_ADMINLOCAL:
+			printf("(admin-local) ");
+			break;
+		case __IPV6_ADDR_SCOPE_SITELOCAL:
+			printf("(site-local) ");
+			break;
+		case __IPV6_ADDR_SCOPE_ORGLOCAL:
+			printf("(org-local) ");
+			break;
+		case __IPV6_ADDR_SCOPE_GLOBAL:
+			printf("(global) ");
+			break;
+		default:
+			putchar(' ');
+		}
+	}
 
 	if (ip6lifetime && (lifetime.ia6t_preferred || lifetime.ia6t_expire)) {
 		printf("pltime ");
Index: sys/netinet6/in6.h
===================================================================
RCS file: /ncvs/freebsd/src/sys/netinet6/in6.h,v
retrieving revision 1.44
diff -u -r1.44 in6.h
--- sys/netinet6/in6.h	28 Mar 2006 12:51:22 -0000	1.44
+++ sys/netinet6/in6.h	4 Jan 2008 21:44:36 -0000
@@ -271,6 +271,7 @@
 #define IPV6_ADDR_SCOPE_NODELOCAL	0x01
 #define IPV6_ADDR_SCOPE_INTFACELOCAL	0x01
 #define IPV6_ADDR_SCOPE_LINKLOCAL	0x02
+#define IPV6_ADDR_SCOPE_ADMINLOCAL	0x04
 #define IPV6_ADDR_SCOPE_SITELOCAL	0x05
 #define IPV6_ADDR_SCOPE_ORGLOCAL	0x08	/* just used in this file */
 #define IPV6_ADDR_SCOPE_GLOBAL		0x0e
@@ -278,6 +279,7 @@
 #define __IPV6_ADDR_SCOPE_NODELOCAL	0x01
 #define __IPV6_ADDR_SCOPE_INTFACELOCAL	0x01
 #define __IPV6_ADDR_SCOPE_LINKLOCAL	0x02
+#define __IPV6_ADDR_SCOPE_ADMINLOCAL	0x04
 #define __IPV6_ADDR_SCOPE_SITELOCAL	0x05
 #define __IPV6_ADDR_SCOPE_ORGLOCAL	0x08	/* just used in this file */
 #define __IPV6_ADDR_SCOPE_GLOBAL	0x0e
-- 
Crist J. Clark                     |     cjclark at alum.mit.edu


More information about the freebsd-net mailing list