From 024cd91bb473a4777d3120a67805c8c08545d16a Mon Sep 17 00:00:00 2001 From: Eric Norum Date: Tue, 20 Jun 2006 00:36:26 +0000 Subject: Track SLAC R1-3 changes. --- rtemsNfs/ChangeLog | 5 + rtemsNfs/proto/mount_prot.h | 182 +++------ rtemsNfs/proto/mount_prot_xdr.c | 138 +++---- rtemsNfs/proto/nfs_prot.h | 449 ++++++-------------- rtemsNfs/proto/nfs_prot_xdr.c | 887 ++++++++++++++++++++-------------------- rtemsNfs/src/Makefile | 2 +- rtemsNfs/src/rpcio.c | 14 +- 7 files changed, 696 insertions(+), 981 deletions(-) diff --git a/rtemsNfs/ChangeLog b/rtemsNfs/ChangeLog index 2bea5a4..c5d3a5b 100644 --- a/rtemsNfs/ChangeLog +++ b/rtemsNfs/ChangeLog @@ -1,3 +1,8 @@ +Changes since RTEMS-NFS 1.3_pre2: + RPCIOD: + - fix a problem with NFS server clusters (reply comes from an IP address + different from the destination of the request) by relaxing paranoia checks. + Changes since RTEMS-NFS 1.2: NFS: - replaced inet_aton -> inet_pton diff --git a/rtemsNfs/proto/mount_prot.h b/rtemsNfs/proto/mount_prot.h index f9ba450..1cde517 100644 --- a/rtemsNfs/proto/mount_prot.h +++ b/rtemsNfs/proto/mount_prot.h @@ -6,23 +6,18 @@ #ifndef _MOUNT_PROT_H_RPCGEN #define _MOUNT_PROT_H_RPCGEN -#define RPCGEN_VERSION 199506 - #include + +#ifdef __cplusplus +extern "C" { +#endif + #define MNTPATHLEN 1024 #define MNTNAMLEN 255 #define FHSIZE 32 typedef char fhandle[FHSIZE]; -#ifdef __cplusplus -extern "C" bool_t xdr_fhandle(XDR *, fhandle); -#elif __STDC__ -extern bool_t xdr_fhandle(XDR *, fhandle); -#else /* Old Style C */ -bool_t xdr_fhandle(); -#endif /* Old Style C */ - struct fhstatus { u_int fhs_status; @@ -31,44 +26,12 @@ struct fhstatus { } fhstatus_u; }; typedef struct fhstatus fhstatus; -#ifdef __cplusplus -extern "C" bool_t xdr_fhstatus(XDR *, fhstatus*); -#elif __STDC__ -extern bool_t xdr_fhstatus(XDR *, fhstatus*); -#else /* Old Style C */ -bool_t xdr_fhstatus(); -#endif /* Old Style C */ - typedef char *dirpath; -#ifdef __cplusplus -extern "C" bool_t xdr_dirpath(XDR *, dirpath*); -#elif __STDC__ -extern bool_t xdr_dirpath(XDR *, dirpath*); -#else /* Old Style C */ -bool_t xdr_dirpath(); -#endif /* Old Style C */ - typedef char *name; -#ifdef __cplusplus -extern "C" bool_t xdr_name(XDR *, name*); -#elif __STDC__ -extern bool_t xdr_name(XDR *, name*); -#else /* Old Style C */ -bool_t xdr_name(); -#endif /* Old Style C */ - typedef struct mountbody *mountlist; -#ifdef __cplusplus -extern "C" bool_t xdr_mountlist(XDR *, mountlist*); -#elif __STDC__ -extern bool_t xdr_mountlist(XDR *, mountlist*); -#else /* Old Style C */ -bool_t xdr_mountlist(); -#endif /* Old Style C */ - struct mountbody { name ml_hostname; @@ -76,48 +39,16 @@ struct mountbody { mountlist ml_next; }; typedef struct mountbody mountbody; -#ifdef __cplusplus -extern "C" bool_t xdr_mountbody(XDR *, mountbody*); -#elif __STDC__ -extern bool_t xdr_mountbody(XDR *, mountbody*); -#else /* Old Style C */ -bool_t xdr_mountbody(); -#endif /* Old Style C */ - typedef struct groupnode *groups; -#ifdef __cplusplus -extern "C" bool_t xdr_groups(XDR *, groups*); -#elif __STDC__ -extern bool_t xdr_groups(XDR *, groups*); -#else /* Old Style C */ -bool_t xdr_groups(); -#endif /* Old Style C */ - struct groupnode { name gr_name; groups gr_next; }; typedef struct groupnode groupnode; -#ifdef __cplusplus -extern "C" bool_t xdr_groupnode(XDR *, groupnode*); -#elif __STDC__ -extern bool_t xdr_groupnode(XDR *, groupnode*); -#else /* Old Style C */ -bool_t xdr_groupnode(); -#endif /* Old Style C */ - typedef struct exportnode *exports; -#ifdef __cplusplus -extern "C" bool_t xdr_exports(XDR *, exports*); -#elif __STDC__ -extern bool_t xdr_exports(XDR *, exports*); -#else /* Old Style C */ -bool_t xdr_exports(); -#endif /* Old Style C */ - struct exportnode { dirpath ex_dir; @@ -125,86 +56,89 @@ struct exportnode { exports ex_next; }; typedef struct exportnode exportnode; -#ifdef __cplusplus -extern "C" bool_t xdr_exportnode(XDR *, exportnode*); -#elif __STDC__ -extern bool_t xdr_exportnode(XDR *, exportnode*); -#else /* Old Style C */ -bool_t xdr_exportnode(); -#endif /* Old Style C */ - -#define MOUNTPROG ((u_long)100005) -#define MOUNTVERS ((u_long)1) +#define MOUNTPROG 100005 +#define MOUNTVERS 1 -#ifdef __cplusplus -#define MOUNTPROC_NULL ((u_long)0) -extern "C" void * mountproc_null_1(void *, CLIENT *); -extern "C" void * mountproc_null_1_svc(void *, struct svc_req *); -#define MOUNTPROC_MNT ((u_long)1) -extern "C" fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); -extern "C" fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_DUMP ((u_long)2) -extern "C" mountlist * mountproc_dump_1(void *, CLIENT *); -extern "C" mountlist * mountproc_dump_1_svc(void *, struct svc_req *); -#define MOUNTPROC_UMNT ((u_long)3) -extern "C" void * mountproc_umnt_1(dirpath *, CLIENT *); -extern "C" void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_UMNTALL ((u_long)4) -extern "C" void * mountproc_umntall_1(void *, CLIENT *); -extern "C" void * mountproc_umntall_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORT ((u_long)5) -extern "C" exports * mountproc_export_1(void *, CLIENT *); -extern "C" exports * mountproc_export_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORTALL ((u_long)6) -extern "C" exports * mountproc_exportall_1(void *, CLIENT *); -extern "C" exports * mountproc_exportall_1_svc(void *, struct svc_req *); - -#elif __STDC__ -#define MOUNTPROC_NULL ((u_long)0) +#if defined(__STDC__) || defined(__cplusplus) +#define MOUNTPROC_NULL 0 extern void * mountproc_null_1(void *, CLIENT *); extern void * mountproc_null_1_svc(void *, struct svc_req *); -#define MOUNTPROC_MNT ((u_long)1) +#define MOUNTPROC_MNT 1 extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_DUMP ((u_long)2) +#define MOUNTPROC_DUMP 2 extern mountlist * mountproc_dump_1(void *, CLIENT *); extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *); -#define MOUNTPROC_UMNT ((u_long)3) +#define MOUNTPROC_UMNT 3 extern void * mountproc_umnt_1(dirpath *, CLIENT *); extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_UMNTALL ((u_long)4) +#define MOUNTPROC_UMNTALL 4 extern void * mountproc_umntall_1(void *, CLIENT *); extern void * mountproc_umntall_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORT ((u_long)5) +#define MOUNTPROC_EXPORT 5 extern exports * mountproc_export_1(void *, CLIENT *); extern exports * mountproc_export_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORTALL ((u_long)6) +#define MOUNTPROC_EXPORTALL 6 extern exports * mountproc_exportall_1(void *, CLIENT *); extern exports * mountproc_exportall_1_svc(void *, struct svc_req *); +extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); -#else /* Old Style C */ -#define MOUNTPROC_NULL ((u_long)0) +#else /* K&R C */ +#define MOUNTPROC_NULL 0 extern void * mountproc_null_1(); extern void * mountproc_null_1_svc(); -#define MOUNTPROC_MNT ((u_long)1) +#define MOUNTPROC_MNT 1 extern fhstatus * mountproc_mnt_1(); extern fhstatus * mountproc_mnt_1_svc(); -#define MOUNTPROC_DUMP ((u_long)2) +#define MOUNTPROC_DUMP 2 extern mountlist * mountproc_dump_1(); extern mountlist * mountproc_dump_1_svc(); -#define MOUNTPROC_UMNT ((u_long)3) +#define MOUNTPROC_UMNT 3 extern void * mountproc_umnt_1(); extern void * mountproc_umnt_1_svc(); -#define MOUNTPROC_UMNTALL ((u_long)4) +#define MOUNTPROC_UMNTALL 4 extern void * mountproc_umntall_1(); extern void * mountproc_umntall_1_svc(); -#define MOUNTPROC_EXPORT ((u_long)5) +#define MOUNTPROC_EXPORT 5 extern exports * mountproc_export_1(); extern exports * mountproc_export_1_svc(); -#define MOUNTPROC_EXPORTALL ((u_long)6) +#define MOUNTPROC_EXPORTALL 6 extern exports * mountproc_exportall_1(); extern exports * mountproc_exportall_1_svc(); -#endif /* Old Style C */ +extern int mountprog_1_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_fhandle (XDR *, fhandle); +extern bool_t xdr_fhstatus (XDR *, fhstatus*); +extern bool_t xdr_dirpath (XDR *, dirpath*); +extern bool_t xdr_name (XDR *, name*); +extern bool_t xdr_mountlist (XDR *, mountlist*); +extern bool_t xdr_mountbody (XDR *, mountbody*); +extern bool_t xdr_groups (XDR *, groups*); +extern bool_t xdr_groupnode (XDR *, groupnode*); +extern bool_t xdr_exports (XDR *, exports*); +extern bool_t xdr_exportnode (XDR *, exportnode*); + +#else /* K&R C */ +extern bool_t xdr_fhandle (); +extern bool_t xdr_fhstatus (); +extern bool_t xdr_dirpath (); +extern bool_t xdr_name (); +extern bool_t xdr_mountlist (); +extern bool_t xdr_mountbody (); +extern bool_t xdr_groups (); +extern bool_t xdr_groupnode (); +extern bool_t xdr_exports (); +extern bool_t xdr_exportnode (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif #endif /* !_MOUNT_PROT_H_RPCGEN */ diff --git a/rtemsNfs/proto/mount_prot_xdr.c b/rtemsNfs/proto/mount_prot_xdr.c index 7d605bb..b83350b 100644 --- a/rtemsNfs/proto/mount_prot_xdr.c +++ b/rtemsNfs/proto/mount_prot_xdr.c @@ -6,129 +6,119 @@ #include "mount_prot.h" bool_t -xdr_fhandle(xdrs, objp) - XDR *xdrs; - fhandle objp; +xdr_fhandle (XDR *xdrs, fhandle objp) { + register int32_t *buf; - if (!xdr_opaque(xdrs, objp, FHSIZE)) - return (FALSE); - return (TRUE); + if (!xdr_opaque (xdrs, objp, FHSIZE)) + return FALSE; + return TRUE; } bool_t -xdr_fhstatus(xdrs, objp) - XDR *xdrs; - fhstatus *objp; +xdr_fhstatus (XDR *xdrs, fhstatus *objp) { + register int32_t *buf; - if (!xdr_u_int(xdrs, &objp->fhs_status)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->fhs_status)) + return FALSE; switch (objp->fhs_status) { case 0: - if (!xdr_fhandle(xdrs, objp->fhstatus_u.fhs_fhandle)) - return (FALSE); + if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_dirpath(xdrs, objp) - XDR *xdrs; - dirpath *objp; +xdr_dirpath (XDR *xdrs, dirpath *objp) { + register int32_t *buf; - if (!xdr_string(xdrs, objp, MNTPATHLEN)) - return (FALSE); - return (TRUE); + if (!xdr_string (xdrs, objp, MNTPATHLEN)) + return FALSE; + return TRUE; } bool_t -xdr_name(xdrs, objp) - XDR *xdrs; - name *objp; +xdr_name (XDR *xdrs, name *objp) { + register int32_t *buf; - if (!xdr_string(xdrs, objp, MNTNAMLEN)) - return (FALSE); - return (TRUE); + if (!xdr_string (xdrs, objp, MNTNAMLEN)) + return FALSE; + return TRUE; } bool_t -xdr_mountlist(xdrs, objp) - XDR *xdrs; - mountlist *objp; +xdr_mountlist (XDR *xdrs, mountlist *objp) { + register int32_t *buf; - if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), (xdrproc_t)xdr_mountbody)) - return (FALSE); - return (TRUE); + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody), (xdrproc_t) xdr_mountbody)) + return FALSE; + return TRUE; } bool_t -xdr_mountbody(xdrs, objp) - XDR *xdrs; - mountbody *objp; +xdr_mountbody (XDR *xdrs, mountbody *objp) { - - if (!xdr_name(xdrs, &objp->ml_hostname)) - return (FALSE); - if (!xdr_dirpath(xdrs, &objp->ml_directory)) - return (FALSE); - if (!xdr_mountlist(xdrs, &objp->ml_next)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_name (xdrs, &objp->ml_hostname)) + return FALSE; + if (!xdr_dirpath (xdrs, &objp->ml_directory)) + return FALSE; + if (!xdr_mountlist (xdrs, &objp->ml_next)) + return FALSE; + return TRUE; } bool_t -xdr_groups(xdrs, objp) - XDR *xdrs; - groups *objp; +xdr_groups (XDR *xdrs, groups *objp) { + register int32_t *buf; - if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), (xdrproc_t)xdr_groupnode)) - return (FALSE); - return (TRUE); + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode), (xdrproc_t) xdr_groupnode)) + return FALSE; + return TRUE; } bool_t -xdr_groupnode(xdrs, objp) - XDR *xdrs; - groupnode *objp; +xdr_groupnode (XDR *xdrs, groupnode *objp) { + register int32_t *buf; - if (!xdr_name(xdrs, &objp->gr_name)) - return (FALSE); - if (!xdr_groups(xdrs, &objp->gr_next)) - return (FALSE); - return (TRUE); + if (!xdr_name (xdrs, &objp->gr_name)) + return FALSE; + if (!xdr_groups (xdrs, &objp->gr_next)) + return FALSE; + return TRUE; } bool_t -xdr_exports(xdrs, objp) - XDR *xdrs; - exports *objp; +xdr_exports (XDR *xdrs, exports *objp) { + register int32_t *buf; - if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), (xdrproc_t)xdr_exportnode)) - return (FALSE); - return (TRUE); + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode), (xdrproc_t) xdr_exportnode)) + return FALSE; + return TRUE; } bool_t -xdr_exportnode(xdrs, objp) - XDR *xdrs; - exportnode *objp; +xdr_exportnode (XDR *xdrs, exportnode *objp) { - - if (!xdr_dirpath(xdrs, &objp->ex_dir)) - return (FALSE); - if (!xdr_groups(xdrs, &objp->ex_groups)) - return (FALSE); - if (!xdr_exports(xdrs, &objp->ex_next)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_dirpath (xdrs, &objp->ex_dir)) + return FALSE; + if (!xdr_groups (xdrs, &objp->ex_groups)) + return FALSE; + if (!xdr_exports (xdrs, &objp->ex_next)) + return FALSE; + return TRUE; } diff --git a/rtemsNfs/proto/nfs_prot.h b/rtemsNfs/proto/nfs_prot.h index 83a8c40..de812db 100644 --- a/rtemsNfs/proto/nfs_prot.h +++ b/rtemsNfs/proto/nfs_prot.h @@ -6,10 +6,13 @@ #ifndef _NFS_PROT_H_RPCGEN #define _NFS_PROT_H_RPCGEN -#define RPCGEN_VERSION 199506 - #include + +#ifdef __cplusplus +extern "C" { +#endif + #define NFS_PORT 2049 #define NFS_MAXDATA 8192 #define NFS_MAXPATHLEN 1024 @@ -47,14 +50,6 @@ enum nfsstat { NFSERR_WFLUSH = 99, }; typedef enum nfsstat nfsstat; -#ifdef __cplusplus -extern "C" bool_t xdr_nfsstat(XDR *, nfsstat*); -#elif __STDC__ -extern bool_t xdr_nfsstat(XDR *, nfsstat*); -#else /* Old Style C */ -bool_t xdr_nfsstat(); -#endif /* Old Style C */ - enum ftype { NFNON = 0, @@ -68,41 +63,17 @@ enum ftype { NFFIFO = 8, }; typedef enum ftype ftype; -#ifdef __cplusplus -extern "C" bool_t xdr_ftype(XDR *, ftype*); -#elif __STDC__ -extern bool_t xdr_ftype(XDR *, ftype*); -#else /* Old Style C */ -bool_t xdr_ftype(); -#endif /* Old Style C */ - struct nfs_fh { char data[NFS_FHSIZE]; }; typedef struct nfs_fh nfs_fh; -#ifdef __cplusplus -extern "C" bool_t xdr_nfs_fh(XDR *, nfs_fh*); -#elif __STDC__ -extern bool_t xdr_nfs_fh(XDR *, nfs_fh*); -#else /* Old Style C */ -bool_t xdr_nfs_fh(); -#endif /* Old Style C */ - struct nfstime { u_int seconds; u_int useconds; }; typedef struct nfstime nfstime; -#ifdef __cplusplus -extern "C" bool_t xdr_nfstime(XDR *, nfstime*); -#elif __STDC__ -extern bool_t xdr_nfstime(XDR *, nfstime*); -#else /* Old Style C */ -bool_t xdr_nfstime(); -#endif /* Old Style C */ - struct fattr { ftype type; @@ -121,14 +92,6 @@ struct fattr { nfstime ctime; }; typedef struct fattr fattr; -#ifdef __cplusplus -extern "C" bool_t xdr_fattr(XDR *, fattr*); -#elif __STDC__ -extern bool_t xdr_fattr(XDR *, fattr*); -#else /* Old Style C */ -bool_t xdr_fattr(); -#endif /* Old Style C */ - struct sattr { u_int mode; @@ -139,34 +102,10 @@ struct sattr { nfstime mtime; }; typedef struct sattr sattr; -#ifdef __cplusplus -extern "C" bool_t xdr_sattr(XDR *, sattr*); -#elif __STDC__ -extern bool_t xdr_sattr(XDR *, sattr*); -#else /* Old Style C */ -bool_t xdr_sattr(); -#endif /* Old Style C */ - typedef char *filename; -#ifdef __cplusplus -extern "C" bool_t xdr_filename(XDR *, filename*); -#elif __STDC__ -extern bool_t xdr_filename(XDR *, filename*); -#else /* Old Style C */ -bool_t xdr_filename(); -#endif /* Old Style C */ - typedef char *nfspath; -#ifdef __cplusplus -extern "C" bool_t xdr_nfspath(XDR *, nfspath*); -#elif __STDC__ -extern bool_t xdr_nfspath(XDR *, nfspath*); -#else /* Old Style C */ -bool_t xdr_nfspath(); -#endif /* Old Style C */ - struct attrstat { nfsstat status; @@ -175,56 +114,24 @@ struct attrstat { } attrstat_u; }; typedef struct attrstat attrstat; -#ifdef __cplusplus -extern "C" bool_t xdr_attrstat(XDR *, attrstat*); -#elif __STDC__ -extern bool_t xdr_attrstat(XDR *, attrstat*); -#else /* Old Style C */ -bool_t xdr_attrstat(); -#endif /* Old Style C */ - struct sattrargs { nfs_fh file; sattr attributes; }; typedef struct sattrargs sattrargs; -#ifdef __cplusplus -extern "C" bool_t xdr_sattrargs(XDR *, sattrargs*); -#elif __STDC__ -extern bool_t xdr_sattrargs(XDR *, sattrargs*); -#else /* Old Style C */ -bool_t xdr_sattrargs(); -#endif /* Old Style C */ - struct diropargs { nfs_fh dir; filename name; }; typedef struct diropargs diropargs; -#ifdef __cplusplus -extern "C" bool_t xdr_diropargs(XDR *, diropargs*); -#elif __STDC__ -extern bool_t xdr_diropargs(XDR *, diropargs*); -#else /* Old Style C */ -bool_t xdr_diropargs(); -#endif /* Old Style C */ - struct diropokres { nfs_fh file; fattr attributes; }; typedef struct diropokres diropokres; -#ifdef __cplusplus -extern "C" bool_t xdr_diropokres(XDR *, diropokres*); -#elif __STDC__ -extern bool_t xdr_diropokres(XDR *, diropokres*); -#else /* Old Style C */ -bool_t xdr_diropokres(); -#endif /* Old Style C */ - struct diropres { nfsstat status; @@ -233,14 +140,6 @@ struct diropres { } diropres_u; }; typedef struct diropres diropres; -#ifdef __cplusplus -extern "C" bool_t xdr_diropres(XDR *, diropres*); -#elif __STDC__ -extern bool_t xdr_diropres(XDR *, diropres*); -#else /* Old Style C */ -bool_t xdr_diropres(); -#endif /* Old Style C */ - struct readlinkres { nfsstat status; @@ -249,14 +148,6 @@ struct readlinkres { } readlinkres_u; }; typedef struct readlinkres readlinkres; -#ifdef __cplusplus -extern "C" bool_t xdr_readlinkres(XDR *, readlinkres*); -#elif __STDC__ -extern bool_t xdr_readlinkres(XDR *, readlinkres*); -#else /* Old Style C */ -bool_t xdr_readlinkres(); -#endif /* Old Style C */ - struct readargs { nfs_fh file; @@ -265,14 +156,6 @@ struct readargs { u_int totalcount; }; typedef struct readargs readargs; -#ifdef __cplusplus -extern "C" bool_t xdr_readargs(XDR *, readargs*); -#elif __STDC__ -extern bool_t xdr_readargs(XDR *, readargs*); -#else /* Old Style C */ -bool_t xdr_readargs(); -#endif /* Old Style C */ - struct readokres { fattr attributes; @@ -282,14 +165,6 @@ struct readokres { } data; }; typedef struct readokres readokres; -#ifdef __cplusplus -extern "C" bool_t xdr_readokres(XDR *, readokres*); -#elif __STDC__ -extern bool_t xdr_readokres(XDR *, readokres*); -#else /* Old Style C */ -bool_t xdr_readokres(); -#endif /* Old Style C */ - struct readres { nfsstat status; @@ -298,14 +173,6 @@ struct readres { } readres_u; }; typedef struct readres readres; -#ifdef __cplusplus -extern "C" bool_t xdr_readres(XDR *, readres*); -#elif __STDC__ -extern bool_t xdr_readres(XDR *, readres*); -#else /* Old Style C */ -bool_t xdr_readres(); -#endif /* Old Style C */ - struct writeargs { nfs_fh file; @@ -318,56 +185,24 @@ struct writeargs { } data; }; typedef struct writeargs writeargs; -#ifdef __cplusplus -extern "C" bool_t xdr_writeargs(XDR *, writeargs*); -#elif __STDC__ -extern bool_t xdr_writeargs(XDR *, writeargs*); -#else /* Old Style C */ -bool_t xdr_writeargs(); -#endif /* Old Style C */ - struct createargs { diropargs where; sattr attributes; }; typedef struct createargs createargs; -#ifdef __cplusplus -extern "C" bool_t xdr_createargs(XDR *, createargs*); -#elif __STDC__ -extern bool_t xdr_createargs(XDR *, createargs*); -#else /* Old Style C */ -bool_t xdr_createargs(); -#endif /* Old Style C */ - struct renameargs { diropargs from; diropargs to; }; typedef struct renameargs renameargs; -#ifdef __cplusplus -extern "C" bool_t xdr_renameargs(XDR *, renameargs*); -#elif __STDC__ -extern bool_t xdr_renameargs(XDR *, renameargs*); -#else /* Old Style C */ -bool_t xdr_renameargs(); -#endif /* Old Style C */ - struct linkargs { nfs_fh from; diropargs to; }; typedef struct linkargs linkargs; -#ifdef __cplusplus -extern "C" bool_t xdr_linkargs(XDR *, linkargs*); -#elif __STDC__ -extern bool_t xdr_linkargs(XDR *, linkargs*); -#else /* Old Style C */ -bool_t xdr_linkargs(); -#endif /* Old Style C */ - struct symlinkargs { diropargs from; @@ -375,27 +210,11 @@ struct symlinkargs { sattr attributes; }; typedef struct symlinkargs symlinkargs; -#ifdef __cplusplus -extern "C" bool_t xdr_symlinkargs(XDR *, symlinkargs*); -#elif __STDC__ -extern bool_t xdr_symlinkargs(XDR *, symlinkargs*); -#else /* Old Style C */ -bool_t xdr_symlinkargs(); -#endif /* Old Style C */ - struct nfscookie { char data[NFS_COOKIESIZE]; }; typedef struct nfscookie nfscookie; -#ifdef __cplusplus -extern "C" bool_t xdr_nfscookie(XDR *, nfscookie*); -#elif __STDC__ -extern bool_t xdr_nfscookie(XDR *, nfscookie*); -#else /* Old Style C */ -bool_t xdr_nfscookie(); -#endif /* Old Style C */ - struct readdirargs { nfs_fh dir; @@ -403,14 +222,6 @@ struct readdirargs { u_int count; }; typedef struct readdirargs readdirargs; -#ifdef __cplusplus -extern "C" bool_t xdr_readdirargs(XDR *, readdirargs*); -#elif __STDC__ -extern bool_t xdr_readdirargs(XDR *, readdirargs*); -#else /* Old Style C */ -bool_t xdr_readdirargs(); -#endif /* Old Style C */ - struct entry { u_int fileid; @@ -419,28 +230,12 @@ struct entry { struct entry *nextentry; }; typedef struct entry entry; -#ifdef __cplusplus -extern "C" bool_t xdr_entry(XDR *, entry*); -#elif __STDC__ -extern bool_t xdr_entry(XDR *, entry*); -#else /* Old Style C */ -bool_t xdr_entry(); -#endif /* Old Style C */ - struct dirlist { entry *entries; bool_t eof; }; typedef struct dirlist dirlist; -#ifdef __cplusplus -extern "C" bool_t xdr_dirlist(XDR *, dirlist*); -#elif __STDC__ -extern bool_t xdr_dirlist(XDR *, dirlist*); -#else /* Old Style C */ -bool_t xdr_dirlist(); -#endif /* Old Style C */ - struct readdirres { nfsstat status; @@ -449,14 +244,6 @@ struct readdirres { } readdirres_u; }; typedef struct readdirres readdirres; -#ifdef __cplusplus -extern "C" bool_t xdr_readdirres(XDR *, readdirres*); -#elif __STDC__ -extern bool_t xdr_readdirres(XDR *, readdirres*); -#else /* Old Style C */ -bool_t xdr_readdirres(); -#endif /* Old Style C */ - struct statfsokres { u_int tsize; @@ -466,14 +253,6 @@ struct statfsokres { u_int bavail; }; typedef struct statfsokres statfsokres; -#ifdef __cplusplus -extern "C" bool_t xdr_statfsokres(XDR *, statfsokres*); -#elif __STDC__ -extern bool_t xdr_statfsokres(XDR *, statfsokres*); -#else /* Old Style C */ -bool_t xdr_statfsokres(); -#endif /* Old Style C */ - struct statfsres { nfsstat status; @@ -482,185 +261,193 @@ struct statfsres { } statfsres_u; }; typedef struct statfsres statfsres; -#ifdef __cplusplus -extern "C" bool_t xdr_statfsres(XDR *, statfsres*); -#elif __STDC__ -extern bool_t xdr_statfsres(XDR *, statfsres*); -#else /* Old Style C */ -bool_t xdr_statfsres(); -#endif /* Old Style C */ +#define NFS_PROGRAM 100003 +#define NFS_VERSION 2 -#define NFS_PROGRAM ((u_long)100003) -#define NFS_VERSION ((u_long)2) - -#ifdef __cplusplus -#define NFSPROC_NULL ((u_long)0) -extern "C" void * nfsproc_null_2(void *, CLIENT *); -extern "C" void * nfsproc_null_2_svc(void *, struct svc_req *); -#define NFSPROC_GETATTR ((u_long)1) -extern "C" attrstat * nfsproc_getattr_2(nfs_fh *, CLIENT *); -extern "C" attrstat * nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *); -#define NFSPROC_SETATTR ((u_long)2) -extern "C" attrstat * nfsproc_setattr_2(sattrargs *, CLIENT *); -extern "C" attrstat * nfsproc_setattr_2_svc(sattrargs *, struct svc_req *); -#define NFSPROC_ROOT ((u_long)3) -extern "C" void * nfsproc_root_2(void *, CLIENT *); -extern "C" void * nfsproc_root_2_svc(void *, struct svc_req *); -#define NFSPROC_LOOKUP ((u_long)4) -extern "C" diropres * nfsproc_lookup_2(diropargs *, CLIENT *); -extern "C" diropres * nfsproc_lookup_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_READLINK ((u_long)5) -extern "C" readlinkres * nfsproc_readlink_2(nfs_fh *, CLIENT *); -extern "C" readlinkres * nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *); -#define NFSPROC_READ ((u_long)6) -extern "C" readres * nfsproc_read_2(readargs *, CLIENT *); -extern "C" readres * nfsproc_read_2_svc(readargs *, struct svc_req *); -#define NFSPROC_WRITECACHE ((u_long)7) -extern "C" void * nfsproc_writecache_2(void *, CLIENT *); -extern "C" void * nfsproc_writecache_2_svc(void *, struct svc_req *); -#define NFSPROC_WRITE ((u_long)8) -extern "C" attrstat * nfsproc_write_2(writeargs *, CLIENT *); -extern "C" attrstat * nfsproc_write_2_svc(writeargs *, struct svc_req *); -#define NFSPROC_CREATE ((u_long)9) -extern "C" diropres * nfsproc_create_2(createargs *, CLIENT *); -extern "C" diropres * nfsproc_create_2_svc(createargs *, struct svc_req *); -#define NFSPROC_REMOVE ((u_long)10) -extern "C" nfsstat * nfsproc_remove_2(diropargs *, CLIENT *); -extern "C" nfsstat * nfsproc_remove_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_RENAME ((u_long)11) -extern "C" nfsstat * nfsproc_rename_2(renameargs *, CLIENT *); -extern "C" nfsstat * nfsproc_rename_2_svc(renameargs *, struct svc_req *); -#define NFSPROC_LINK ((u_long)12) -extern "C" nfsstat * nfsproc_link_2(linkargs *, CLIENT *); -extern "C" nfsstat * nfsproc_link_2_svc(linkargs *, struct svc_req *); -#define NFSPROC_SYMLINK ((u_long)13) -extern "C" nfsstat * nfsproc_symlink_2(symlinkargs *, CLIENT *); -extern "C" nfsstat * nfsproc_symlink_2_svc(symlinkargs *, struct svc_req *); -#define NFSPROC_MKDIR ((u_long)14) -extern "C" diropres * nfsproc_mkdir_2(createargs *, CLIENT *); -extern "C" diropres * nfsproc_mkdir_2_svc(createargs *, struct svc_req *); -#define NFSPROC_RMDIR ((u_long)15) -extern "C" nfsstat * nfsproc_rmdir_2(diropargs *, CLIENT *); -extern "C" nfsstat * nfsproc_rmdir_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_READDIR ((u_long)16) -extern "C" readdirres * nfsproc_readdir_2(readdirargs *, CLIENT *); -extern "C" readdirres * nfsproc_readdir_2_svc(readdirargs *, struct svc_req *); -#define NFSPROC_STATFS ((u_long)17) -extern "C" statfsres * nfsproc_statfs_2(nfs_fh *, CLIENT *); -extern "C" statfsres * nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *); - -#elif __STDC__ -#define NFSPROC_NULL ((u_long)0) +#if defined(__STDC__) || defined(__cplusplus) +#define NFSPROC_NULL 0 extern void * nfsproc_null_2(void *, CLIENT *); extern void * nfsproc_null_2_svc(void *, struct svc_req *); -#define NFSPROC_GETATTR ((u_long)1) +#define NFSPROC_GETATTR 1 extern attrstat * nfsproc_getattr_2(nfs_fh *, CLIENT *); extern attrstat * nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *); -#define NFSPROC_SETATTR ((u_long)2) +#define NFSPROC_SETATTR 2 extern attrstat * nfsproc_setattr_2(sattrargs *, CLIENT *); extern attrstat * nfsproc_setattr_2_svc(sattrargs *, struct svc_req *); -#define NFSPROC_ROOT ((u_long)3) +#define NFSPROC_ROOT 3 extern void * nfsproc_root_2(void *, CLIENT *); extern void * nfsproc_root_2_svc(void *, struct svc_req *); -#define NFSPROC_LOOKUP ((u_long)4) +#define NFSPROC_LOOKUP 4 extern diropres * nfsproc_lookup_2(diropargs *, CLIENT *); extern diropres * nfsproc_lookup_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_READLINK ((u_long)5) +#define NFSPROC_READLINK 5 extern readlinkres * nfsproc_readlink_2(nfs_fh *, CLIENT *); extern readlinkres * nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *); -#define NFSPROC_READ ((u_long)6) +#define NFSPROC_READ 6 extern readres * nfsproc_read_2(readargs *, CLIENT *); extern readres * nfsproc_read_2_svc(readargs *, struct svc_req *); -#define NFSPROC_WRITECACHE ((u_long)7) +#define NFSPROC_WRITECACHE 7 extern void * nfsproc_writecache_2(void *, CLIENT *); extern void * nfsproc_writecache_2_svc(void *, struct svc_req *); -#define NFSPROC_WRITE ((u_long)8) +#define NFSPROC_WRITE 8 extern attrstat * nfsproc_write_2(writeargs *, CLIENT *); extern attrstat * nfsproc_write_2_svc(writeargs *, struct svc_req *); -#define NFSPROC_CREATE ((u_long)9) +#define NFSPROC_CREATE 9 extern diropres * nfsproc_create_2(createargs *, CLIENT *); extern diropres * nfsproc_create_2_svc(createargs *, struct svc_req *); -#define NFSPROC_REMOVE ((u_long)10) +#define NFSPROC_REMOVE 10 extern nfsstat * nfsproc_remove_2(diropargs *, CLIENT *); extern nfsstat * nfsproc_remove_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_RENAME ((u_long)11) +#define NFSPROC_RENAME 11 extern nfsstat * nfsproc_rename_2(renameargs *, CLIENT *); extern nfsstat * nfsproc_rename_2_svc(renameargs *, struct svc_req *); -#define NFSPROC_LINK ((u_long)12) +#define NFSPROC_LINK 12 extern nfsstat * nfsproc_link_2(linkargs *, CLIENT *); extern nfsstat * nfsproc_link_2_svc(linkargs *, struct svc_req *); -#define NFSPROC_SYMLINK ((u_long)13) +#define NFSPROC_SYMLINK 13 extern nfsstat * nfsproc_symlink_2(symlinkargs *, CLIENT *); extern nfsstat * nfsproc_symlink_2_svc(symlinkargs *, struct svc_req *); -#define NFSPROC_MKDIR ((u_long)14) +#define NFSPROC_MKDIR 14 extern diropres * nfsproc_mkdir_2(createargs *, CLIENT *); extern diropres * nfsproc_mkdir_2_svc(createargs *, struct svc_req *); -#define NFSPROC_RMDIR ((u_long)15) +#define NFSPROC_RMDIR 15 extern nfsstat * nfsproc_rmdir_2(diropargs *, CLIENT *); extern nfsstat * nfsproc_rmdir_2_svc(diropargs *, struct svc_req *); -#define NFSPROC_READDIR ((u_long)16) +#define NFSPROC_READDIR 16 extern readdirres * nfsproc_readdir_2(readdirargs *, CLIENT *); extern readdirres * nfsproc_readdir_2_svc(readdirargs *, struct svc_req *); -#define NFSPROC_STATFS ((u_long)17) +#define NFSPROC_STATFS 17 extern statfsres * nfsproc_statfs_2(nfs_fh *, CLIENT *); extern statfsres * nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *); +extern int nfs_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); -#else /* Old Style C */ -#define NFSPROC_NULL ((u_long)0) +#else /* K&R C */ +#define NFSPROC_NULL 0 extern void * nfsproc_null_2(); extern void * nfsproc_null_2_svc(); -#define NFSPROC_GETATTR ((u_long)1) +#define NFSPROC_GETATTR 1 extern attrstat * nfsproc_getattr_2(); extern attrstat * nfsproc_getattr_2_svc(); -#define NFSPROC_SETATTR ((u_long)2) +#define NFSPROC_SETATTR 2 extern attrstat * nfsproc_setattr_2(); extern attrstat * nfsproc_setattr_2_svc(); -#define NFSPROC_ROOT ((u_long)3) +#define NFSPROC_ROOT 3 extern void * nfsproc_root_2(); extern void * nfsproc_root_2_svc(); -#define NFSPROC_LOOKUP ((u_long)4) +#define NFSPROC_LOOKUP 4 extern diropres * nfsproc_lookup_2(); extern diropres * nfsproc_lookup_2_svc(); -#define NFSPROC_READLINK ((u_long)5) +#define NFSPROC_READLINK 5 extern readlinkres * nfsproc_readlink_2(); extern readlinkres * nfsproc_readlink_2_svc(); -#define NFSPROC_READ ((u_long)6) +#define NFSPROC_READ 6 extern readres * nfsproc_read_2(); extern readres * nfsproc_read_2_svc(); -#define NFSPROC_WRITECACHE ((u_long)7) +#define NFSPROC_WRITECACHE 7 extern void * nfsproc_writecache_2(); extern void * nfsproc_writecache_2_svc(); -#define NFSPROC_WRITE ((u_long)8) +#define NFSPROC_WRITE 8 extern attrstat * nfsproc_write_2(); extern attrstat * nfsproc_write_2_svc(); -#define NFSPROC_CREATE ((u_long)9) +#define NFSPROC_CREATE 9 extern diropres * nfsproc_create_2(); extern diropres * nfsproc_create_2_svc(); -#define NFSPROC_REMOVE ((u_long)10) +#define NFSPROC_REMOVE 10 extern nfsstat * nfsproc_remove_2(); extern nfsstat * nfsproc_remove_2_svc(); -#define NFSPROC_RENAME ((u_long)11) +#define NFSPROC_RENAME 11 extern nfsstat * nfsproc_rename_2(); extern nfsstat * nfsproc_rename_2_svc(); -#define NFSPROC_LINK ((u_long)12) +#define NFSPROC_LINK 12 extern nfsstat * nfsproc_link_2(); extern nfsstat * nfsproc_link_2_svc(); -#define NFSPROC_SYMLINK ((u_long)13) +#define NFSPROC_SYMLINK 13 extern nfsstat * nfsproc_symlink_2(); extern nfsstat * nfsproc_symlink_2_svc(); -#define NFSPROC_MKDIR ((u_long)14) +#define NFSPROC_MKDIR 14 extern diropres * nfsproc_mkdir_2(); extern diropres * nfsproc_mkdir_2_svc(); -#define NFSPROC_RMDIR ((u_long)15) +#define NFSPROC_RMDIR 15 extern nfsstat * nfsproc_rmdir_2(); extern nfsstat * nfsproc_rmdir_2_svc(); -#define NFSPROC_READDIR ((u_long)16) +#define NFSPROC_READDIR 16 extern readdirres * nfsproc_readdir_2(); extern readdirres * nfsproc_readdir_2_svc(); -#define NFSPROC_STATFS ((u_long)17) +#define NFSPROC_STATFS 17 extern statfsres * nfsproc_statfs_2(); extern statfsres * nfsproc_statfs_2_svc(); -#endif /* Old Style C */ +extern int nfs_program_2_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_nfsstat (XDR *, nfsstat*); +extern bool_t xdr_ftype (XDR *, ftype*); +extern bool_t xdr_nfs_fh (XDR *, nfs_fh*); +extern bool_t xdr_nfstime (XDR *, nfstime*); +extern bool_t xdr_fattr (XDR *, fattr*); +extern bool_t xdr_sattr (XDR *, sattr*); +extern bool_t xdr_filename (XDR *, filename*); +extern bool_t xdr_nfspath (XDR *, nfspath*); +extern bool_t xdr_attrstat (XDR *, attrstat*); +extern bool_t xdr_sattrargs (XDR *, sattrargs*); +extern bool_t xdr_diropargs (XDR *, diropargs*); +extern bool_t xdr_diropokres (XDR *, diropokres*); +extern bool_t xdr_diropres (XDR *, diropres*); +extern bool_t xdr_readlinkres (XDR *, readlinkres*); +extern bool_t xdr_readargs (XDR *, readargs*); +extern bool_t xdr_readokres (XDR *, readokres*); +extern bool_t xdr_readres (XDR *, readres*); +extern bool_t xdr_writeargs (XDR *, writeargs*); +extern bool_t xdr_createargs (XDR *, createargs*); +extern bool_t xdr_renameargs (XDR *, renameargs*); +extern bool_t xdr_linkargs (XDR *, linkargs*); +extern bool_t xdr_symlinkargs (XDR *, symlinkargs*); +extern bool_t xdr_nfscookie (XDR *, nfscookie*); +extern bool_t xdr_readdirargs (XDR *, readdirargs*); +extern bool_t xdr_entry (XDR *, entry*); +extern bool_t xdr_dirlist (XDR *, dirlist*); +extern bool_t xdr_readdirres (XDR *, readdirres*); +extern bool_t xdr_statfsokres (XDR *, statfsokres*); +extern bool_t xdr_statfsres (XDR *, statfsres*); + +#else /* K&R C */ +extern bool_t xdr_nfsstat (); +extern bool_t xdr_ftype (); +extern bool_t xdr_nfs_fh (); +extern bool_t xdr_nfstime (); +extern bool_t xdr_fattr (); +extern bool_t xdr_sattr (); +extern bool_t xdr_filename (); +extern bool_t xdr_nfspath (); +extern bool_t xdr_attrstat (); +extern bool_t xdr_sattrargs (); +extern bool_t xdr_diropargs (); +extern bool_t xdr_diropokres (); +extern bool_t xdr_diropres (); +extern bool_t xdr_readlinkres (); +extern bool_t xdr_readargs (); +extern bool_t xdr_readokres (); +extern bool_t xdr_readres (); +extern bool_t xdr_writeargs (); +extern bool_t xdr_createargs (); +extern bool_t xdr_renameargs (); +extern bool_t xdr_linkargs (); +extern bool_t xdr_symlinkargs (); +extern bool_t xdr_nfscookie (); +extern bool_t xdr_readdirargs (); +extern bool_t xdr_entry (); +extern bool_t xdr_dirlist (); +extern bool_t xdr_readdirres (); +extern bool_t xdr_statfsokres (); +extern bool_t xdr_statfsres (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif #endif /* !_NFS_PROT_H_RPCGEN */ diff --git a/rtemsNfs/proto/nfs_prot_xdr.c b/rtemsNfs/proto/nfs_prot_xdr.c index 97246a5..7e222ec 100644 --- a/rtemsNfs/proto/nfs_prot_xdr.c +++ b/rtemsNfs/proto/nfs_prot_xdr.c @@ -11,617 +11,603 @@ static char rcsid[] = "$Id$"; #endif /* not lint */ bool_t -xdr_nfsstat(xdrs, objp) - XDR *xdrs; - nfsstat *objp; +xdr_nfsstat (XDR *xdrs, nfsstat *objp) { + register int32_t *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) - return (FALSE); - return (TRUE); + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; } bool_t -xdr_ftype(xdrs, objp) - XDR *xdrs; - ftype *objp; +xdr_ftype (XDR *xdrs, ftype *objp) { + register int32_t *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) - return (FALSE); - return (TRUE); + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; } bool_t -xdr_nfs_fh(xdrs, objp) - XDR *xdrs; - nfs_fh *objp; +xdr_nfs_fh (XDR *xdrs, nfs_fh *objp) { + register int32_t *buf; - if (!xdr_opaque(xdrs, objp->data, NFS_FHSIZE)) - return (FALSE); - return (TRUE); + int i; + if (!xdr_opaque (xdrs, objp->data, NFS_FHSIZE)) + return FALSE; + return TRUE; } bool_t -xdr_nfstime(xdrs, objp) - XDR *xdrs; - nfstime *objp; +xdr_nfstime (XDR *xdrs, nfstime *objp) { + register int32_t *buf; - if (!xdr_u_int(xdrs, &objp->seconds)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->useconds)) - return (FALSE); - return (TRUE); + if (!xdr_u_int (xdrs, &objp->seconds)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->useconds)) + return FALSE; + return TRUE; } bool_t -xdr_fattr(xdrs, objp) - XDR *xdrs; - fattr *objp; +xdr_fattr (XDR *xdrs, fattr *objp) { - int32_t *buf; + register int32_t *buf; + if (xdrs->x_op == XDR_ENCODE) { - if (!xdr_ftype(xdrs, &objp->type)) - return (FALSE); - buf = (int32_t *)XDR_INLINE(xdrs, 10 * BYTES_PER_XDR_UNIT); + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->nlink)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocksize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->rdev)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fsid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fileid)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + } else { - IXDR_PUT_U_LONG(buf, objp->mode); - IXDR_PUT_U_LONG(buf, objp->nlink); - IXDR_PUT_U_LONG(buf, objp->uid); - IXDR_PUT_U_LONG(buf, objp->gid); - IXDR_PUT_U_LONG(buf, objp->size); - IXDR_PUT_U_LONG(buf, objp->blocksize); - IXDR_PUT_U_LONG(buf, objp->rdev); - IXDR_PUT_U_LONG(buf, objp->blocks); - IXDR_PUT_U_LONG(buf, objp->fsid); - IXDR_PUT_U_LONG(buf, objp->fileid); + IXDR_PUT_U_LONG(buf, objp->mode); + IXDR_PUT_U_LONG(buf, objp->nlink); + IXDR_PUT_U_LONG(buf, objp->uid); + IXDR_PUT_U_LONG(buf, objp->gid); + IXDR_PUT_U_LONG(buf, objp->size); + IXDR_PUT_U_LONG(buf, objp->blocksize); + IXDR_PUT_U_LONG(buf, objp->rdev); + IXDR_PUT_U_LONG(buf, objp->blocks); + IXDR_PUT_U_LONG(buf, objp->fsid); + IXDR_PUT_U_LONG(buf, objp->fileid); } - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->ctime)) - return (FALSE); + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; } else if (xdrs->x_op == XDR_DECODE) { - if (!xdr_ftype(xdrs, &objp->type)) - return (FALSE); - buf = (int32_t *)XDR_INLINE(xdrs, 10 * BYTES_PER_XDR_UNIT); + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->nlink)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocksize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->rdev)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fsid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fileid)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + } else { - objp->mode = IXDR_GET_U_LONG(buf); - objp->nlink = IXDR_GET_U_LONG(buf); - objp->uid = IXDR_GET_U_LONG(buf); - objp->gid = IXDR_GET_U_LONG(buf); - objp->size = IXDR_GET_U_LONG(buf); - objp->blocksize = IXDR_GET_U_LONG(buf); - objp->rdev = IXDR_GET_U_LONG(buf); - objp->blocks = IXDR_GET_U_LONG(buf); - objp->fsid = IXDR_GET_U_LONG(buf); - objp->fileid = IXDR_GET_U_LONG(buf); + objp->mode = IXDR_GET_U_LONG(buf); + objp->nlink = IXDR_GET_U_LONG(buf); + objp->uid = IXDR_GET_U_LONG(buf); + objp->gid = IXDR_GET_U_LONG(buf); + objp->size = IXDR_GET_U_LONG(buf); + objp->blocksize = IXDR_GET_U_LONG(buf); + objp->rdev = IXDR_GET_U_LONG(buf); + objp->blocks = IXDR_GET_U_LONG(buf); + objp->fsid = IXDR_GET_U_LONG(buf); + objp->fileid = IXDR_GET_U_LONG(buf); } - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->ctime)) - return (FALSE); - } else { - if (!xdr_ftype(xdrs, &objp->type)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->nlink)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocksize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->rdev)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fsid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->fileid)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->ctime)) - return (FALSE); + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; } - return (TRUE); + + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; } bool_t -xdr_sattr(xdrs, objp) - XDR *xdrs; - sattr *objp; +xdr_sattr (XDR *xdrs, sattr *objp) { - int32_t *buf; + register int32_t *buf; + if (xdrs->x_op == XDR_ENCODE) { - buf = (int32_t *)XDR_INLINE(xdrs, 4 * BYTES_PER_XDR_UNIT); + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + } else { - IXDR_PUT_U_LONG(buf, objp->mode); - IXDR_PUT_U_LONG(buf, objp->uid); - IXDR_PUT_U_LONG(buf, objp->gid); - IXDR_PUT_U_LONG(buf, objp->size); + IXDR_PUT_U_LONG(buf, objp->mode); + IXDR_PUT_U_LONG(buf, objp->uid); + IXDR_PUT_U_LONG(buf, objp->gid); + IXDR_PUT_U_LONG(buf, objp->size); } - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; } else if (xdrs->x_op == XDR_DECODE) { - buf = (int32_t *)XDR_INLINE(xdrs, 4 * BYTES_PER_XDR_UNIT); + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + } else { - objp->mode = IXDR_GET_U_LONG(buf); - objp->uid = IXDR_GET_U_LONG(buf); - objp->gid = IXDR_GET_U_LONG(buf); - objp->size = IXDR_GET_U_LONG(buf); + objp->mode = IXDR_GET_U_LONG(buf); + objp->uid = IXDR_GET_U_LONG(buf); + objp->gid = IXDR_GET_U_LONG(buf); + objp->size = IXDR_GET_U_LONG(buf); } - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); - } else { - if (!xdr_u_int(xdrs, &objp->mode)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->uid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->gid)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->size)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->atime)) - return (FALSE); - if (!xdr_nfstime(xdrs, &objp->mtime)) - return (FALSE); + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; } - return (TRUE); + + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; } bool_t -xdr_filename(xdrs, objp) - XDR *xdrs; - filename *objp; +xdr_filename (XDR *xdrs, filename *objp) { + register int32_t *buf; - if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) - return (FALSE); - return (TRUE); + if (!xdr_string (xdrs, objp, NFS_MAXNAMLEN)) + return FALSE; + return TRUE; } bool_t -xdr_nfspath(xdrs, objp) - XDR *xdrs; - nfspath *objp; +xdr_nfspath (XDR *xdrs, nfspath *objp) { + register int32_t *buf; - if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) - return (FALSE); - return (TRUE); + if (!xdr_string (xdrs, objp, NFS_MAXPATHLEN)) + return FALSE; + return TRUE; } bool_t -xdr_attrstat(xdrs, objp) - XDR *xdrs; - attrstat *objp; +xdr_attrstat (XDR *xdrs, attrstat *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_fattr(xdrs, &objp->attrstat_u.attributes)) - return (FALSE); + if (!xdr_fattr (xdrs, &objp->attrstat_u.attributes)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_sattrargs(xdrs, objp) - XDR *xdrs; - sattrargs *objp; +xdr_sattrargs (XDR *xdrs, sattrargs *objp) { + register int32_t *buf; - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - if (!xdr_sattr(xdrs, &objp->attributes)) - return (FALSE); - return (TRUE); + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; } bool_t -xdr_diropargs(xdrs, objp) - XDR *xdrs; - diropargs *objp; +xdr_diropargs (XDR *xdrs, diropargs *objp) { + register int32_t *buf; - if (!xdr_nfs_fh(xdrs, &objp->dir)) - return (FALSE); - if (!xdr_filename(xdrs, &objp->name)) - return (FALSE); - return (TRUE); + if (!xdr_nfs_fh (xdrs, &objp->dir)) + return FALSE; + if (!xdr_filename (xdrs, &objp->name)) + return FALSE; + return TRUE; } bool_t -xdr_diropokres(xdrs, objp) - XDR *xdrs; - diropokres *objp; +xdr_diropokres (XDR *xdrs, diropokres *objp) { + register int32_t *buf; - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - if (!xdr_fattr(xdrs, &objp->attributes)) - return (FALSE); - return (TRUE); + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_fattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; } bool_t -xdr_diropres(xdrs, objp) - XDR *xdrs; - diropres *objp; +xdr_diropres (XDR *xdrs, diropres *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_diropokres(xdrs, &objp->diropres_u.diropres)) - return (FALSE); + if (!xdr_diropokres (xdrs, &objp->diropres_u.diropres)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_readlinkres(xdrs, objp) - XDR *xdrs; - readlinkres *objp; +xdr_readlinkres (XDR *xdrs, readlinkres *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_nfspath(xdrs, &objp->readlinkres_u.data)) - return (FALSE); + if (!xdr_nfspath (xdrs, &objp->readlinkres_u.data)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_readargs(xdrs, objp) - XDR *xdrs; - readargs *objp; +xdr_readargs (XDR *xdrs, readargs *objp) { - - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->offset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->count)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->totalcount)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->count)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + return TRUE; } bool_t -xdr_readokres(xdrs, objp) - XDR *xdrs; - readokres *objp; +xdr_readokres (XDR *xdrs, readokres *objp) { + register int32_t *buf; - if (!xdr_fattr(xdrs, &objp->attributes)) - return (FALSE); - if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) - return (FALSE); - return (TRUE); + if (!xdr_fattr (xdrs, &objp->attributes)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; } bool_t -xdr_readres(xdrs, objp) - XDR *xdrs; - readres *objp; +xdr_readres (XDR *xdrs, readres *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_readokres(xdrs, &objp->readres_u.reply)) - return (FALSE); + if (!xdr_readokres (xdrs, &objp->readres_u.reply)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_writeargs(xdrs, objp) - XDR *xdrs; - writeargs *objp; +xdr_writeargs (XDR *xdrs, writeargs *objp) { - int32_t *buf; + register int32_t *buf; + if (xdrs->x_op == XDR_ENCODE) { - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - buf = (int32_t *)XDR_INLINE(xdrs, 3 * BYTES_PER_XDR_UNIT); + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->beginoffset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->offset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->totalcount)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + } else { - IXDR_PUT_U_LONG(buf, objp->beginoffset); - IXDR_PUT_U_LONG(buf, objp->offset); - IXDR_PUT_U_LONG(buf, objp->totalcount); + IXDR_PUT_U_LONG(buf, objp->beginoffset); + IXDR_PUT_U_LONG(buf, objp->offset); + IXDR_PUT_U_LONG(buf, objp->totalcount); } - if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) - return (FALSE); + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; } else if (xdrs->x_op == XDR_DECODE) { - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - buf = (int32_t *)XDR_INLINE(xdrs, 3 * BYTES_PER_XDR_UNIT); + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->beginoffset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->offset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->totalcount)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + } else { - objp->beginoffset = IXDR_GET_U_LONG(buf); - objp->offset = IXDR_GET_U_LONG(buf); - objp->totalcount = IXDR_GET_U_LONG(buf); + objp->beginoffset = IXDR_GET_U_LONG(buf); + objp->offset = IXDR_GET_U_LONG(buf); + objp->totalcount = IXDR_GET_U_LONG(buf); } - if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) - return (FALSE); - } else { - if (!xdr_nfs_fh(xdrs, &objp->file)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->beginoffset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->offset)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->totalcount)) - return (FALSE); - if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) - return (FALSE); + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; } - return (TRUE); + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; } bool_t -xdr_createargs(xdrs, objp) - XDR *xdrs; - createargs *objp; +xdr_createargs (XDR *xdrs, createargs *objp) { + register int32_t *buf; - if (!xdr_diropargs(xdrs, &objp->where)) - return (FALSE); - if (!xdr_sattr(xdrs, &objp->attributes)) - return (FALSE); - return (TRUE); + if (!xdr_diropargs (xdrs, &objp->where)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; } bool_t -xdr_renameargs(xdrs, objp) - XDR *xdrs; - renameargs *objp; +xdr_renameargs (XDR *xdrs, renameargs *objp) { + register int32_t *buf; - if (!xdr_diropargs(xdrs, &objp->from)) - return (FALSE); - if (!xdr_diropargs(xdrs, &objp->to)) - return (FALSE); - return (TRUE); + if (!xdr_diropargs (xdrs, &objp->from)) + return FALSE; + if (!xdr_diropargs (xdrs, &objp->to)) + return FALSE; + return TRUE; } bool_t -xdr_linkargs(xdrs, objp) - XDR *xdrs; - linkargs *objp; +xdr_linkargs (XDR *xdrs, linkargs *objp) { + register int32_t *buf; - if (!xdr_nfs_fh(xdrs, &objp->from)) - return (FALSE); - if (!xdr_diropargs(xdrs, &objp->to)) - return (FALSE); - return (TRUE); + if (!xdr_nfs_fh (xdrs, &objp->from)) + return FALSE; + if (!xdr_diropargs (xdrs, &objp->to)) + return FALSE; + return TRUE; } bool_t -xdr_symlinkargs(xdrs, objp) - XDR *xdrs; - symlinkargs *objp; +xdr_symlinkargs (XDR *xdrs, symlinkargs *objp) { - - if (!xdr_diropargs(xdrs, &objp->from)) - return (FALSE); - if (!xdr_nfspath(xdrs, &objp->to)) - return (FALSE); - if (!xdr_sattr(xdrs, &objp->attributes)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_diropargs (xdrs, &objp->from)) + return FALSE; + if (!xdr_nfspath (xdrs, &objp->to)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; } bool_t -xdr_nfscookie(xdrs, objp) - XDR *xdrs; - nfscookie *objp; +xdr_nfscookie (XDR *xdrs, nfscookie *objp) { + register int32_t *buf; - if (!xdr_opaque(xdrs, objp->data, NFS_COOKIESIZE)) - return (FALSE); - return (TRUE); + int i; + if (!xdr_opaque (xdrs, objp->data, NFS_COOKIESIZE)) + return FALSE; + return TRUE; } bool_t -xdr_readdirargs(xdrs, objp) - XDR *xdrs; - readdirargs *objp; +xdr_readdirargs (XDR *xdrs, readdirargs *objp) { - - if (!xdr_nfs_fh(xdrs, &objp->dir)) - return (FALSE); - if (!xdr_nfscookie(xdrs, &objp->cookie)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->count)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->dir)) + return FALSE; + if (!xdr_nfscookie (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->count)) + return FALSE; + return TRUE; } bool_t -xdr_entry(xdrs, objp) - XDR *xdrs; - entry *objp; +xdr_entry (XDR *xdrs, entry *objp) { - - if (!xdr_u_int(xdrs, &objp->fileid)) - return (FALSE); - if (!xdr_filename(xdrs, &objp->name)) - return (FALSE); - if (!xdr_nfscookie(xdrs, &objp->cookie)) - return (FALSE); - if (!xdr_pointer(xdrs, (char **)&objp->nextentry, sizeof(entry), (xdrproc_t)xdr_entry)) - return (FALSE); - return (TRUE); + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_filename (xdrs, &objp->name)) + return FALSE; + if (!xdr_nfscookie (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entry), (xdrproc_t) xdr_entry)) + return FALSE; + return TRUE; } bool_t -xdr_dirlist(xdrs, objp) - XDR *xdrs; - dirlist *objp; +xdr_dirlist (XDR *xdrs, dirlist *objp) { + register int32_t *buf; - if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof(entry), (xdrproc_t)xdr_entry)) - return (FALSE); - if (!xdr_bool(xdrs, &objp->eof)) - return (FALSE); - return (TRUE); + if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entry), (xdrproc_t) xdr_entry)) + return FALSE; + if (!xdr_bool (xdrs, &objp->eof)) + return FALSE; + return TRUE; } bool_t -xdr_readdirres(xdrs, objp) - XDR *xdrs; - readdirres *objp; +xdr_readdirres (XDR *xdrs, readdirres *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_dirlist(xdrs, &objp->readdirres_u.reply)) - return (FALSE); + if (!xdr_dirlist (xdrs, &objp->readdirres_u.reply)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } bool_t -xdr_statfsokres(xdrs, objp) - XDR *xdrs; - statfsokres *objp; +xdr_statfsokres (XDR *xdrs, statfsokres *objp) { - int32_t *buf; + register int32_t *buf; + if (xdrs->x_op == XDR_ENCODE) { - buf = (int32_t *)XDR_INLINE(xdrs, 5 * BYTES_PER_XDR_UNIT); + buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->tsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bfree)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bavail)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; } else { IXDR_PUT_U_LONG(buf, objp->tsize); IXDR_PUT_U_LONG(buf, objp->bsize); @@ -629,19 +615,20 @@ xdr_statfsokres(xdrs, objp) IXDR_PUT_U_LONG(buf, objp->bfree); IXDR_PUT_U_LONG(buf, objp->bavail); } + return TRUE; } else if (xdrs->x_op == XDR_DECODE) { - buf = (int32_t *)XDR_INLINE(xdrs, 5 * BYTES_PER_XDR_UNIT); + buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); if (buf == NULL) { - if (!xdr_u_int(xdrs, &objp->tsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bfree)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bavail)) - return (FALSE); + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; } else { objp->tsize = IXDR_GET_U_LONG(buf); objp->bsize = IXDR_GET_U_LONG(buf); @@ -649,36 +636,36 @@ xdr_statfsokres(xdrs, objp) objp->bfree = IXDR_GET_U_LONG(buf); objp->bavail = IXDR_GET_U_LONG(buf); } - } else { - if (!xdr_u_int(xdrs, &objp->tsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bsize)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->blocks)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bfree)) - return (FALSE); - if (!xdr_u_int(xdrs, &objp->bavail)) - return (FALSE); + return TRUE; } - return (TRUE); + + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; + return TRUE; } bool_t -xdr_statfsres(xdrs, objp) - XDR *xdrs; - statfsres *objp; +xdr_statfsres (XDR *xdrs, statfsres *objp) { + register int32_t *buf; - if (!xdr_nfsstat(xdrs, &objp->status)) - return (FALSE); + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; switch (objp->status) { case NFS_OK: - if (!xdr_statfsokres(xdrs, &objp->statfsres_u.reply)) - return (FALSE); + if (!xdr_statfsokres (xdrs, &objp->statfsres_u.reply)) + return FALSE; break; default: break; } - return (TRUE); + return TRUE; } diff --git a/rtemsNfs/src/Makefile b/rtemsNfs/src/Makefile index 584ee00..431b5ad 100644 --- a/rtemsNfs/src/Makefile +++ b/rtemsNfs/src/Makefile @@ -7,7 +7,7 @@ # if you have CEXP set this variable to 'YES' # and some "help" info will be compiled in. -HAVE_CEXP=NO +HAVE_CEXP=YES # C source names, if any, go here -- minus the .c C_PIECES_YES=rpcio nfs sock_mbuf xdr_mbuf dirutils rpcio.modini nfs.modini cexphelp diff --git a/rtemsNfs/src/rpcio.c b/rtemsNfs/src/rpcio.c index 922ae5e..912c763 100644 --- a/rtemsNfs/src/rpcio.c +++ b/rtemsNfs/src/rpcio.c @@ -95,6 +95,13 @@ * interface is used. */ +#undef REJECT_SERVERIP_MISMATCH + /* If defined, RPC replies must come from the server + * that was queried. Eric Norum has reported problems + * with clustered NFS servers. So we disable this + * reducing paranoia... + */ + /* daemon task parameters */ #define RPCIOD_STACK 10000 #define RPCIOD_PRIO 50 @@ -1657,11 +1664,16 @@ RpcUdpXact xact = 0; if ( !(xact=xactHashTbl[i]) || xact->obuf.xid != xid || +#ifdef REJECT_SERVERIP_MISMATCH xact->server->addr.sin_addr.s_addr != fromAddr.sin_addr.s_addr || +#endif xact->server->addr.sin_port != fromAddr.sin_port ) { if (xact) { - if (xact->server->addr.sin_addr.s_addr == fromAddr.sin_addr.s_addr && + if ( +#ifdef REJECT_SERVERIP_MISMATCH + xact->server->addr.sin_addr.s_addr == fromAddr.sin_addr.s_addr && +#endif xact->server->addr.sin_port == fromAddr.sin_port && ( xact->obuf.xid == xid + XACT_HASHS || xact->obuf.xid == xid + 2*XACT_HASHS ) -- cgit v1.2.3