aboutsummaryrefslogtreecommitdiff
path: root/libiohelp/iohelp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libiohelp/iohelp.h')
-rw-r--r--libiohelp/iohelp.h70
1 files changed, 68 insertions, 2 deletions
diff --git a/libiohelp/iohelp.h b/libiohelp/iohelp.h
index 2897653d..a52d5985 100644
--- a/libiohelp/iohelp.h
+++ b/libiohelp/iohelp.h
@@ -1,5 +1,5 @@
-/*
- Copyright (C) 1993, 1994, 1996 Free Software Foundation
+/* Library providing helper functions for io servers.
+ Copyright (C) 1993,94,96,98,2001,02 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@ -64,4 +64,70 @@ void iohelp_fetch_shared_data (void *);
void iohelp_put_shared_data (void *);
+
+/* User identification */
+
+#include <idvec.h>
+
+struct iouser
+{
+ struct idvec *uids, *gids;
+ void *hook; /* Never used by iohelp library */
+};
+
+/* Return a copy of IOUSER in CLONE. On error, *CLONE is set to NULL. */
+error_t iohelp_dup_iouser (struct iouser **clone, struct iouser *iouser);
+
+/* Free a reference to IOUSER. */
+void iohelp_free_iouser (struct iouser *iouser);
+
+/* Create a new IOUSER in USER for the specified idvecs. On error, *USER
+ is set to NULL. */
+error_t iohelp_create_iouser (struct iouser **user, struct idvec *uids,
+ struct idvec *gids);
+
+/* Create a new IOUSER in USER for the specified arrays. On error, *USER
+ is set to NULL. */
+error_t iohelp_create_complex_iouser (struct iouser **user,
+ const uid_t *uids, int nuids,
+ const gid_t *gids, int ngids);
+
+/* Create a new IOUSER in USER for the specified uid and gid. On error,
+ *USER is set to NULL. */
+error_t iohelp_create_simple_iouser (struct iouser **user,
+ uid_t uid, gid_t gid);
+
+/* Create a new IOUSER in USER with no identity. On error, *USER is set
+ to NULL. */
+error_t iohelp_create_empty_iouser (struct iouser **user);
+
+/* Create a new IOUSER in NEW_USER that restricts OLD_USER to the subset
+ specified by the two ID lists. This is appropriate for implementing
+ io_restrict_auth. */
+error_t iohelp_restrict_iouser (struct iouser **new_user,
+ const struct iouser *old_user,
+ const uid_t *uids, int nuids,
+ const gid_t *gids, int ngids);
+
+/* Conduct a reauthentication transaction, returning a new iouser in
+ USER. AUTHSERVER is the I/O servers auth port. The rendezvous port
+ provided by the user is REND_PORT. If the transaction cannot be
+ completed, return zero, unless PERMIT_FAILURE is non-zero. If
+ PERMIT_FAILURE is nonzero, then should the transaction fail, return
+ an iouser that has no ids. The new port to be sent to the user is
+ newright. On error, *USER is set to NULL. */
+error_t iohelp_reauth (struct iouser **user, auth_t authserver,
+ mach_port_t rend_port, mach_port_t newright,
+ int permit_failure);
+
+
+/* Puts data from the malloced buffer BUF, LEN bytes long, into RBUF & RLEN,
+ suitable for returning from a mach rpc. If LEN > 0, BUF is freed,
+ regardless of whether an error is returned or not. */
+error_t iohelp_return_malloced_buffer (char *buf, size_t len,
+ char **rbuf,
+ mach_msg_type_number_t *rlen);
+
+
+
#endif