Switch pidentd to using sysctl()s instead of libkvm. It now doesn't need

to be linked with libkvm... this should fix a lot of strange problems
people report with pidentd.

This is for -CURRENT only, at the moment.
This commit is contained in:
Brian Feldman 1999-07-14 19:37:23 +00:00
parent 5bac0c9d2d
commit d9b2b611dd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=20204
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,15 @@
--- src/freebsd.c.orig Wed Jul 14 15:23:56 1999
+++ src/freebsd.c Wed Jul 14 15:24:51 1999
@@ -1,3 +1,7 @@
+#include <osreldate.h>
+#if __FreeBSD_version >= 400007
+#include "freebsd4.c"
+#else
/*
** freebsd.c Low level kernel access functions for FreeBSD 2.x
**
@@ -306,3 +310,4 @@
return -1;
}
+#endif

View File

@ -0,0 +1,35 @@
--- /dev/null Wed Jul 14 15:27:00 1999
+++ src/freebsd4.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;
+}