summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-01-18 14:31:20 -0500
committerSimo Sorce <simo@redhat.com>2012-01-19 15:18:39 -0500
commit2b749a11a64c628abb187e17187ee036ccc45e3b (patch)
treed151f6694bbb44404f18b1780e28fea98835d3cc
parentd5651d2e98cd80e450b88693b08591567b74f0c1 (diff)
downloadgss-proxy-2b749a11a64c628abb187e17187ee036ccc45e3b.tar.gz
gss-proxy-2b749a11a64c628abb187e17187ee036ccc45e3b.tar.xz
gss-proxy-2b749a11a64c628abb187e17187ee036ccc45e3b.zip
Add generated files for rpc handling code
-rw-r--r--proxy/Makefile.am5
-rw-r--r--proxy/configure.ac2
-rw-r--r--proxy/rpcgen/README7
-rw-r--r--proxy/rpcgen/gp_rpc.h188
-rw-r--r--proxy/rpcgen/gp_rpc_xdr.c271
-rw-r--r--proxy/rpcgen/gss_proxy.h797
-rw-r--r--proxy/rpcgen/gss_proxy_xdr.c928
7 files changed, 2198 insertions, 0 deletions
diff --git a/proxy/Makefile.am b/proxy/Makefile.am
index 29ecfa1..37ef362 100644
--- a/proxy/Makefile.am
+++ b/proxy/Makefile.am
@@ -76,17 +76,22 @@ if BUILD_SELINUX
GSS_PROXY_LIBS += $(SELINUX_LIBS)
endif
+GP_RPCGEN_OBJ = rpcgen/gp_rpc_xdr.c rpcgen/gss_proxy_xdr.c
+
dist_noinst_HEADERS =
####################
# Program Binaries #
####################
+
gssproxy_SOURCES = \
src/gp_config.c \
src/gp_init.c \
src/gp_socket.c \
src/gp_workers.c \
+ $(GP_RPCGEN_OBJ) \
src/gssproxy.c
+
gssproxy_LDADD = \
$(GSS_PROXY_LIBS)
diff --git a/proxy/configure.ac b/proxy/configure.ac
index 009a5ea..6c13df2 100644
--- a/proxy/configure.ac
+++ b/proxy/configure.ac
@@ -95,6 +95,8 @@ LIBS="$PTHREAD_LIBS $LIBS"
LIBS="$PTHREAD_CFLAGS $CFLAGS"
CC="$PTHREAD_CC"
+AC_CHECK_HEADERS([rpc/rpc.h],,[AC_MSG_ERROR([Could not find rpc headers])])
+
WITH_INITSCRIPT
if test x$initscript = xsystemd; then
WITH_SYSTEMD_UNIT_DIR
diff --git a/proxy/rpcgen/README b/proxy/rpcgen/README
new file mode 100644
index 0000000..26bb95c
--- /dev/null
+++ b/proxy/rpcgen/README
@@ -0,0 +1,7 @@
+
+This file have been generated from .x files in ../../x-files/
+Please do not directly edit these .c/.h files.
+Instead please edit the original .x files and then use rpcgen to re-generate
+the .c/.h files.
+
+Also note that gp_rpc.x must conform to RFC1831
diff --git a/proxy/rpcgen/gp_rpc.h b/proxy/rpcgen/gp_rpc.h
new file mode 100644
index 0000000..a21a60f
--- /dev/null
+++ b/proxy/rpcgen/gp_rpc.h
@@ -0,0 +1,188 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _GP_RPC_H_RPCGEN
+#define _GP_RPC_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+enum gp_rpc_auth_flavor {
+ GP_RPC_AUTH_NONE = 0,
+ GP_RPC_AUTH_SYS = 1,
+ GP_RPC_AUTH_SHORT = 2,
+ GP_RPC_AUTH_DH = 3,
+ GP_RPC_RPCSEC_GSS = 6,
+};
+typedef enum gp_rpc_auth_flavor gp_rpc_auth_flavor;
+
+struct gp_rpc_opaque_auth {
+ gp_rpc_auth_flavor flavor;
+ struct {
+ u_int body_len;
+ char *body_val;
+ } body;
+};
+typedef struct gp_rpc_opaque_auth gp_rpc_opaque_auth;
+
+enum gp_rpc_msg_type {
+ GP_RPC_CALL = 0,
+ GP_RPC_REPLY = 1,
+};
+typedef enum gp_rpc_msg_type gp_rpc_msg_type;
+
+enum gp_rpc_reply_status {
+ GP_RPC_MSG_ACCEPTED = 0,
+ GP_RPC_MSG_DENIED = 1,
+};
+typedef enum gp_rpc_reply_status gp_rpc_reply_status;
+
+enum gp_rpc_accept_status {
+ GP_RPC_SUCCESS = 0,
+ GP_RPC_PROG_UNAVAIL = 1,
+ GP_RPC_PROG_MISMATCH = 2,
+ GP_RPC_PROC_UNAVAIL = 3,
+ GP_RPC_GARBAGE_ARGS = 4,
+ GP_RPC_SYSTEM_ERR = 5,
+};
+typedef enum gp_rpc_accept_status gp_rpc_accept_status;
+
+enum gp_rpc_reject_status {
+ GP_RPC_RPC_MISMATCH = 0,
+ GP_RPC_AUTH_ERROR = 1,
+};
+typedef enum gp_rpc_reject_status gp_rpc_reject_status;
+
+enum gp_rpc_auth_status {
+ GP_RPC_AUTH_OK = 0,
+ GP_RPC_AUTH_BADCRED = 1,
+ GP_RPC_AUTH_REJECTEDCRED = 2,
+ GP_RPC_AUTH_BADVERF = 3,
+ GP_RPC_AUTH_REJECTEDVERF = 4,
+ GP_RPC_AUTH_TOOWEAK = 5,
+ GP_RPC_AUTH_INVALIDRESP = 6,
+ GP_RPC_AUTH_FAILED = 7,
+ GP_RPC_AUTH_KERB_GENERIC = 8,
+ GP_RPC_AUTH_TIMEEXPIRE = 9,
+ GP_RPC_AUTH_TKT_FILE = 10,
+ GP_RPC_AUTH_DECODE = 11,
+ GP_RPC_AUTH_NET_ADDR = 12,
+ GP_RPC_RPCSEC_GSS_CREDPROBLEM = 13,
+ GP_RPC_RPCSEC_GSS_CTXPROBLEM = 14,
+};
+typedef enum gp_rpc_auth_status gp_rpc_auth_status;
+
+struct gp_rpc_mismatch_info {
+ u_int low;
+ u_int high;
+};
+typedef struct gp_rpc_mismatch_info gp_rpc_mismatch_info;
+
+struct gp_rpc_reply_union {
+ gp_rpc_accept_status status;
+ union {
+ char results[0];
+ gp_rpc_mismatch_info mismatch_info;
+ } gp_rpc_reply_union_u;
+};
+typedef struct gp_rpc_reply_union gp_rpc_reply_union;
+
+struct gp_rpc_accepted_reply {
+ gp_rpc_opaque_auth verf;
+ gp_rpc_reply_union reply_data;
+};
+typedef struct gp_rpc_accepted_reply gp_rpc_accepted_reply;
+
+struct gp_rpc_rejected_reply {
+ gp_rpc_reject_status status;
+ union {
+ gp_rpc_mismatch_info mismatch_info;
+ gp_rpc_auth_status status;
+ } gp_rpc_rejected_reply_u;
+};
+typedef struct gp_rpc_rejected_reply gp_rpc_rejected_reply;
+
+struct gp_rpc_call_header {
+ u_int rpcvers;
+ u_int prog;
+ u_int vers;
+ u_int proc;
+ gp_rpc_opaque_auth cred;
+ gp_rpc_opaque_auth verf;
+};
+typedef struct gp_rpc_call_header gp_rpc_call_header;
+
+struct gp_rpc_reply_header {
+ gp_rpc_reply_status status;
+ union {
+ gp_rpc_accepted_reply accepted;
+ gp_rpc_rejected_reply rejected;
+ } gp_rpc_reply_header_u;
+};
+typedef struct gp_rpc_reply_header gp_rpc_reply_header;
+
+struct gp_rpc_msg_union {
+ gp_rpc_msg_type type;
+ union {
+ gp_rpc_call_header chdr;
+ gp_rpc_reply_header rhdr;
+ } gp_rpc_msg_union_u;
+};
+typedef struct gp_rpc_msg_union gp_rpc_msg_union;
+
+struct gp_rpc_msg {
+ u_int xid;
+ gp_rpc_msg_union header;
+};
+typedef struct gp_rpc_msg gp_rpc_msg;
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern bool_t xdr_gp_rpc_auth_flavor (XDR *, gp_rpc_auth_flavor*);
+extern bool_t xdr_gp_rpc_opaque_auth (XDR *, gp_rpc_opaque_auth*);
+extern bool_t xdr_gp_rpc_msg_type (XDR *, gp_rpc_msg_type*);
+extern bool_t xdr_gp_rpc_reply_status (XDR *, gp_rpc_reply_status*);
+extern bool_t xdr_gp_rpc_accept_status (XDR *, gp_rpc_accept_status*);
+extern bool_t xdr_gp_rpc_reject_status (XDR *, gp_rpc_reject_status*);
+extern bool_t xdr_gp_rpc_auth_status (XDR *, gp_rpc_auth_status*);
+extern bool_t xdr_gp_rpc_mismatch_info (XDR *, gp_rpc_mismatch_info*);
+extern bool_t xdr_gp_rpc_reply_union (XDR *, gp_rpc_reply_union*);
+extern bool_t xdr_gp_rpc_accepted_reply (XDR *, gp_rpc_accepted_reply*);
+extern bool_t xdr_gp_rpc_rejected_reply (XDR *, gp_rpc_rejected_reply*);
+extern bool_t xdr_gp_rpc_call_header (XDR *, gp_rpc_call_header*);
+extern bool_t xdr_gp_rpc_reply_header (XDR *, gp_rpc_reply_header*);
+extern bool_t xdr_gp_rpc_msg_union (XDR *, gp_rpc_msg_union*);
+extern bool_t xdr_gp_rpc_msg (XDR *, gp_rpc_msg*);
+
+#else /* K&R C */
+extern bool_t xdr_gp_rpc_auth_flavor ();
+extern bool_t xdr_gp_rpc_opaque_auth ();
+extern bool_t xdr_gp_rpc_msg_type ();
+extern bool_t xdr_gp_rpc_reply_status ();
+extern bool_t xdr_gp_rpc_accept_status ();
+extern bool_t xdr_gp_rpc_reject_status ();
+extern bool_t xdr_gp_rpc_auth_status ();
+extern bool_t xdr_gp_rpc_mismatch_info ();
+extern bool_t xdr_gp_rpc_reply_union ();
+extern bool_t xdr_gp_rpc_accepted_reply ();
+extern bool_t xdr_gp_rpc_rejected_reply ();
+extern bool_t xdr_gp_rpc_call_header ();
+extern bool_t xdr_gp_rpc_reply_header ();
+extern bool_t xdr_gp_rpc_msg_union ();
+extern bool_t xdr_gp_rpc_msg ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_GP_RPC_H_RPCGEN */
diff --git a/proxy/rpcgen/gp_rpc_xdr.c b/proxy/rpcgen/gp_rpc_xdr.c
new file mode 100644
index 0000000..9cdf542
--- /dev/null
+++ b/proxy/rpcgen/gp_rpc_xdr.c
@@ -0,0 +1,271 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpcgen/gp_rpc.h"
+
+bool_t
+xdr_gp_rpc_auth_flavor (XDR *xdrs, gp_rpc_auth_flavor *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_opaque_auth (XDR *xdrs, gp_rpc_opaque_auth *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_auth_flavor (xdrs, &objp->flavor))
+ return FALSE;
+ if (!xdr_bytes (xdrs, (char **)&objp->body.body_val, (u_int *) &objp->body.body_len, 400))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_msg_type (XDR *xdrs, gp_rpc_msg_type *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_reply_status (XDR *xdrs, gp_rpc_reply_status *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_accept_status (XDR *xdrs, gp_rpc_accept_status *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_reject_status (XDR *xdrs, gp_rpc_reject_status *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_auth_status (XDR *xdrs, gp_rpc_auth_status *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_mismatch_info (XDR *xdrs, gp_rpc_mismatch_info *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_u_int (xdrs, &objp->low))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->high))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_reply_union (XDR *xdrs, gp_rpc_reply_union *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_accept_status (xdrs, &objp->status))
+ return FALSE;
+ switch (objp->status) {
+ case GP_RPC_SUCCESS:
+ if (!xdr_opaque (xdrs, objp->gp_rpc_reply_union_u.results, 0))
+ return FALSE;
+ break;
+ case GP_RPC_PROG_MISMATCH:
+ if (!xdr_gp_rpc_mismatch_info (xdrs, &objp->gp_rpc_reply_union_u.mismatch_info))
+ return FALSE;
+ break;
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_accepted_reply (XDR *xdrs, gp_rpc_accepted_reply *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf))
+ return FALSE;
+ if (!xdr_gp_rpc_reply_union (xdrs, &objp->reply_data))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_rejected_reply (XDR *xdrs, gp_rpc_rejected_reply *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_reject_status (xdrs, &objp->status))
+ return FALSE;
+ switch (objp->status) {
+ case GP_RPC_RPC_MISMATCH:
+ if (!xdr_gp_rpc_mismatch_info (xdrs, &objp->gp_rpc_rejected_reply_u.mismatch_info))
+ return FALSE;
+ break;
+ case GP_RPC_AUTH_ERROR:
+ if (!xdr_gp_rpc_auth_status (xdrs, &objp->gp_rpc_rejected_reply_u.status))
+ return FALSE;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_call_header (XDR *xdrs, gp_rpc_call_header *objp)
+{
+ register int32_t *buf;
+
+
+ if (xdrs->x_op == XDR_ENCODE) {
+ buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+ if (buf == NULL) {
+ if (!xdr_u_int (xdrs, &objp->rpcvers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->prog))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->vers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->proc))
+ return FALSE;
+
+ } else {
+ IXDR_PUT_U_LONG(buf, objp->rpcvers);
+ IXDR_PUT_U_LONG(buf, objp->prog);
+ IXDR_PUT_U_LONG(buf, objp->vers);
+ IXDR_PUT_U_LONG(buf, objp->proc);
+ }
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred))
+ return FALSE;
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf))
+ return FALSE;
+ return TRUE;
+ } else if (xdrs->x_op == XDR_DECODE) {
+ buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+ if (buf == NULL) {
+ if (!xdr_u_int (xdrs, &objp->rpcvers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->prog))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->vers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->proc))
+ return FALSE;
+
+ } else {
+ objp->rpcvers = IXDR_GET_U_LONG(buf);
+ objp->prog = IXDR_GET_U_LONG(buf);
+ objp->vers = IXDR_GET_U_LONG(buf);
+ objp->proc = IXDR_GET_U_LONG(buf);
+ }
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred))
+ return FALSE;
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf))
+ return FALSE;
+ return TRUE;
+ }
+
+ if (!xdr_u_int (xdrs, &objp->rpcvers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->prog))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->vers))
+ return FALSE;
+ if (!xdr_u_int (xdrs, &objp->proc))
+ return FALSE;
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->cred))
+ return FALSE;
+ if (!xdr_gp_rpc_opaque_auth (xdrs, &objp->verf))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_reply_header (XDR *xdrs, gp_rpc_reply_header *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_reply_status (xdrs, &objp->status))
+ return FALSE;
+ switch (objp->status) {
+ case GP_RPC_MSG_ACCEPTED:
+ if (!xdr_gp_rpc_accepted_reply (xdrs, &objp->gp_rpc_reply_header_u.accepted))
+ return FALSE;
+ break;
+ case GP_RPC_MSG_DENIED:
+ if (!xdr_gp_rpc_rejected_reply (xdrs, &objp->gp_rpc_reply_header_u.rejected))
+ return FALSE;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_msg_union (XDR *xdrs, gp_rpc_msg_union *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gp_rpc_msg_type (xdrs, &objp->type))
+ return FALSE;
+ switch (objp->type) {
+ case GP_RPC_CALL:
+ if (!xdr_gp_rpc_call_header (xdrs, &objp->gp_rpc_msg_union_u.chdr))
+ return FALSE;
+ break;
+ case GP_RPC_REPLY:
+ if (!xdr_gp_rpc_reply_header (xdrs, &objp->gp_rpc_msg_union_u.rhdr))
+ return FALSE;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool_t
+xdr_gp_rpc_msg (XDR *xdrs, gp_rpc_msg *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_u_int (xdrs, &objp->xid))
+ return FALSE;
+ if (!xdr_gp_rpc_msg_union (xdrs, &objp->header))
+ return FALSE;
+ return TRUE;
+}
diff --git a/proxy/rpcgen/gss_proxy.h b/proxy/rpcgen/gss_proxy.h
new file mode 100644
index 0000000..f700c13
--- /dev/null
+++ b/proxy/rpcgen/gss_proxy.h
@@ -0,0 +1,797 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _GSS_PROXY_H_RPCGEN
+#define _GSS_PROXY_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct {
+ u_int utf8string_len;
+ char *utf8string_val;
+} utf8string;
+
+typedef struct {
+ u_int octet_string_len;
+ char *octet_string_val;
+} octet_string;
+
+typedef u_quad_t gssx_uint64;
+
+typedef u_quad_t gssx_qop;
+
+typedef octet_string gssx_buffer;
+
+typedef octet_string gssx_OID;
+
+typedef struct {
+ u_int gssx_OID_set_len;
+ gssx_OID *gssx_OID_set_val;
+} gssx_OID_set;
+
+enum gssx_cred_usage {
+ GSSX_C_INITIATE = 1,
+ GSSX_C_ACCEPT = 2,
+ GSSX_C_BOTH = 3,
+};
+typedef enum gssx_cred_usage gssx_cred_usage;
+
+typedef u_quad_t gssx_time;
+
+enum gssx_ext_id {
+ GSSX_EXT_NONE = 0,
+};
+typedef enum gssx_ext_id gssx_ext_id;
+
+struct gssx_typed_hole {
+ gssx_ext_id ext_type;
+ octet_string ext_data;
+};
+typedef struct gssx_typed_hole gssx_typed_hole;
+
+struct gssx_mech_attr {
+ gssx_OID attr;
+ gssx_buffer name;
+ gssx_buffer short_desc;
+ gssx_buffer long_desc;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_mech_attr gssx_mech_attr;
+
+struct gssx_mech_info {
+ gssx_OID mech;
+ gssx_OID_set name_types;
+ gssx_OID_set mech_attrs;
+ gssx_OID_set known_mech_attrs;
+ gssx_OID_set cred_options;
+ gssx_OID_set sec_ctx_options;
+ struct {
+ u_int provider_names_len;
+ utf8string *provider_names_val;
+ } provider_names;
+ struct {
+ u_int provider_paths_len;
+ utf8string *provider_paths_val;
+ } provider_paths;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_mech_info gssx_mech_info;
+
+struct gssx_name_attr {
+ gssx_buffer attr;
+ gssx_buffer value;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_name_attr gssx_name_attr;
+
+struct gssx_option {
+ gssx_OID option;
+ gssx_buffer value;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_option gssx_option;
+
+struct gssx_status {
+ gssx_uint64 major_status;
+ gssx_OID mech;
+ gssx_uint64 minor_status;
+ utf8string major_status_string;
+ utf8string minor_status_string;
+ octet_string server_ctx;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_status gssx_status;
+
+struct gssx_call_ctx {
+ utf8string locale;
+ octet_string server_ctx;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_call_ctx gssx_call_ctx;
+
+struct gssx_name {
+ gssx_buffer *display_name;
+ gssx_OID name_type;
+ struct {
+ u_int exported_name_len;
+ gssx_buffer *exported_name_val;
+ } exported_name;
+ struct {
+ u_int exported_composite_name_len;
+ gssx_buffer *exported_composite_name_val;
+ } exported_composite_name;
+ struct {
+ u_int name_attributes_len;
+ gssx_name_attr *name_attributes_val;
+ } name_attributes;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_name gssx_name;
+
+struct gssx_cred_info {
+ gssx_name MN;
+ gssx_OID mech;
+ gssx_cred_usage cred_usage;
+ gssx_time initiator_time_rec;
+ gssx_time acceptor_time_rec;
+ struct {
+ u_int cred_options_len;
+ gssx_option *cred_options_val;
+ } cred_options;
+ octet_string cred_handle_reference;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_cred_info gssx_cred_info;
+
+struct gssx_ctx_info {
+ octet_string *exported_context_token;
+ octet_string *state;
+ gssx_OID mech;
+ gssx_name src_name;
+ gssx_name targ_name;
+ gssx_time lifetime;
+ gssx_uint64 ctx_flags;
+ bool_t locally_initiated;
+ bool_t open;
+ struct {
+ u_int context_options_len;
+ gssx_option *context_options_val;
+ } context_options;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_ctx_info gssx_ctx_info;
+
+enum gssx_handle_type {
+ GSSX_C_HANDLE_SEC_CTX = 0,
+ GSSX_C_HANDLE_CRED = 1,
+};
+typedef enum gssx_handle_type gssx_handle_type;
+
+struct gssx_handle_info {
+ gssx_handle_type handle_type;
+ union {
+ struct {
+ u_int cred_info_len;
+ gssx_cred_info *cred_info_val;
+ } cred_info;
+ gssx_ctx_info sec_ctx_info;
+ octet_string extensions;
+ } gssx_handle_info_u;
+};
+typedef struct gssx_handle_info gssx_handle_info;
+
+struct gssx_handle {
+ gssx_handle_info handle_info;
+ bool_t needs_release;
+};
+typedef struct gssx_handle gssx_handle;
+
+typedef gssx_handle gssx_ctx;
+
+typedef gssx_handle gssx_cred;
+
+struct gssx_cb {
+ gssx_uint64 initiator_addrtype;
+ gssx_buffer initiator_address;
+ gssx_uint64 acceptor_addrtype;
+ gssx_buffer acceptor_address;
+ gssx_buffer application_data;
+};
+typedef struct gssx_cb gssx_cb;
+
+
+struct gssx_arg_release_handle {
+ gssx_call_ctx call_ctx;
+ gssx_handle cred_handle;
+};
+typedef struct gssx_arg_release_handle gssx_arg_release_handle;
+
+struct gssx_res_release_handle {
+ gssx_status status;
+};
+typedef struct gssx_res_release_handle gssx_res_release_handle;
+
+struct gssx_arg_indicate_mechs {
+ gssx_call_ctx call_ctx;
+};
+typedef struct gssx_arg_indicate_mechs gssx_arg_indicate_mechs;
+
+struct gssx_res_indicate_mechs {
+ gssx_status status;
+ struct {
+ u_int mechs_len;
+ gssx_mech_info *mechs_val;
+ } mechs;
+ struct {
+ u_int mech_attr_descs_len;
+ gssx_mech_attr *mech_attr_descs_val;
+ } mech_attr_descs;
+ struct {
+ u_int supported_extensions_len;
+ gssx_ext_id *supported_extensions_val;
+ } supported_extensions;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_indicate_mechs gssx_res_indicate_mechs;
+
+struct gssx_arg_import_and_canon_name {
+ gssx_call_ctx call_ctx;
+ gssx_name input_name;
+ gssx_OID mech;
+ struct {
+ u_int name_attributes_len;
+ gssx_name_attr *name_attributes_val;
+ } name_attributes;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_import_and_canon_name gssx_arg_import_and_canon_name;
+
+struct gssx_res_import_and_canon_name {
+ gssx_status status;
+ gssx_name *output_name;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_import_and_canon_name gssx_res_import_and_canon_name;
+
+struct gssx_arg_get_call_context {
+ gssx_call_ctx call_ctx;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_get_call_context gssx_arg_get_call_context;
+
+struct gssx_res_get_call_context {
+ gssx_status status;
+ octet_string server_call_ctx;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_get_call_context gssx_res_get_call_context;
+
+struct gssx_arg_acquire_cred {
+ gssx_call_ctx call_ctx;
+ struct {
+ u_int cred_options_len;
+ gssx_option *cred_options_val;
+ } cred_options;
+ gssx_cred *input_cred_handle;
+ bool_t add_cred_to_input_handle;
+ gssx_name *desired_name;
+ gssx_time time_req;
+ gssx_OID_set desired_mechs;
+ gssx_cred_usage cred_usage;
+ gssx_time initiator_time_req;
+ gssx_time acceptor_time_req;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_acquire_cred gssx_arg_acquire_cred;
+
+struct gssx_res_acquire_cred {
+ gssx_status status;
+ gssx_cred *output_cred_handle;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_acquire_cred gssx_res_acquire_cred;
+
+struct gssx_arg_export_cred {
+ gssx_call_ctx call_ctx;
+ gssx_cred input_cred_handle;
+ gssx_cred_usage cred_usage;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_export_cred gssx_arg_export_cred;
+
+struct gssx_res_export_cred {
+ gssx_status status;
+ gssx_cred_usage usage_exported;
+ octet_string *exported_handle;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_export_cred gssx_res_export_cred;
+
+struct gssx_arg_import_cred {
+ gssx_call_ctx call_ctx;
+ octet_string exported_handle;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_import_cred gssx_arg_import_cred;
+
+struct gssx_res_import_cred {
+ gssx_status status;
+ gssx_cred *output_cred_handle;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_import_cred gssx_res_import_cred;
+
+struct gssx_arg_store_cred {
+ gssx_call_ctx call_ctx;
+ gssx_cred input_cred_handle;
+ gssx_cred_usage cred_usage;
+ gssx_OID desired_mech;
+ bool_t overwrite_cred;
+ bool_t default_cred;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_store_cred gssx_arg_store_cred;
+
+struct gssx_res_store_cred {
+ gssx_status status;
+ gssx_OID_set elements_stored;
+ gssx_cred_usage cred_usage_stored;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_store_cred gssx_res_store_cred;
+
+struct gssx_arg_init_sec_context {
+ gssx_call_ctx call_ctx;
+ struct {
+ u_int context_options_len;
+ gssx_option *context_options_val;
+ } context_options;
+ gssx_ctx *context_handle;
+ gssx_cred *cred_handle;
+ gssx_name *target_name;
+ gssx_OID mech_type;
+ gssx_uint64 req_flags;
+ gssx_time time_req;
+ gssx_cb *input_cb;
+ gssx_buffer *input_token;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_init_sec_context gssx_arg_init_sec_context;
+
+struct gssx_res_init_sec_context {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ gssx_buffer *output_token;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_init_sec_context gssx_res_init_sec_context;
+
+struct gssx_arg_accept_sec_context {
+ gssx_call_ctx call_ctx;
+ struct {
+ u_int context_options_len;
+ gssx_option *context_options_val;
+ } context_options;
+ gssx_ctx *context_handle;
+ gssx_cred *cred_handle;
+ gssx_buffer input_token;
+ gssx_cb *input_cb;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_arg_accept_sec_context gssx_arg_accept_sec_context;
+
+struct gssx_res_accept_sec_context {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ gssx_buffer *output_token;
+ gssx_cred *delegated_cred_handle;
+ struct {
+ u_int extensions_len;
+ gssx_typed_hole *extensions_val;
+ } extensions;
+};
+typedef struct gssx_res_accept_sec_context gssx_res_accept_sec_context;
+
+struct gssx_arg_get_mic {
+ gssx_call_ctx call_ctx;
+ gssx_ctx context_handle;
+ gssx_qop qop_req;
+ gssx_buffer message_buffer;
+};
+typedef struct gssx_arg_get_mic gssx_arg_get_mic;
+
+struct gssx_res_get_mic {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ gssx_buffer token_buffer;
+ gssx_qop *qop_state;
+};
+typedef struct gssx_res_get_mic gssx_res_get_mic;
+
+struct gssx_arg_verify_mic {
+ gssx_call_ctx call_ctx;
+ gssx_ctx context_handle;
+ gssx_buffer message_buffer;
+ gssx_buffer token_buffer;
+};
+typedef struct gssx_arg_verify_mic gssx_arg_verify_mic;
+
+struct gssx_res_verify_mic {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ gssx_qop *qop_state;
+};
+typedef struct gssx_res_verify_mic gssx_res_verify_mic;
+
+struct gssx_arg_wrap {
+ gssx_call_ctx call_ctx;
+ gssx_ctx context_handle;
+ bool_t conf_req;
+ struct {
+ u_int message_buffer_len;
+ gssx_buffer *message_buffer_val;
+ } message_buffer;
+ gssx_qop qop_state;
+};
+typedef struct gssx_arg_wrap gssx_arg_wrap;
+
+struct gssx_res_wrap {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ struct {
+ u_int token_buffer_len;
+ gssx_buffer *token_buffer_val;
+ } token_buffer;
+ bool_t *conf_state;
+ gssx_qop *qop_state;
+};
+typedef struct gssx_res_wrap gssx_res_wrap;
+
+struct gssx_arg_unwrap {
+ gssx_call_ctx call_ctx;
+ gssx_ctx context_handle;
+ struct {
+ u_int token_buffer_len;
+ gssx_buffer *token_buffer_val;
+ } token_buffer;
+ gssx_qop qop_state;
+};
+typedef struct gssx_arg_unwrap gssx_arg_unwrap;
+
+struct gssx_res_unwrap {
+ gssx_status status;
+ gssx_ctx *context_handle;
+ struct {
+ u_int message_buffer_len;
+ gssx_buffer *message_buffer_val;
+ } message_buffer;
+ bool_t *conf_state;
+ gssx_qop *qop_state;
+};
+typedef struct gssx_res_unwrap gssx_res_unwrap;
+
+struct gssx_arg_wrap_size_limit {
+ gssx_call_ctx call_ctx;
+ gssx_ctx context_handle;
+ bool_t conf_req;
+ gssx_qop qop_state;
+ gssx_uint64 req_output_size;
+};
+typedef struct gssx_arg_wrap_size_limit gssx_arg_wrap_size_limit;
+
+struct gssx_res_wrap_size_limit {
+ gssx_status status;
+ gssx_uint64 max_input_size;
+};
+typedef struct gssx_res_wrap_size_limit gssx_res_wrap_size_limit;
+
+#define GSSPROXY 412345
+#define GSSPROXYVERS 1
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define GSSX_INDICATE_MECHS 1
+extern gssx_res_indicate_mechs * gssx_indicate_mechs_1(gssx_arg_indicate_mechs *, CLIENT *);
+extern gssx_res_indicate_mechs * gssx_indicate_mechs_1_svc(gssx_arg_indicate_mechs *, struct svc_req *);
+#define GSSX_GET_CALL_CONTEXT 2
+extern gssx_res_get_call_context * gssx_get_call_context_1(gssx_arg_get_call_context *, CLIENT *);
+extern gssx_res_get_call_context * gssx_get_call_context_1_svc(gssx_arg_get_call_context *, struct svc_req *);
+#define GSSX_IMPORT_AND_CANON_NAME 3
+extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1(gssx_arg_import_and_canon_name *, CLIENT *);
+extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1_svc(gssx_arg_import_and_canon_name *, struct svc_req *);
+#define GSSX_EXPORT_CRED 4
+extern gssx_res_export_cred * gssx_export_cred_1(gssx_arg_export_cred *, CLIENT *);
+extern gssx_res_export_cred * gssx_export_cred_1_svc(gssx_arg_export_cred *, struct svc_req *);
+#define GSSX_IMPORT_CRED 5
+extern gssx_res_import_cred * gssx_import_cred_1(gssx_arg_import_cred *, CLIENT *);
+extern gssx_res_import_cred * gssx_import_cred_1_svc(gssx_arg_import_cred *, struct svc_req *);
+#define GSSX_ACQUIRE_CRED 6
+extern gssx_res_acquire_cred * gssx_acquire_cred_1(gssx_arg_acquire_cred *, CLIENT *);
+extern gssx_res_acquire_cred * gssx_acquire_cred_1_svc(gssx_arg_acquire_cred *, struct svc_req *);
+#define GSSX_STORE_CRED 7
+extern gssx_res_store_cred * gssx_store_cred_1(gssx_arg_store_cred *, CLIENT *);
+extern gssx_res_store_cred * gssx_store_cred_1_svc(gssx_arg_store_cred *, struct svc_req *);
+#define GSSX_INIT_SEC_CONTEXT 8
+extern gssx_res_init_sec_context * gssx_init_sec_context_1(gssx_arg_init_sec_context *, CLIENT *);
+extern gssx_res_init_sec_context * gssx_init_sec_context_1_svc(gssx_arg_init_sec_context *, struct svc_req *);
+#define GSSX_ACCEPT_SEC_CONTEXT 9
+extern gssx_res_accept_sec_context * gssx_accept_sec_context_1(gssx_arg_accept_sec_context *, CLIENT *);
+extern gssx_res_accept_sec_context * gssx_accept_sec_context_1_svc(gssx_arg_accept_sec_context *, struct svc_req *);
+#define GSSX_RELEASE_HANDLE 10
+extern gssx_res_release_handle * gssx_release_handle_1(gssx_arg_release_handle *, CLIENT *);
+extern gssx_res_release_handle * gssx_release_handle_1_svc(gssx_arg_release_handle *, struct svc_req *);
+#define GSSX_GET_MIC 11
+extern gssx_res_get_mic * gssx_get_mic_1(gssx_arg_get_mic *, CLIENT *);
+extern gssx_res_get_mic * gssx_get_mic_1_svc(gssx_arg_get_mic *, struct svc_req *);
+#define GSSX_VERIFY 12
+extern gssx_res_verify_mic * gssx_verify_1(gssx_arg_verify_mic *, CLIENT *);
+extern gssx_res_verify_mic * gssx_verify_1_svc(gssx_arg_verify_mic *, struct svc_req *);
+#define GSSX_WRAP 13
+extern gssx_res_wrap * gssx_wrap_1(gssx_arg_wrap *, CLIENT *);
+extern gssx_res_wrap * gssx_wrap_1_svc(gssx_arg_wrap *, struct svc_req *);
+#define GSSX_UNWRAP 14
+extern gssx_res_unwrap * gssx_unwrap_1(gssx_arg_unwrap *, CLIENT *);
+extern gssx_res_unwrap * gssx_unwrap_1_svc(gssx_arg_unwrap *, struct svc_req *);
+#define GSSX_WRAP_SIZE_LIMIT 15
+extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1(gssx_arg_wrap_size_limit *, CLIENT *);
+extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1_svc(gssx_arg_wrap_size_limit *, struct svc_req *);
+extern int gssproxy_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define GSSX_INDICATE_MECHS 1
+extern gssx_res_indicate_mechs * gssx_indicate_mechs_1();
+extern gssx_res_indicate_mechs * gssx_indicate_mechs_1_svc();
+#define GSSX_GET_CALL_CONTEXT 2
+extern gssx_res_get_call_context * gssx_get_call_context_1();
+extern gssx_res_get_call_context * gssx_get_call_context_1_svc();
+#define GSSX_IMPORT_AND_CANON_NAME 3
+extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1();
+extern gssx_res_import_and_canon_name * gssx_import_and_canon_name_1_svc();
+#define GSSX_EXPORT_CRED 4
+extern gssx_res_export_cred * gssx_export_cred_1();
+extern gssx_res_export_cred * gssx_export_cred_1_svc();
+#define GSSX_IMPORT_CRED 5
+extern gssx_res_import_cred * gssx_import_cred_1();
+extern gssx_res_import_cred * gssx_import_cred_1_svc();
+#define GSSX_ACQUIRE_CRED 6
+extern gssx_res_acquire_cred * gssx_acquire_cred_1();
+extern gssx_res_acquire_cred * gssx_acquire_cred_1_svc();
+#define GSSX_STORE_CRED 7
+extern gssx_res_store_cred * gssx_store_cred_1();
+extern gssx_res_store_cred * gssx_store_cred_1_svc();
+#define GSSX_INIT_SEC_CONTEXT 8
+extern gssx_res_init_sec_context * gssx_init_sec_context_1();
+extern gssx_res_init_sec_context * gssx_init_sec_context_1_svc();
+#define GSSX_ACCEPT_SEC_CONTEXT 9
+extern gssx_res_accept_sec_context * gssx_accept_sec_context_1();
+extern gssx_res_accept_sec_context * gssx_accept_sec_context_1_svc();
+#define GSSX_RELEASE_HANDLE 10
+extern gssx_res_release_handle * gssx_release_handle_1();
+extern gssx_res_release_handle * gssx_release_handle_1_svc();
+#define GSSX_GET_MIC 11
+extern gssx_res_get_mic * gssx_get_mic_1();
+extern gssx_res_get_mic * gssx_get_mic_1_svc();
+#define GSSX_VERIFY 12
+extern gssx_res_verify_mic * gssx_verify_1();
+extern gssx_res_verify_mic * gssx_verify_1_svc();
+#define GSSX_WRAP 13
+extern gssx_res_wrap * gssx_wrap_1();
+extern gssx_res_wrap * gssx_wrap_1_svc();
+#define GSSX_UNWRAP 14
+extern gssx_res_unwrap * gssx_unwrap_1();
+extern gssx_res_unwrap * gssx_unwrap_1_svc();
+#define GSSX_WRAP_SIZE_LIMIT 15
+extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1();
+extern gssx_res_wrap_size_limit * gssx_wrap_size_limit_1_svc();
+extern int gssproxy_1_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern bool_t xdr_utf8string (XDR *, utf8string*);
+extern bool_t xdr_octet_string (XDR *, octet_string*);
+extern bool_t xdr_gssx_uint64 (XDR *, gssx_uint64*);
+extern bool_t xdr_gssx_qop (XDR *, gssx_qop*);
+extern bool_t xdr_gssx_buffer (XDR *, gssx_buffer*);
+extern bool_t xdr_gssx_OID (XDR *, gssx_OID*);
+extern bool_t xdr_gssx_OID_set (XDR *, gssx_OID_set*);
+extern bool_t xdr_gssx_cred_usage (XDR *, gssx_cred_usage*);
+extern bool_t xdr_gssx_time (XDR *, gssx_time*);
+extern bool_t xdr_gssx_ext_id (XDR *, gssx_ext_id*);
+extern bool_t xdr_gssx_typed_hole (XDR *, gssx_typed_hole*);
+extern bool_t xdr_gssx_mech_attr (XDR *, gssx_mech_attr*);
+extern bool_t xdr_gssx_mech_info (XDR *, gssx_mech_info*);
+extern bool_t xdr_gssx_name_attr (XDR *, gssx_name_attr*);
+extern bool_t xdr_gssx_option (XDR *, gssx_option*);
+extern bool_t xdr_gssx_status (XDR *, gssx_status*);
+extern bool_t xdr_gssx_call_ctx (XDR *, gssx_call_ctx*);
+extern bool_t xdr_gssx_name (XDR *, gssx_name*);
+extern bool_t xdr_gssx_cred_info (XDR *, gssx_cred_info*);
+extern bool_t xdr_gssx_ctx_info (XDR *, gssx_ctx_info*);
+extern bool_t xdr_gssx_handle_type (XDR *, gssx_handle_type*);
+extern bool_t xdr_gssx_handle_info (XDR *, gssx_handle_info*);
+extern bool_t xdr_gssx_handle (XDR *, gssx_handle*);
+extern bool_t xdr_gssx_ctx (XDR *, gssx_ctx*);
+extern bool_t xdr_gssx_cred (XDR *, gssx_cred*);
+extern bool_t xdr_gssx_cb (XDR *, gssx_cb*);
+extern bool_t xdr_gssx_cb (XDR *, gssx_cb*);
+extern bool_t xdr_gssx_arg_release_handle (XDR *, gssx_arg_release_handle*);
+extern bool_t xdr_gssx_res_release_handle (XDR *, gssx_res_release_handle*);
+extern bool_t xdr_gssx_arg_indicate_mechs (XDR *, gssx_arg_indicate_mechs*);
+extern bool_t xdr_gssx_res_indicate_mechs (XDR *, gssx_res_indicate_mechs*);
+extern bool_t xdr_gssx_arg_import_and_canon_name (XDR *, gssx_arg_import_and_canon_name*);
+extern bool_t xdr_gssx_res_import_and_canon_name (XDR *, gssx_res_import_and_canon_name*);
+extern bool_t xdr_gssx_arg_get_call_context (XDR *, gssx_arg_get_call_context*);
+extern bool_t xdr_gssx_res_get_call_context (XDR *, gssx_res_get_call_context*);
+extern bool_t xdr_gssx_arg_acquire_cred (XDR *, gssx_arg_acquire_cred*);
+extern bool_t xdr_gssx_res_acquire_cred (XDR *, gssx_res_acquire_cred*);
+extern bool_t xdr_gssx_arg_export_cred (XDR *, gssx_arg_export_cred*);
+extern bool_t xdr_gssx_res_export_cred (XDR *, gssx_res_export_cred*);
+extern bool_t xdr_gssx_arg_import_cred (XDR *, gssx_arg_import_cred*);
+extern bool_t xdr_gssx_res_import_cred (XDR *, gssx_res_import_cred*);
+extern bool_t xdr_gssx_arg_store_cred (XDR *, gssx_arg_store_cred*);
+extern bool_t xdr_gssx_res_store_cred (XDR *, gssx_res_store_cred*);
+extern bool_t xdr_gssx_arg_init_sec_context (XDR *, gssx_arg_init_sec_context*);
+extern bool_t xdr_gssx_res_init_sec_context (XDR *, gssx_res_init_sec_context*);
+extern bool_t xdr_gssx_arg_accept_sec_context (XDR *, gssx_arg_accept_sec_context*);
+extern bool_t xdr_gssx_res_accept_sec_context (XDR *, gssx_res_accept_sec_context*);
+extern bool_t xdr_gssx_arg_get_mic (XDR *, gssx_arg_get_mic*);
+extern bool_t xdr_gssx_res_get_mic (XDR *, gssx_res_get_mic*);
+extern bool_t xdr_gssx_arg_verify_mic (XDR *, gssx_arg_verify_mic*);
+extern bool_t xdr_gssx_res_verify_mic (XDR *, gssx_res_verify_mic*);
+extern bool_t xdr_gssx_arg_wrap (XDR *, gssx_arg_wrap*);
+extern bool_t xdr_gssx_res_wrap (XDR *, gssx_res_wrap*);
+extern bool_t xdr_gssx_arg_unwrap (XDR *, gssx_arg_unwrap*);
+extern bool_t xdr_gssx_res_unwrap (XDR *, gssx_res_unwrap*);
+extern bool_t xdr_gssx_arg_wrap_size_limit (XDR *, gssx_arg_wrap_size_limit*);
+extern bool_t xdr_gssx_res_wrap_size_limit (XDR *, gssx_res_wrap_size_limit*);
+
+#else /* K&R C */
+extern bool_t xdr_utf8string ();
+extern bool_t xdr_octet_string ();
+extern bool_t xdr_gssx_uint64 ();
+extern bool_t xdr_gssx_qop ();
+extern bool_t xdr_gssx_buffer ();
+extern bool_t xdr_gssx_OID ();
+extern bool_t xdr_gssx_OID_set ();
+extern bool_t xdr_gssx_cred_usage ();
+extern bool_t xdr_gssx_time ();
+extern bool_t xdr_gssx_ext_id ();
+extern bool_t xdr_gssx_typed_hole ();
+extern bool_t xdr_gssx_mech_attr ();
+extern bool_t xdr_gssx_mech_info ();
+extern bool_t xdr_gssx_name_attr ();
+extern bool_t xdr_gssx_option ();
+extern bool_t xdr_gssx_status ();
+extern bool_t xdr_gssx_call_ctx ();
+extern bool_t xdr_gssx_name ();
+extern bool_t xdr_gssx_cred_info ();
+extern bool_t xdr_gssx_ctx_info ();
+extern bool_t xdr_gssx_handle_type ();
+extern bool_t xdr_gssx_handle_info ();
+extern bool_t xdr_gssx_handle ();
+extern bool_t xdr_gssx_ctx ();
+extern bool_t xdr_gssx_cred ();
+extern bool_t xdr_gssx_cb ();
+extern bool_t xdr_gssx_cb ();
+extern bool_t xdr_gssx_arg_release_handle ();
+extern bool_t xdr_gssx_res_release_handle ();
+extern bool_t xdr_gssx_arg_indicate_mechs ();
+extern bool_t xdr_gssx_res_indicate_mechs ();
+extern bool_t xdr_gssx_arg_import_and_canon_name ();
+extern bool_t xdr_gssx_res_import_and_canon_name ();
+extern bool_t xdr_gssx_arg_get_call_context ();
+extern bool_t xdr_gssx_res_get_call_context ();
+extern bool_t xdr_gssx_arg_acquire_cred ();
+extern bool_t xdr_gssx_res_acquire_cred ();
+extern bool_t xdr_gssx_arg_export_cred ();
+extern bool_t xdr_gssx_res_export_cred ();
+extern bool_t xdr_gssx_arg_import_cred ();
+extern bool_t xdr_gssx_res_import_cred ();
+extern bool_t xdr_gssx_arg_store_cred ();
+extern bool_t xdr_gssx_res_store_cred ();
+extern bool_t xdr_gssx_arg_init_sec_context ();
+extern bool_t xdr_gssx_res_init_sec_context ();
+extern bool_t xdr_gssx_arg_accept_sec_context ();
+extern bool_t xdr_gssx_res_accept_sec_context ();
+extern bool_t xdr_gssx_arg_get_mic ();
+extern bool_t xdr_gssx_res_get_mic ();
+extern bool_t xdr_gssx_arg_verify_mic ();
+extern bool_t xdr_gssx_res_verify_mic ();
+extern bool_t xdr_gssx_arg_wrap ();
+extern bool_t xdr_gssx_res_wrap ();
+extern bool_t xdr_gssx_arg_unwrap ();
+extern bool_t xdr_gssx_res_unwrap ();
+extern bool_t xdr_gssx_arg_wrap_size_limit ();
+extern bool_t xdr_gssx_res_wrap_size_limit ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_GSS_PROXY_H_RPCGEN */
diff --git a/proxy/rpcgen/gss_proxy_xdr.c b/proxy/rpcgen/gss_proxy_xdr.c
new file mode 100644
index 0000000..e15b984
--- /dev/null
+++ b/proxy/rpcgen/gss_proxy_xdr.c
@@ -0,0 +1,928 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpcgen/gss_proxy.h"
+
+bool_t
+xdr_utf8string (XDR *xdrs, utf8string *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_bytes (xdrs, (char **)&objp->utf8string_val, (u_int *) &objp->utf8string_len, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_octet_string (XDR *xdrs, octet_string *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_bytes (xdrs, (char **)&objp->octet_string_val, (u_int *) &objp->octet_string_len, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_uint64 (XDR *xdrs, gssx_uint64 *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_u_quad_t (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_qop (XDR *xdrs, gssx_qop *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_u_quad_t (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_buffer (XDR *xdrs, gssx_buffer *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_octet_string (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_OID (XDR *xdrs, gssx_OID *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_octet_string (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_OID_set (XDR *xdrs, gssx_OID_set *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_array (xdrs, (char **)&objp->gssx_OID_set_val, (u_int *) &objp->gssx_OID_set_len, ~0,
+ sizeof (gssx_OID), (xdrproc_t) xdr_gssx_OID))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_cred_usage (XDR *xdrs, gssx_cred_usage *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_time (XDR *xdrs, gssx_time *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_u_quad_t (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_ext_id (XDR *xdrs, gssx_ext_id *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_typed_hole (XDR *xdrs, gssx_typed_hole *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_ext_id (xdrs, &objp->ext_type))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->ext_data))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_mech_attr (XDR *xdrs, gssx_mech_attr *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_OID (xdrs, &objp->attr))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->name))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->short_desc))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->long_desc))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_mech_info (XDR *xdrs, gssx_mech_info *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_OID (xdrs, &objp->mech))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->name_types))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->mech_attrs))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->known_mech_attrs))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->cred_options))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->sec_ctx_options))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->provider_names.provider_names_val, (u_int *) &objp->provider_names.provider_names_len, ~0,
+ sizeof (utf8string), (xdrproc_t) xdr_utf8string))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->provider_paths.provider_paths_val, (u_int *) &objp->provider_paths.provider_paths_len, ~0,
+ sizeof (utf8string), (xdrproc_t) xdr_utf8string))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_name_attr (XDR *xdrs, gssx_name_attr *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_buffer (xdrs, &objp->attr))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->value))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_option (XDR *xdrs, gssx_option *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_OID (xdrs, &objp->option))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->value))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_status (XDR *xdrs, gssx_status *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_uint64 (xdrs, &objp->major_status))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->mech))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->minor_status))
+ return FALSE;
+ if (!xdr_utf8string (xdrs, &objp->major_status_string))
+ return FALSE;
+ if (!xdr_utf8string (xdrs, &objp->minor_status_string))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->server_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_call_ctx (XDR *xdrs, gssx_call_ctx *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_utf8string (xdrs, &objp->locale))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->server_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_name (XDR *xdrs, gssx_name *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_pointer (xdrs, (char **)&objp->display_name, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->name_type))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->exported_name.exported_name_val, (u_int *) &objp->exported_name.exported_name_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->exported_composite_name.exported_composite_name_val, (u_int *) &objp->exported_composite_name.exported_composite_name_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->name_attributes.name_attributes_val, (u_int *) &objp->name_attributes.name_attributes_len, ~0,
+ sizeof (gssx_name_attr), (xdrproc_t) xdr_gssx_name_attr))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_cred_info (XDR *xdrs, gssx_cred_info *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_name (xdrs, &objp->MN))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->mech))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->initiator_time_rec))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->acceptor_time_rec))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->cred_options.cred_options_val, (u_int *) &objp->cred_options.cred_options_len, ~0,
+ sizeof (gssx_option), (xdrproc_t) xdr_gssx_option))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->cred_handle_reference))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_ctx_info (XDR *xdrs, gssx_ctx_info *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_pointer (xdrs, (char **)&objp->exported_context_token, sizeof (octet_string), (xdrproc_t) xdr_octet_string))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->state, sizeof (octet_string), (xdrproc_t) xdr_octet_string))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->mech))
+ return FALSE;
+ if (!xdr_gssx_name (xdrs, &objp->src_name))
+ return FALSE;
+ if (!xdr_gssx_name (xdrs, &objp->targ_name))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->lifetime))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->ctx_flags))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->locally_initiated))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->open))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0,
+ sizeof (gssx_option), (xdrproc_t) xdr_gssx_option))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_handle_type (XDR *xdrs, gssx_handle_type *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_enum (xdrs, (enum_t *) objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_handle_info (XDR *xdrs, gssx_handle_info *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_handle_type (xdrs, &objp->handle_type))
+ return FALSE;
+ switch (objp->handle_type) {
+ case GSSX_C_HANDLE_CRED:
+ if (!xdr_array (xdrs, (char **)&objp->gssx_handle_info_u.cred_info.cred_info_val, (u_int *) &objp->gssx_handle_info_u.cred_info.cred_info_len, ~0,
+ sizeof (gssx_cred_info), (xdrproc_t) xdr_gssx_cred_info))
+ return FALSE;
+ break;
+ case GSSX_C_HANDLE_SEC_CTX:
+ if (!xdr_gssx_ctx_info (xdrs, &objp->gssx_handle_info_u.sec_ctx_info))
+ return FALSE;
+ break;
+ default:
+ if (!xdr_octet_string (xdrs, &objp->gssx_handle_info_u.extensions))
+ return FALSE;
+ break;
+ }
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_handle (XDR *xdrs, gssx_handle *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_handle_info (xdrs, &objp->handle_info))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->needs_release))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_ctx (XDR *xdrs, gssx_ctx *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_handle (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_cred (XDR *xdrs, gssx_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_handle (xdrs, objp))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_cb (XDR *xdrs, gssx_cb *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_uint64 (xdrs, &objp->initiator_addrtype))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->initiator_address))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->acceptor_addrtype))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->acceptor_address))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->application_data))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_release_handle (XDR *xdrs, gssx_arg_release_handle *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_handle (xdrs, &objp->cred_handle))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_release_handle (XDR *xdrs, gssx_res_release_handle *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_indicate_mechs (XDR *xdrs, gssx_arg_indicate_mechs *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_indicate_mechs (XDR *xdrs, gssx_res_indicate_mechs *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->mechs.mechs_val, (u_int *) &objp->mechs.mechs_len, ~0,
+ sizeof (gssx_mech_info), (xdrproc_t) xdr_gssx_mech_info))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->mech_attr_descs.mech_attr_descs_val, (u_int *) &objp->mech_attr_descs.mech_attr_descs_len, ~0,
+ sizeof (gssx_mech_attr), (xdrproc_t) xdr_gssx_mech_attr))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->supported_extensions.supported_extensions_val, (u_int *) &objp->supported_extensions.supported_extensions_len, ~0,
+ sizeof (gssx_ext_id), (xdrproc_t) xdr_gssx_ext_id))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_import_and_canon_name (XDR *xdrs, gssx_arg_import_and_canon_name *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_name (xdrs, &objp->input_name))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->mech))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->name_attributes.name_attributes_val, (u_int *) &objp->name_attributes.name_attributes_len, ~0,
+ sizeof (gssx_name_attr), (xdrproc_t) xdr_gssx_name_attr))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_import_and_canon_name (XDR *xdrs, gssx_res_import_and_canon_name *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->output_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_get_call_context (XDR *xdrs, gssx_arg_get_call_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_get_call_context (XDR *xdrs, gssx_res_get_call_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->server_call_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_acquire_cred (XDR *xdrs, gssx_arg_acquire_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->cred_options.cred_options_val, (u_int *) &objp->cred_options.cred_options_len, ~0,
+ sizeof (gssx_option), (xdrproc_t) xdr_gssx_option))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->input_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->add_cred_to_input_handle))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->desired_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->time_req))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->desired_mechs))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->initiator_time_req))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->acceptor_time_req))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_acquire_cred (XDR *xdrs, gssx_res_acquire_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->output_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_export_cred (XDR *xdrs, gssx_arg_export_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_cred (xdrs, &objp->input_cred_handle))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_export_cred (XDR *xdrs, gssx_res_export_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->usage_exported))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->exported_handle, sizeof (octet_string), (xdrproc_t) xdr_octet_string))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_import_cred (XDR *xdrs, gssx_arg_import_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_octet_string (xdrs, &objp->exported_handle))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_import_cred (XDR *xdrs, gssx_res_import_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->output_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_store_cred (XDR *xdrs, gssx_arg_store_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_cred (xdrs, &objp->input_cred_handle))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->desired_mech))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->overwrite_cred))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->default_cred))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_store_cred (XDR *xdrs, gssx_res_store_cred *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_gssx_OID_set (xdrs, &objp->elements_stored))
+ return FALSE;
+ if (!xdr_gssx_cred_usage (xdrs, &objp->cred_usage_stored))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_init_sec_context (XDR *xdrs, gssx_arg_init_sec_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0,
+ sizeof (gssx_option), (xdrproc_t) xdr_gssx_option))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->target_name, sizeof (gssx_name), (xdrproc_t) xdr_gssx_name))
+ return FALSE;
+ if (!xdr_gssx_OID (xdrs, &objp->mech_type))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->req_flags))
+ return FALSE;
+ if (!xdr_gssx_time (xdrs, &objp->time_req))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->input_cb, sizeof (gssx_cb), (xdrproc_t) xdr_gssx_cb))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->input_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_init_sec_context (XDR *xdrs, gssx_res_init_sec_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->output_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_accept_sec_context (XDR *xdrs, gssx_arg_accept_sec_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->context_options.context_options_val, (u_int *) &objp->context_options.context_options_len, ~0,
+ sizeof (gssx_option), (xdrproc_t) xdr_gssx_option))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->input_token))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->input_cb, sizeof (gssx_cb), (xdrproc_t) xdr_gssx_cb))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_accept_sec_context (XDR *xdrs, gssx_res_accept_sec_context *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->output_token, sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->delegated_cred_handle, sizeof (gssx_cred), (xdrproc_t) xdr_gssx_cred))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->extensions.extensions_val, (u_int *) &objp->extensions.extensions_len, ~0,
+ sizeof (gssx_typed_hole), (xdrproc_t) xdr_gssx_typed_hole))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_get_mic (XDR *xdrs, gssx_arg_get_mic *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_ctx (xdrs, &objp->context_handle))
+ return FALSE;
+ if (!xdr_gssx_qop (xdrs, &objp->qop_req))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->message_buffer))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_get_mic (XDR *xdrs, gssx_res_get_mic *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->token_buffer))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_verify_mic (XDR *xdrs, gssx_arg_verify_mic *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_ctx (xdrs, &objp->context_handle))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->message_buffer))
+ return FALSE;
+ if (!xdr_gssx_buffer (xdrs, &objp->token_buffer))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_verify_mic (XDR *xdrs, gssx_res_verify_mic *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_wrap (XDR *xdrs, gssx_arg_wrap *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_ctx (xdrs, &objp->context_handle))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->conf_req))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->message_buffer.message_buffer_val, (u_int *) &objp->message_buffer.message_buffer_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_gssx_qop (xdrs, &objp->qop_state))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_wrap (XDR *xdrs, gssx_res_wrap *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->token_buffer.token_buffer_val, (u_int *) &objp->token_buffer.token_buffer_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->conf_state, sizeof (bool_t), (xdrproc_t) xdr_bool))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_unwrap (XDR *xdrs, gssx_arg_unwrap *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_ctx (xdrs, &objp->context_handle))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->token_buffer.token_buffer_val, (u_int *) &objp->token_buffer.token_buffer_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_gssx_qop (xdrs, &objp->qop_state))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_unwrap (XDR *xdrs, gssx_res_unwrap *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->context_handle, sizeof (gssx_ctx), (xdrproc_t) xdr_gssx_ctx))
+ return FALSE;
+ if (!xdr_array (xdrs, (char **)&objp->message_buffer.message_buffer_val, (u_int *) &objp->message_buffer.message_buffer_len, ~0,
+ sizeof (gssx_buffer), (xdrproc_t) xdr_gssx_buffer))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->conf_state, sizeof (bool_t), (xdrproc_t) xdr_bool))
+ return FALSE;
+ if (!xdr_pointer (xdrs, (char **)&objp->qop_state, sizeof (gssx_qop), (xdrproc_t) xdr_gssx_qop))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_arg_wrap_size_limit (XDR *xdrs, gssx_arg_wrap_size_limit *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_call_ctx (xdrs, &objp->call_ctx))
+ return FALSE;
+ if (!xdr_gssx_ctx (xdrs, &objp->context_handle))
+ return FALSE;
+ if (!xdr_bool (xdrs, &objp->conf_req))
+ return FALSE;
+ if (!xdr_gssx_qop (xdrs, &objp->qop_state))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->req_output_size))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_gssx_res_wrap_size_limit (XDR *xdrs, gssx_res_wrap_size_limit *objp)
+{
+ register int32_t *buf;
+
+ if (!xdr_gssx_status (xdrs, &objp->status))
+ return FALSE;
+ if (!xdr_gssx_uint64 (xdrs, &objp->max_input_size))
+ return FALSE;
+ return TRUE;
+}