tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Adding sc_pid to SCM_CREDS



On 3/29/2016 12:57 PM, Roy Marples wrote:
Attached is a patch which adds sc_pid to struct sockcred and correctly
fills it out. The old sockcred structure is available as osockcred in
compat/sys/socket.h and guarded by COMPAT_70.

Everything seems to work ok with old binaries, but would appreciate some
extra eyes on the compat code or any suggestion how it could be done better.

Roy

--- sys/sys/socket.h    13 Oct 2015 21:28:34 -0000    1.118
+++ sys/sys/socket.h    29 Mar 2016 16:10:49 -0000
@@ -349,6 +349,7 @@
  * Socket credentials.
  */
 struct sockcred {
+    pid_t    sc_pid;            /* process id */

Would it be too much of a hack to keep backwards compat by putting sc_pid *after* sc_groups, and simply returning a slightly larger structure than old callers would use? i.e. realsizeof(new sockcred) == realsizeof(old sockcred) + sizeof(pid_t) There would be no declared sc_pid field (unless we define a struct sockcred_tail), but doing so would eliminate 90% of the changes.

Assuming we're going with all of the compat changes:
@@ -596,8 +597,9 @@
 #define    SCM_RIGHTS    0x01        /* access rights (array of int) */
 #if defined(_NETBSD_SOURCE)
 /*             0x02           timestamp (struct timeval50) */
-#define    SCM_CREDS    0x04        /* credentials (struct sockcred) */
+/*            0x04           credentials (struct osockcred) */
How about including "SCM_OCREDS" in this comment, to make it easier to grep for?

--- sys/sys/unpcb.h    24 Apr 2008 11:38:39 -0000    1.17
+++ sys/sys/unpcb.h    29 Mar 2016 16:10:49 -0000
@@ -97,11 +97,12 @@
* in with data for the listening process. This is set up in unp_bind() when
  * it fills in unp_connid for later consumption by unp_connect().
  */
-#define    UNP_WANTCRED    0x0001        /* credentials wanted */
+#define    UNP_OWANTCRED    0x0001        /* credentials wanted */
The interface is SCM_CREDS, and constants like this don't get exposed outside the kernel, right? If so, it seems like it would be cleaner to keep UNP_WANTCRED, etc... w/ the same value and have UNP_OWANTCRED be the new one.

Eric


Home | Main Index | Thread Index | Old Index