#include <rpc/pmap_prot.h>
#include <rpc/clnt.h>
-#define MNT_SENDBUFSIZE ((u_int)2048)
-#define MNT_RECVBUFSIZE ((u_int)1024)
-
typedef struct {
char **hostname;
struct sockaddr_in saddr;
u_long nfsvers_to_mnt(const u_long);
u_long mntvers_to_nfs(const u_long);
int get_socket(struct sockaddr_in *, u_int, int, int);
-CLIENT * mnt_openclnt(clnt_addr_t *, int *);
-void mnt_closeclnt(CLIENT *, int);
#endif /* _CONN_H */
else
return 0;
}
-
-CLIENT *mnt_openclnt(clnt_addr_t *mnt_server, int *msock)
-{
- struct sockaddr_in *mnt_saddr = &mnt_server->saddr;
- struct pmap *mnt_pmap = &mnt_server->pmap;
- CLIENT *clnt = NULL;
-
- /* contact the mount daemon via TCP */
- mnt_saddr->sin_port = htons((u_short)mnt_pmap->pm_port);
- *msock = get_socket(mnt_saddr, mnt_pmap->pm_prot, TRUE, FALSE);
- if (*msock == RPC_ANYSOCK) {
- if (rpc_createerr.cf_error.re_errno == EADDRINUSE)
- /* Probably in-use by a TIME_WAIT connection,
- * It is worth waiting a while and trying again.
- */
- rpc_createerr.cf_stat = RPC_TIMEDOUT;
- return NULL;
- }
-
- switch (mnt_pmap->pm_prot) {
- case IPPROTO_UDP:
- clnt = clntudp_bufcreate(mnt_saddr,
- mnt_pmap->pm_prog, mnt_pmap->pm_vers,
- RETRY_TIMEOUT, msock,
- MNT_SENDBUFSIZE, MNT_RECVBUFSIZE);
- break;
- case IPPROTO_TCP:
- clnt = clnttcp_create(mnt_saddr,
- mnt_pmap->pm_prog, mnt_pmap->pm_vers,
- msock,
- MNT_SENDBUFSIZE, MNT_RECVBUFSIZE);
- break;
- }
- if (clnt) {
- /* try to mount hostname:dirname */
- clnt->cl_auth = authunix_create_default();
- return clnt;
- }
- return NULL;
-}
-
-void mnt_closeclnt(CLIENT *clnt, int msock)
-{
- auth_destroy(clnt->cl_auth);
- clnt_destroy(clnt);
- close(msock);
-}
-
return 1;
return 0;
}
+
+CLIENT *mnt_openclnt(clnt_addr_t *mnt_server, int *msock)
+{
+ struct sockaddr_in *mnt_saddr = &mnt_server->saddr;
+ struct pmap *mnt_pmap = &mnt_server->pmap;
+ CLIENT *clnt = NULL;
+
+ mnt_saddr->sin_port = htons((u_short)mnt_pmap->pm_port);
+ *msock = get_socket(mnt_saddr, mnt_pmap->pm_prot, TRUE, FALSE);
+ if (*msock == RPC_ANYSOCK) {
+ if (rpc_createerr.cf_error.re_errno == EADDRINUSE)
+ /*
+ * Probably in-use by a TIME_WAIT connection,
+ * It is worth waiting a while and trying again.
+ */
+ rpc_createerr.cf_stat = RPC_TIMEDOUT;
+ return NULL;
+ }
+
+ switch (mnt_pmap->pm_prot) {
+ case IPPROTO_UDP:
+ clnt = clntudp_bufcreate(mnt_saddr,
+ mnt_pmap->pm_prog, mnt_pmap->pm_vers,
+ RETRY_TIMEOUT, msock,
+ MNT_SENDBUFSIZE, MNT_RECVBUFSIZE);
+ break;
+ case IPPROTO_TCP:
+ clnt = clnttcp_create(mnt_saddr,
+ mnt_pmap->pm_prog, mnt_pmap->pm_vers,
+ msock,
+ MNT_SENDBUFSIZE, MNT_RECVBUFSIZE);
+ break;
+ }
+ if (clnt) {
+ /* try to mount hostname:dirname */
+ clnt->cl_auth = authunix_create_default();
+ return clnt;
+ }
+ return NULL;
+}
+
+void mnt_closeclnt(CLIENT *clnt, int msock)
+{
+ auth_destroy(clnt->cl_auth);
+ clnt_destroy(clnt);
+ close(msock);
+}
#include "conn.h"
#include "mount.h"
+#define MNT_SENDBUFSIZE (2048U)
+#define MNT_RECVBUFSIZE (1024U)
+
int probe_bothports(clnt_addr_t *, clnt_addr_t *);
int nfs_gethostbyname(const char *, struct sockaddr_in *);
int nfs_call_umount(clnt_addr_t *, dirpath *);
int start_statd(void);
+
+CLIENT *mnt_openclnt(clnt_addr_t *, int *);
+void mnt_closeclnt(CLIENT *, int);