NFS update
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4746 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
6d58ba972f
commit
bab803e9fd
@ -75,7 +75,7 @@ struct nfsmount
|
||||
sem_t nm_sem; /* Used to assume thread-safe access */
|
||||
int nm_numgrps; /* Max. size of groupslist */
|
||||
nfsfh_t nm_fh; /* File handle of root dir */
|
||||
char *nm_path; /* server's path of the directory being mount */
|
||||
char nm_path[90]; /* server's path of the directory being mount */
|
||||
int nm_fhsize; /* Size of root file handle */
|
||||
struct rpcclnt *nm_rpcclnt; /* rpc state */
|
||||
struct socket *nm_so; /* Rpc socket */
|
||||
|
@ -142,9 +142,9 @@ struct nfsnode
|
||||
struct timespec nf_mtim;
|
||||
off_t nd_direof; /* Directory EOF offset cache */
|
||||
} n_un2;
|
||||
short n_fhsize; /* size in bytes, of fh */
|
||||
//short n_fhsize; /* size in bytes, of fh */
|
||||
short n_flag; /* Flag for locking.. */
|
||||
nfsfh_t n_fh; /* Small File Handle */
|
||||
//nfsfh_t n_fh; /* Small File Handle */
|
||||
time_t n_accstamp; /* Access cache timestamp */
|
||||
uid_t n_accuid; /* Last access requester */
|
||||
int n_accmode; /* Last mode requested */
|
||||
|
@ -632,14 +632,8 @@ struct READDIR3resok
|
||||
struct dirlist3 reply;
|
||||
};
|
||||
|
||||
struct FSINFOargs
|
||||
struct FS3args
|
||||
{
|
||||
nfsfh_t fsroot;
|
||||
};
|
||||
|
||||
struct FSSTAT3args
|
||||
{
|
||||
nfsfh_t fsroot;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -141,9 +141,9 @@ int nfs_connect(struct nfsmount *nmp)
|
||||
nfsmnt_to_rpcclnt(nmp->nm_flag, rpc->rc_flag, NOCONN);
|
||||
nfsmnt_to_rpcclnt(nmp->nm_flag, rpc->rc_flag, DUMBTIMR);
|
||||
|
||||
//rpc->rc_flag |= RPCCLNT_REDIRECT; /* Make this a mount option. */
|
||||
//rpc->rc_flag |= RPCCLNT_REDIRECT; /* Make this a mount option. */
|
||||
|
||||
rpc->rc_authtype = RPCAUTH_NULL; /* for now */
|
||||
//rpc->rc_authtype = RPCAUTH_NULL; /* for now */
|
||||
rpc->rc_path = nmp->nm_path;
|
||||
rpc->rc_name = &nmp->nm_nam;
|
||||
|
||||
@ -152,7 +152,7 @@ int nfs_connect(struct nfsmount *nmp)
|
||||
rpc->rc_rsize = (nmp->nm_rsize > nmp->nm_readdirsize) ?
|
||||
nmp->nm_rsize : nmp->nm_readdirsize;
|
||||
rpc->rc_wsize = nmp->nm_wsize;
|
||||
rpc->rc_deadthresh = nmp->nm_deadthresh;
|
||||
//rpc->rc_deadthresh = nmp->nm_deadthresh;
|
||||
rpc->rc_timeo = nmp->nm_timeo;
|
||||
rpc->rc_retry = nmp->nm_retry;
|
||||
|
||||
@ -180,29 +180,31 @@ void nfs_safedisconnect(struct nfsmount *nmp)
|
||||
}
|
||||
#endif
|
||||
|
||||
int nfs_request(struct nfsmount *nmp, int procnum, void *datain, void **dataout)
|
||||
int nfs_request(struct nfsmount *nmp, int procnum, FAR const void *datain,
|
||||
void *dataout)
|
||||
{
|
||||
int error;
|
||||
struct rpcclnt *clnt= nmp->nm_rpcclnt;
|
||||
struct rpc_reply reply;
|
||||
struct rpc_reply_header replyh;
|
||||
int trylater_delay;
|
||||
|
||||
tryagain:
|
||||
|
||||
memset(&reply, 0, sizeof(reply));
|
||||
memset(&replyh, 0, sizeof(struct rpc_reply_header));
|
||||
|
||||
error = rpcclnt_request(clnt, procnum, nmp->nm_rpcclnt->rc_prog->prog_id,
|
||||
nmp->nm_rpcclnt->rc_prog->prog_version, &reply, datain);
|
||||
nmp->nm_rpcclnt->rc_prog->prog_version, dataout,
|
||||
datain);
|
||||
if (error != 0)
|
||||
{
|
||||
goto out;
|
||||
}
|
||||
|
||||
*dataout = (void *)reply.stat.where;
|
||||
bcopy(dataout, &replyh, sizeof(replyh));
|
||||
|
||||
if (reply.rpc_verfi.authtype != 0)
|
||||
if (replyh.rpc_verfi.authtype != 0)
|
||||
{
|
||||
error = fxdr_unsigned(int, reply.rpc_verfi.authtype);
|
||||
error = fxdr_unsigned(int, replyh.rpc_verfi.authtype);
|
||||
|
||||
if ((nmp->nm_flag & NFSMNT_NFSV3) && error == NFSERR_TRYLATER)
|
||||
{
|
||||
@ -240,9 +242,13 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
#undef COMP
|
||||
#ifdef COMP
|
||||
|
||||
/* terminate any outstanding RPCs. */
|
||||
|
||||
int nfs_nmcancelreqs(struct nfsmount *nmp)
|
||||
{
|
||||
return rpcclnt_cancelreqs(nmp->nm_rpcclnt);
|
||||
return 0; //rpcclnt_cancelreqs(nmp->nm_rpcclnt);
|
||||
}
|
||||
#endif
|
@ -61,9 +61,11 @@ EXTERN void nfs_disconnect(struct nfsmount *);
|
||||
EXTERN int nfs_sigintr(struct nfsmount *, struct nfsreq *, cthread_t *);
|
||||
EXTERN void nfs_safedisconnect(struct nfsmount *);
|
||||
#endif
|
||||
EXTERN int nfs_request(struct nfsmount *, int, void *, void **);
|
||||
EXTERN int nfs_request(struct nfsmount *, int, FAR const void *, void *);
|
||||
#undef COMP
|
||||
#ifdef COMP
|
||||
EXTERN int nfs_nmcancelreqs(struct nfsmount *);
|
||||
|
||||
#endif
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
@ -593,7 +593,7 @@ int nfs_readdirrpc(struct nfsmount *nmp, struct nfsnode *np,
|
||||
int error = 0;
|
||||
void *datareply;
|
||||
struct READDIR3args readir;
|
||||
struct READDIR3resok *resok;
|
||||
struct READDIR3resok *resok = NULL;
|
||||
|
||||
/* Loop around doing readdir rpc's of size nm_readdirsize
|
||||
* truncated to a multiple of NFS_READDIRBLKSIZ.
|
||||
@ -903,6 +903,7 @@ void nfs_decode_args(struct nfsmount *nmp, struct nfs_args *argp)
|
||||
nmp->nm_readdirsize = maxio;
|
||||
}
|
||||
|
||||
/*
|
||||
if ((argp->flags & NFSMNT_MAXGRPS) && argp->maxgrouplist >= 0 &&
|
||||
argp->maxgrouplist <= NFS_MAXGRPS)
|
||||
{
|
||||
@ -914,6 +915,7 @@ void nfs_decode_args(struct nfsmount *nmp, struct nfs_args *argp)
|
||||
{
|
||||
nmp->nm_readahead = argp->readahead;
|
||||
}
|
||||
*/
|
||||
|
||||
if (argp->flags & NFSMNT_ACREGMIN && argp->acregmin >= 0)
|
||||
{
|
||||
@ -1028,11 +1030,7 @@ int mountnfs(struct nfs_args *argp, void **handle)
|
||||
nmp->nm_acdirmin = NFS_MINATTRTIMO;
|
||||
nmp->nm_acdirmax = NFS_MAXATTRTIMO;
|
||||
nmp->nm_fh = argp->fh;
|
||||
//strncpy(&mp->mnt_stat.f_fstypename[0], mp->mnt_vfc->vfc_name, MFSNAMELEN);
|
||||
//memmove(hst, mp->mnt_stat.f_mntfromname, MNAMELEN);
|
||||
//bcopy(pth, nmp->nm_mntonname, 90);
|
||||
nmp->nm_path = argp->path;
|
||||
//memmove(argp, &mp->mnt_stat.mount_info.nfs_args, sizeof(*argp));
|
||||
strncpy(nmp->nm_path, argp->path,90);
|
||||
nmp->nm_nam = argp->addr;
|
||||
nfs_decode_args(nmp, argp);
|
||||
|
||||
@ -1048,6 +1046,7 @@ int mountnfs(struct nfs_args *argp, void **handle)
|
||||
}
|
||||
|
||||
nmp->nm_head = np;
|
||||
|
||||
/* Set up the sockets and per-host congestion */
|
||||
|
||||
nmp->nm_sotype = argp->sotype;
|
||||
@ -1179,7 +1178,7 @@ static int nfs_statfs(struct inode *mountpt, struct statfs *sbp)
|
||||
int error = 0;
|
||||
uint64_t tquad;
|
||||
void *datareply;
|
||||
struct FSSTAT3args fsstat;
|
||||
struct FS3args fsstat;
|
||||
|
||||
/* Sanity checks */
|
||||
|
||||
@ -1210,7 +1209,7 @@ static int nfs_statfs(struct inode *mountpt, struct statfs *sbp)
|
||||
}
|
||||
|
||||
nfsstats.rpccnt[NFSPROC_FSSTAT]++;
|
||||
memset(&fsstat, 0, sizeof(struct FSSTAT3args));
|
||||
memset(&fsstat, 0, sizeof(struct FS3args));
|
||||
fsstat.fsroot = nmp->nm_fh;
|
||||
error = nfs_request(nmp, NFSPROC_FSSTAT, &fsstat, &datareply);
|
||||
if (error)
|
||||
@ -1542,7 +1541,7 @@ errout_with_semaphore:
|
||||
static int nfs_fsinfo(struct inode *mountpt, const char *relpath, struct stat *buf)
|
||||
{
|
||||
struct nfsv3_fsinfo *fsp;
|
||||
struct FSINFOargs fsinfo;
|
||||
struct FS3args fsinfo;
|
||||
struct nfsmount *nmp;
|
||||
uint32_t pref, max;
|
||||
int error = 0;
|
||||
|
348
fs/nfs/rpc.h
348
fs/nfs/rpc.h
@ -74,6 +74,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "nfs_proto.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
@ -99,7 +100,7 @@
|
||||
#define PMAPPROG 100000
|
||||
#define PMAPVERS 2
|
||||
#define PMAPPROC_NULL 0
|
||||
#define MAPPROC_SET 1
|
||||
#define PMAPPROC_SET 1
|
||||
#define PMAPPROC_UNSET 2
|
||||
#define PMAPPROC_GETPORT 3
|
||||
#define PMAPPROC_DUMP 4
|
||||
@ -109,6 +110,12 @@
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
struct xidr
|
||||
{
|
||||
uint32_t xid;
|
||||
};
|
||||
|
||||
/* PMAP headers */
|
||||
struct call_args_pmap
|
||||
{
|
||||
uint32_t prog;
|
||||
@ -117,18 +124,236 @@ struct call_args_pmap
|
||||
uint32_t port;
|
||||
};
|
||||
|
||||
struct call_result_pmap
|
||||
struct call_result_pmap
|
||||
{
|
||||
uint16_t port;
|
||||
unsigned char *extradata;
|
||||
};
|
||||
|
||||
struct call_result_mount
|
||||
/* MOUNTD headers */
|
||||
|
||||
struct call_args_mount
|
||||
{
|
||||
char *rpath;
|
||||
uint8_t len;
|
||||
};
|
||||
|
||||
struct call_result_mount
|
||||
{
|
||||
uint16_t problem;
|
||||
nfsfh_t fhandle;
|
||||
};
|
||||
|
||||
/* Generic RPC call headers */
|
||||
|
||||
enum auth_flavor
|
||||
{
|
||||
AUTH_NONE = 0,
|
||||
AUTH_SYS = 1,
|
||||
AUTH_SHORT = 2
|
||||
/* and more to be defined */
|
||||
};
|
||||
|
||||
struct rpc_auth_info
|
||||
{
|
||||
enum auth_flavor authtype; /* auth type */
|
||||
uint32_t authlen; /* auth length */
|
||||
};
|
||||
|
||||
struct auth_unix
|
||||
{
|
||||
int32_t stamp;
|
||||
unsigned char hostname; /* null */
|
||||
int32_t uid;
|
||||
int32_t gid;
|
||||
int32_t gidlist; /* null */
|
||||
};
|
||||
|
||||
struct rpc_call_header
|
||||
{
|
||||
uint32_t rp_xid; /* request transaction id */
|
||||
int32_t rp_direction; /* call direction (0) */
|
||||
uint32_t rp_rpcvers; /* rpc version (2) */
|
||||
uint32_t rp_prog; /* program */
|
||||
uint32_t rp_vers; /* version */
|
||||
uint32_t rp_proc; /* procedure */
|
||||
struct rpc_auth_info rpc_auth;
|
||||
#ifdef CONFIG_NFS_UNIX_AUTH
|
||||
struct auth_unix rpc_unix;
|
||||
#endif
|
||||
struct rpc_auth_info rpc_verf;
|
||||
};
|
||||
|
||||
struct rpc_call_pmap
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct call_args_pmap pmap;
|
||||
};
|
||||
|
||||
struct rpc_call_mount
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct call_args_mount mount;
|
||||
};
|
||||
|
||||
struct rpc_call_create
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct CREATE3args create;
|
||||
};
|
||||
|
||||
struct rpc_call_read
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct READ3args read;
|
||||
};
|
||||
|
||||
struct rpc_call_write
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct WRITE3args write;
|
||||
};
|
||||
|
||||
struct rpc_call_remove
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct REMOVE3args remove;
|
||||
};
|
||||
|
||||
struct rpc_call_rename
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct RENAME3args rename;
|
||||
};
|
||||
|
||||
struct rpc_call_mkdir
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct MKDIR3args mkdir;
|
||||
};
|
||||
|
||||
struct rpc_call_rmdir
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct RMDIR3args rmdir;
|
||||
};
|
||||
|
||||
struct rpc_call_readdir
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct READDIR3args readdir;
|
||||
};
|
||||
|
||||
struct rpc_call_fs
|
||||
{
|
||||
struct rpc_call_header ch;
|
||||
struct FS3args fs;
|
||||
};
|
||||
|
||||
/* Generic RPC reply headers */
|
||||
|
||||
struct rpc_reply_header
|
||||
{
|
||||
uint32_t rp_xid; /* request transaction id */
|
||||
int32_t rp_direction; /* call direction (1) */
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t type;
|
||||
uint32_t status;
|
||||
|
||||
/* used only when reply == RPC_MSGDENIED and status == RPC_AUTHERR */
|
||||
|
||||
uint32_t autherr;
|
||||
|
||||
/* rpc mismatch info if reply == RPC_MSGDENIED and status == RPC_MISMATCH */
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t low;
|
||||
uint32_t high;
|
||||
} mismatch_info;
|
||||
} stat;
|
||||
|
||||
unsigned char *where;
|
||||
struct rpc_auth_info rpc_verfi;
|
||||
};
|
||||
|
||||
struct rpc_reply_pmap
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct call_result_pmap pmap;
|
||||
};
|
||||
|
||||
struct rpc_reply_mount
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct call_result_mount mount;
|
||||
};
|
||||
|
||||
struct rpc_reply_create
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct CREATE3resok create;
|
||||
};
|
||||
|
||||
struct rpc_reply_write
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct WRITE3resok write;
|
||||
};
|
||||
|
||||
struct rpc_reply_read
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct READ3resok read;
|
||||
};
|
||||
|
||||
struct rpc_reply_remove
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct REMOVE3resok remove;
|
||||
};
|
||||
|
||||
struct rpc_reply_rename
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct RENAME3resok rename;
|
||||
};
|
||||
|
||||
struct rpc_reply_mkdir
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct MKDIR3resok mkdir;
|
||||
};
|
||||
|
||||
struct rpc_reply_rmdir
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct RMDIR3resok rmdir;
|
||||
};
|
||||
|
||||
struct rpc_reply_readdir
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct READDIR3resok readdir;
|
||||
};
|
||||
|
||||
struct rpc_reply_fsinfo
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct nfsv3_fsinfo fsinfo;
|
||||
};
|
||||
|
||||
struct rpc_reply_fsstat
|
||||
{
|
||||
struct rpc_reply_header rh;
|
||||
struct nfs_statfs fsstat;
|
||||
};
|
||||
|
||||
/* RPC Client connection context. One allocated on every NFS mount.
|
||||
* Holds RPC specific information for mount.
|
||||
*/
|
||||
|
||||
struct rpc_program
|
||||
{
|
||||
uint32_t prog_id;
|
||||
@ -149,118 +374,49 @@ struct rpctask
|
||||
int r_rtt; /* RTT for rpc */
|
||||
};
|
||||
|
||||
/* Generic RPC headers */
|
||||
|
||||
struct rpc_auth_info
|
||||
{
|
||||
uint32_t authtype; /* auth type */
|
||||
uint32_t authlen; /* auth length */
|
||||
};
|
||||
|
||||
struct auth_unix
|
||||
{
|
||||
int32_t ua_time;
|
||||
int32_t ua_hostname; /* null */
|
||||
int32_t ua_uid;
|
||||
int32_t ua_gid;
|
||||
int32_t ua_gidlist; /* null */
|
||||
};
|
||||
|
||||
struct rpc_call
|
||||
{
|
||||
uint32_t rp_xid; /* request transaction id */
|
||||
int32_t rp_direction; /* call direction (0) */
|
||||
uint32_t rp_rpcvers; /* rpc version (2) */
|
||||
uint32_t rp_prog; /* program */
|
||||
uint32_t rp_vers; /* version */
|
||||
uint32_t rp_proc; /* procedure */
|
||||
unsigned char *data;
|
||||
struct rpc_auth_info rpc_auth;
|
||||
#ifdef CONFIG_NFS_UNIX_AUTH
|
||||
struct auth_unix rpc_unix;
|
||||
#endif
|
||||
struct rpc_auth_info rpc_verf;
|
||||
};
|
||||
|
||||
struct rpc_reply
|
||||
{
|
||||
uint32_t rp_xid; /* request transaction id */
|
||||
int32_t rp_direction; /* call direction (1) */
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t type;
|
||||
uint32_t status;
|
||||
|
||||
unsigned char *where; /* Data */
|
||||
|
||||
/* used only when reply == RPC_MSGDENIED and status == RPC_AUTHERR */
|
||||
|
||||
uint32_t autherr;
|
||||
|
||||
/* rpc mismatch info if reply == RPC_MSGDENIED and status == RPC_MISMATCH */
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t low;
|
||||
uint32_t high;
|
||||
} mismatch_info;
|
||||
} stat;
|
||||
|
||||
struct rpc_auth_info rpc_verfi;
|
||||
};
|
||||
|
||||
/* RPC Client connection context.
|
||||
* One allocated on every NFS mount.
|
||||
* Holds RPC specific information for mount.
|
||||
*/
|
||||
|
||||
/* XXX: please note that all pointer type variables are just set (not copied),
|
||||
* so it is up to the user to free these values */
|
||||
|
||||
struct rpcclnt
|
||||
{
|
||||
int rc_flag; /* For RPCCLNT_* flags */
|
||||
int rc_flag; /* For RPCCLNT_* flags */
|
||||
|
||||
int rc_wsize; /* Max size of the request data */
|
||||
int rc_rsize; /* Max size of the response data */
|
||||
nfsfh_t rc_fh; /* File handle of root dir */
|
||||
char *rc_path; /* server's path of the directory being mount */
|
||||
int rc_wsize; /* Max size of the request data */
|
||||
int rc_rsize; /* Max size of the response data */
|
||||
nfsfh_t rc_fh; /* File handle of root dir */
|
||||
char *rc_path; /* server's path of the directory being mount */
|
||||
|
||||
struct sockaddr *rc_name;
|
||||
struct socket *rc_so; /* Rpc socket */
|
||||
struct socket *rc_so; /* Rpc socket */
|
||||
|
||||
uint8_t rc_sotype; /* Type of socket */
|
||||
int rc_soproto; /* and protocol */
|
||||
uint8_t rc_soflags; /* pr_flags for socket protocol */
|
||||
uint8_t rc_sotype; /* Type of socket */
|
||||
int rc_soproto; /* and protocol */
|
||||
uint8_t rc_soflags; /* pr_flags for socket protocol */
|
||||
|
||||
int rc_timeo; /* Init timer for NFSMNT_DUMBTIMR */
|
||||
int rc_retry; /* Max retries */
|
||||
int rc_srtt[4]; /* Timers for rpcs */
|
||||
int rc_timeo; /* Init timer for NFSMNT_DUMBTIMR */
|
||||
int rc_retry; /* Max retries */
|
||||
int rc_srtt[4]; /* Timers for rpcs */
|
||||
int rc_sdrtt[4];
|
||||
int rc_sent; /* Request send count */
|
||||
int rc_cwnd; /* Request send window */
|
||||
int rc_timeouts; /* Request timeouts */
|
||||
int rc_sent; /* Request send count */
|
||||
int rc_cwnd; /* Request send window */
|
||||
int rc_timeouts; /* Request timeouts */
|
||||
|
||||
int rc_deadthresh; /* Threshold of timeouts-->dead server*/
|
||||
//int rc_deadthresh; /* Threshold of timeouts-->dead server*/
|
||||
|
||||
/* authentication: */
|
||||
/* currently can be RPCAUTH_NULL, RPCAUTH_KERBV4, RPCAUTH_UNIX */
|
||||
/* should be kept in XDR form */
|
||||
|
||||
int rc_authtype; /* Authenticator type */
|
||||
// int rc_authtype; /* Authenticator type */
|
||||
#ifdef CONFIG_NFS_UNIX_AUTH
|
||||
/* RPCAUTH_UNIX*/
|
||||
|
||||
struct rpc_auth_info rc_oldauth; /* authentication */
|
||||
struct rpc_auth_info rc_oldauth; /* authentication */
|
||||
#endif
|
||||
void *rc_auth;
|
||||
//void *rc_auth;
|
||||
|
||||
struct rpc_program *rc_prog;
|
||||
|
||||
//char *rc_servername;
|
||||
|
||||
int rc_proctlen; /* if == 0 then rc_proct == NULL */
|
||||
int rc_proctlen; /* if == 0 then rc_proct == NULL */
|
||||
int *rc_proct;
|
||||
};
|
||||
|
||||
@ -274,8 +430,10 @@ int rpcclnt_reconnect(struct rpctask *);
|
||||
void rpcclnt_disconnect(struct rpcclnt *);
|
||||
int rpcclnt_umount(struct rpcclnt *);
|
||||
void rpcclnt_safedisconnect(struct rpcclnt *);
|
||||
int rpcclnt_request(struct rpcclnt *, int, int, int, struct rpc_reply *, void *);
|
||||
int rpcclnt_request(struct rpcclnt *, int, int, int, void *, FAR const void *);
|
||||
#undef COMP
|
||||
#ifdef COMP
|
||||
int rpcclnt_cancelreqs(struct rpcclnt *);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _RPCCLNT_H_ */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -93,6 +93,7 @@
|
||||
#define NFS_ARGSVERSION 3 /* change when nfs_args changes */
|
||||
#define NFS_MAXFHSIZE 64
|
||||
#define NFS_PORT 2049
|
||||
#define NFS_PMAPPORT 111
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
@ -123,10 +124,10 @@ struct nfs_args
|
||||
int readdirsize; /* readdir size in bytes */
|
||||
int timeo; /* initial timeout in .1 secs */
|
||||
int retrans; /* times to retry send */
|
||||
int maxgrouplist; /* Max. size of group list */
|
||||
int readahead; /* # of blocks to readahead */
|
||||
int leaseterm; /* Term (sec) of lease */
|
||||
int deadthresh; /* Retrans threshold */
|
||||
//int maxgrouplist; /* Max. size of group list */
|
||||
//int readahead; /* # of blocks to readahead */
|
||||
//int leaseterm; /* Term (sec) of lease */
|
||||
//int deadthresh; /* Retrans threshold */
|
||||
char *path; /* server's path of the directory being mount */
|
||||
int acregmin; /* cache attrs for reg files min time */
|
||||
int acregmax; /* cache attrs for reg files max time */
|
||||
|
Loading…
Reference in New Issue
Block a user