PERFORCE change 138378 for review
John Birrell
jb at FreeBSD.org
Sun Mar 23 20:17:29 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=138378
Change 138378 by jb at jb_freebsd1 on 2008/03/23 20:17:10
Implement the in_addr and in6_addr SIF subrs.
Affected files ...
.. //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/dtrace/dtrace.c#43 edit
Differences ...
==== //depot/projects/dtrace/src/sys/contrib/opensolaris/uts/common/dtrace/dtrace.c#43 (text) ====
@@ -118,6 +118,7 @@
#include <sys/malloc.h>
#include <sys/sysctl.h>
#include <sys/dtrace_bsd.h>
+#include <netinet/in.h>
#include "dtrace_cddl.h"
#include "dtrace_debug.c"
#endif
@@ -272,6 +273,7 @@
#define cr_suid cr_svuid
#define cr_sgid cr_svgid
+#define ipaddr_t in_addr_t
#define mod_modname pathname
#define vuprintf vprintf
#define ttoproc(_a) ((_a)->td_proc)
@@ -4403,8 +4405,6 @@
case DIF_SUBR_INET_NTOA:
case DIF_SUBR_INET_NTOA6:
case DIF_SUBR_INET_NTOP: {
-printf("%s(%d): DOODAD\n",__func__,__LINE__);
-#ifdef DOODAD
size_t size;
int af, argi, i;
char *base, *end;
@@ -4502,14 +4502,22 @@
tryzero = -1;
numzero = 1;
for (i = 0; i < sizeof (struct in6_addr); i++) {
+#if defined(sun)
if (ip6._S6_un._S6_u8[i] == 0 &&
+#else
+ if (ip6.__u6_addr.__u6_addr8[i] == 0 &&
+#endif
tryzero == -1 && i % 2 == 0) {
tryzero = i;
continue;
}
if (tryzero != -1 &&
+#if defined(sun)
(ip6._S6_un._S6_u8[i] != 0 ||
+#else
+ (ip6.__u6_addr.__u6_addr8[i] != 0 ||
+#endif
i == sizeof (struct in6_addr) - 1)) {
if (i - tryzero <= numzero) {
@@ -4521,7 +4529,11 @@
numzero = i - i % 2 - tryzero;
tryzero = -1;
+#if defined(sun)
if (ip6._S6_un._S6_u8[i] == 0 &&
+#else
+ if (ip6.__u6_addr.__u6_addr8[i] == 0 &&
+#endif
i == sizeof (struct in6_addr) - 1)
numzero += 2;
}
@@ -4538,7 +4550,11 @@
i >= DTRACE_V4MAPPED_OFFSET; i--) {
ASSERT(end >= base);
+#if defined(sun)
val = ip6._S6_un._S6_u8[i];
+#else
+ val = ip6.__u6_addr.__u6_addr8[i];
+#endif
if (val == 0) {
*end-- = '0';
@@ -4579,8 +4595,13 @@
if (i < 14 && i != firstzero - 2)
*end-- = ':';
+#if defined(sun)
val = (ip6._S6_un._S6_u8[i] << 8) +
ip6._S6_un._S6_u8[i + 1];
+#else
+ val = (ip6.__u6_addr.__u6_addr8[i] << 8) +
+ ip6.__u6_addr.__u6_addr8[i + 1];
+#endif
if (val == 0) {
*end-- = '0';
@@ -4603,7 +4624,6 @@
inetout: regs[rd] = (uintptr_t)end + 1;
mstate->dtms_scratch_ptr += size;
-#endif
break;
}
More information about the p4-projects
mailing list