Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Aug 2009 21:26:16 GMT
From:      Gabor Pali <pgj@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 167381 for review
Message-ID:  <200908152126.n7FLQGlN033923@repoman.freebsd.org>

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

Change 167381 by pgj@petymeg-current on 2009/08/15 21:25:44

	Add support for IP6 family addresses.

Affected files ...

.. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#5 edit

Differences ...

==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#5 (text+ko) ====

@@ -435,6 +435,37 @@
 		break;
 #ifdef INET6
 	case PF_INET6:
+		/*
+		 * XXX: This is a special workaround for KAME kernels.
+		 * sin6_scope_id field of SA should be set in the future.
+		 */
+		if (IN6_IS_ADDR_LINKLOCAL(in6) ||
+		    IN6_IS_ADDR_MC_LINKLOCAL(in6)) {
+			sa_in6->sin6_scope_id =
+			    (u_int32_t)ntohs(*(u_short *)&in6->s6_addr[2]);
+			*(u_short *)&in6->s6_addr[2] = 0;
+		}
+		if (flags & RTF_HOST) {
+			rap->rat_address = strdup(routename6(sa_in6, 0));
+			strlcpy(rap->rat_ni_address, routename6(sa_in6, 1),
+			    sizeof(rap->rat_ni_address));
+		}
+		else if (mask != NULL) {
+			rap->rat_address = strdup(netname6(sa_in6,
+			    &mk_in6->sin6_addr, 0));
+			strlcpy(rap->rat_ni_address,
+			    netname6(sa_in6, &mk_in6->sin6_addr, 1),
+			    sizeof(rap->rat_ni_address));
+		} else {
+			rap->rat_address = strdup(netname6(sa_in6, 0L, 0));
+			strlcpy(rap->rat_ni_address, rap->rat_address,
+			    sizeof(rap->rat_ni_address));
+		}
+		rap->rat_data = malloc(sizeof(struct sockaddr_in6));
+		if (rap->rat_data != NULL) {
+			rap->rat_data_len = sizeof(struct sockaddr_in6);
+			memcpy(rap->rat_data, sa_in6, rap->rat_data_len);
+		}
 		break;
 #endif
 	case PF_IPX:



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