--- /dev/null
+diff -urN strace-4.0.orig/config.h.in strace-4.0/config.h.in
+--- strace-4.0.orig/config.h.in Mon Aug 16 14:53:44 1999
++++ strace-4.0/config.h.in Mon Aug 16 15:37:36 1999
+@@ -108,6 +108,9 @@
+ /* Define if you have the getdents function. */
+ #undef HAVE_GETDENTS
+
++/* Define if you have the inet_ntop function. */
++#undef HAVE_INET_NTOP
++
+ /* Define if you have the mctl function. */
+ #undef HAVE_MCTL
+
+diff -urN strace-4.0.orig/configure.in strace-4.0/configure.in
+--- strace-4.0.orig/configure.in Mon Aug 16 14:53:44 1999
++++ strace-4.0/configure.in Mon Aug 16 15:37:28 1999
+@@ -125,7 +125,7 @@
+ AC_HEADER_MAJOR
+ AC_SIG_ATOMIC_T
+ AC_CHECK_LIB(nsl, main)
+-AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl putpmsg prctl sendmsg)
++AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl putpmsg prctl sendmsg inet_ntop)
+ AC_CHECK_HEADERS(sys/filio.h sys/acl.h sys/asynch.h sys/door.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h)
+ AC_DECL_SYS_ERRLIST
+ AC_DECL_SYS_SIGLIST
+diff -urN strace-4.0.orig/net.c strace-4.0/net.c
+--- strace-4.0.orig/net.c Mon Aug 16 14:53:44 1999
++++ strace-4.0/net.c Mon Aug 16 15:40:02 1999
+@@ -311,6 +311,10 @@
+ struct sockaddr sa;
+ struct sockaddr_in *sin = (struct sockaddr_in *) &sa;
+ struct sockaddr_un sau;
++#ifdef HAVE_INET_NTOP
++ struct sockaddr_in6 sa6;
++ char string_addr[100];
++#endif
+ #ifdef LINUX
+ struct sockaddr_ipx sipx;
+ #endif
+@@ -340,6 +344,19 @@
+ tprintf("sin_port=htons(%u), sin_addr=inet_addr(\"%s\")}",
+ ntohs(sin->sin_port), inet_ntoa(sin->sin_addr));
+ break;
++#ifdef HAVE_INET_NTOP
++ case AF_INET6:
++ if (umove(tcp, addr, &sa6) < 0)
++ tprintf("{sin6_family=AF_INET6, ...}");
++ else
++ {
++ tprintf("{sin6_family=AF_INET6, ");
++ inet_ntop(AF_INET6, &sa6.sin6_addr, string_addr, sizeof(string_addr));
++ tprintf("sin6_port=htons(%u), inet_pton(AF_INET6, \"%s\", &sin6_addr), sin6_flowinfo=htonl(%u)",
++ ntohs(sa6.sin6_port), string_addr, ntohl(sa6.sin6_flowinfo));
++ }
++ break;
++#endif
+ #if defined(AF_IPX) && defined(linux)
+ case AF_IPX:
+ if (umove(tcp, addr, &sipx)<0)
--- /dev/null
+diff -urN strace-4.0.orig/system.c strace-4.0/system.c
+--- strace-4.0.orig/system.c Mon Aug 16 16:10:53 1999
++++ strace-4.0/system.c Mon Aug 16 16:23:37 1999
+@@ -70,6 +70,8 @@
+ #include <linux/sysctl.h>
+ #endif
+
++#include <linux/version.h>
++
+ static struct xlat mount_flags[] = {
+ { MS_RDONLY, "MS_RDONLY" },
+ { MS_NOSUID, "MS_NOSUID" },
+@@ -1278,7 +1280,11 @@
+ { KERN_PROF, "KERN_PROF" },
+ { KERN_NODENAME, "KERN_NODENAME" },
+ { KERN_DOMAINNAME, "KERN_DOMAINNAME" },
++#if LINUX_VERSION_CODE >= 131595
++ { KERN_CAP_BSET, "KERN_CAP_BSET" },
++#else
+ { KERN_SECURELVL, "KERN_SECURELVL" },
++#endif
+ { KERN_PANIC, "KERN_PANIC" },
+ { KERN_REALROOTDEV, "KERN_REALROOTDEV" },
+ { KERN_JAVA_INTERPRETER, "KERN_JAVA_INTERPRETER" },