patch-2.1.32 linux/include/linux/nfsd/export.h
Next file: linux/include/linux/nfsd/nfsd.h
Previous file: linux/include/linux/nfsd/debug.h
Back to the patch index
Back to the overall index
- Lines: 110
- Date:
Fri Apr 4 12:19:14 1997
- Orig file:
v2.1.31/linux/include/linux/nfsd/export.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.31/linux/include/linux/nfsd/export.h linux/include/linux/nfsd/export.h
@@ -0,0 +1,109 @@
+/*
+ * include/linux/nfsd/export.h
+ *
+ * Public declarations for NFS exports. The definitions for the
+ * syscall interface are in nfsctl.h
+ *
+ * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
+ */
+
+#ifndef NFSD_EXPORT_H
+#define NFSD_EXPORT_H
+
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in.h>
+#include <linux/fs.h>
+
+/*
+ * Important limits for the exports stuff.
+ */
+#define NFSCLNT_IDMAX 1024
+#define NFSCLNT_ADDRMAX 16
+#define NFSCLNT_KEYMAX 32
+
+/*
+ * Export flags.
+ */
+#define NFSEXP_READONLY 0x0001
+#define NFSEXP_INSECURE_PORT 0x0002
+#define NFSEXP_ROOTSQUASH 0x0004
+#define NFSEXP_ALLSQUASH 0x0008
+#define NFSEXP_ASYNC 0x0010
+#define NFSEXP_GATHERED_WRITES 0x0020
+#define NFSEXP_UIDMAP 0x0040
+#define NFSEXP_KERBEROS 0x0080 /* not available */
+#define NFSEXP_SUNSECURE 0x0100
+#define NFSEXP_CROSSMNT 0x0200 /* not available */
+#define NFSEXP_ALLFLAGS 0x03FF
+
+
+#ifdef __KERNEL__
+
+/* The following are hashtable sizes and must be powers of 2 */
+#define NFSCLNT_EXPMAX 16
+
+struct svc_client {
+ struct svc_client * cl_next;
+ char cl_ident[NFSCLNT_IDMAX];
+ int cl_idlen;
+ int cl_naddr;
+ struct in_addr cl_addr[NFSCLNT_ADDRMAX];
+ struct svc_uidmap * cl_umap;
+ struct svc_export * cl_export[NFSCLNT_EXPMAX];
+};
+
+struct svc_export {
+ struct svc_export * ex_next;
+ char ex_path[NFS_MAXPATHLEN+1];
+ struct svc_export * ex_parent;
+ struct svc_client * ex_client;
+ int ex_flags;
+ struct inode * ex_inode;
+ dev_t ex_dev;
+ ino_t ex_ino;
+ uid_t ex_anon_uid;
+ gid_t ex_anon_gid;
+};
+
+#define EX_SECURE(exp) (!((exp)->ex_flags & NFSEXP_INSECURE_PORT))
+#define EX_ISSYNC(exp) (!((exp)->ex_flags & NFSEXP_ASYNC))
+#define EX_RDONLY(exp) ((exp)->ex_flags & NFSEXP_READONLY)
+#define EX_CROSSMNT(exp) ((exp)->ex_flags & NFSEXP_CROSSMNT)
+#define EX_SUNSECURE(exp) ((exp)->ex_flags & NFSEXP_SUNSECURE)
+#define EX_WGATHER(exp) ((exp)->ex_flags & NFSEXP_GATHERED_WRITES)
+
+
+/*
+ * Function declarations
+ */
+void nfsd_export_init(void);
+void nfsd_export_shutdown(void);
+void exp_readlock(void);
+int exp_writelock(void);
+void exp_unlock(void);
+struct svc_client * exp_getclient(struct sockaddr_in *sin);
+void exp_putclient(struct svc_client *clp);
+struct svc_export * exp_get(struct svc_client *clp, dev_t dev, ino_t ino);
+int exp_rootfh(struct svc_client *, dev_t, ino_t,
+ struct knfs_fh *);
+int nfserrno(int errno);
+void exp_nlmdetach(void);
+
+
+extern __inline__ int
+exp_checkaddr(struct svc_client *clp, struct in_addr addr)
+{
+ struct in_addr *ap = clp->cl_addr;
+ int i;
+
+ for (i = clp->cl_naddr; i--; ap++)
+ if (ap->s_addr == addr.s_addr)
+ return 1;
+ return 0;
+}
+
+#endif /* __KERNEL__ */
+
+#endif /* NFSD_EXPORT_H */
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov