History

UAPI: (Scripted) Disintegrate include/linux/nfsd

David Howells committed 14 years ago

Commit 616d1ca1 parent 9e2d86511 files · +246 −203Browse files

Showing the changes to include/uapi (6 of 11 files). Show all

Unified · Split

6 files
  1. include/uapi/linux/nfsd/Kbuild +5 −0
  2. include/uapi/linux/nfsd/cld.h +56 −0
  3. include/uapi/linux/nfsd/debug.h +40 −0
  4. include/uapi/linux/nfsd/export.h +58 −0
  5. include/uapi/linux/nfsd/nfsfh.h +122 −0
  6. include/uapi/linux/nfsd/stats.h +17 −0
include/uapi/linux/nfsd/Kbuild+5−0
@@ -1 +1,6 @@
11 # UAPI Header export list
2+header-y += cld.h
3+header-y += debug.h
4+header-y += export.h
5+header-y += nfsfh.h
6+header-y += stats.h
include/uapi/linux/nfsd/cld.h+56−0
@@ -0,0 +1,56 @@
1+/*
2+ * Upcall description for nfsdcld communication
3+ *
4+ * Copyright (c) 2012 Red Hat, Inc.
5+ * Author(s): Jeff Layton <jlayton@redhat.com>
6+ *
7+ * This program is free software; you can redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; either version 2 of the License, or
10+ * (at your option) any later version.
11+ *
12+ * This program is distributed in the hope that it will be useful,
13+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+ * GNU General Public License for more details.
16+ *
17+ * You should have received a copy of the GNU General Public License
18+ * along with this program; if not, write to the Free Software
19+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20+ */
21+
22+#ifndef _NFSD_CLD_H
23+#define _NFSD_CLD_H
24+
25+/* latest upcall version available */
26+#define CLD_UPCALL_VERSION 1
27+
28+/* defined by RFC3530 */
29+#define NFS4_OPAQUE_LIMIT 1024
30+
31+enum cld_command {
32+ Cld_Create, /* create a record for this cm_id */
33+ Cld_Remove, /* remove record of this cm_id */
34+ Cld_Check, /* is this cm_id allowed? */
35+ Cld_GraceDone, /* grace period is complete */
36+};
37+
38+/* representation of long-form NFSv4 client ID */
39+struct cld_name {
40+ uint16_t cn_len; /* length of cm_id */
41+ unsigned char cn_id[NFS4_OPAQUE_LIMIT]; /* client-provided */
42+} __attribute__((packed));
43+
44+/* message struct for communication with userspace */
45+struct cld_msg {
46+ uint8_t cm_vers; /* upcall version */
47+ uint8_t cm_cmd; /* upcall command */
48+ int16_t cm_status; /* return code */
49+ uint32_t cm_xid; /* transaction id */
50+ union {
51+ int64_t cm_gracetime; /* grace period start time */
52+ struct cld_name cm_name;
53+ } __attribute__((packed)) cm_u;
54+} __attribute__((packed));
55+
56+#endif /* !_NFSD_CLD_H */
include/uapi/linux/nfsd/debug.h+40−0
@@ -0,0 +1,40 @@
1+/*
2+ * linux/include/linux/nfsd/debug.h
3+ *
4+ * Debugging-related stuff for nfsd
5+ *
6+ * Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de>
7+ */
8+
9+#ifndef _UAPILINUX_NFSD_DEBUG_H
10+#define _UAPILINUX_NFSD_DEBUG_H
11+
12+#include <linux/sunrpc/debug.h>
13+
14+/*
15+ * Enable debugging for nfsd.
16+ * Requires RPC_DEBUG.
17+ */
18+#ifdef RPC_DEBUG
19+# define NFSD_DEBUG 1
20+#endif
21+
22+/*
23+ * knfsd debug flags
24+ */
25+#define NFSDDBG_SOCK 0x0001
26+#define NFSDDBG_FH 0x0002
27+#define NFSDDBG_EXPORT 0x0004
28+#define NFSDDBG_SVC 0x0008
29+#define NFSDDBG_PROC 0x0010
30+#define NFSDDBG_FILEOP 0x0020
31+#define NFSDDBG_AUTH 0x0040
32+#define NFSDDBG_REPCACHE 0x0080
33+#define NFSDDBG_XDR 0x0100
34+#define NFSDDBG_LOCKD 0x0200
35+#define NFSDDBG_ALL 0x7FFF
36+#define NFSDDBG_NOCHANGE 0xFFFF
37+
38+
39+
40+#endif /* _UAPILINUX_NFSD_DEBUG_H */
include/uapi/linux/nfsd/export.h+58−0
@@ -0,0 +1,58 @@
1+/*
2+ * include/linux/nfsd/export.h
3+ *
4+ * Public declarations for NFS exports. The definitions for the
5+ * syscall interface are in nfsctl.h
6+ *
7+ * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
8+ */
9+
10+#ifndef _UAPINFSD_EXPORT_H
11+#define _UAPINFSD_EXPORT_H
12+
13+# include <linux/types.h>
14+
15+/*
16+ * Important limits for the exports stuff.
17+ */
18+#define NFSCLNT_IDMAX 1024
19+#define NFSCLNT_ADDRMAX 16
20+#define NFSCLNT_KEYMAX 32
21+
22+/*
23+ * Export flags.
24+ */
25+#define NFSEXP_READONLY 0x0001
26+#define NFSEXP_INSECURE_PORT 0x0002
27+#define NFSEXP_ROOTSQUASH 0x0004
28+#define NFSEXP_ALLSQUASH 0x0008
29+#define NFSEXP_ASYNC 0x0010
30+#define NFSEXP_GATHERED_WRITES 0x0020
31+/* 40 80 100 currently unused */
32+#define NFSEXP_NOHIDE 0x0200
33+#define NFSEXP_NOSUBTREECHECK 0x0400
34+#define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */
35+#define NFSEXP_MSNFS 0x1000 /* do silly things that MS clients expect; no longer supported */
36+#define NFSEXP_FSID 0x2000
37+#define NFSEXP_CROSSMOUNT 0x4000
38+#define NFSEXP_NOACL 0x8000 /* reserved for possible ACL related use */
39+/*
40+ * The NFSEXP_V4ROOT flag causes the kernel to give access only to NFSv4
41+ * clients, and only to the single directory that is the root of the
42+ * export; further lookup and readdir operations are treated as if every
43+ * subdirectory was a mountpoint, and ignored if they are not themselves
44+ * exported. This is used by nfsd and mountd to construct the NFSv4
45+ * pseudofilesystem, which provides access only to paths leading to each
46+ * exported filesystem.
47+ */
48+#define NFSEXP_V4ROOT 0x10000
49+/* All flags that we claim to support. (Note we don't support NOACL.) */
50+#define NFSEXP_ALLFLAGS 0x17E3F
51+
52+/* The flags that may vary depending on security flavor: */
53+#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
54+ | NFSEXP_ALLSQUASH \
55+ | NFSEXP_INSECURE_PORT)
56+
57+
58+#endif /* _UAPINFSD_EXPORT_H */
include/uapi/linux/nfsd/nfsfh.h+122−0
@@ -0,0 +1,122 @@
1+/*
2+ * include/linux/nfsd/nfsfh.h
3+ *
4+ * This file describes the layout of the file handles as passed
5+ * over the wire.
6+ *
7+ * Earlier versions of knfsd used to sign file handles using keyed MD5
8+ * or SHA. I've removed this code, because it doesn't give you more
9+ * security than blocking external access to port 2049 on your firewall.
10+ *
11+ * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de>
12+ */
13+
14+#ifndef _UAPI_LINUX_NFSD_FH_H
15+#define _UAPI_LINUX_NFSD_FH_H
16+
17+#include <linux/types.h>
18+#include <linux/nfs.h>
19+#include <linux/nfs2.h>
20+#include <linux/nfs3.h>
21+#include <linux/nfs4.h>
22+
23+/*
24+ * This is the old "dentry style" Linux NFSv2 file handle.
25+ *
26+ * The xino and xdev fields are currently used to transport the
27+ * ino/dev of the exported inode.
28+ */
29+struct nfs_fhbase_old {
30+ __u32 fb_dcookie; /* dentry cookie - always 0xfeebbaca */
31+ __u32 fb_ino; /* our inode number */
32+ __u32 fb_dirino; /* dir inode number, 0 for directories */
33+ __u32 fb_dev; /* our device */
34+ __u32 fb_xdev;
35+ __u32 fb_xino;
36+ __u32 fb_generation;
37+};
38+
39+/*
40+ * This is the new flexible, extensible style NFSv2/v3 file handle.
41+ * by Neil Brown <neilb@cse.unsw.edu.au> - March 2000
42+ *
43+ * The file handle starts with a sequence of four-byte words.
44+ * The first word contains a version number (1) and three descriptor bytes
45+ * that tell how the remaining 3 variable length fields should be handled.
46+ * These three bytes are auth_type, fsid_type and fileid_type.
47+ *
48+ * All four-byte values are in host-byte-order.
49+ *
50+ * The auth_type field specifies how the filehandle can be authenticated
51+ * This might allow a file to be confirmed to be in a writable part of a
52+ * filetree without checking the path from it up to the root.
53+ * Current values:
54+ * 0 - No authentication. fb_auth is 0 bytes long
55+ * Possible future values:
56+ * 1 - 4 bytes taken from MD5 hash of the remainer of the file handle
57+ * prefixed by a secret and with the important export flags.
58+ *
59+ * The fsid_type identifies how the filesystem (or export point) is
60+ * encoded.
61+ * Current values:
62+ * 0 - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number
63+ * NOTE: we cannot use the kdev_t device id value, because kdev_t.h
64+ * says we mustn't. We must break it up and reassemble.
65+ * 1 - 4 byte user specified identifier
66+ * 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED
67+ * 3 - 4 byte device id, encoded for user-space, 4 byte inode number
68+ * 4 - 4 byte inode number and 4 byte uuid
69+ * 5 - 8 byte uuid
70+ * 6 - 16 byte uuid
71+ * 7 - 8 byte inode number and 16 byte uuid
72+ *
73+ * The fileid_type identified how the file within the filesystem is encoded.
74+ * This is (will be) passed to, and set by, the underlying filesystem if it supports
75+ * filehandle operations. The filesystem must not use the value '0' or '0xff' and may
76+ * only use the values 1 and 2 as defined below:
77+ * Current values:
78+ * 0 - The root, or export point, of the filesystem. fb_fileid is 0 bytes.
79+ * 1 - 32bit inode number, 32 bit generation number.
80+ * 2 - 32bit inode number, 32 bit generation number, 32 bit parent directory inode number.
81+ *
82+ */
83+struct nfs_fhbase_new {
84+ __u8 fb_version; /* == 1, even => nfs_fhbase_old */
85+ __u8 fb_auth_type;
86+ __u8 fb_fsid_type;
87+ __u8 fb_fileid_type;
88+ __u32 fb_auth[1];
89+/* __u32 fb_fsid[0]; floating */
90+/* __u32 fb_fileid[0]; floating */
91+};
92+
93+struct knfsd_fh {
94+ unsigned int fh_size; /* significant for NFSv3.
95+ * Points to the current size while building
96+ * a new file handle
97+ */
98+ union {
99+ struct nfs_fhbase_old fh_old;
100+ __u32 fh_pad[NFS4_FHSIZE/4];
101+ struct nfs_fhbase_new fh_new;
102+ } fh_base;
103+};
104+
105+#define ofh_dcookie fh_base.fh_old.fb_dcookie
106+#define ofh_ino fh_base.fh_old.fb_ino
107+#define ofh_dirino fh_base.fh_old.fb_dirino
108+#define ofh_dev fh_base.fh_old.fb_dev
109+#define ofh_xdev fh_base.fh_old.fb_xdev
110+#define ofh_xino fh_base.fh_old.fb_xino
111+#define ofh_generation fh_base.fh_old.fb_generation
112+
113+#define fh_version fh_base.fh_new.fb_version
114+#define fh_fsid_type fh_base.fh_new.fb_fsid_type
115+#define fh_auth_type fh_base.fh_new.fb_auth_type
116+#define fh_fileid_type fh_base.fh_new.fb_fileid_type
117+#define fh_auth fh_base.fh_new.fb_auth
118+#define fh_fsid fh_base.fh_new.fb_auth
119+
120+
121+
122+#endif /* _UAPI_LINUX_NFSD_FH_H */
include/uapi/linux/nfsd/stats.h+17−0
@@ -0,0 +1,17 @@
1+/*
2+ * linux/include/linux/nfsd/stats.h
3+ *
4+ * Statistics for NFS server.
5+ *
6+ * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
7+ */
8+
9+#ifndef _UAPILINUX_NFSD_STATS_H
10+#define _UAPILINUX_NFSD_STATS_H
11+
12+#include <linux/nfs4.h>
13+
14+/* thread usage wraps very million seconds (approx one fortnight) */
15+#define NFSD_USAGE_WRAP (HZ*1000000)
16+
17+#endif /* _UAPILINUX_NFSD_STATS_H */