--- /dev/null	Wed Jul 14 15:27:00 1999
+++ src/freebsd-sysctl.c	Thu Jul  8 15:52:57 1999
@@ -0,0 +1,32 @@
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <sys/ucred.h>
+
+#include <netinet/in.h>
+
+int
+k_open(void) {
+
+	return 0;
+}
+
+int k_getuid(struct in_addr *faddr, int fport, struct in_addr *laddr,
+	     int lport, int *uid) {
+	struct sockaddr_in sin[2];
+	struct ucred uc;
+	size_t oldlen = sizeof(uc);
+
+	sin[0].sin_addr.s_addr = laddr->s_addr;
+	sin[1].sin_addr.s_addr = faddr->s_addr;
+	sin[0].sin_port = (u_short)lport;
+	sin[1].sin_port = (u_short)fport;
+
+	if (sysctlbyname("net.inet.tcp.getcred", &uc, &oldlen, sin,
+	    sizeof(sin)))
+		return -1;
+
+	*uid = uc.cr_uid;
+	return 0;
+}	
