diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5be774d9..9e9d994b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,6 +24,15 @@ if(ENABLE_TESTS)
 endif()
 
 include(cmake/Macros.cmake)
+
+if(IOS)
+    find_package(GSSAPI)
+
+    if(GSSAPI_FOUND)
+        add_definitions(-DHAVE_LIBKRB5)
+    endif()
+endif()
+    
 include(cmake/ConfigureChecks.cmake)
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR}
diff --git a/README b/README
index 9a8204ca..0e72fee8 100644
--- a/README
+++ b/README
@@ -57,7 +57,7 @@ URL-FORMAT:
 Libnfs uses RFC2224 style URLs extended with some minor libnfs extensions.
 The basic syntax of these URLs is :
 
-nfs://<server|ipv4|ipv6>[:<port>]/path[?arg=val[&arg=val]*]
+nfs://[<username>@]<server|ipv4|ipv6>[:<port>]/path[?arg=val[&arg=val]*]
 
 Special characters in 'path' are escaped using %-hex-hex syntax.
 
@@ -77,6 +77,7 @@ Arguments supported by libnfs are :
                      default it 65534 on Windows and getuid() on unixen.
  gid=<int>         : GID value to use when talking to the server.
                      default it 65534 on Windows and getgid() on unixen.
+ sec=<krb5>        : Specify the security mode.
  auto-traverse-mounts=<0|1>
                    : Should libnfs try to traverse across nested mounts
                      automatically or not. Default is 1 == enabled.
diff --git a/configure.ac b/configure.ac
index 3dedf1ee..c335c26a 100755
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,22 @@ AC_ARG_ENABLE([examples],
 	      [ENABLE_EXAMPLES=$enableval],
 	      [ENABLE_EXAMPLES="no"])
 
+AC_ARG_WITH([libkrb5],
+            [AS_HELP_STRING([--without-libkrb5],
+                            [Do not link with libkrb5 even if available.])])
+AS_IF([test "x$with_libkrb5" != "xno"], [
+    MAYBE_LIBKRB5="-lgssapi_krb5"
+    AC_DEFINE([HAVE_LIBKRB5], [1], [Whether we use gssapi_krb5 or not])
+    AC_MSG_NOTICE([Build with gssapi_krb5 support])
+    dnl  Check for gssapi/gssapi.h
+    AC_CHECK_HEADERS([gssapi/gssapi.h], [], [
+        AC_MSG_ERROR([You need gssapi development files to compile libsmb2.])
+    ])
+], [
+    MAYBE_LIBKRB5=""
+    AC_MSG_NOTICE([Build WITHOUT gssapi_krb5 support])
+])
+
 # We need popt to compile the examples
 if test x$ENABLE_EXAMPLES = xyes; then
 AC_MSG_CHECKING(whether libpopt is available)
@@ -119,6 +135,8 @@ else
   AC_MSG_NOTICE(Compiling without getpwnam() support.)
 fi
 
+AC_SUBST([MAYBE_LIBKRB5])
+
 AC_ARG_ENABLE([werror], [AS_HELP_STRING([--disable-werror],
               [Disables building with -Werror by default])])
 
diff --git a/include/libnfs-private.h b/include/libnfs-private.h
index 0e5340ee..eb16cd1f 100644
--- a/include/libnfs-private.h
+++ b/include/libnfs-private.h
@@ -137,6 +137,7 @@ enum input_state {
         READ_UNKNOWN = 5,
 };
 
+struct gss_ctx_id_struct;
 struct rpc_context {
 	uint32_t magic;
 	int fd;
@@ -194,6 +195,18 @@ struct rpc_context {
 	char ifname[IFNAMSIZ];
 	int poll_timeout;
 
+#ifdef HAVE_LIBKRB5
+        const char *username;
+        enum rpc_sec wanted_sec;
+        enum rpc_sec sec;
+        uint32_t gss_seqno;
+        int context_len;
+        char *context;
+        
+        void *auth_data; /* for krb5 */
+        struct gss_ctx_id_struct *gss_context;
+#endif /* HAVE_LIBKRB5 */
+
         /* Is a server context ? */
         int is_server_context;
         struct rpc_endpoint *endpoints;
@@ -235,6 +248,10 @@ struct rpc_pdu {
         uint32_t flags;
 
 	uint64_t timeout;
+#ifdef HAVE_LIBKRB5
+        uint32_t gss_seqno;
+        char creds[64];
+#endif
 };
 
 void rpc_reset_queue(struct rpc_queue *q);
diff --git a/include/nfsc/libnfs-raw.h b/include/nfsc/libnfs-raw.h
index 0ce77592..769c4187 100644
--- a/include/nfsc/libnfs-raw.h
+++ b/include/nfsc/libnfs-raw.h
@@ -124,6 +124,11 @@ EXTERN void rpc_set_uid(struct rpc_context *rpc, int uid);
 EXTERN void rpc_set_gid(struct rpc_context *rpc, int gid);
 EXTERN void rpc_set_auxiliary_gids(struct rpc_context *rpc, uint32_t len, uint32_t* gids);
 
+/*
+ * Used in GSSAPI mode
+ */
+EXTERN int rpc_set_username(struct rpc_context *rpc, const char *username);
+
 /*
  * Create a server context.
  */
@@ -2480,7 +2485,6 @@ EXTERN struct rpc_pdu *
 rpc_null_task(struct rpc_context *rpc, int program, int version,
                rpc_cb cb, void *private_data);
 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/nfsc/libnfs-zdr.h b/include/nfsc/libnfs-zdr.h
index 9e290794..2ddf3957 100644
--- a/include/nfsc/libnfs-zdr.h
+++ b/include/nfsc/libnfs-zdr.h
@@ -106,17 +106,28 @@ typedef uint32_t (*zdrproc_t) (ZDR *, void *,...);
 #define AUTH_NULL 0
 #define AUTH_SYS  1
 #define AUTH_UNIX 1
+#define AUTH_GSS  6
 
-struct opaque_auth {
+struct opaque_cred {
 	uint32_t oa_flavor;
 	caddr_t  oa_base;
 	uint32_t oa_length;
 };
-extern struct opaque_auth _null_auth;
+
+struct gss_ctx_id_struct;
+struct opaque_verf {
+	uint32_t oa_flavor;
+	caddr_t  oa_base;
+	uint32_t oa_length;
+
+        /* GSS */
+        struct gss_ctx_id_struct *gss_context;
+};
+extern struct opaque_verf _null_auth;
 
 struct AUTH {
-	struct opaque_auth	ah_cred;
-	struct opaque_auth	ah_verf;
+	struct opaque_cred	ah_cred;
+	struct opaque_verf	ah_verf;
 	caddr_t ah_private;
 };
 
@@ -168,13 +179,13 @@ struct call_body {
 	uint32_t prog;
 	uint32_t vers;
 	uint32_t proc;
-	struct opaque_auth cred;
-	struct opaque_auth verf;
+	struct opaque_cred cred;
+	struct opaque_verf verf;
 	void    *args;
 };
 
 struct accepted_reply {
-	struct opaque_auth	verf;
+	struct opaque_verf	verf;
 	uint32_t		stat;
 	union {
 		struct {
@@ -267,6 +278,9 @@ bool_t libnfs_zdr_setpos(ZDR *zdrs, uint32_t pos);
 #define zdr_getpos libnfs_zdr_getpos
 uint32_t libnfs_zdr_getpos(ZDR *zdrs);
 
+#define zdr_getptr libnfs_zdr_getptr
+char *libnfs_zdr_getptr(ZDR *zdrs);
+        
 #define zdr_free libnfs_zdr_free
 void libnfs_zdr_free(zdrproc_t proc, char *objp);
 
@@ -287,6 +301,9 @@ struct AUTH *libnfs_authunix_create(const char *host, uint32_t uid, uint32_t gid
 #define authunix_create_default libnfs_authunix_create_default
 struct AUTH *libnfs_authunix_create_default(void);
 
+int libnfs_authgss_init(struct rpc_context *rpc);
+int libnfs_authgss_gen_creds(struct rpc_context *rpc, ZDR *zdr);
+
 #define auth_destroy libnfs_auth_destroy
 void libnfs_auth_destroy(struct AUTH *auth);
 
diff --git a/include/nfsc/libnfs.h b/include/nfsc/libnfs.h
index fddb4f83..0ba72aaa 100755
--- a/include/nfsc/libnfs.h
+++ b/include/nfsc/libnfs.h
@@ -138,6 +138,18 @@ EXTERN int nfs_queue_length(struct nfs_context *nfs);
 struct AUTH;
 EXTERN void nfs_set_auth(struct nfs_context *nfs, struct AUTH *auth);
 
+/*
+ * Used to set which security to use.
+ */
+enum rpc_sec {
+        RPC_SEC_UNDEFINED = 0,
+        RPC_SEC_KRB5,
+        //RPC_SEC_KRB5I,
+        //RPC_SEC_KRB5P,
+};
+EXTERN void nfs_set_security(struct nfs_context *nfs, enum rpc_sec sec);
+        
+        
 /*
  * Used if you need to bind to a specific interface.
  * Only available on platforms that support SO_BINDTODEVICE.
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 88ba7b8d..e75d44f3 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,4 +1,5 @@
 set(SOURCES init.c
+            krb5-wrapper.c
             libnfs.c
             libnfs-sync.c
             libnfs-zdr.c
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 4e3d0815..28251570 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -16,6 +16,7 @@ libnfs_la_CPPFLAGS = -I$(abs_top_srcdir)/include \
 
 libnfs_la_SOURCES = \
 	init.c \
+	krb5-wrapper.c \
 	libnfs.c \
 	libnfs-sync.c \
 	libnfs-zdr.c \
@@ -29,7 +30,8 @@ libnfs_la_SOURCES = \
 SOCURRENT=14
 SOREVISION=0
 SOAGE=0
-libnfs_la_LDFLAGS = -version-info $(SOCURRENT):$(SOREVISION):$(SOAGE)
+libnfs_la_LDFLAGS = -version-info $(SOCURRENT):$(SOREVISION):$(SOAGE) \
+	$(MAYBE_LIBKRB5)
 if HAVE_WIN32
 libnfs_la_LDFLAGS += -no-undefined
 endif
diff --git a/lib/init.c b/lib/init.c
index 68b52c21..8d43aad4 100644
--- a/lib/init.c
+++ b/lib/init.c
@@ -59,6 +59,14 @@
 #include "libnfs-raw.h"
 #include "libnfs-private.h"
 
+#ifdef HAVE_LIBKRB5
+#include "krb5-wrapper.h"
+#endif
+
+#ifndef discard_const
+#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
+#endif
+
 uint64_t rpc_current_time(void)
 {
 #ifdef HAVE_CLOCK_GETTIME
@@ -220,6 +228,15 @@ struct rpc_context *rpc_init_udp_context(void)
 	return rpc;
 }
 
+int rpc_set_username(struct rpc_context *rpc, const char *username)
+{
+#ifdef HAVE_LIBKRB5
+        free(discard_const(rpc->username));
+        rpc->username = strdup(username);
+#endif
+        return 0;
+}
+
 void rpc_set_auth(struct rpc_context *rpc, struct AUTH *auth)
 {
 	assert(rpc->magic == RPC_CONTEXT_MAGIC);
@@ -431,6 +448,12 @@ void rpc_destroy_context(struct rpc_context *rpc)
 #ifdef HAVE_MULTITHREADING
         nfs_mt_mutex_destroy(&rpc->rpc_mutex);
 #endif /* HAVE_MULTITHREADING */
+#ifdef HAVE_LIBKRB5
+        if (rpc->auth_data) {
+                krb5_free_auth_data(rpc->auth_data);
+        }
+        free(discard_const(rpc->username));
+#endif
 	free(rpc);
 }
 
diff --git a/lib/krb5-wrapper.c b/lib/krb5-wrapper.c
new file mode 100644
index 00000000..305b4c76
--- /dev/null
+++ b/lib/krb5-wrapper.c
@@ -0,0 +1,330 @@
+/* -*-  mode:c; tab-width:8; c-basic-offset:8; indent-tabs-mode:nil;  -*- */
+/*
+   Copyright (C) 2024 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_LIBKRB5
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifdef STDC_HEADERS
+#include <stddef.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_SYS_UNISTD_H
+#include <sys/unistd.h>
+#endif
+
+#include <krb5/krb5.h>
+#if __APPLE__
+#include <GSS/GSS.h>
+#else
+#include <gssapi/gssapi_krb5.h>
+#include <gssapi/gssapi.h>
+#endif
+#include <stdio.h>
+
+#include "slist.h"
+#include "libnfs.h"
+#include "libnfs-raw.h"
+#include "libnfs-raw-mount.h"
+#include "libnfs-raw-portmap.h"
+#include "libnfs-private.h"
+
+#include "krb5-wrapper.h"
+
+#ifndef discard_const
+#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
+#endif
+
+void
+krb5_free_auth_data(struct private_auth_data *auth)
+{
+        uint32_t maj, min;
+
+        /* Delete context */
+        if (auth->context) {
+                maj = gss_delete_sec_context(&min, &auth->context,
+                                             &auth->output_token);
+                if (maj != GSS_S_COMPLETE) {
+                        /* No logging, yet. Do we care? */
+                }
+        }
+
+        gss_release_buffer(&min, &auth->output_token);
+
+        if (auth->target_name) {
+                gss_release_name(&min, &auth->target_name);
+        }
+
+        if (auth->user_name) {
+                gss_release_name(&min, &auth->user_name);
+        }
+
+        free(auth->g_server);
+        free(auth);
+}
+
+static char *
+display_status(int type, uint32_t err)
+{
+        gss_buffer_desc text;
+        uint32_t msg_ctx;
+        char *msg, *tmp;
+        uint32_t maj, min;
+
+        msg = NULL;
+        msg_ctx = 0;
+        do {
+                maj = gss_display_status(&min, err, type,
+                                         GSS_C_NO_OID, &msg_ctx, &text);
+                if (maj != GSS_S_COMPLETE) {
+                        return msg;
+                }
+
+                tmp = NULL;
+                if (msg) {
+                        tmp = msg;
+                        min = asprintf(&msg, "%s, %*s", msg,
+                                       (int)text.length, (char *)text.value);
+                } else {
+                        min = asprintf(&msg, "%*s", (int)text.length,
+                                       (char *)text.value);
+                }
+                if (min == -1) return tmp;
+                free(tmp);
+                gss_release_buffer(&min, &text);
+        } while (msg_ctx != 0);
+
+        return msg;
+}
+
+//qqq add back use_cached_credentials
+struct private_auth_data *
+krb5_auth_init(struct rpc_context *rpc,
+               const char *server,
+               const char *user_name)
+{
+        struct private_auth_data *auth_data;
+        gss_buffer_desc target = GSS_C_EMPTY_BUFFER;
+        uint32_t maj, min;
+        gss_buffer_desc user;
+        //char user_principal[2048];
+        char *nc_password = NULL;
+        //gss_buffer_desc passwd;
+        gss_OID_set_desc mechOidSet;
+        gss_OID_set_desc wantMech;
+
+        auth_data = calloc(1, sizeof(struct private_auth_data));
+        if (auth_data == NULL) {
+                rpc_set_error(rpc, "Failed to allocate private_auth_data");
+                return NULL;
+        }
+        auth_data->context = GSS_C_NO_CONTEXT;
+
+        if (asprintf(&auth_data->g_server, "nfs@%s", server) < 0) {
+                rpc_set_error(rpc, "Failed to allocate server string");
+                return NULL;
+        }
+
+        target.value = auth_data->g_server;
+        target.length = strlen(auth_data->g_server);
+
+        maj = gss_import_name(&min, &target, GSS_C_NT_HOSTBASED_SERVICE,
+                              &auth_data->target_name);
+
+        if (maj != GSS_S_COMPLETE) {
+                krb5_set_gss_error(rpc, "gss_import_name", maj, min);
+                return NULL;
+        }
+
+        user.value = discard_const(user_name);
+        user.length = strlen(user_name);
+
+        /* create a name for the user */
+        maj = gss_import_name(&min, &user, GSS_C_NT_USER_NAME,
+                              &auth_data->user_name);
+
+        if (maj != GSS_S_COMPLETE) {
+                krb5_set_gss_error(rpc, "gss_import_name", maj, min);
+                return NULL;
+        }
+
+        /* TODO: the proper mechanism (SPNEGO vs NTLM vs KRB5) should be
+         * selected based on the SMB negotiation flags */
+        #ifdef __APPLE__
+        auth_data->mech_type = GSS_SPNEGO_MECHANISM;
+        #else
+        auth_data->mech_type = &spnego_mech_krb5;
+        #endif
+        auth_data->cred = GSS_C_NO_CREDENTIAL;
+
+        /* Create creds for the user */
+        mechOidSet.count = 1;
+        #ifdef __APPLE__
+        mechOidSet.elements = discard_const(GSS_SPNEGO_MECHANISM);
+        #else
+        mechOidSet.elements = discard_const(&gss_mech_spnego);
+        #endif
+        
+        maj = gss_acquire_cred(&min, auth_data->user_name, 0,
+                               &mechOidSet, GSS_C_INITIATE,
+                               &auth_data->cred, NULL, NULL);
+
+        if (maj != GSS_S_COMPLETE) {
+                krb5_set_gss_error(rpc, "gss_acquire_cred", maj, min);
+                return NULL;
+        }
+
+        #ifndef __APPLE__ /* gss_set_neg_mechs is not defined on macOS/iOS. */
+        if (rpc->sec != RPC_SEC_UNDEFINED) {
+                wantMech.count = 1;
+                
+                switch (rpc->sec) {
+                case RPC_SEC_KRB5:
+                //case RPC_SEC_KRB5I:
+                //case RPC_SEC_KRB5P:
+                        wantMech.elements = discard_const(&spnego_mech_krb5);
+                        break;
+                case RPC_SEC_UNDEFINED:
+                        ;
+                }
+
+                maj = gss_set_neg_mechs(&min, auth_data->cred, &wantMech);
+                if (GSS_ERROR(maj)) {
+                        krb5_set_gss_error(rpc, "gss_set_neg_mechs", maj, min);
+                        return NULL;
+                }
+        }
+        #endif
+
+        if (nc_password) {
+                free(nc_password);
+                nc_password = NULL;
+        }
+        return auth_data;
+}
+
+void
+krb5_set_gss_error(struct rpc_context *rpc, char *func,
+                   uint32_t maj, uint32_t min)
+{
+        char *err_maj = display_status(GSS_C_GSS_CODE, maj);
+        char *err_min = display_status(GSS_C_MECH_CODE, min);
+        rpc_set_error(rpc, "%s: (%s, %s)", func, err_maj, err_min);
+        free(err_min);
+        free(err_maj);
+}
+
+int
+krb5_auth_request(struct rpc_context *rpc,
+                     struct private_auth_data *auth_data,
+                     unsigned char *buf, int len)
+{
+        uint32_t maj, min;
+        gss_buffer_desc *input_token = NULL;
+        gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
+
+        if (buf) {
+                /* release the previous token */
+                gss_release_buffer(&min, &auth_data->output_token);
+                auth_data->output_token.length = 0;
+                auth_data->output_token.value = NULL;
+
+                token.value = buf;
+                token.length = len;
+                input_token = &token;
+        }
+
+        /* TODO return -errno instead of just -1 */
+        /* NOTE: this call is not async, a helper thread should be used if that
+         * is an issue */
+        auth_data->req_flags = GSS_C_SEQUENCE_FLAG | GSS_C_MUTUAL_FLAG |
+                GSS_C_REPLAY_FLAG;
+        if (auth_data->cred == GSS_C_NO_CREDENTIAL) {
+                input_token=GSS_C_NO_BUFFER;
+        }
+        maj = gss_init_sec_context(&min, auth_data->cred,
+                                   &auth_data->context,
+                                   auth_data->target_name,
+                                   discard_const(auth_data->mech_type),
+                                   auth_data->req_flags,
+                                   GSS_C_INDEFINITE,
+                                   GSS_C_NO_CHANNEL_BINDINGS,
+                                   input_token,
+                                   NULL,
+                                   &auth_data->output_token,
+                                   NULL,
+                                   NULL);
+
+        /* GSS_C_MUTUAL_FLAG expects the acceptor to send a token so
+         * a second call to gss_init_sec_context is required to complete the session.
+         * A second call is required even if the first call returns GSS_S_COMPLETE
+         */
+        if (maj & GSS_S_CONTINUE_NEEDED) {
+            return 0;
+        }
+        if (GSS_ERROR(maj)) {
+                krb5_set_gss_error(rpc, "gss_init_sec_context", maj, min);
+                return -1;
+        }
+
+        rpc->gss_context = auth_data->context;
+        return 0;
+}
+
+int
+krb5_get_output_token_length(struct private_auth_data *auth_data)
+{
+        return auth_data->output_token.length;
+}
+
+unsigned char *
+krb5_get_output_token_buffer(struct private_auth_data *auth_data)
+{
+        return auth_data->output_token.value;
+}
+
+#endif /* HAVE_LIBKRB5 */
diff --git a/lib/krb5-wrapper.h b/lib/krb5-wrapper.h
new file mode 100644
index 00000000..5377177c
--- /dev/null
+++ b/lib/krb5-wrapper.h
@@ -0,0 +1,89 @@
+/* -*-  mode:c; tab-width:8; c-basic-offset:8; indent-tabs-mode:nil;  -*- */
+#ifndef _KRB5_WRAPPER_H_
+#define _KRB5_WRAPPER_H_
+
+/*
+   Copyright (C) 2024 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_LIBKRB5
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if __APPLE__
+#import <GSS/GSS.h>
+#else
+#include <gssapi/gssapi.h>
+
+static const gss_OID_desc gss_mech_spnego = {
+    6, "\x2b\x06\x01\x05\x05\x02"
+};
+#endif
+
+static const gss_OID_desc spnego_mech_krb5 = {
+    9, "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02"
+};
+
+struct private_auth_data {
+        gss_ctx_id_t context;
+        gss_cred_id_t cred;
+        gss_name_t user_name;
+        gss_name_t target_name;
+        gss_const_OID mech_type;
+        uint32_t req_flags;
+        gss_buffer_desc output_token;
+        char *g_server;
+};
+
+void
+krb5_free_auth_data(struct private_auth_data *auth);
+        
+struct private_auth_data *
+krb5_auth_init(struct rpc_context *rpc,
+               const char *server,
+               const char *user_name);
+
+void
+krb5_set_gss_error(struct rpc_context *rpc, char *func,
+                   uint32_t maj, uint32_t min);
+
+int
+krb5_auth_request(struct rpc_context *rpc,
+                  struct private_auth_data *auth_data,
+                  unsigned char *buf, int len);
+
+unsigned char *
+krb5_get_output_token_buffer(struct private_auth_data *auth_data);
+
+int
+krb5_get_output_token_length(struct private_auth_data *auth_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* HAVE_LIBKRB5 */
+
+#endif /* _KRB5_WRAPPER_H_ */
diff --git a/lib/libnfs-win32.def b/lib/libnfs-win32.def
index 10d6f982..410dc178 100644
--- a/lib/libnfs-win32.def
+++ b/lib/libnfs-win32.def
@@ -95,9 +95,11 @@ nfs_set_mountport
 nfs_set_nfsport
 nfs_set_readdir_max_buffer_size
 nfs_set_readmax
+nfs_set_security
 nfs_set_tcp_syncnt
 nfs_set_timeout
 nfs_set_uid
+rpc_set_username
 nfs_set_version
 nfs_set_writemax
 nfs_stat
diff --git a/lib/libnfs-zdr.c b/lib/libnfs-zdr.c
index 18968518..c61fb71d 100644
--- a/lib/libnfs-zdr.c
+++ b/lib/libnfs-zdr.c
@@ -21,6 +21,12 @@
  * i.e. zdrmem_create() buffers.
  * It aims to be compatible with normal rpcgen generated functions.
  */
+
+/*
+  RFC2203:  5.2.3.1  struct rpc_gss_init_res  is what the NULL reply contains
+  Credentials   type, len + struct rpc_gss_cred_vers_1_t
+*/
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -57,6 +63,11 @@
 #include "libnfs.h"
 #include "libnfs-raw.h"
 #include "libnfs-private.h"
+#include "libnfs-raw-nfs4.h"
+
+#ifdef HAVE_LIBKRB5
+#include "krb5-wrapper.h"
+#endif
 
 struct zdr_mem {
        struct zdr_mem *next;
@@ -64,7 +75,7 @@ struct zdr_mem {
        char buf[1];
 };
 
-struct opaque_auth _null_auth;
+struct opaque_verf _null_auth;
 
 bool_t libnfs_zdr_setpos(ZDR *zdrs, uint32_t pos)
 {
@@ -78,6 +89,11 @@ uint32_t libnfs_zdr_getpos(ZDR *zdrs)
 	return zdrs->pos;
 }
 
+char *libnfs_zdr_getptr(ZDR *zdrs)
+{
+        return zdrs->buf;
+}
+
 void libnfs_zdrmem_create(ZDR *zdrs, const caddr_t addr, uint32_t size, enum zdr_op xop)
 {
 	zdrs->x_op = xop;
@@ -352,15 +368,61 @@ void libnfs_zdr_free(zdrproc_t proc, char *objp)
 {
 }
 
-static bool_t libnfs_opaque_auth(ZDR *zdrs, struct opaque_auth *auth)
+static bool_t libnfs_opaque_cred(ZDR *zdrs, struct opaque_cred *cred)
 {
-	if (!libnfs_zdr_u_int(zdrs, &auth->oa_flavor)) {
+	if (!libnfs_zdr_u_int(zdrs, &cred->oa_flavor)) {
 		return FALSE;
 	}
 
-	if (!libnfs_zdr_bytes(zdrs, &auth->oa_base, &auth->oa_length, auth->oa_length)) {
-		return FALSE;
-	}
+        if (!libnfs_zdr_bytes(zdrs, &cred->oa_base, &cred->oa_length, cred->oa_length)) {
+                return FALSE;
+        }
+
+	return TRUE;
+}
+
+static bool_t libnfs_opaque_verf(ZDR *zdrs, struct opaque_verf *verf)
+{
+#ifdef HAVE_LIBKRB5
+        uint32_t maj, min;
+        gss_buffer_desc message_buffer, output_token;
+        char *buf;
+        uint32_t len;
+
+#endif
+        switch (verf->oa_flavor) {
+#ifdef HAVE_LIBKRB5
+        case AUTH_GSS:
+                if (zdrs->x_op ==ZDR_ENCODE && verf->gss_context) {
+                        message_buffer.length = zdr_getpos(zdrs);
+                        message_buffer.value = zdr_getptr(zdrs);
+                        maj = gss_get_mic(&min, verf->gss_context,
+                                          GSS_C_QOP_DEFAULT,
+                                          &message_buffer,
+                                          &output_token);
+                        if (maj != GSS_S_COMPLETE) {
+                                return FALSE;
+                        }
+                        buf = output_token.value;
+                        len = output_token.length;
+                        if (!libnfs_zdr_u_int(zdrs, &verf->oa_flavor)) {
+                                return FALSE;
+                        }
+                        if (!libnfs_zdr_bytes(zdrs, &buf, &len, len)) {
+                                return FALSE;
+                        }
+                        gss_release_buffer(&min, &output_token);
+                }
+                // fallthrough
+#endif
+        default:
+                if (!libnfs_zdr_u_int(zdrs, &verf->oa_flavor)) {
+                        return FALSE;
+                }
+                if (!libnfs_zdr_bytes(zdrs, &verf->oa_base, &verf->oa_length, verf->oa_length)) {
+                        return FALSE;
+                }
+        }
 
 	return TRUE;
 }
@@ -391,13 +453,13 @@ static bool_t libnfs_rpc_call_body(struct rpc_context *rpc, ZDR *zdrs, struct ca
 		return FALSE;
 	}
 
-	if (!libnfs_opaque_auth(zdrs, &cmb->cred)) {
+	if (!libnfs_opaque_cred(zdrs, &cmb->cred)) {
 		rpc_set_error(rpc, "libnfs_rpc_call_body failed to encode "
 			"CRED");
 		return FALSE;
 	}
 
-	if (!libnfs_opaque_auth(zdrs, &cmb->verf)) {
+	if (!libnfs_opaque_verf(zdrs, &cmb->verf)) {
 		rpc_set_error(rpc, "libnfs_rpc_call_body failed to encode "
 			"VERF");
 		return FALSE;
@@ -408,7 +470,7 @@ static bool_t libnfs_rpc_call_body(struct rpc_context *rpc, ZDR *zdrs, struct ca
 
 static bool_t libnfs_accepted_reply(ZDR *zdrs, struct accepted_reply *ar)
 {
-	if (!libnfs_opaque_auth(zdrs, &ar->verf)) {
+	if (!libnfs_opaque_verf(zdrs, &ar->verf)) {
 		return FALSE;
 	}
 
@@ -597,6 +659,47 @@ struct AUTH *libnfs_authunix_create(const char *host, uint32_t uid, uint32_t gid
 	return auth;
 }
 
+#ifdef HAVE_LIBKRB5
+int libnfs_authgss_init(struct rpc_context *rpc)
+{
+        rpc->gss_seqno = 0;
+        rpc->context_len = 0;
+        free(rpc->context);
+        rpc->context = NULL;
+
+        free(rpc->auth->ah_cred.oa_base);
+        rpc->auth->ah_cred.oa_base = NULL;
+
+        rpc->auth->ah_cred.oa_flavor = AUTH_GSS;
+        
+	return 0;
+}
+
+int libnfs_authgss_gen_creds(struct rpc_context *rpc, ZDR *zdr)
+{
+        struct rpc_gss_cred_t gss;
+        struct rpc_gss_cred_vers_1_t *gss_v1;
+
+        gss.vers = 1;
+        gss_v1 = &gss.rpc_gss_cred_t_u.rpc_gss_cred_vers_1_t;
+        if (rpc->gss_seqno == 0) {
+                gss_v1->gss_proc = RPCSEC_GSS_INIT;
+        } else {
+                gss_v1->gss_proc = RPCSEC_GSS_DATA;
+        }
+        gss_v1->seq_num = rpc->gss_seqno;
+        gss_v1->service = RPC_GSS_SVC_NONE;
+        gss_v1->handle.handle_val = rpc->context;
+        gss_v1->handle.handle_len = rpc->context_len;
+        
+        if (!zdr_rpc_gss_cred_t(zdr, &gss)) {
+                return -1;
+        }
+        
+	return 0;
+}
+#endif /* HAVE_LIBKRB5 */
+
 struct AUTH *libnfs_authunix_create_default(void)
 {
 #if defined(WIN32) || defined(PS3_PPU)
diff --git a/lib/libnfs.c b/lib/libnfs.c
index bec5a032..bcddf7f5 100755
--- a/lib/libnfs.c
+++ b/lib/libnfs.c
@@ -26,22 +26,6 @@
 #include "config.h"
 #endif
 
-#ifdef AROS
-#include "aros_compat.h"
-#endif
-
-#ifdef PS2_EE
-#include "ps2_compat.h"
-#endif
-
-#ifdef PS3_PPU
-#include "ps3_compat.h"
-#endif
-
-#ifdef WIN32
-#include <win32/win32_compat.h>
-#endif
-
 #ifdef HAVE_UTIME_H
 #include <utime.h>
 #endif
@@ -90,6 +74,10 @@
 #include "libnfs-raw-portmap.h"
 #include "libnfs-private.h"
 
+#ifdef HAVE_LIBKRB5
+#include "krb5-wrapper.h"
+#endif
+
 void
 nfs_free_nfsdir(struct nfsdir *nfsdir)
 {
@@ -173,6 +161,14 @@ nfs_set_auth(struct nfs_context *nfs, struct AUTH *auth)
 	rpc_set_auth(nfs->rpc, auth);
 }
 
+void
+nfs_set_security(struct nfs_context *nfs, enum rpc_sec sec)
+{
+#ifdef HAVE_LIBKRB5
+        nfs->rpc->wanted_sec = RPC_SEC_KRB5;
+#endif
+}
+
 int
 nfs_get_fd(struct nfs_context *nfs)
 {
@@ -263,6 +259,15 @@ nfs_set_context_args(struct nfs_context *nfs, const char *arg, const char *val)
 		} else {
 			nfs_set_readdir_max_buffer_size(nfs, atoi(val), atoi(val));
 		}
+#ifdef HAVE_LIBKRB5
+	} else if (nfs->rpc && !strcmp(arg, "sec")) {
+                /*
+                 * We switch to AUTH_GSS after the first call to NFS/NULL call.
+                 */
+                if (!strcmp(val, "krb5")) {
+                        nfs_set_security(nfs, RPC_SEC_KRB5);
+                }
+#endif
 	}
 	return 0;
 }
@@ -420,6 +425,12 @@ nfs_parse_url(struct nfs_context *nfs, const char *url, int dir, int incomplete)
 		}
 	}
 
+        strp =strchr(urls->server, '@');
+        if (strp && nfs->rpc) {
+                *strp++ = '\0';
+                rpc_set_username(nfs->rpc, urls->server);
+                urls->server = strdup(strp);
+        }
 	if (urls->server && strlen(urls->server) <= 1) {
 		free(urls->server);
 		urls->server = NULL;
@@ -489,7 +500,9 @@ nfs_init_context(void)
 		free(nfs);
 		return NULL;
 	}
-
+#ifdef HAVE_LIBKRB5
+        rpc_set_username(nfs->rpc, cuserid(NULL));
+#endif
 	nfs->nfsi->cwd = strdup("/");
 	nfs->nfsi->mask = 022;
 	nfs->nfsi->auto_traverse_mounts = 1;
@@ -556,7 +569,6 @@ nfs_destroy_context(struct nfs_context *nfs)
         free(nfs->nfsi->cwd);
         free(nfs->nfsi->rootfh.val);
         free(nfs->nfsi->client_name);
-
 	while (nfs->nfsi->dircache) {
 		struct nfsdir *nfsdir = nfs->nfsi->dircache;
 		LIBNFS_LIST_REMOVE(&nfs->nfsi->dircache, nfsdir);
@@ -597,6 +609,76 @@ void free_rpc_cb_data(struct rpc_cb_data *data)
 static int
 rpc_connect_port_internal(struct rpc_context *rpc, int port, struct rpc_cb_data *data);
 
+#ifdef HAVE_LIBKRB5
+struct rpc_pdu *
+rpc_null_task_gss(struct rpc_context *rpc, int program, int version,
+                  rpc_gss_init_arg *arg,
+                  rpc_cb cb, void *private_data)
+{
+	struct rpc_pdu *pdu;
+        
+	pdu = rpc_allocate_pdu(rpc, program, version, 0, cb, private_data,
+                               (zdrproc_t)zdr_rpc_gss_init_res, sizeof(struct rpc_gss_init_res));
+	if (pdu == NULL) {
+		rpc_set_error(rpc, "Out of memory. Failed to allocate pdu "
+                              "for NULL call");
+		return NULL;
+	}
+
+        /* add the krb5 blob */
+	if (zdr_rpc_gss_init_arg(&pdu->zdr, arg) == 0) {
+		rpc_set_error(rpc, "ZDR error: Failed to encode blob");
+		rpc_free_pdu(rpc, pdu);
+		return NULL;
+	}
+
+	if (rpc_queue_pdu(rpc, pdu) != 0) {
+		rpc_set_error(rpc, "Out of memory. Failed to queue pdu "
+                              "for NULL call");
+		return NULL;
+	}
+
+	return pdu;
+}
+
+static void
+rpc_connect_program_6_cb(struct rpc_context *rpc, int status,
+                         void *command_data, void *private_data)
+{
+	struct rpc_cb_data *data = private_data;
+	struct rpc_gss_init_res *gir = command_data;
+
+	assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
+	if (status != RPC_STATUS_SUCCESS) {
+		data->cb(rpc, status, command_data, data->private_data);
+		free_rpc_cb_data(data);
+		return;
+	}
+
+        rpc->context_len = gir->handle.handle_len;
+        free(rpc->context);
+        rpc->context = malloc(rpc->context_len);
+        if (rpc->context == NULL) {
+                data->cb(rpc, -ENOMEM, NULL, data->private_data);
+                free_rpc_cb_data(data);
+        }
+        memcpy(rpc->context, gir->handle.handle_val, rpc->context_len);
+
+        if (krb5_auth_request(rpc, rpc->auth_data,
+                              (unsigned char *)gir->gss_token.gss_token_val,
+                              gir->gss_token.gss_token_len) < 0) {
+                data->cb(rpc, RPC_STATUS_ERROR, rpc_get_error(rpc),
+                         data->private_data);
+                free_rpc_cb_data(data);
+                return;
+        }
+        
+	data->cb(rpc, status, NULL, data->private_data);
+	free_rpc_cb_data(data);
+}
+#endif /* HAVE_LIBKRB5 */
+
 static void
 rpc_connect_program_5_cb(struct rpc_context *rpc, int status,
                          void *command_data, void *private_data)
@@ -614,6 +696,44 @@ rpc_connect_program_5_cb(struct rpc_context *rpc, int status,
 		return;
 	}
 
+#ifdef HAVE_LIBKRB5
+        if (data->program == 100003 && rpc->wanted_sec != RPC_SEC_UNDEFINED) {
+                rpc_gss_init_arg gia;
+
+                rpc->sec = rpc->wanted_sec;
+
+                libnfs_authgss_init(rpc);
+                rpc->auth_data = krb5_auth_init(rpc,
+                                                data->server,
+                                                rpc->username);
+                if (rpc->auth_data == NULL) {
+                        data->cb(rpc, RPC_STATUS_ERROR, rpc_get_error(rpc),
+                                 data->private_data);
+                        free_rpc_cb_data(data);
+                        return;
+                }
+
+                if (krb5_auth_request(rpc, rpc->auth_data,
+                                      NULL, 0) < 0) {
+                        data->cb(rpc, RPC_STATUS_ERROR, rpc_get_error(rpc),
+                                 data->private_data);
+                        free_rpc_cb_data(data);
+                        return;
+                }
+
+
+                gia.gss_token.gss_token_len = krb5_get_output_token_length(rpc->auth_data);
+                gia.gss_token.gss_token_val = (char *)krb5_get_output_token_buffer(rpc->auth_data);
+                if (rpc_null_task_gss(rpc, data->program, data->version,
+                                  &gia,
+                                  rpc_connect_program_6_cb, data) == NULL) {
+                        data->cb(rpc, RPC_STATUS_ERROR, command_data, data->private_data);
+                        free_rpc_cb_data(data);
+                        return;
+                }
+                return;
+        }
+#endif
 	data->cb(rpc, status, NULL, data->private_data);
 	free_rpc_cb_data(data);
 }
diff --git a/lib/pdu.c b/lib/pdu.c
index bf6e70b1..52162b0b 100644
--- a/lib/pdu.c
+++ b/lib/pdu.c
@@ -62,6 +62,10 @@
 #include "libnfs-raw.h"
 #include "libnfs-private.h"
 
+#ifdef HAVE_LIBKRB5
+#include "krb5-wrapper.h"
+#endif
+
 void rpc_reset_queue(struct rpc_queue *q)
 {
 	q->head = NULL;
@@ -196,6 +200,42 @@ struct rpc_pdu *rpc_allocate_pdu2(struct rpc_context *rpc, int program, int vers
 	msg.body.cbody.proc    = procedure;
 	msg.body.cbody.cred    = rpc->auth->ah_cred;
 	msg.body.cbody.verf    = rpc->auth->ah_verf;
+#ifdef HAVE_LIBKRB5
+#ifdef HAVE_MULTITHREADING
+        if (rpc->multithreading_enabled) {
+                nfs_mt_mutex_lock(&rpc->rpc_mutex);
+        }
+#endif /* HAVE_MULTITHREADING */
+        if (rpc->sec != RPC_SEC_UNDEFINED) {
+                ZDR tmpzdr;
+                pdu->gss_seqno = rpc->gss_seqno;
+
+                zdrmem_create(&tmpzdr, pdu->creds, 64, ZDR_ENCODE);
+                if (libnfs_authgss_gen_creds(rpc, &tmpzdr) < 0) {
+                        zdr_destroy(&tmpzdr);
+                        rpc_set_error(rpc, "zdr_callmsg failed with %s",
+                                      rpc_get_error(rpc));
+                        zdr_destroy(&pdu->zdr);
+                        free(pdu);
+                        return NULL;
+                }
+                msg.body.cbody.cred.oa_flavor = AUTH_GSS;
+                msg.body.cbody.cred.oa_length = tmpzdr.pos;
+                msg.body.cbody.cred.oa_base = pdu->creds;
+                zdr_destroy(&tmpzdr);
+
+                rpc->gss_seqno++;
+                if (rpc->gss_seqno > 1) {
+                        msg.body.cbody.verf.oa_flavor = AUTH_GSS;
+                        msg.body.cbody.verf.gss_context = rpc->gss_context;
+                }
+        }
+#ifdef HAVE_MULTITHREADING
+        if (rpc->multithreading_enabled) {
+                nfs_mt_mutex_unlock(&rpc->rpc_mutex);
+        }
+#endif /* HAVE_MULTITHREADING */
+#endif /* HAVE_LIBKRB5 */
 
 	if (zdr_callmsg(rpc, &pdu->zdr, &msg) == 0) {
 		rpc_set_error(rpc, "zdr_callmsg failed with %s",
@@ -204,7 +244,7 @@ struct rpc_pdu *rpc_allocate_pdu2(struct rpc_context *rpc, int program, int vers
 		free(pdu);
 		return NULL;
 	}
-
+        
         /* Add an iovector for the header */
         rpc_add_iovector(rpc, &pdu->out, &pdu->outdata.data[4],
                          zdr_getpos(&pdu->zdr), NULL);
@@ -379,6 +419,11 @@ static int rpc_process_reply(struct rpc_context *rpc, ZDR *zdr)
 	}
 	msg.body.rbody.reply.areply.reply_data.results.where = pdu->zdr_decode_buf;
 	msg.body.rbody.reply.areply.reply_data.results.proc  = pdu->zdr_decode_fn;
+#ifdef HAVE_LIBKRB5
+        if (rpc->sec != RPC_SEC_UNDEFINED) {
+                msg.body.rbody.reply.areply.verf.gss_context = rpc->gss_context;
+        }
+#endif
 	if (zdr_replymsg(rpc, zdr, &msg) == 0) {
 		rpc_set_error(rpc, "zdr_replymsg failed in rpc_process_reply: "
 			      "%s", rpc_get_error(rpc));
@@ -399,6 +444,30 @@ static int rpc_process_reply(struct rpc_context *rpc, ZDR *zdr)
                         rpc->pdu->free_pdu = 1;
                         break;
                 }
+#ifdef HAVE_LIBKRB5
+                if (msg.body.rbody.reply.areply.verf.oa_length &&
+                    pdu->gss_seqno > 0) {
+                        uint32_t maj, min;
+                        gss_buffer_desc message_buffer, token_buffer;
+                        uint32_t seqno;
+
+                        seqno = htonl(pdu->gss_seqno);
+                        message_buffer.value = (char *)&seqno;
+                        message_buffer.length = 4;
+
+                        token_buffer.value = msg.body.rbody.reply.areply.verf.oa_base;
+                        token_buffer.length = msg.body.rbody.reply.areply.verf.oa_length;
+                        maj = gss_verify_mic(&min,
+                                             rpc->gss_context,
+                                             &message_buffer,
+                                             &token_buffer,
+                                             GSS_C_QOP_DEFAULT);
+                        if (maj && maj != 16) {
+                                pdu->cb(rpc, RPC_STATUS_ERROR, "gss_verify_mic failed for the verifier", pdu->private_data);
+                                break;
+                        }
+                }
+#endif
 		pdu->cb(rpc, RPC_STATUS_SUCCESS, pdu->zdr_decode_buf, pdu->private_data);
 		break;
 	case PROG_UNAVAIL:
diff --git a/nfs/nfs.x b/nfs/nfs.x
index ab874a00..5f7afe57 100644
--- a/nfs/nfs.x
+++ b/nfs/nfs.x
@@ -1288,3 +1288,4 @@ program NFSACL_PROGRAM {
 		NFSACL3_SETACL(SETACL3args)           = 2;
 	} = 3;
 } = 100227;
+
diff --git a/nfs4/Makefile.am b/nfs4/Makefile.am
index f7aa05f5..e4122dc4 100644
--- a/nfs4/Makefile.am
+++ b/nfs4/Makefile.am
@@ -36,7 +36,7 @@ compile_rpc:
 -e "s/xdr/zdr/g" \
 -e "s/XDR/ZDR/g" \
 -e "s/bool_t/uint32_t/g" \
--e "s/register int32_t \*buf;//" \
+-e "s/register int32_t \*buf;/register int32_t *buf;\n    buf = NULL;/" \
 -e "s/int i;//" >> libnfs-raw-nfs4.c
 	sed -z -i -e "s/zdr_READ4resok/zzdr_READ4resok/" libnfs-raw-nfs4.c
 	sed -z -i -e "s/zdr_WRITE4args/zzdr_WRITE4args/" libnfs-raw-nfs4.c
diff --git a/nfs4/libnfs-raw-nfs4.c b/nfs4/libnfs-raw-nfs4.c
index 5d47c201..abd0075a 100644
--- a/nfs4/libnfs-raw-nfs4.c
+++ b/nfs4/libnfs-raw-nfs4.c
@@ -25,7 +25,8 @@
 uint32_t
 zdr_nfs_ftype4 (ZDR *zdrs, nfs_ftype4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -35,7 +36,8 @@ zdr_nfs_ftype4 (ZDR *zdrs, nfs_ftype4 *objp)
 uint32_t
 zdr_nfsstat4 (ZDR *zdrs, nfsstat4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -45,7 +47,8 @@ zdr_nfsstat4 (ZDR *zdrs, nfsstat4 *objp)
 uint32_t
 zdr_bitmap4 (ZDR *zdrs, bitmap4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->bitmap4_val, (u_int *) &objp->bitmap4_len, ~0,
 		sizeof (uint32_t), (zdrproc_t) zdr_uint32_t))
@@ -56,7 +59,8 @@ zdr_bitmap4 (ZDR *zdrs, bitmap4 *objp)
 uint32_t
 zdr_offset4 (ZDR *zdrs, offset4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -66,7 +70,8 @@ zdr_offset4 (ZDR *zdrs, offset4 *objp)
 uint32_t
 zdr_count4 (ZDR *zdrs, count4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -76,7 +81,8 @@ zdr_count4 (ZDR *zdrs, count4 *objp)
 uint32_t
 zdr_length4 (ZDR *zdrs, length4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -86,7 +92,8 @@ zdr_length4 (ZDR *zdrs, length4 *objp)
 uint32_t
 zdr_clientid4 (ZDR *zdrs, clientid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -96,7 +103,8 @@ zdr_clientid4 (ZDR *zdrs, clientid4 *objp)
 uint32_t
 zdr_sequenceid4 (ZDR *zdrs, sequenceid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -106,7 +114,8 @@ zdr_sequenceid4 (ZDR *zdrs, sequenceid4 *objp)
 uint32_t
 zdr_seqid4 (ZDR *zdrs, seqid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -116,7 +125,8 @@ zdr_seqid4 (ZDR *zdrs, seqid4 *objp)
 uint32_t
 zdr_slotid4 (ZDR *zdrs, slotid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -126,7 +136,8 @@ zdr_slotid4 (ZDR *zdrs, slotid4 *objp)
 uint32_t
 zdr_utf8string (ZDR *zdrs, utf8string *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->utf8string_val, (u_int *) &objp->utf8string_len, ~0))
 		 return FALSE;
@@ -136,7 +147,8 @@ zdr_utf8string (ZDR *zdrs, utf8string *objp)
 uint32_t
 zdr_utf8str_cis (ZDR *zdrs, utf8str_cis *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8string (zdrs, objp))
 		 return FALSE;
@@ -146,7 +158,8 @@ zdr_utf8str_cis (ZDR *zdrs, utf8str_cis *objp)
 uint32_t
 zdr_utf8str_cs (ZDR *zdrs, utf8str_cs *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8string (zdrs, objp))
 		 return FALSE;
@@ -156,7 +169,8 @@ zdr_utf8str_cs (ZDR *zdrs, utf8str_cs *objp)
 uint32_t
 zdr_utf8str_mixed (ZDR *zdrs, utf8str_mixed *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8string (zdrs, objp))
 		 return FALSE;
@@ -166,7 +180,8 @@ zdr_utf8str_mixed (ZDR *zdrs, utf8str_mixed *objp)
 uint32_t
 zdr_component4 (ZDR *zdrs, component4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cs (zdrs, objp))
 		 return FALSE;
@@ -176,7 +191,8 @@ zdr_component4 (ZDR *zdrs, component4 *objp)
 uint32_t
 zdr_pathname4 (ZDR *zdrs, pathname4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->pathname4_val, (u_int *) &objp->pathname4_len, ~0,
 		sizeof (component4), (zdrproc_t) zdr_component4))
@@ -187,7 +203,8 @@ zdr_pathname4 (ZDR *zdrs, pathname4 *objp)
 uint32_t
 zdr_nfs_lockid4 (ZDR *zdrs, nfs_lockid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -197,7 +214,8 @@ zdr_nfs_lockid4 (ZDR *zdrs, nfs_lockid4 *objp)
 uint32_t
 zdr_nfs_cookie4 (ZDR *zdrs, nfs_cookie4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -207,7 +225,8 @@ zdr_nfs_cookie4 (ZDR *zdrs, nfs_cookie4 *objp)
 uint32_t
 zdr_linktext4 (ZDR *zdrs, linktext4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cs (zdrs, objp))
 		 return FALSE;
@@ -217,7 +236,8 @@ zdr_linktext4 (ZDR *zdrs, linktext4 *objp)
 uint32_t
 zdr_sec_oid4 (ZDR *zdrs, sec_oid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->sec_oid4_val, (u_int *) &objp->sec_oid4_len, ~0))
 		 return FALSE;
@@ -227,7 +247,8 @@ zdr_sec_oid4 (ZDR *zdrs, sec_oid4 *objp)
 uint32_t
 zdr_qop4 (ZDR *zdrs, qop4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -237,7 +258,8 @@ zdr_qop4 (ZDR *zdrs, qop4 *objp)
 uint32_t
 zdr_mode4 (ZDR *zdrs, mode4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -247,7 +269,8 @@ zdr_mode4 (ZDR *zdrs, mode4 *objp)
 uint32_t
 zdr_changeid4 (ZDR *zdrs, changeid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -257,7 +280,8 @@ zdr_changeid4 (ZDR *zdrs, changeid4 *objp)
 uint32_t
 zdr_verifier4 (ZDR *zdrs, verifier4 objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_opaque (zdrs, objp, NFS4_VERIFIER_SIZE))
 		 return FALSE;
@@ -267,7 +291,8 @@ zdr_verifier4 (ZDR *zdrs, verifier4 objp)
 uint32_t
 zdr_sessionid4 (ZDR *zdrs, sessionid4 objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_opaque (zdrs, objp, NFS4_SESSIONID_SIZE))
 		 return FALSE;
@@ -277,7 +302,8 @@ zdr_sessionid4 (ZDR *zdrs, sessionid4 objp)
 uint32_t
 zdr_authsys_parms (ZDR *zdrs, authsys_parms *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_u_int (zdrs, &objp->stamp))
 		 return FALSE;
@@ -296,7 +322,8 @@ zdr_authsys_parms (ZDR *zdrs, authsys_parms *objp)
 uint32_t
 zdr_deviceid4 (ZDR *zdrs, deviceid4 objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_opaque (zdrs, objp, NFS4_DEVICEID4_SIZE))
 		 return FALSE;
@@ -306,7 +333,8 @@ zdr_deviceid4 (ZDR *zdrs, deviceid4 objp)
 uint32_t
 zdr_layouttype4 (ZDR *zdrs, layouttype4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -316,7 +344,8 @@ zdr_layouttype4 (ZDR *zdrs, layouttype4 *objp)
 uint32_t
 zdr_layoutupdate4 (ZDR *zdrs, layoutupdate4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_layouttype4 (zdrs, &objp->lou_type))
 		 return FALSE;
@@ -328,7 +357,8 @@ zdr_layoutupdate4 (ZDR *zdrs, layoutupdate4 *objp)
 uint32_t
 zdr_device_addr4 (ZDR *zdrs, device_addr4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_layouttype4 (zdrs, &objp->da_layout_type))
 		 return FALSE;
@@ -340,7 +370,8 @@ zdr_device_addr4 (ZDR *zdrs, device_addr4 *objp)
 uint32_t
 zdr_nfstime4 (ZDR *zdrs, nfstime4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_int64_t (zdrs, &objp->seconds))
 		 return FALSE;
@@ -352,7 +383,8 @@ zdr_nfstime4 (ZDR *zdrs, nfstime4 *objp)
 uint32_t
 zdr_time_how4 (ZDR *zdrs, time_how4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -362,7 +394,8 @@ zdr_time_how4 (ZDR *zdrs, time_how4 *objp)
 uint32_t
 zdr_layoutiomode4 (ZDR *zdrs, layoutiomode4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -372,7 +405,8 @@ zdr_layoutiomode4 (ZDR *zdrs, layoutiomode4 *objp)
 uint32_t
 zdr_layout_content4 (ZDR *zdrs, layout_content4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_layouttype4 (zdrs, &objp->loc_type))
 		 return FALSE;
@@ -384,7 +418,8 @@ zdr_layout_content4 (ZDR *zdrs, layout_content4 *objp)
 uint32_t
 zdr_layout4 (ZDR *zdrs, layout4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_offset4 (zdrs, &objp->lo_offset))
 		 return FALSE;
@@ -400,7 +435,8 @@ zdr_layout4 (ZDR *zdrs, layout4 *objp)
 uint32_t
 zdr_settime4 (ZDR *zdrs, settime4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_time_how4 (zdrs, &objp->set_it))
 		 return FALSE;
@@ -418,7 +454,8 @@ zdr_settime4 (ZDR *zdrs, settime4 *objp)
 uint32_t
 zdr_nfs_fh4 (ZDR *zdrs, nfs_fh4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->nfs_fh4_val, (u_int *) &objp->nfs_fh4_len, NFS4_FHSIZE))
 		 return FALSE;
@@ -428,7 +465,8 @@ zdr_nfs_fh4 (ZDR *zdrs, nfs_fh4 *objp)
 uint32_t
 zdr_fsid4 (ZDR *zdrs, fsid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, &objp->major))
 		 return FALSE;
@@ -440,7 +478,8 @@ zdr_fsid4 (ZDR *zdrs, fsid4 *objp)
 uint32_t
 zdr_fs_location4 (ZDR *zdrs, fs_location4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->server.server_val, (u_int *) &objp->server.server_len, ~0,
 		sizeof (utf8str_cis), (zdrproc_t) zdr_utf8str_cis))
@@ -453,7 +492,8 @@ zdr_fs_location4 (ZDR *zdrs, fs_location4 *objp)
 uint32_t
 zdr_fs_locations4 (ZDR *zdrs, fs_locations4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_pathname4 (zdrs, &objp->fs_root))
 		 return FALSE;
@@ -466,7 +506,8 @@ zdr_fs_locations4 (ZDR *zdrs, fs_locations4 *objp)
 uint32_t
 zdr_acetype4 (ZDR *zdrs, acetype4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -476,7 +517,8 @@ zdr_acetype4 (ZDR *zdrs, acetype4 *objp)
 uint32_t
 zdr_aceflag4 (ZDR *zdrs, aceflag4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -486,7 +528,8 @@ zdr_aceflag4 (ZDR *zdrs, aceflag4 *objp)
 uint32_t
 zdr_acemask4 (ZDR *zdrs, acemask4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -496,7 +539,8 @@ zdr_acemask4 (ZDR *zdrs, acemask4 *objp)
 uint32_t
 zdr_nfsace4 (ZDR *zdrs, nfsace4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_acetype4 (zdrs, &objp->type))
 		 return FALSE;
@@ -512,7 +556,8 @@ zdr_nfsace4 (ZDR *zdrs, nfsace4 *objp)
 uint32_t
 zdr_specdata4 (ZDR *zdrs, specdata4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->specdata1))
 		 return FALSE;
@@ -524,7 +569,8 @@ zdr_specdata4 (ZDR *zdrs, specdata4 *objp)
 uint32_t
 zdr_fattr4_supported_attrs (ZDR *zdrs, fattr4_supported_attrs *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bitmap4 (zdrs, objp))
 		 return FALSE;
@@ -534,7 +580,8 @@ zdr_fattr4_supported_attrs (ZDR *zdrs, fattr4_supported_attrs *objp)
 uint32_t
 zdr_fattr4_type (ZDR *zdrs, fattr4_type *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_ftype4 (zdrs, objp))
 		 return FALSE;
@@ -544,7 +591,8 @@ zdr_fattr4_type (ZDR *zdrs, fattr4_type *objp)
 uint32_t
 zdr_fattr4_fh_expire_type (ZDR *zdrs, fattr4_fh_expire_type *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -554,7 +602,8 @@ zdr_fattr4_fh_expire_type (ZDR *zdrs, fattr4_fh_expire_type *objp)
 uint32_t
 zdr_fattr4_change (ZDR *zdrs, fattr4_change *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_changeid4 (zdrs, objp))
 		 return FALSE;
@@ -564,7 +613,8 @@ zdr_fattr4_change (ZDR *zdrs, fattr4_change *objp)
 uint32_t
 zdr_fattr4_size (ZDR *zdrs, fattr4_size *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -574,7 +624,8 @@ zdr_fattr4_size (ZDR *zdrs, fattr4_size *objp)
 uint32_t
 zdr_fattr4_link_support (ZDR *zdrs, fattr4_link_support *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -584,7 +635,8 @@ zdr_fattr4_link_support (ZDR *zdrs, fattr4_link_support *objp)
 uint32_t
 zdr_fattr4_symlink_support (ZDR *zdrs, fattr4_symlink_support *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -594,7 +646,8 @@ zdr_fattr4_symlink_support (ZDR *zdrs, fattr4_symlink_support *objp)
 uint32_t
 zdr_fattr4_named_attr (ZDR *zdrs, fattr4_named_attr *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -604,7 +657,8 @@ zdr_fattr4_named_attr (ZDR *zdrs, fattr4_named_attr *objp)
 uint32_t
 zdr_fattr4_fsid (ZDR *zdrs, fattr4_fsid *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fsid4 (zdrs, objp))
 		 return FALSE;
@@ -614,7 +668,8 @@ zdr_fattr4_fsid (ZDR *zdrs, fattr4_fsid *objp)
 uint32_t
 zdr_fattr4_unique_handles (ZDR *zdrs, fattr4_unique_handles *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -624,7 +679,8 @@ zdr_fattr4_unique_handles (ZDR *zdrs, fattr4_unique_handles *objp)
 uint32_t
 zdr_fattr4_lease_time (ZDR *zdrs, fattr4_lease_time *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -634,7 +690,8 @@ zdr_fattr4_lease_time (ZDR *zdrs, fattr4_lease_time *objp)
 uint32_t
 zdr_fattr4_rdattr_error (ZDR *zdrs, fattr4_rdattr_error *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, objp))
 		 return FALSE;
@@ -644,7 +701,8 @@ zdr_fattr4_rdattr_error (ZDR *zdrs, fattr4_rdattr_error *objp)
 uint32_t
 zdr_fattr4_acl (ZDR *zdrs, fattr4_acl *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->fattr4_acl_val, (u_int *) &objp->fattr4_acl_len, ~0,
 		sizeof (nfsace4), (zdrproc_t) zdr_nfsace4))
@@ -655,7 +713,8 @@ zdr_fattr4_acl (ZDR *zdrs, fattr4_acl *objp)
 uint32_t
 zdr_fattr4_aclsupport (ZDR *zdrs, fattr4_aclsupport *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -665,7 +724,8 @@ zdr_fattr4_aclsupport (ZDR *zdrs, fattr4_aclsupport *objp)
 uint32_t
 zdr_fattr4_archive (ZDR *zdrs, fattr4_archive *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -675,7 +735,8 @@ zdr_fattr4_archive (ZDR *zdrs, fattr4_archive *objp)
 uint32_t
 zdr_fattr4_cansettime (ZDR *zdrs, fattr4_cansettime *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -685,7 +746,8 @@ zdr_fattr4_cansettime (ZDR *zdrs, fattr4_cansettime *objp)
 uint32_t
 zdr_fattr4_case_insensitive (ZDR *zdrs, fattr4_case_insensitive *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -695,7 +757,8 @@ zdr_fattr4_case_insensitive (ZDR *zdrs, fattr4_case_insensitive *objp)
 uint32_t
 zdr_fattr4_case_preserving (ZDR *zdrs, fattr4_case_preserving *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -705,7 +768,8 @@ zdr_fattr4_case_preserving (ZDR *zdrs, fattr4_case_preserving *objp)
 uint32_t
 zdr_fattr4_chown_restricted (ZDR *zdrs, fattr4_chown_restricted *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -715,7 +779,8 @@ zdr_fattr4_chown_restricted (ZDR *zdrs, fattr4_chown_restricted *objp)
 uint32_t
 zdr_fattr4_fileid (ZDR *zdrs, fattr4_fileid *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -725,7 +790,8 @@ zdr_fattr4_fileid (ZDR *zdrs, fattr4_fileid *objp)
 uint32_t
 zdr_fattr4_files_avail (ZDR *zdrs, fattr4_files_avail *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -735,7 +801,8 @@ zdr_fattr4_files_avail (ZDR *zdrs, fattr4_files_avail *objp)
 uint32_t
 zdr_fattr4_filehandle (ZDR *zdrs, fattr4_filehandle *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_fh4 (zdrs, objp))
 		 return FALSE;
@@ -745,7 +812,8 @@ zdr_fattr4_filehandle (ZDR *zdrs, fattr4_filehandle *objp)
 uint32_t
 zdr_fattr4_files_free (ZDR *zdrs, fattr4_files_free *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -755,7 +823,8 @@ zdr_fattr4_files_free (ZDR *zdrs, fattr4_files_free *objp)
 uint32_t
 zdr_fattr4_files_total (ZDR *zdrs, fattr4_files_total *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -765,7 +834,8 @@ zdr_fattr4_files_total (ZDR *zdrs, fattr4_files_total *objp)
 uint32_t
 zdr_fattr4_fs_locations (ZDR *zdrs, fattr4_fs_locations *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fs_locations4 (zdrs, objp))
 		 return FALSE;
@@ -775,7 +845,8 @@ zdr_fattr4_fs_locations (ZDR *zdrs, fattr4_fs_locations *objp)
 uint32_t
 zdr_fattr4_hidden (ZDR *zdrs, fattr4_hidden *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -785,7 +856,8 @@ zdr_fattr4_hidden (ZDR *zdrs, fattr4_hidden *objp)
 uint32_t
 zdr_fattr4_homogeneous (ZDR *zdrs, fattr4_homogeneous *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -795,7 +867,8 @@ zdr_fattr4_homogeneous (ZDR *zdrs, fattr4_homogeneous *objp)
 uint32_t
 zdr_fattr4_maxfilesize (ZDR *zdrs, fattr4_maxfilesize *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -805,7 +878,8 @@ zdr_fattr4_maxfilesize (ZDR *zdrs, fattr4_maxfilesize *objp)
 uint32_t
 zdr_fattr4_maxlink (ZDR *zdrs, fattr4_maxlink *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -815,7 +889,8 @@ zdr_fattr4_maxlink (ZDR *zdrs, fattr4_maxlink *objp)
 uint32_t
 zdr_fattr4_maxname (ZDR *zdrs, fattr4_maxname *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -825,7 +900,8 @@ zdr_fattr4_maxname (ZDR *zdrs, fattr4_maxname *objp)
 uint32_t
 zdr_fattr4_maxread (ZDR *zdrs, fattr4_maxread *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -835,7 +911,8 @@ zdr_fattr4_maxread (ZDR *zdrs, fattr4_maxread *objp)
 uint32_t
 zdr_fattr4_maxwrite (ZDR *zdrs, fattr4_maxwrite *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -845,7 +922,8 @@ zdr_fattr4_maxwrite (ZDR *zdrs, fattr4_maxwrite *objp)
 uint32_t
 zdr_fattr4_mimetype (ZDR *zdrs, fattr4_mimetype *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cs (zdrs, objp))
 		 return FALSE;
@@ -855,7 +933,8 @@ zdr_fattr4_mimetype (ZDR *zdrs, fattr4_mimetype *objp)
 uint32_t
 zdr_fattr4_mode (ZDR *zdrs, fattr4_mode *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_mode4 (zdrs, objp))
 		 return FALSE;
@@ -865,7 +944,8 @@ zdr_fattr4_mode (ZDR *zdrs, fattr4_mode *objp)
 uint32_t
 zdr_fattr4_mounted_on_fileid (ZDR *zdrs, fattr4_mounted_on_fileid *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -875,7 +955,8 @@ zdr_fattr4_mounted_on_fileid (ZDR *zdrs, fattr4_mounted_on_fileid *objp)
 uint32_t
 zdr_fattr4_no_trunc (ZDR *zdrs, fattr4_no_trunc *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -885,7 +966,8 @@ zdr_fattr4_no_trunc (ZDR *zdrs, fattr4_no_trunc *objp)
 uint32_t
 zdr_fattr4_numlinks (ZDR *zdrs, fattr4_numlinks *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, objp))
 		 return FALSE;
@@ -895,7 +977,8 @@ zdr_fattr4_numlinks (ZDR *zdrs, fattr4_numlinks *objp)
 uint32_t
 zdr_fattr4_owner (ZDR *zdrs, fattr4_owner *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_mixed (zdrs, objp))
 		 return FALSE;
@@ -905,7 +988,8 @@ zdr_fattr4_owner (ZDR *zdrs, fattr4_owner *objp)
 uint32_t
 zdr_fattr4_owner_group (ZDR *zdrs, fattr4_owner_group *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_mixed (zdrs, objp))
 		 return FALSE;
@@ -915,7 +999,8 @@ zdr_fattr4_owner_group (ZDR *zdrs, fattr4_owner_group *objp)
 uint32_t
 zdr_fattr4_quota_avail_hard (ZDR *zdrs, fattr4_quota_avail_hard *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -925,7 +1010,8 @@ zdr_fattr4_quota_avail_hard (ZDR *zdrs, fattr4_quota_avail_hard *objp)
 uint32_t
 zdr_fattr4_quota_avail_soft (ZDR *zdrs, fattr4_quota_avail_soft *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -935,7 +1021,8 @@ zdr_fattr4_quota_avail_soft (ZDR *zdrs, fattr4_quota_avail_soft *objp)
 uint32_t
 zdr_fattr4_quota_used (ZDR *zdrs, fattr4_quota_used *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -945,7 +1032,8 @@ zdr_fattr4_quota_used (ZDR *zdrs, fattr4_quota_used *objp)
 uint32_t
 zdr_fattr4_rawdev (ZDR *zdrs, fattr4_rawdev *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_specdata4 (zdrs, objp))
 		 return FALSE;
@@ -955,7 +1043,8 @@ zdr_fattr4_rawdev (ZDR *zdrs, fattr4_rawdev *objp)
 uint32_t
 zdr_fattr4_space_avail (ZDR *zdrs, fattr4_space_avail *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -965,7 +1054,8 @@ zdr_fattr4_space_avail (ZDR *zdrs, fattr4_space_avail *objp)
 uint32_t
 zdr_fattr4_space_free (ZDR *zdrs, fattr4_space_free *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -975,7 +1065,8 @@ zdr_fattr4_space_free (ZDR *zdrs, fattr4_space_free *objp)
 uint32_t
 zdr_fattr4_space_total (ZDR *zdrs, fattr4_space_total *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -985,7 +1076,8 @@ zdr_fattr4_space_total (ZDR *zdrs, fattr4_space_total *objp)
 uint32_t
 zdr_fattr4_space_used (ZDR *zdrs, fattr4_space_used *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, objp))
 		 return FALSE;
@@ -995,7 +1087,8 @@ zdr_fattr4_space_used (ZDR *zdrs, fattr4_space_used *objp)
 uint32_t
 zdr_fattr4_system (ZDR *zdrs, fattr4_system *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, objp))
 		 return FALSE;
@@ -1005,7 +1098,8 @@ zdr_fattr4_system (ZDR *zdrs, fattr4_system *objp)
 uint32_t
 zdr_fattr4_time_access (ZDR *zdrs, fattr4_time_access *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1015,7 +1109,8 @@ zdr_fattr4_time_access (ZDR *zdrs, fattr4_time_access *objp)
 uint32_t
 zdr_fattr4_time_access_set (ZDR *zdrs, fattr4_time_access_set *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_settime4 (zdrs, objp))
 		 return FALSE;
@@ -1025,7 +1120,8 @@ zdr_fattr4_time_access_set (ZDR *zdrs, fattr4_time_access_set *objp)
 uint32_t
 zdr_fattr4_time_backup (ZDR *zdrs, fattr4_time_backup *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1035,7 +1131,8 @@ zdr_fattr4_time_backup (ZDR *zdrs, fattr4_time_backup *objp)
 uint32_t
 zdr_fattr4_time_create (ZDR *zdrs, fattr4_time_create *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1045,7 +1142,8 @@ zdr_fattr4_time_create (ZDR *zdrs, fattr4_time_create *objp)
 uint32_t
 zdr_fattr4_time_delta (ZDR *zdrs, fattr4_time_delta *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1055,7 +1153,8 @@ zdr_fattr4_time_delta (ZDR *zdrs, fattr4_time_delta *objp)
 uint32_t
 zdr_fattr4_time_metadata (ZDR *zdrs, fattr4_time_metadata *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1065,7 +1164,8 @@ zdr_fattr4_time_metadata (ZDR *zdrs, fattr4_time_metadata *objp)
 uint32_t
 zdr_fattr4_time_modify (ZDR *zdrs, fattr4_time_modify *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -1075,7 +1175,8 @@ zdr_fattr4_time_modify (ZDR *zdrs, fattr4_time_modify *objp)
 uint32_t
 zdr_fattr4_time_modify_set (ZDR *zdrs, fattr4_time_modify_set *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_settime4 (zdrs, objp))
 		 return FALSE;
@@ -1085,7 +1186,8 @@ zdr_fattr4_time_modify_set (ZDR *zdrs, fattr4_time_modify_set *objp)
 uint32_t
 zdr_attrlist4 (ZDR *zdrs, attrlist4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->attrlist4_val, (u_int *) &objp->attrlist4_len, ~0))
 		 return FALSE;
@@ -1095,7 +1197,8 @@ zdr_attrlist4 (ZDR *zdrs, attrlist4 *objp)
 uint32_t
 zdr_fattr4 (ZDR *zdrs, fattr4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bitmap4 (zdrs, &objp->attrmask))
 		 return FALSE;
@@ -1107,7 +1210,8 @@ zdr_fattr4 (ZDR *zdrs, fattr4 *objp)
 uint32_t
 zdr_change_info4 (ZDR *zdrs, change_info4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->atomic))
 		 return FALSE;
@@ -1121,7 +1225,8 @@ zdr_change_info4 (ZDR *zdrs, change_info4 *objp)
 uint32_t
 zdr_clientaddr4 (ZDR *zdrs, clientaddr4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_string (zdrs, &objp->r_netid, ~0))
 		 return FALSE;
@@ -1133,7 +1238,8 @@ zdr_clientaddr4 (ZDR *zdrs, clientaddr4 *objp)
 uint32_t
 zdr_cb_client4 (ZDR *zdrs, cb_client4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->cb_program))
 		 return FALSE;
@@ -1145,7 +1251,8 @@ zdr_cb_client4 (ZDR *zdrs, cb_client4 *objp)
 uint32_t
 zdr_stateid4 (ZDR *zdrs, stateid4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	
 	 if (!zdr_uint32_t (zdrs, &objp->seqid))
@@ -1158,7 +1265,8 @@ zdr_stateid4 (ZDR *zdrs, stateid4 *objp)
 uint32_t
 zdr_nfs_client_id4 (ZDR *zdrs, nfs_client_id4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_verifier4 (zdrs, objp->verifier))
 		 return FALSE;
@@ -1170,7 +1278,8 @@ zdr_nfs_client_id4 (ZDR *zdrs, nfs_client_id4 *objp)
 uint32_t
 zdr_open_owner4 (ZDR *zdrs, open_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -1182,7 +1291,8 @@ zdr_open_owner4 (ZDR *zdrs, open_owner4 *objp)
 uint32_t
 zdr_lock_owner4 (ZDR *zdrs, lock_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -1194,7 +1304,8 @@ zdr_lock_owner4 (ZDR *zdrs, lock_owner4 *objp)
 uint32_t
 zdr_nfs_lock_type4 (ZDR *zdrs, nfs_lock_type4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1204,7 +1315,8 @@ zdr_nfs_lock_type4 (ZDR *zdrs, nfs_lock_type4 *objp)
 uint32_t
 zdr_client_owner4 (ZDR *zdrs, client_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_verifier4 (zdrs, objp->co_verifier))
 		 return FALSE;
@@ -1216,7 +1328,8 @@ zdr_client_owner4 (ZDR *zdrs, client_owner4 *objp)
 uint32_t
 zdr_server_owner4 (ZDR *zdrs, server_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint64_t (zdrs, &objp->so_minor_id))
 		 return FALSE;
@@ -1228,7 +1341,8 @@ zdr_server_owner4 (ZDR *zdrs, server_owner4 *objp)
 uint32_t
 zdr_nfs_impl_id4 (ZDR *zdrs, nfs_impl_id4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cis (zdrs, &objp->nii_domain))
 		 return FALSE;
@@ -1242,7 +1356,8 @@ zdr_nfs_impl_id4 (ZDR *zdrs, nfs_impl_id4 *objp)
 uint32_t
 zdr_ACCESS4args (ZDR *zdrs, ACCESS4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->access))
 		 return FALSE;
@@ -1252,7 +1367,8 @@ zdr_ACCESS4args (ZDR *zdrs, ACCESS4args *objp)
 uint32_t
 zdr_ACCESS4resok (ZDR *zdrs, ACCESS4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->supported))
 		 return FALSE;
@@ -1264,7 +1380,8 @@ zdr_ACCESS4resok (ZDR *zdrs, ACCESS4resok *objp)
 uint32_t
 zdr_ACCESS4res (ZDR *zdrs, ACCESS4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1282,7 +1399,8 @@ zdr_ACCESS4res (ZDR *zdrs, ACCESS4res *objp)
 uint32_t
 zdr_CLOSE4args (ZDR *zdrs, CLOSE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_seqid4 (zdrs, &objp->seqid))
 		 return FALSE;
@@ -1294,7 +1412,8 @@ zdr_CLOSE4args (ZDR *zdrs, CLOSE4args *objp)
 uint32_t
 zdr_CLOSE4res (ZDR *zdrs, CLOSE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1312,7 +1431,8 @@ zdr_CLOSE4res (ZDR *zdrs, CLOSE4res *objp)
 uint32_t
 zdr_COMMIT4args (ZDR *zdrs, COMMIT4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_offset4 (zdrs, &objp->offset))
 		 return FALSE;
@@ -1324,7 +1444,8 @@ zdr_COMMIT4args (ZDR *zdrs, COMMIT4args *objp)
 uint32_t
 zdr_COMMIT4resok (ZDR *zdrs, COMMIT4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_verifier4 (zdrs, objp->writeverf))
 		 return FALSE;
@@ -1334,7 +1455,8 @@ zdr_COMMIT4resok (ZDR *zdrs, COMMIT4resok *objp)
 uint32_t
 zdr_COMMIT4res (ZDR *zdrs, COMMIT4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1352,7 +1474,8 @@ zdr_COMMIT4res (ZDR *zdrs, COMMIT4res *objp)
 uint32_t
 zdr_createtype4 (ZDR *zdrs, createtype4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_ftype4 (zdrs, &objp->type))
 		 return FALSE;
@@ -1379,7 +1502,8 @@ zdr_createtype4 (ZDR *zdrs, createtype4 *objp)
 uint32_t
 zdr_CREATE4args (ZDR *zdrs, CREATE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_createtype4 (zdrs, &objp->objtype))
 		 return FALSE;
@@ -1393,7 +1517,8 @@ zdr_CREATE4args (ZDR *zdrs, CREATE4args *objp)
 uint32_t
 zdr_CREATE4resok (ZDR *zdrs, CREATE4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_change_info4 (zdrs, &objp->cinfo))
 		 return FALSE;
@@ -1405,7 +1530,8 @@ zdr_CREATE4resok (ZDR *zdrs, CREATE4resok *objp)
 uint32_t
 zdr_CREATE4res (ZDR *zdrs, CREATE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1423,7 +1549,8 @@ zdr_CREATE4res (ZDR *zdrs, CREATE4res *objp)
 uint32_t
 zdr_DELEGPURGE4args (ZDR *zdrs, DELEGPURGE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -1433,7 +1560,8 @@ zdr_DELEGPURGE4args (ZDR *zdrs, DELEGPURGE4args *objp)
 uint32_t
 zdr_DELEGPURGE4res (ZDR *zdrs, DELEGPURGE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1443,7 +1571,8 @@ zdr_DELEGPURGE4res (ZDR *zdrs, DELEGPURGE4res *objp)
 uint32_t
 zdr_DELEGRETURN4args (ZDR *zdrs, DELEGRETURN4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->deleg_stateid))
 		 return FALSE;
@@ -1453,7 +1582,8 @@ zdr_DELEGRETURN4args (ZDR *zdrs, DELEGRETURN4args *objp)
 uint32_t
 zdr_DELEGRETURN4res (ZDR *zdrs, DELEGRETURN4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1463,7 +1593,8 @@ zdr_DELEGRETURN4res (ZDR *zdrs, DELEGRETURN4res *objp)
 uint32_t
 zdr_GETATTR4args (ZDR *zdrs, GETATTR4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bitmap4 (zdrs, &objp->attr_request))
 		 return FALSE;
@@ -1473,7 +1604,8 @@ zdr_GETATTR4args (ZDR *zdrs, GETATTR4args *objp)
 uint32_t
 zdr_GETATTR4resok (ZDR *zdrs, GETATTR4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fattr4 (zdrs, &objp->obj_attributes))
 		 return FALSE;
@@ -1483,7 +1615,8 @@ zdr_GETATTR4resok (ZDR *zdrs, GETATTR4resok *objp)
 uint32_t
 zdr_GETATTR4res (ZDR *zdrs, GETATTR4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1501,7 +1634,8 @@ zdr_GETATTR4res (ZDR *zdrs, GETATTR4res *objp)
 uint32_t
 zdr_GETFH4resok (ZDR *zdrs, GETFH4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_fh4 (zdrs, &objp->object))
 		 return FALSE;
@@ -1511,7 +1645,8 @@ zdr_GETFH4resok (ZDR *zdrs, GETFH4resok *objp)
 uint32_t
 zdr_GETFH4res (ZDR *zdrs, GETFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1529,7 +1664,8 @@ zdr_GETFH4res (ZDR *zdrs, GETFH4res *objp)
 uint32_t
 zdr_LINK4args (ZDR *zdrs, LINK4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_component4 (zdrs, &objp->newname))
 		 return FALSE;
@@ -1539,7 +1675,8 @@ zdr_LINK4args (ZDR *zdrs, LINK4args *objp)
 uint32_t
 zdr_LINK4resok (ZDR *zdrs, LINK4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_change_info4 (zdrs, &objp->cinfo))
 		 return FALSE;
@@ -1549,7 +1686,8 @@ zdr_LINK4resok (ZDR *zdrs, LINK4resok *objp)
 uint32_t
 zdr_LINK4res (ZDR *zdrs, LINK4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1567,7 +1705,8 @@ zdr_LINK4res (ZDR *zdrs, LINK4res *objp)
 uint32_t
 zdr_open_to_lock_owner4 (ZDR *zdrs, open_to_lock_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_seqid4 (zdrs, &objp->open_seqid))
 		 return FALSE;
@@ -1583,7 +1722,8 @@ zdr_open_to_lock_owner4 (ZDR *zdrs, open_to_lock_owner4 *objp)
 uint32_t
 zdr_exist_lock_owner4 (ZDR *zdrs, exist_lock_owner4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->lock_stateid))
 		 return FALSE;
@@ -1595,7 +1735,8 @@ zdr_exist_lock_owner4 (ZDR *zdrs, exist_lock_owner4 *objp)
 uint32_t
 zdr_locker4 (ZDR *zdrs, locker4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->new_lock_owner))
 		 return FALSE;
@@ -1617,7 +1758,8 @@ zdr_locker4 (ZDR *zdrs, locker4 *objp)
 uint32_t
 zdr_LOCK4args (ZDR *zdrs, LOCK4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_lock_type4 (zdrs, &objp->locktype))
 		 return FALSE;
@@ -1635,7 +1777,8 @@ zdr_LOCK4args (ZDR *zdrs, LOCK4args *objp)
 uint32_t
 zdr_LOCK4denied (ZDR *zdrs, LOCK4denied *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_offset4 (zdrs, &objp->offset))
 		 return FALSE;
@@ -1651,7 +1794,8 @@ zdr_LOCK4denied (ZDR *zdrs, LOCK4denied *objp)
 uint32_t
 zdr_LOCK4resok (ZDR *zdrs, LOCK4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->lock_stateid))
 		 return FALSE;
@@ -1661,7 +1805,8 @@ zdr_LOCK4resok (ZDR *zdrs, LOCK4resok *objp)
 uint32_t
 zdr_LOCK4res (ZDR *zdrs, LOCK4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1683,7 +1828,8 @@ zdr_LOCK4res (ZDR *zdrs, LOCK4res *objp)
 uint32_t
 zdr_LOCKT4args (ZDR *zdrs, LOCKT4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_lock_type4 (zdrs, &objp->locktype))
 		 return FALSE;
@@ -1699,7 +1845,8 @@ zdr_LOCKT4args (ZDR *zdrs, LOCKT4args *objp)
 uint32_t
 zdr_LOCKT4res (ZDR *zdrs, LOCKT4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1719,7 +1866,8 @@ zdr_LOCKT4res (ZDR *zdrs, LOCKT4res *objp)
 uint32_t
 zdr_LOCKU4args (ZDR *zdrs, LOCKU4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_lock_type4 (zdrs, &objp->locktype))
 		 return FALSE;
@@ -1737,7 +1885,8 @@ zdr_LOCKU4args (ZDR *zdrs, LOCKU4args *objp)
 uint32_t
 zdr_LOCKU4res (ZDR *zdrs, LOCKU4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1755,7 +1904,8 @@ zdr_LOCKU4res (ZDR *zdrs, LOCKU4res *objp)
 uint32_t
 zdr_LOOKUP4args (ZDR *zdrs, LOOKUP4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_component4 (zdrs, &objp->objname))
 		 return FALSE;
@@ -1765,7 +1915,8 @@ zdr_LOOKUP4args (ZDR *zdrs, LOOKUP4args *objp)
 uint32_t
 zdr_LOOKUP4res (ZDR *zdrs, LOOKUP4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1775,7 +1926,8 @@ zdr_LOOKUP4res (ZDR *zdrs, LOOKUP4res *objp)
 uint32_t
 zdr_LOOKUPP4res (ZDR *zdrs, LOOKUPP4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1785,7 +1937,8 @@ zdr_LOOKUPP4res (ZDR *zdrs, LOOKUPP4res *objp)
 uint32_t
 zdr_NVERIFY4args (ZDR *zdrs, NVERIFY4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fattr4 (zdrs, &objp->obj_attributes))
 		 return FALSE;
@@ -1795,7 +1948,8 @@ zdr_NVERIFY4args (ZDR *zdrs, NVERIFY4args *objp)
 uint32_t
 zdr_NVERIFY4res (ZDR *zdrs, NVERIFY4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -1805,7 +1959,8 @@ zdr_NVERIFY4res (ZDR *zdrs, NVERIFY4res *objp)
 uint32_t
 zdr_createmode4 (ZDR *zdrs, createmode4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1815,7 +1970,8 @@ zdr_createmode4 (ZDR *zdrs, createmode4 *objp)
 uint32_t
 zdr_createhow4 (ZDR *zdrs, createhow4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_createmode4 (zdrs, &objp->mode))
 		 return FALSE;
@@ -1838,7 +1994,8 @@ zdr_createhow4 (ZDR *zdrs, createhow4 *objp)
 uint32_t
 zdr_opentype4 (ZDR *zdrs, opentype4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1848,7 +2005,8 @@ zdr_opentype4 (ZDR *zdrs, opentype4 *objp)
 uint32_t
 zdr_openflag4 (ZDR *zdrs, openflag4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_opentype4 (zdrs, &objp->opentype))
 		 return FALSE;
@@ -1866,7 +2024,8 @@ zdr_openflag4 (ZDR *zdrs, openflag4 *objp)
 uint32_t
 zdr_limit_by4 (ZDR *zdrs, limit_by4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1876,7 +2035,8 @@ zdr_limit_by4 (ZDR *zdrs, limit_by4 *objp)
 uint32_t
 zdr_nfs_modified_limit4 (ZDR *zdrs, nfs_modified_limit4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->num_blocks))
 		 return FALSE;
@@ -1888,7 +2048,8 @@ zdr_nfs_modified_limit4 (ZDR *zdrs, nfs_modified_limit4 *objp)
 uint32_t
 zdr_nfs_space_limit4 (ZDR *zdrs, nfs_space_limit4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_limit_by4 (zdrs, &objp->limitby))
 		 return FALSE;
@@ -1910,7 +2071,8 @@ zdr_nfs_space_limit4 (ZDR *zdrs, nfs_space_limit4 *objp)
 uint32_t
 zdr_open_delegation_type4 (ZDR *zdrs, open_delegation_type4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1920,7 +2082,8 @@ zdr_open_delegation_type4 (ZDR *zdrs, open_delegation_type4 *objp)
 uint32_t
 zdr_open_claim_type4 (ZDR *zdrs, open_claim_type4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -1930,7 +2093,8 @@ zdr_open_claim_type4 (ZDR *zdrs, open_claim_type4 *objp)
 uint32_t
 zdr_open_claim_delegate_cur4 (ZDR *zdrs, open_claim_delegate_cur4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->delegate_stateid))
 		 return FALSE;
@@ -1942,7 +2106,8 @@ zdr_open_claim_delegate_cur4 (ZDR *zdrs, open_claim_delegate_cur4 *objp)
 uint32_t
 zdr_open_claim4 (ZDR *zdrs, open_claim4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_open_claim_type4 (zdrs, &objp->claim))
 		 return FALSE;
@@ -1980,7 +2145,8 @@ zdr_open_claim4 (ZDR *zdrs, open_claim4 *objp)
 uint32_t
 zdr_OPEN4args (ZDR *zdrs, OPEN4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_seqid4 (zdrs, &objp->seqid))
 		 return FALSE;
@@ -2000,7 +2166,8 @@ zdr_OPEN4args (ZDR *zdrs, OPEN4args *objp)
 uint32_t
 zdr_open_read_delegation4 (ZDR *zdrs, open_read_delegation4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2014,7 +2181,8 @@ zdr_open_read_delegation4 (ZDR *zdrs, open_read_delegation4 *objp)
 uint32_t
 zdr_open_write_delegation4 (ZDR *zdrs, open_write_delegation4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2030,7 +2198,8 @@ zdr_open_write_delegation4 (ZDR *zdrs, open_write_delegation4 *objp)
 uint32_t
 zdr_open_delegation4 (ZDR *zdrs, open_delegation4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_open_delegation_type4 (zdrs, &objp->delegation_type))
 		 return FALSE;
@@ -2054,7 +2223,8 @@ zdr_open_delegation4 (ZDR *zdrs, open_delegation4 *objp)
 uint32_t
 zdr_OPEN4resok (ZDR *zdrs, OPEN4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2072,7 +2242,8 @@ zdr_OPEN4resok (ZDR *zdrs, OPEN4resok *objp)
 uint32_t
 zdr_OPEN4res (ZDR *zdrs, OPEN4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2090,7 +2261,8 @@ zdr_OPEN4res (ZDR *zdrs, OPEN4res *objp)
 uint32_t
 zdr_OPENATTR4args (ZDR *zdrs, OPENATTR4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->createdir))
 		 return FALSE;
@@ -2100,7 +2272,8 @@ zdr_OPENATTR4args (ZDR *zdrs, OPENATTR4args *objp)
 uint32_t
 zdr_OPENATTR4res (ZDR *zdrs, OPENATTR4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2110,7 +2283,8 @@ zdr_OPENATTR4res (ZDR *zdrs, OPENATTR4res *objp)
 uint32_t
 zdr_OPEN_CONFIRM4args (ZDR *zdrs, OPEN_CONFIRM4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->open_stateid))
 		 return FALSE;
@@ -2122,7 +2296,8 @@ zdr_OPEN_CONFIRM4args (ZDR *zdrs, OPEN_CONFIRM4args *objp)
 uint32_t
 zdr_OPEN_CONFIRM4resok (ZDR *zdrs, OPEN_CONFIRM4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->open_stateid))
 		 return FALSE;
@@ -2132,7 +2307,8 @@ zdr_OPEN_CONFIRM4resok (ZDR *zdrs, OPEN_CONFIRM4resok *objp)
 uint32_t
 zdr_OPEN_CONFIRM4res (ZDR *zdrs, OPEN_CONFIRM4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2150,7 +2326,8 @@ zdr_OPEN_CONFIRM4res (ZDR *zdrs, OPEN_CONFIRM4res *objp)
 uint32_t
 zdr_OPEN_DOWNGRADE4args (ZDR *zdrs, OPEN_DOWNGRADE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->open_stateid))
 		 return FALSE;
@@ -2166,7 +2343,8 @@ zdr_OPEN_DOWNGRADE4args (ZDR *zdrs, OPEN_DOWNGRADE4args *objp)
 uint32_t
 zdr_OPEN_DOWNGRADE4resok (ZDR *zdrs, OPEN_DOWNGRADE4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->open_stateid))
 		 return FALSE;
@@ -2176,7 +2354,8 @@ zdr_OPEN_DOWNGRADE4resok (ZDR *zdrs, OPEN_DOWNGRADE4resok *objp)
 uint32_t
 zdr_OPEN_DOWNGRADE4res (ZDR *zdrs, OPEN_DOWNGRADE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2194,7 +2373,8 @@ zdr_OPEN_DOWNGRADE4res (ZDR *zdrs, OPEN_DOWNGRADE4res *objp)
 uint32_t
 zdr_PUTFH4args (ZDR *zdrs, PUTFH4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_fh4 (zdrs, &objp->object))
 		 return FALSE;
@@ -2204,7 +2384,8 @@ zdr_PUTFH4args (ZDR *zdrs, PUTFH4args *objp)
 uint32_t
 zdr_PUTFH4res (ZDR *zdrs, PUTFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2214,7 +2395,8 @@ zdr_PUTFH4res (ZDR *zdrs, PUTFH4res *objp)
 uint32_t
 zdr_PUTPUBFH4res (ZDR *zdrs, PUTPUBFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2224,7 +2406,8 @@ zdr_PUTPUBFH4res (ZDR *zdrs, PUTPUBFH4res *objp)
 uint32_t
 zdr_PUTROOTFH4res (ZDR *zdrs, PUTROOTFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2234,7 +2417,8 @@ zdr_PUTROOTFH4res (ZDR *zdrs, PUTROOTFH4res *objp)
 uint32_t
 zdr_READ4args (ZDR *zdrs, READ4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2248,7 +2432,8 @@ zdr_READ4args (ZDR *zdrs, READ4args *objp)
 uint32_t
 zzdr_READ4resok (ZDR *zdrs, READ4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->eof))
 		 return FALSE;
@@ -2260,7 +2445,8 @@ zzdr_READ4resok (ZDR *zdrs, READ4resok *objp)
 uint32_t
 zdr_READ4res (ZDR *zdrs, READ4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2278,7 +2464,8 @@ zdr_READ4res (ZDR *zdrs, READ4res *objp)
 uint32_t
 zdr_READDIR4args (ZDR *zdrs, READDIR4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_cookie4 (zdrs, &objp->cookie))
 		 return FALSE;
@@ -2296,7 +2483,8 @@ zdr_READDIR4args (ZDR *zdrs, READDIR4args *objp)
 uint32_t
 zdr_entry4 (ZDR *zdrs, entry4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_cookie4 (zdrs, &objp->cookie))
 		 return FALSE;
@@ -2312,7 +2500,8 @@ zdr_entry4 (ZDR *zdrs, entry4 *objp)
 uint32_t
 zdr_dirlist4 (ZDR *zdrs, dirlist4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry4), (zdrproc_t) zdr_entry4))
 		 return FALSE;
@@ -2324,7 +2513,8 @@ zdr_dirlist4 (ZDR *zdrs, dirlist4 *objp)
 uint32_t
 zdr_READDIR4resok (ZDR *zdrs, READDIR4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_verifier4 (zdrs, objp->cookieverf))
 		 return FALSE;
@@ -2336,7 +2526,8 @@ zdr_READDIR4resok (ZDR *zdrs, READDIR4resok *objp)
 uint32_t
 zdr_READDIR4res (ZDR *zdrs, READDIR4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2354,7 +2545,8 @@ zdr_READDIR4res (ZDR *zdrs, READDIR4res *objp)
 uint32_t
 zdr_READLINK4resok (ZDR *zdrs, READLINK4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_linktext4 (zdrs, &objp->link))
 		 return FALSE;
@@ -2364,7 +2556,8 @@ zdr_READLINK4resok (ZDR *zdrs, READLINK4resok *objp)
 uint32_t
 zdr_READLINK4res (ZDR *zdrs, READLINK4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2382,7 +2575,8 @@ zdr_READLINK4res (ZDR *zdrs, READLINK4res *objp)
 uint32_t
 zdr_REMOVE4args (ZDR *zdrs, REMOVE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_component4 (zdrs, &objp->target))
 		 return FALSE;
@@ -2392,7 +2586,8 @@ zdr_REMOVE4args (ZDR *zdrs, REMOVE4args *objp)
 uint32_t
 zdr_REMOVE4resok (ZDR *zdrs, REMOVE4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_change_info4 (zdrs, &objp->cinfo))
 		 return FALSE;
@@ -2402,7 +2597,8 @@ zdr_REMOVE4resok (ZDR *zdrs, REMOVE4resok *objp)
 uint32_t
 zdr_REMOVE4res (ZDR *zdrs, REMOVE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2420,7 +2616,8 @@ zdr_REMOVE4res (ZDR *zdrs, REMOVE4res *objp)
 uint32_t
 zdr_RENAME4args (ZDR *zdrs, RENAME4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_component4 (zdrs, &objp->oldname))
 		 return FALSE;
@@ -2432,7 +2629,8 @@ zdr_RENAME4args (ZDR *zdrs, RENAME4args *objp)
 uint32_t
 zdr_RENAME4resok (ZDR *zdrs, RENAME4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_change_info4 (zdrs, &objp->source_cinfo))
 		 return FALSE;
@@ -2444,7 +2642,8 @@ zdr_RENAME4resok (ZDR *zdrs, RENAME4resok *objp)
 uint32_t
 zdr_RENAME4res (ZDR *zdrs, RENAME4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2462,7 +2661,8 @@ zdr_RENAME4res (ZDR *zdrs, RENAME4res *objp)
 uint32_t
 zdr_RENEW4args (ZDR *zdrs, RENEW4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -2472,7 +2672,8 @@ zdr_RENEW4args (ZDR *zdrs, RENEW4args *objp)
 uint32_t
 zdr_RENEW4res (ZDR *zdrs, RENEW4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2482,7 +2683,8 @@ zdr_RENEW4res (ZDR *zdrs, RENEW4res *objp)
 uint32_t
 zdr_RESTOREFH4res (ZDR *zdrs, RESTOREFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2492,7 +2694,8 @@ zdr_RESTOREFH4res (ZDR *zdrs, RESTOREFH4res *objp)
 uint32_t
 zdr_SAVEFH4res (ZDR *zdrs, SAVEFH4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2502,7 +2705,8 @@ zdr_SAVEFH4res (ZDR *zdrs, SAVEFH4res *objp)
 uint32_t
 zdr_SECINFO4args (ZDR *zdrs, SECINFO4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_component4 (zdrs, &objp->name))
 		 return FALSE;
@@ -2512,7 +2716,8 @@ zdr_SECINFO4args (ZDR *zdrs, SECINFO4args *objp)
 uint32_t
 zdr_rpc_gss_svc_t (ZDR *zdrs, rpc_gss_svc_t *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -2522,7 +2727,8 @@ zdr_rpc_gss_svc_t (ZDR *zdrs, rpc_gss_svc_t *objp)
 uint32_t
 zdr_rpcsec_gss_info (ZDR *zdrs, rpcsec_gss_info *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sec_oid4 (zdrs, &objp->oid))
 		 return FALSE;
@@ -2536,7 +2742,8 @@ zdr_rpcsec_gss_info (ZDR *zdrs, rpcsec_gss_info *objp)
 uint32_t
 zdr_secinfo4 (ZDR *zdrs, secinfo4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->flavor))
 		 return FALSE;
@@ -2554,7 +2761,8 @@ zdr_secinfo4 (ZDR *zdrs, secinfo4 *objp)
 uint32_t
 zdr_SECINFO4resok (ZDR *zdrs, SECINFO4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->SECINFO4resok_val, (u_int *) &objp->SECINFO4resok_len, ~0,
 		sizeof (secinfo4), (zdrproc_t) zdr_secinfo4))
@@ -2565,7 +2773,8 @@ zdr_SECINFO4resok (ZDR *zdrs, SECINFO4resok *objp)
 uint32_t
 zdr_SECINFO4res (ZDR *zdrs, SECINFO4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2583,7 +2792,8 @@ zdr_SECINFO4res (ZDR *zdrs, SECINFO4res *objp)
 uint32_t
 zdr_SETATTR4args (ZDR *zdrs, SETATTR4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2595,7 +2805,8 @@ zdr_SETATTR4args (ZDR *zdrs, SETATTR4args *objp)
 uint32_t
 zdr_SETATTR4res (ZDR *zdrs, SETATTR4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2607,7 +2818,8 @@ zdr_SETATTR4res (ZDR *zdrs, SETATTR4res *objp)
 uint32_t
 zdr_SETCLIENTID4args (ZDR *zdrs, SETCLIENTID4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_client_id4 (zdrs, &objp->client))
 		 return FALSE;
@@ -2621,7 +2833,8 @@ zdr_SETCLIENTID4args (ZDR *zdrs, SETCLIENTID4args *objp)
 uint32_t
 zdr_SETCLIENTID4resok (ZDR *zdrs, SETCLIENTID4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -2633,7 +2846,8 @@ zdr_SETCLIENTID4resok (ZDR *zdrs, SETCLIENTID4resok *objp)
 uint32_t
 zdr_SETCLIENTID4res (ZDR *zdrs, SETCLIENTID4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2655,7 +2869,8 @@ zdr_SETCLIENTID4res (ZDR *zdrs, SETCLIENTID4res *objp)
 uint32_t
 zdr_SETCLIENTID_CONFIRM4args (ZDR *zdrs, SETCLIENTID_CONFIRM4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->clientid))
 		 return FALSE;
@@ -2667,7 +2882,8 @@ zdr_SETCLIENTID_CONFIRM4args (ZDR *zdrs, SETCLIENTID_CONFIRM4args *objp)
 uint32_t
 zdr_SETCLIENTID_CONFIRM4res (ZDR *zdrs, SETCLIENTID_CONFIRM4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2677,7 +2893,8 @@ zdr_SETCLIENTID_CONFIRM4res (ZDR *zdrs, SETCLIENTID_CONFIRM4res *objp)
 uint32_t
 zdr_VERIFY4args (ZDR *zdrs, VERIFY4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fattr4 (zdrs, &objp->obj_attributes))
 		 return FALSE;
@@ -2687,7 +2904,8 @@ zdr_VERIFY4args (ZDR *zdrs, VERIFY4args *objp)
 uint32_t
 zdr_VERIFY4res (ZDR *zdrs, VERIFY4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2697,7 +2915,8 @@ zdr_VERIFY4res (ZDR *zdrs, VERIFY4res *objp)
 uint32_t
 zdr_stable_how4 (ZDR *zdrs, stable_how4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -2707,7 +2926,8 @@ zdr_stable_how4 (ZDR *zdrs, stable_how4 *objp)
 uint32_t
 zzdr_WRITE4args (ZDR *zdrs, WRITE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -2723,7 +2943,8 @@ zzdr_WRITE4args (ZDR *zdrs, WRITE4args *objp)
 uint32_t
 zdr_WRITE4resok (ZDR *zdrs, WRITE4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_count4 (zdrs, &objp->count))
 		 return FALSE;
@@ -2737,7 +2958,8 @@ zdr_WRITE4resok (ZDR *zdrs, WRITE4resok *objp)
 uint32_t
 zdr_WRITE4res (ZDR *zdrs, WRITE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2755,7 +2977,8 @@ zdr_WRITE4res (ZDR *zdrs, WRITE4res *objp)
 uint32_t
 zdr_RELEASE_LOCKOWNER4args (ZDR *zdrs, RELEASE_LOCKOWNER4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_lock_owner4 (zdrs, &objp->lock_owner))
 		 return FALSE;
@@ -2765,7 +2988,8 @@ zdr_RELEASE_LOCKOWNER4args (ZDR *zdrs, RELEASE_LOCKOWNER4args *objp)
 uint32_t
 zdr_RELEASE_LOCKOWNER4res (ZDR *zdrs, RELEASE_LOCKOWNER4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -2775,7 +2999,8 @@ zdr_RELEASE_LOCKOWNER4res (ZDR *zdrs, RELEASE_LOCKOWNER4res *objp)
 uint32_t
 zdr_gsshandle4_t (ZDR *zdrs, gsshandle4_t *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->gsshandle4_t_val, (u_int *) &objp->gsshandle4_t_len, ~0))
 		 return FALSE;
@@ -2785,7 +3010,8 @@ zdr_gsshandle4_t (ZDR *zdrs, gsshandle4_t *objp)
 uint32_t
 zdr_callback_sec_parms4 (ZDR *zdrs, callback_sec_parms4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->cb_secflavor))
 		 return FALSE;
@@ -2805,7 +3031,8 @@ zdr_callback_sec_parms4 (ZDR *zdrs, callback_sec_parms4 *objp)
 uint32_t
 zdr_channel_dir_from_client4 (ZDR *zdrs, channel_dir_from_client4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -2815,7 +3042,8 @@ zdr_channel_dir_from_client4 (ZDR *zdrs, channel_dir_from_client4 *objp)
 uint32_t
 zdr_BIND_CONN_TO_SESSION4args (ZDR *zdrs, BIND_CONN_TO_SESSION4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->bctsa_sessid))
 		 return FALSE;
@@ -2829,7 +3057,8 @@ zdr_BIND_CONN_TO_SESSION4args (ZDR *zdrs, BIND_CONN_TO_SESSION4args *objp)
 uint32_t
 zdr_channel_dir_from_server4 (ZDR *zdrs, channel_dir_from_server4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -2839,7 +3068,8 @@ zdr_channel_dir_from_server4 (ZDR *zdrs, channel_dir_from_server4 *objp)
 uint32_t
 zdr_BIND_CONN_TO_SESSION4resok (ZDR *zdrs, BIND_CONN_TO_SESSION4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->bctsr_sessid))
 		 return FALSE;
@@ -2853,7 +3083,8 @@ zdr_BIND_CONN_TO_SESSION4resok (ZDR *zdrs, BIND_CONN_TO_SESSION4resok *objp)
 uint32_t
 zdr_BIND_CONN_TO_SESSION4res (ZDR *zdrs, BIND_CONN_TO_SESSION4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->bctsr_status))
 		 return FALSE;
@@ -2871,7 +3102,8 @@ zdr_BIND_CONN_TO_SESSION4res (ZDR *zdrs, BIND_CONN_TO_SESSION4res *objp)
 uint32_t
 zdr_state_protect_ops4 (ZDR *zdrs, state_protect_ops4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bitmap4 (zdrs, &objp->spo_must_enforce))
 		 return FALSE;
@@ -2883,7 +3115,8 @@ zdr_state_protect_ops4 (ZDR *zdrs, state_protect_ops4 *objp)
 uint32_t
 zdr_ssv_sp_parms4 (ZDR *zdrs, ssv_sp_parms4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_state_protect_ops4 (zdrs, &objp->ssp_ops))
 		 return FALSE;
@@ -2903,7 +3136,8 @@ zdr_ssv_sp_parms4 (ZDR *zdrs, ssv_sp_parms4 *objp)
 uint32_t
 zdr_state_protect_how4 (ZDR *zdrs, state_protect_how4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -2913,7 +3147,8 @@ zdr_state_protect_how4 (ZDR *zdrs, state_protect_how4 *objp)
 uint32_t
 zdr_state_protect4_a (ZDR *zdrs, state_protect4_a *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_state_protect_how4 (zdrs, &objp->spa_how))
 		 return FALSE;
@@ -2937,7 +3172,8 @@ zdr_state_protect4_a (ZDR *zdrs, state_protect4_a *objp)
 uint32_t
 zdr_EXCHANGE_ID4args (ZDR *zdrs, EXCHANGE_ID4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_client_owner4 (zdrs, &objp->eia_clientowner))
 		 return FALSE;
@@ -2954,7 +3190,8 @@ zdr_EXCHANGE_ID4args (ZDR *zdrs, EXCHANGE_ID4args *objp)
 uint32_t
 zdr_ssv_prot_info4 (ZDR *zdrs, ssv_prot_info4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_state_protect_ops4 (zdrs, &objp->spi_ops))
 		 return FALSE;
@@ -2975,7 +3212,8 @@ zdr_ssv_prot_info4 (ZDR *zdrs, ssv_prot_info4 *objp)
 uint32_t
 zdr_state_protect4_r (ZDR *zdrs, state_protect4_r *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_state_protect_how4 (zdrs, &objp->spr_how))
 		 return FALSE;
@@ -2999,7 +3237,8 @@ zdr_state_protect4_r (ZDR *zdrs, state_protect4_r *objp)
 uint32_t
 zdr_EXCHANGE_ID4resok (ZDR *zdrs, EXCHANGE_ID4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->eir_clientid))
 		 return FALSE;
@@ -3022,7 +3261,8 @@ zdr_EXCHANGE_ID4resok (ZDR *zdrs, EXCHANGE_ID4resok *objp)
 uint32_t
 zdr_EXCHANGE_ID4res (ZDR *zdrs, EXCHANGE_ID4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->eir_status))
 		 return FALSE;
@@ -3040,7 +3280,8 @@ zdr_EXCHANGE_ID4res (ZDR *zdrs, EXCHANGE_ID4res *objp)
 uint32_t
 zdr_channel_attrs4 (ZDR *zdrs, channel_attrs4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_count4 (zdrs, &objp->ca_headerpadsize))
 		 return FALSE;
@@ -3063,7 +3304,8 @@ zdr_channel_attrs4 (ZDR *zdrs, channel_attrs4 *objp)
 uint32_t
 zdr_CREATE_SESSION4args (ZDR *zdrs, CREATE_SESSION4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->csa_clientid))
 		 return FALSE;
@@ -3086,7 +3328,8 @@ zdr_CREATE_SESSION4args (ZDR *zdrs, CREATE_SESSION4args *objp)
 uint32_t
 zdr_CREATE_SESSION4resok (ZDR *zdrs, CREATE_SESSION4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->csr_sessionid))
 		 return FALSE;
@@ -3104,7 +3347,8 @@ zdr_CREATE_SESSION4resok (ZDR *zdrs, CREATE_SESSION4resok *objp)
 uint32_t
 zdr_CREATE_SESSION4res (ZDR *zdrs, CREATE_SESSION4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->csr_status))
 		 return FALSE;
@@ -3122,7 +3366,8 @@ zdr_CREATE_SESSION4res (ZDR *zdrs, CREATE_SESSION4res *objp)
 uint32_t
 zdr_DESTROY_SESSION4args (ZDR *zdrs, DESTROY_SESSION4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->dsa_sessionid))
 		 return FALSE;
@@ -3132,7 +3377,8 @@ zdr_DESTROY_SESSION4args (ZDR *zdrs, DESTROY_SESSION4args *objp)
 uint32_t
 zdr_DESTROY_SESSION4res (ZDR *zdrs, DESTROY_SESSION4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->dsr_status))
 		 return FALSE;
@@ -3142,7 +3388,8 @@ zdr_DESTROY_SESSION4res (ZDR *zdrs, DESTROY_SESSION4res *objp)
 uint32_t
 zdr_FREE_STATEID4args (ZDR *zdrs, FREE_STATEID4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->fsa_stateid))
 		 return FALSE;
@@ -3152,7 +3399,8 @@ zdr_FREE_STATEID4args (ZDR *zdrs, FREE_STATEID4args *objp)
 uint32_t
 zdr_FREE_STATEID4res (ZDR *zdrs, FREE_STATEID4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->fsr_status))
 		 return FALSE;
@@ -3162,7 +3410,8 @@ zdr_FREE_STATEID4res (ZDR *zdrs, FREE_STATEID4res *objp)
 uint32_t
 zdr_attr_notice4 (ZDR *zdrs, attr_notice4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfstime4 (zdrs, objp))
 		 return FALSE;
@@ -3172,7 +3421,8 @@ zdr_attr_notice4 (ZDR *zdrs, attr_notice4 *objp)
 uint32_t
 zdr_GET_DIR_DELEGATION4args (ZDR *zdrs, GET_DIR_DELEGATION4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->gdda_signal_deleg_avail))
 		 return FALSE;
@@ -3192,7 +3442,8 @@ zdr_GET_DIR_DELEGATION4args (ZDR *zdrs, GET_DIR_DELEGATION4args *objp)
 uint32_t
 zdr_GET_DIR_DELEGATION4resok (ZDR *zdrs, GET_DIR_DELEGATION4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_verifier4 (zdrs, objp->gddr_cookieverf))
 		 return FALSE;
@@ -3210,7 +3461,8 @@ zdr_GET_DIR_DELEGATION4resok (ZDR *zdrs, GET_DIR_DELEGATION4resok *objp)
 uint32_t
 zdr_gddrnf4_status (ZDR *zdrs, gddrnf4_status *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -3220,7 +3472,8 @@ zdr_gddrnf4_status (ZDR *zdrs, gddrnf4_status *objp)
 uint32_t
 zdr_GET_DIR_DELEGATION4res_non_fatal (ZDR *zdrs, GET_DIR_DELEGATION4res_non_fatal *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_gddrnf4_status (zdrs, &objp->gddrnf_status))
 		 return FALSE;
@@ -3242,7 +3495,8 @@ zdr_GET_DIR_DELEGATION4res_non_fatal (ZDR *zdrs, GET_DIR_DELEGATION4res_non_fata
 uint32_t
 zdr_GET_DIR_DELEGATION4res (ZDR *zdrs, GET_DIR_DELEGATION4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->gddr_status))
 		 return FALSE;
@@ -3260,7 +3514,8 @@ zdr_GET_DIR_DELEGATION4res (ZDR *zdrs, GET_DIR_DELEGATION4res *objp)
 uint32_t
 zdr_GETDEVICEINFO4args (ZDR *zdrs, GETDEVICEINFO4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_deviceid4 (zdrs, objp->gdia_device_id))
 		 return FALSE;
@@ -3276,7 +3531,8 @@ zdr_GETDEVICEINFO4args (ZDR *zdrs, GETDEVICEINFO4args *objp)
 uint32_t
 zdr_GETDEVICEINFO4resok (ZDR *zdrs, GETDEVICEINFO4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_device_addr4 (zdrs, &objp->gdir_device_addr))
 		 return FALSE;
@@ -3288,7 +3544,8 @@ zdr_GETDEVICEINFO4resok (ZDR *zdrs, GETDEVICEINFO4resok *objp)
 uint32_t
 zdr_GETDEVICEINFO4res (ZDR *zdrs, GETDEVICEINFO4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->gdir_status))
 		 return FALSE;
@@ -3310,7 +3567,8 @@ zdr_GETDEVICEINFO4res (ZDR *zdrs, GETDEVICEINFO4res *objp)
 uint32_t
 zdr_GETDEVICELIST4args (ZDR *zdrs, GETDEVICELIST4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_layouttype4 (zdrs, &objp->gdla_layout_type))
 		 return FALSE;
@@ -3326,7 +3584,8 @@ zdr_GETDEVICELIST4args (ZDR *zdrs, GETDEVICELIST4args *objp)
 uint32_t
 zdr_GETDEVICELIST4resok (ZDR *zdrs, GETDEVICELIST4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_cookie4 (zdrs, &objp->gdlr_cookie))
 		 return FALSE;
@@ -3343,7 +3602,8 @@ zdr_GETDEVICELIST4resok (ZDR *zdrs, GETDEVICELIST4resok *objp)
 uint32_t
 zdr_GETDEVICELIST4res (ZDR *zdrs, GETDEVICELIST4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->gdlr_status))
 		 return FALSE;
@@ -3361,7 +3621,8 @@ zdr_GETDEVICELIST4res (ZDR *zdrs, GETDEVICELIST4res *objp)
 uint32_t
 zdr_newtime4 (ZDR *zdrs, newtime4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->nt_timechanged))
 		 return FALSE;
@@ -3381,7 +3642,8 @@ zdr_newtime4 (ZDR *zdrs, newtime4 *objp)
 uint32_t
 zdr_newoffset4 (ZDR *zdrs, newoffset4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->no_newoffset))
 		 return FALSE;
@@ -3401,7 +3663,8 @@ zdr_newoffset4 (ZDR *zdrs, newoffset4 *objp)
 uint32_t
 zdr_LAYOUTCOMMIT4args (ZDR *zdrs, LAYOUTCOMMIT4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_offset4 (zdrs, &objp->loca_offset))
 		 return FALSE;
@@ -3423,7 +3686,8 @@ zdr_LAYOUTCOMMIT4args (ZDR *zdrs, LAYOUTCOMMIT4args *objp)
 uint32_t
 zdr_newsize4 (ZDR *zdrs, newsize4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->ns_sizechanged))
 		 return FALSE;
@@ -3443,7 +3707,8 @@ zdr_newsize4 (ZDR *zdrs, newsize4 *objp)
 uint32_t
 zdr_LAYOUTCOMMIT4resok (ZDR *zdrs, LAYOUTCOMMIT4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_newsize4 (zdrs, &objp->locr_newsize))
 		 return FALSE;
@@ -3453,7 +3718,8 @@ zdr_LAYOUTCOMMIT4resok (ZDR *zdrs, LAYOUTCOMMIT4resok *objp)
 uint32_t
 zdr_LAYOUTCOMMIT4res (ZDR *zdrs, LAYOUTCOMMIT4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->locr_status))
 		 return FALSE;
@@ -3471,7 +3737,8 @@ zdr_LAYOUTCOMMIT4res (ZDR *zdrs, LAYOUTCOMMIT4res *objp)
 uint32_t
 zdr_LAYOUTGET4args (ZDR *zdrs, LAYOUTGET4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->loga_signal_layout_avail))
 		 return FALSE;
@@ -3495,7 +3762,8 @@ zdr_LAYOUTGET4args (ZDR *zdrs, LAYOUTGET4args *objp)
 uint32_t
 zdr_LAYOUTGET4resok (ZDR *zdrs, LAYOUTGET4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->logr_return_on_close))
 		 return FALSE;
@@ -3510,7 +3778,8 @@ zdr_LAYOUTGET4resok (ZDR *zdrs, LAYOUTGET4resok *objp)
 uint32_t
 zdr_LAYOUTGET4res (ZDR *zdrs, LAYOUTGET4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->logr_status))
 		 return FALSE;
@@ -3532,7 +3801,8 @@ zdr_LAYOUTGET4res (ZDR *zdrs, LAYOUTGET4res *objp)
 uint32_t
 zdr_layoutreturn_type4 (ZDR *zdrs, layoutreturn_type4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -3542,7 +3812,8 @@ zdr_layoutreturn_type4 (ZDR *zdrs, layoutreturn_type4 *objp)
 uint32_t
 zdr_layoutreturn_file4 (ZDR *zdrs, layoutreturn_file4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_offset4 (zdrs, &objp->lrf_offset))
 		 return FALSE;
@@ -3558,7 +3829,8 @@ zdr_layoutreturn_file4 (ZDR *zdrs, layoutreturn_file4 *objp)
 uint32_t
 zdr_layoutreturn4 (ZDR *zdrs, layoutreturn4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_layoutreturn_type4 (zdrs, &objp->lr_returntype))
 		 return FALSE;
@@ -3576,7 +3848,8 @@ zdr_layoutreturn4 (ZDR *zdrs, layoutreturn4 *objp)
 uint32_t
 zdr_LAYOUTRETURN4args (ZDR *zdrs, LAYOUTRETURN4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->lora_reclaim))
 		 return FALSE;
@@ -3592,7 +3865,8 @@ zdr_LAYOUTRETURN4args (ZDR *zdrs, LAYOUTRETURN4args *objp)
 uint32_t
 zdr_layoutreturn_stateid (ZDR *zdrs, layoutreturn_stateid *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->lrs_present))
 		 return FALSE;
@@ -3612,7 +3886,8 @@ zdr_layoutreturn_stateid (ZDR *zdrs, layoutreturn_stateid *objp)
 uint32_t
 zdr_LAYOUTRETURN4res (ZDR *zdrs, LAYOUTRETURN4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->lorr_status))
 		 return FALSE;
@@ -3630,7 +3905,8 @@ zdr_LAYOUTRETURN4res (ZDR *zdrs, LAYOUTRETURN4res *objp)
 uint32_t
 zdr_secinfo_style4 (ZDR *zdrs, secinfo_style4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -3640,7 +3916,8 @@ zdr_secinfo_style4 (ZDR *zdrs, secinfo_style4 *objp)
 uint32_t
 zdr_SECINFO_NO_NAME4args (ZDR *zdrs, SECINFO_NO_NAME4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_secinfo_style4 (zdrs, objp))
 		 return FALSE;
@@ -3650,7 +3927,8 @@ zdr_SECINFO_NO_NAME4args (ZDR *zdrs, SECINFO_NO_NAME4args *objp)
 uint32_t
 zdr_SECINFO_NO_NAME4res (ZDR *zdrs, SECINFO_NO_NAME4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_SECINFO4res (zdrs, objp))
 		 return FALSE;
@@ -3660,7 +3938,8 @@ zdr_SECINFO_NO_NAME4res (ZDR *zdrs, SECINFO_NO_NAME4res *objp)
 uint32_t
 zdr_SEQUENCE4args (ZDR *zdrs, SEQUENCE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->sa_sessionid))
 		 return FALSE;
@@ -3678,7 +3957,8 @@ zdr_SEQUENCE4args (ZDR *zdrs, SEQUENCE4args *objp)
 uint32_t
 zdr_SEQUENCE4resok (ZDR *zdrs, SEQUENCE4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_sessionid4 (zdrs, objp->sr_sessionid))
 		 return FALSE;
@@ -3698,7 +3978,8 @@ zdr_SEQUENCE4resok (ZDR *zdrs, SEQUENCE4resok *objp)
 uint32_t
 zdr_SEQUENCE4res (ZDR *zdrs, SEQUENCE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->sr_status))
 		 return FALSE;
@@ -3716,7 +3997,8 @@ zdr_SEQUENCE4res (ZDR *zdrs, SEQUENCE4res *objp)
 uint32_t
 zdr_ssa_digest_input4 (ZDR *zdrs, ssa_digest_input4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_SEQUENCE4args (zdrs, &objp->sdi_seqargs))
 		 return FALSE;
@@ -3726,7 +4008,8 @@ zdr_ssa_digest_input4 (ZDR *zdrs, ssa_digest_input4 *objp)
 uint32_t
 zdr_SET_SSV4args (ZDR *zdrs, SET_SSV4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->ssa_ssv.ssa_ssv_val, (u_int *) &objp->ssa_ssv.ssa_ssv_len, ~0))
 		 return FALSE;
@@ -3738,7 +4021,8 @@ zdr_SET_SSV4args (ZDR *zdrs, SET_SSV4args *objp)
 uint32_t
 zdr_ssr_digest_input4 (ZDR *zdrs, ssr_digest_input4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_SEQUENCE4res (zdrs, &objp->sdi_seqres))
 		 return FALSE;
@@ -3748,7 +4032,8 @@ zdr_ssr_digest_input4 (ZDR *zdrs, ssr_digest_input4 *objp)
 uint32_t
 zdr_SET_SSV4resok (ZDR *zdrs, SET_SSV4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bytes (zdrs, (char **)&objp->ssr_digest.ssr_digest_val, (u_int *) &objp->ssr_digest.ssr_digest_len, ~0))
 		 return FALSE;
@@ -3758,7 +4043,8 @@ zdr_SET_SSV4resok (ZDR *zdrs, SET_SSV4resok *objp)
 uint32_t
 zdr_SET_SSV4res (ZDR *zdrs, SET_SSV4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->ssr_status))
 		 return FALSE;
@@ -3776,7 +4062,8 @@ zdr_SET_SSV4res (ZDR *zdrs, SET_SSV4res *objp)
 uint32_t
 zdr_TEST_STATEID4args (ZDR *zdrs, TEST_STATEID4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->ts_stateids.ts_stateids_val, (u_int *) &objp->ts_stateids.ts_stateids_len, ~0,
 		sizeof (stateid4), (zdrproc_t) zdr_stateid4))
@@ -3787,7 +4074,8 @@ zdr_TEST_STATEID4args (ZDR *zdrs, TEST_STATEID4args *objp)
 uint32_t
 zdr_TEST_STATEID4resok (ZDR *zdrs, TEST_STATEID4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_array (zdrs, (char **)&objp->tsr_status_codes.tsr_status_codes_val, (u_int *) &objp->tsr_status_codes.tsr_status_codes_len, ~0,
 		sizeof (nfsstat4), (zdrproc_t) zdr_nfsstat4))
@@ -3798,7 +4086,8 @@ zdr_TEST_STATEID4resok (ZDR *zdrs, TEST_STATEID4resok *objp)
 uint32_t
 zdr_TEST_STATEID4res (ZDR *zdrs, TEST_STATEID4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->tsr_status))
 		 return FALSE;
@@ -3816,7 +4105,8 @@ zdr_TEST_STATEID4res (ZDR *zdrs, TEST_STATEID4res *objp)
 uint32_t
 zdr_deleg_claim4 (ZDR *zdrs, deleg_claim4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_open_claim_type4 (zdrs, &objp->dc_claim))
 		 return FALSE;
@@ -3838,7 +4128,8 @@ zdr_deleg_claim4 (ZDR *zdrs, deleg_claim4 *objp)
 uint32_t
 zdr_WANT_DELEGATION4args (ZDR *zdrs, WANT_DELEGATION4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_uint32_t (zdrs, &objp->wda_want))
 		 return FALSE;
@@ -3850,7 +4141,8 @@ zdr_WANT_DELEGATION4args (ZDR *zdrs, WANT_DELEGATION4args *objp)
 uint32_t
 zdr_WANT_DELEGATION4res (ZDR *zdrs, WANT_DELEGATION4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->wdr_status))
 		 return FALSE;
@@ -3868,7 +4160,8 @@ zdr_WANT_DELEGATION4res (ZDR *zdrs, WANT_DELEGATION4res *objp)
 uint32_t
 zdr_DESTROY_CLIENTID4args (ZDR *zdrs, DESTROY_CLIENTID4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_clientid4 (zdrs, &objp->dca_clientid))
 		 return FALSE;
@@ -3878,7 +4171,8 @@ zdr_DESTROY_CLIENTID4args (ZDR *zdrs, DESTROY_CLIENTID4args *objp)
 uint32_t
 zdr_DESTROY_CLIENTID4res (ZDR *zdrs, DESTROY_CLIENTID4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->dcr_status))
 		 return FALSE;
@@ -3888,7 +4182,8 @@ zdr_DESTROY_CLIENTID4res (ZDR *zdrs, DESTROY_CLIENTID4res *objp)
 uint32_t
 zdr_RECLAIM_COMPLETE4args (ZDR *zdrs, RECLAIM_COMPLETE4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_bool (zdrs, &objp->rca_one_fs))
 		 return FALSE;
@@ -3898,7 +4193,8 @@ zdr_RECLAIM_COMPLETE4args (ZDR *zdrs, RECLAIM_COMPLETE4args *objp)
 uint32_t
 zdr_RECLAIM_COMPLETE4res (ZDR *zdrs, RECLAIM_COMPLETE4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->rcr_status))
 		 return FALSE;
@@ -3908,7 +4204,8 @@ zdr_RECLAIM_COMPLETE4res (ZDR *zdrs, RECLAIM_COMPLETE4res *objp)
 uint32_t
 zdr_ILLEGAL4res (ZDR *zdrs, ILLEGAL4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -3918,7 +4215,8 @@ zdr_ILLEGAL4res (ZDR *zdrs, ILLEGAL4res *objp)
 uint32_t
 zdr_nfs_opnum4 (ZDR *zdrs, nfs_opnum4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -3928,7 +4226,8 @@ zdr_nfs_opnum4 (ZDR *zdrs, nfs_opnum4 *objp)
 uint32_t
 zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_opnum4 (zdrs, &objp->argop))
 		 return FALSE;
@@ -4150,7 +4449,8 @@ zdr_nfs_argop4 (ZDR *zdrs, nfs_argop4 *objp)
 uint32_t
 zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_opnum4 (zdrs, &objp->resop))
 		 return FALSE;
@@ -4388,7 +4688,8 @@ zdr_nfs_resop4 (ZDR *zdrs, nfs_resop4 *objp)
 uint32_t
 zdr_COMPOUND4args (ZDR *zdrs, COMPOUND4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cs (zdrs, &objp->tag))
 		 return FALSE;
@@ -4403,7 +4704,8 @@ zdr_COMPOUND4args (ZDR *zdrs, COMPOUND4args *objp)
 uint32_t
 zdr_COMPOUND4res (ZDR *zdrs, COMPOUND4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -4418,7 +4720,8 @@ zdr_COMPOUND4res (ZDR *zdrs, COMPOUND4res *objp)
 uint32_t
 zdr_CB_GETATTR4args (ZDR *zdrs, CB_GETATTR4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfs_fh4 (zdrs, &objp->fh))
 		 return FALSE;
@@ -4430,7 +4733,8 @@ zdr_CB_GETATTR4args (ZDR *zdrs, CB_GETATTR4args *objp)
 uint32_t
 zdr_CB_GETATTR4resok (ZDR *zdrs, CB_GETATTR4resok *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_fattr4 (zdrs, &objp->obj_attributes))
 		 return FALSE;
@@ -4440,7 +4744,8 @@ zdr_CB_GETATTR4resok (ZDR *zdrs, CB_GETATTR4resok *objp)
 uint32_t
 zdr_CB_GETATTR4res (ZDR *zdrs, CB_GETATTR4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -4458,7 +4763,8 @@ zdr_CB_GETATTR4res (ZDR *zdrs, CB_GETATTR4res *objp)
 uint32_t
 zdr_CB_RECALL4args (ZDR *zdrs, CB_RECALL4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_stateid4 (zdrs, &objp->stateid))
 		 return FALSE;
@@ -4472,7 +4778,8 @@ zdr_CB_RECALL4args (ZDR *zdrs, CB_RECALL4args *objp)
 uint32_t
 zdr_CB_RECALL4res (ZDR *zdrs, CB_RECALL4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -4482,7 +4789,8 @@ zdr_CB_RECALL4res (ZDR *zdrs, CB_RECALL4res *objp)
 uint32_t
 zdr_CB_ILLEGAL4res (ZDR *zdrs, CB_ILLEGAL4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -4492,7 +4800,8 @@ zdr_CB_ILLEGAL4res (ZDR *zdrs, CB_ILLEGAL4res *objp)
 uint32_t
 zdr_nfs_cb_opnum4 (ZDR *zdrs, nfs_cb_opnum4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_enum (zdrs, (enum_t *) objp))
 		 return FALSE;
@@ -4502,7 +4811,8 @@ zdr_nfs_cb_opnum4 (ZDR *zdrs, nfs_cb_opnum4 *objp)
 uint32_t
 zdr_nfs_cb_argop4 (ZDR *zdrs, nfs_cb_argop4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_u_int (zdrs, &objp->argop))
 		 return FALSE;
@@ -4526,7 +4836,8 @@ zdr_nfs_cb_argop4 (ZDR *zdrs, nfs_cb_argop4 *objp)
 uint32_t
 zdr_nfs_cb_resop4 (ZDR *zdrs, nfs_cb_resop4 *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_u_int (zdrs, &objp->resop))
 		 return FALSE;
@@ -4552,7 +4863,8 @@ zdr_nfs_cb_resop4 (ZDR *zdrs, nfs_cb_resop4 *objp)
 uint32_t
 zdr_CB_COMPOUND4args (ZDR *zdrs, CB_COMPOUND4args *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_utf8str_cs (zdrs, &objp->tag))
 		 return FALSE;
@@ -4569,7 +4881,8 @@ zdr_CB_COMPOUND4args (ZDR *zdrs, CB_COMPOUND4args *objp)
 uint32_t
 zdr_CB_COMPOUND4res (ZDR *zdrs, CB_COMPOUND4res *objp)
 {
-	
+	register int32_t *buf;
+    buf = NULL;
 
 	 if (!zdr_nfsstat4 (zdrs, &objp->status))
 		 return FALSE;
@@ -4580,6 +4893,139 @@ zdr_CB_COMPOUND4res (ZDR *zdrs, CB_COMPOUND4res *objp)
 		 return FALSE;
 	return TRUE;
 }
+
+uint32_t
+zdr_rpc_gss_proc_t (ZDR *zdrs, rpc_gss_proc_t *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+	 if (!zdr_enum (zdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+uint32_t
+zdr_rpc_gss_cred_vers_1_t (ZDR *zdrs, rpc_gss_cred_vers_1_t *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+	 if (!zdr_rpc_gss_proc_t (zdrs, &objp->gss_proc))
+		 return FALSE;
+	 if (!zdr_u_int (zdrs, &objp->seq_num))
+		 return FALSE;
+	 if (!zdr_rpc_gss_svc_t (zdrs, &objp->service))
+		 return FALSE;
+	 if (!zdr_bytes (zdrs, (char **)&objp->handle.handle_val, (u_int *) &objp->handle.handle_len, ~0))
+		 return FALSE;
+	return TRUE;
+}
+
+uint32_t
+zdr_rpc_gss_cred_t (ZDR *zdrs, rpc_gss_cred_t *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+	 if (!zdr_u_int (zdrs, &objp->vers))
+		 return FALSE;
+	switch (objp->vers) {
+	case RPCSEC_GSS_VERS_1:
+		 if (!zdr_rpc_gss_cred_vers_1_t (zdrs, &objp->rpc_gss_cred_t_u.rpc_gss_cred_vers_1_t))
+			 return FALSE;
+		break;
+	default:
+		return FALSE;
+	}
+	return TRUE;
+}
+
+uint32_t
+zdr_rpc_gss_init_arg (ZDR *zdrs, rpc_gss_init_arg *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+	 if (!zdr_bytes (zdrs, (char **)&objp->gss_token.gss_token_val, (u_int *) &objp->gss_token.gss_token_len, ~0))
+		 return FALSE;
+	return TRUE;
+}
+
+uint32_t
+zdr_rpc_gss_init_res (ZDR *zdrs, rpc_gss_init_res *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+
+	if (zdrs->x_op == ZDR_ENCODE) {
+		 if (!zdr_bytes (zdrs, (char **)&objp->handle.handle_val, (u_int *) &objp->handle.handle_len, ~0))
+			 return FALSE;
+		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
+		if (buf == NULL) {
+			 if (!zdr_u_int (zdrs, &objp->gss_major))
+				 return FALSE;
+			 if (!zdr_u_int (zdrs, &objp->gss_minor))
+				 return FALSE;
+			 if (!zdr_u_int (zdrs, &objp->seq_window))
+				 return FALSE;
+
+		} else {
+		IZDR_PUT_U_LONG(buf, objp->gss_major);
+		IZDR_PUT_U_LONG(buf, objp->gss_minor);
+		IZDR_PUT_U_LONG(buf, objp->seq_window);
+		}
+		 if (!zdr_bytes (zdrs, (char **)&objp->gss_token.gss_token_val, (u_int *) &objp->gss_token.gss_token_len, ~0))
+			 return FALSE;
+		return TRUE;
+	} else if (zdrs->x_op == ZDR_DECODE) {
+		 if (!zdr_bytes (zdrs, (char **)&objp->handle.handle_val, (u_int *) &objp->handle.handle_len, ~0))
+			 return FALSE;
+		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
+		if (buf == NULL) {
+			 if (!zdr_u_int (zdrs, &objp->gss_major))
+				 return FALSE;
+			 if (!zdr_u_int (zdrs, &objp->gss_minor))
+				 return FALSE;
+			 if (!zdr_u_int (zdrs, &objp->seq_window))
+				 return FALSE;
+
+		} else {
+		objp->gss_major = IZDR_GET_U_LONG(buf);
+		objp->gss_minor = IZDR_GET_U_LONG(buf);
+		objp->seq_window = IZDR_GET_U_LONG(buf);
+		}
+		 if (!zdr_bytes (zdrs, (char **)&objp->gss_token.gss_token_val, (u_int *) &objp->gss_token.gss_token_len, ~0))
+			 return FALSE;
+	 return TRUE;
+	}
+
+	 if (!zdr_bytes (zdrs, (char **)&objp->handle.handle_val, (u_int *) &objp->handle.handle_len, ~0))
+		 return FALSE;
+	 if (!zdr_u_int (zdrs, &objp->gss_major))
+		 return FALSE;
+	 if (!zdr_u_int (zdrs, &objp->gss_minor))
+		 return FALSE;
+	 if (!zdr_u_int (zdrs, &objp->seq_window))
+		 return FALSE;
+	 if (!zdr_bytes (zdrs, (char **)&objp->gss_token.gss_token_val, (u_int *) &objp->gss_token.gss_token_len, ~0))
+		 return FALSE;
+	return TRUE;
+}
+
+uint32_t
+zdr_rpc_gss_integ_data (ZDR *zdrs, rpc_gss_integ_data *objp)
+{
+	register int32_t *buf;
+    buf = NULL;
+
+	 if (!zdr_bytes (zdrs, (char **)&objp->databody_integ.databody_integ_val, (u_int *) &objp->databody_integ.databody_integ_len, ~0))
+		 return FALSE;
+	 if (!zdr_bytes (zdrs, (char **)&objp->checksum.checksum_val, (u_int *) &objp->checksum.checksum_len, ~0))
+		 return FALSE;
+	return TRUE;
+}
 uint32_t
 zdr_READ4resok (ZDR *zdrs, READ4resok *objp)
 {
diff --git a/nfs4/libnfs-raw-nfs4.h b/nfs4/libnfs-raw-nfs4.h
index cacfeaf6..ce493189 100644
--- a/nfs4/libnfs-raw-nfs4.h
+++ b/nfs4/libnfs-raw-nfs4.h
@@ -2285,6 +2285,69 @@ struct CB_COMPOUND4res {
 };
 typedef struct CB_COMPOUND4res CB_COMPOUND4res;
 
+enum rpc_gss_proc_t {
+	RPCSEC_GSS_DATA = 0,
+	RPCSEC_GSS_INIT = 1,
+	RPCSEC_GSS_CONTINUE_INIT = 2,
+	RPCSEC_GSS_DESTROY = 3,
+};
+typedef enum rpc_gss_proc_t rpc_gss_proc_t;
+
+struct rpc_gss_cred_vers_1_t {
+	rpc_gss_proc_t gss_proc;
+	u_int seq_num;
+	rpc_gss_svc_t service;
+	struct {
+		u_int handle_len;
+		char *handle_val;
+	} handle;
+};
+typedef struct rpc_gss_cred_vers_1_t rpc_gss_cred_vers_1_t;
+#define RPCSEC_GSS_VERS_1 1
+
+struct rpc_gss_cred_t {
+	u_int vers;
+	union {
+		rpc_gss_cred_vers_1_t rpc_gss_cred_vers_1_t;
+	} rpc_gss_cred_t_u;
+};
+typedef struct rpc_gss_cred_t rpc_gss_cred_t;
+
+struct rpc_gss_init_arg {
+	struct {
+		u_int gss_token_len;
+		char *gss_token_val;
+	} gss_token;
+};
+typedef struct rpc_gss_init_arg rpc_gss_init_arg;
+
+struct rpc_gss_init_res {
+	struct {
+		u_int handle_len;
+		char *handle_val;
+	} handle;
+	u_int gss_major;
+	u_int gss_minor;
+	u_int seq_window;
+	struct {
+		u_int gss_token_len;
+		char *gss_token_val;
+	} gss_token;
+};
+typedef struct rpc_gss_init_res rpc_gss_init_res;
+
+struct rpc_gss_integ_data {
+	struct {
+		u_int databody_integ_len;
+		char *databody_integ_val;
+	} databody_integ;
+	struct {
+		u_int checksum_len;
+		char *checksum_val;
+	} checksum;
+};
+typedef struct rpc_gss_integ_data rpc_gss_integ_data;
+
 #define NFS4_PROGRAM 100003
 #define NFS_V4 4
 
@@ -2645,6 +2708,12 @@ extern  uint32_t zdr_nfs_cb_argop4 (ZDR *, nfs_cb_argop4*);
 extern  uint32_t zdr_nfs_cb_resop4 (ZDR *, nfs_cb_resop4*);
 extern  uint32_t zdr_CB_COMPOUND4args (ZDR *, CB_COMPOUND4args*);
 extern  uint32_t zdr_CB_COMPOUND4res (ZDR *, CB_COMPOUND4res*);
+extern  uint32_t zdr_rpc_gss_proc_t (ZDR *, rpc_gss_proc_t*);
+extern  uint32_t zdr_rpc_gss_cred_vers_1_t (ZDR *, rpc_gss_cred_vers_1_t*);
+extern  uint32_t zdr_rpc_gss_cred_t (ZDR *, rpc_gss_cred_t*);
+extern  uint32_t zdr_rpc_gss_init_arg (ZDR *, rpc_gss_init_arg*);
+extern  uint32_t zdr_rpc_gss_init_res (ZDR *, rpc_gss_init_res*);
+extern  uint32_t zdr_rpc_gss_integ_data (ZDR *, rpc_gss_integ_data*);
 
 #else /* K&R C */
 extern uint32_t zdr_nfs_ftype4 ();
@@ -2960,6 +3029,12 @@ extern uint32_t zdr_nfs_cb_argop4 ();
 extern uint32_t zdr_nfs_cb_resop4 ();
 extern uint32_t zdr_CB_COMPOUND4args ();
 extern uint32_t zdr_CB_COMPOUND4res ();
+extern uint32_t zdr_rpc_gss_proc_t ();
+extern uint32_t zdr_rpc_gss_cred_vers_1_t ();
+extern uint32_t zdr_rpc_gss_cred_t ();
+extern uint32_t zdr_rpc_gss_init_arg ();
+extern uint32_t zdr_rpc_gss_init_res ();
+extern uint32_t zdr_rpc_gss_integ_data ();
 
 #endif /* K&R C */
 
diff --git a/nfs4/nfs4.x b/nfs4/nfs4.x
index b4cd02fe..8d941ad2 100644
--- a/nfs4/nfs4.x
+++ b/nfs4/nfs4.x
@@ -2370,3 +2370,45 @@ program NFS4_CALLBACK {
                         CB_COMPOUND(CB_COMPOUND4args) = 1;
         } = 1;
 } = 0x40000000;
+
+/*
+ * GSS definitions
+ */
+/* RPCSEC_GSS control procedures */
+enum rpc_gss_proc_t {
+        RPCSEC_GSS_DATA = 0,
+        RPCSEC_GSS_INIT = 1,
+        RPCSEC_GSS_CONTINUE_INIT = 2,
+        RPCSEC_GSS_DESTROY = 3
+};
+
+struct rpc_gss_cred_vers_1_t {
+    rpc_gss_proc_t gss_proc;  /* control procedure */
+    unsigned int seq_num;   /* sequence number */
+    rpc_gss_svc_t service; /* service used */
+    opaque handle<>;       /* context handle */
+};
+
+const RPCSEC_GSS_VERS_1 = 1;
+
+union rpc_gss_cred_t switch (unsigned int vers) { /* version of RPCSEC_GSS */
+    case RPCSEC_GSS_VERS_1:
+        rpc_gss_cred_vers_1_t rpc_gss_cred_vers_1_t;
+};
+
+struct rpc_gss_init_arg {
+    opaque gss_token<>;
+};
+
+struct rpc_gss_init_res {
+        opaque handle<>;
+        unsigned int gss_major;
+        unsigned int gss_minor;
+        unsigned int seq_window;
+        opaque gss_token<>;
+};
+
+struct rpc_gss_integ_data {
+    opaque databody_integ<>;
+    opaque checksum<>;
+};