summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch')
-rw-r--r--meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch258
1 files changed, 258 insertions, 0 deletions
diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch
new file mode 100644
index 0000000000..18e12de789
--- /dev/null
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.2beta47/017-wrs-dynamic-rpc.patch
@@ -0,0 +1,258 @@
1# Add the ability to choose alternate RPC ports at runtime and disable
2# security so that it can run as a userland process
3# Patch origin: Wind River
4
5Index: nfs-server-2.2beta47/auth_init.c
6===================================================================
7--- nfs-server-2.2beta47.orig/auth_init.c
8+++ nfs-server-2.2beta47/auth_init.c
9@@ -409,6 +409,7 @@ auth_init(char *fname)
10 fname = EXPORTSFILE;
11 auth_file = fname; /* Save for re-initialization */
12
13+#ifdef ROOT_LEVEL_SECURITY
14 /* Check protection of exports file. */
15 switch(iCheckAccess(auth_file, EXPORTSOWNERUID, EXPORTSOWNERGID)) {
16 case FACCESSWRITABLE:
17@@ -424,6 +425,7 @@ auth_init(char *fname)
18 Dprintf(L_ERROR, "exiting because of security violation.\n");
19 exit(1);
20 }
21+#endif
22
23 if ((ef = fopen(fname, "r")) == NULL) {
24 Dprintf(L_ERROR, "Could not open exports file %s: %s\n",
25Index: nfs-server-2.2beta47/nfsd.c
26===================================================================
27--- nfs-server-2.2beta47.orig/nfsd.c
28+++ nfs-server-2.2beta47/nfsd.c
29@@ -46,6 +46,7 @@ static char pathbuf_1[NFS_MAXPATHLEN + N
30
31 extern char version[];
32 static char *program_name;
33+static int nfs_prog = NFS_PROGRAM;
34
35 /*
36 * Option table
37@@ -60,6 +61,7 @@ static struct option longopts[] = {
38 { "help", 0, 0, 'h' },
39 { "log-transfers", 0, 0, 'l' },
40 { "allow-non-root", 0, 0, 'n' },
41+ { "prog", required_argument, 0, 'g' },
42 { "port", required_argument, 0, 'P' },
43 { "promiscuous", 0, 0, 'p' },
44 { "re-export", 0, 0, 'r' },
45@@ -73,9 +75,10 @@ static struct option longopts[] = {
46 { "udp-only", 0, 0, OPT_NOTCP },
47 { "loopback-only", 0, 0, OPT_LOOPBACK },
48 { "hashed-inodes", 0, 0, 'I' },
49+ { "nfs-pid", required_argument, 0, 'N' },
50 { NULL, 0, 0, 0 }
51 };
52-static const char * shortopts = "a:d:Ff:hlnP:prR:tvz::";
53+static const char * shortopts = "a:d:Ff:g:hlnN:P:prR:tvz::";
54
55 /*
56 * Table of supported versions
57@@ -1003,6 +1006,8 @@ main(int argc, char **argv)
58 int failsafe_level = 0;
59 int c;
60 int i, ncopies = 1;
61+ char *nfs_pid_file = NULL;
62+
63
64 program_name = argv[0];
65 chdir("/");
66@@ -1026,9 +1031,15 @@ main(int argc, char **argv)
67 case 'f':
68 auth_file = optarg;
69 break;
70+ case 'g':
71+ nfs_prog = atoi(optarg);
72+ break;
73 case 'l':
74 log_transfers = 1;
75 break;
76+ case 'N':
77+ nfs_pid_file = strdup(optarg);
78+ break;
79 case 'n':
80 allow_non_root = 1;
81 break;
82@@ -1114,7 +1125,7 @@ main(int argc, char **argv)
83 log_open("nfsd", foreground);
84
85 /* Initialize RPC stuff */
86- rpc_init("nfsd", NFS_PROGRAM, nfsd_versions, nfs_dispatch,
87+ rpc_init("nfsd", nfs_prog, nfsd_versions, nfs_dispatch,
88 nfsport, NFS_MAXDATA);
89
90 if (_rpcpmstart) {
91@@ -1145,7 +1156,10 @@ main(int argc, char **argv)
92 /* Initialize the AUTH module. */
93 auth_init(auth_file);
94
95- setpidpath(_PATH_NFSD_PIDFILE);
96+ if (nfs_pid_file == 0)
97+ nfs_pid_file = _PATH_NFSD_PIDFILE;
98+ setpidpath(nfs_pid_file);
99+
100 if (failsafe_level == 0) {
101 /* Start multiple copies of the server */
102 writepid(getpid(), 1);
103@@ -1215,9 +1229,11 @@ usage(FILE *fp, int n)
104 fprintf(fp,
105 "Usage: %s [-Fhnpv] [-d kind] [-f exports-file] [-P port] [--version]\n"
106 " [--debug kind] [--exports-file=file] [--port port]\n"
107+" [--prog alternate_rpc_port_nubmer]\n"
108 " [--allow-non-root] [--promiscuous] [--version] [--foreground]\n"
109 " [--re-export] [--log-transfers] [--public-root path]\n"
110 " [--no-spoof-trace] [--no-cross-mounts] [--hashed-inodes] [--help]\n"
111+" [--nfs-pid file]\n"
112 , program_name);
113 exit(n);
114 }
115@@ -1234,7 +1250,7 @@ sigterm(int sig)
116 static void
117 terminate(void)
118 {
119- rpc_exit(NFS_PROGRAM, nfsd_versions);
120+ rpc_exit(nfs_prog, nfsd_versions);
121 efs_shutdown();
122 }
123
124Index: nfs-server-2.2beta47/mountd.c
125===================================================================
126--- nfs-server-2.2beta47.orig/mountd.c
127+++ nfs-server-2.2beta47/mountd.c
128@@ -42,6 +42,7 @@ int hashed_inodes; /* dummy */
129 static void usage(FILE *, int);
130 static void terminate(void);
131 static RETSIGTYPE sigterm(int sig);
132+int mount_prog = MOUNTPROG;
133
134 /*
135 * Option table for mountd
136@@ -55,6 +56,7 @@ static struct option longopts[] =
137 { "help", 0, 0, 'h' },
138 { "allow-non-root", 0, 0, 'n' },
139 { "port", required_argument, 0, 'P' },
140+ { "prog", required_argument, 0, 'g' },
141 { "promiscous", 0, 0, 'p' },
142 { "re-export", 0, 0, 'r' },
143 { "no-spoof-trace", 0, 0, 't' },
144@@ -63,9 +65,11 @@ static struct option longopts[] =
145 { "no-cross-mounts", 0, 0, 'x' },
146 { "no-tcp", 0, 0, OPT_NOTCP },
147 { "loopback-only", 0, 0, OPT_LOOPBACK },
148+ { "mount-pid", required_argument, 0, 'N' },
149+ { "rmtab", required_argument, 0, 'R' },
150 { NULL, 0, 0, 0 }
151 };
152-static const char * shortopts = "Fd:f:hnpP:rtvz::";
153+static const char * shortopts = "Fd:f:g:hnN:pP:rRtvz::";
154
155 /*
156 * Table of supported versions
157@@ -318,6 +322,7 @@ main(int argc, char **argv)
158 int failsafe_level = 0;
159 int port = 0;
160 int c;
161+ char *mount_pid_file = NULL;
162
163 program_name = argv[0];
164
165@@ -340,9 +345,15 @@ main(int argc, char **argv)
166 case 'f':
167 auth_file = optarg;
168 break;
169+ case 'g':
170+ mount_prog = port = atoi(optarg);
171+ break;
172 case 'n':
173 allow_non_root = 1;
174 break;
175+ case 'N':
176+ mount_pid_file = strdup(optarg);
177+ break;
178 case 'P':
179 port = atoi(optarg);
180 if (port <= 0 || port > 65535) {
181@@ -354,6 +365,9 @@ main(int argc, char **argv)
182 case 'p':
183 promiscuous = 1;
184 break;
185+ case 'R':
186+ _PATH_RMTAB = strdup(optarg);
187+ break;
188 case 'r':
189 re_export = 1;
190 break;
191@@ -401,7 +415,7 @@ main(int argc, char **argv)
192 log_open("mountd", foreground);
193
194 /* Create services and register with portmapper */
195- rpc_init("mountd", MOUNTPROG, mountd_versions, mount_dispatch, port, 0);
196+ rpc_init("mountd", mount_prog, mountd_versions, mount_dispatch, port, 0);
197
198 if (_rpcpmstart) {
199 /* Always foreground mode */
200@@ -422,7 +436,9 @@ main(int argc, char **argv)
201 auth_init(auth_file);
202
203 /* Write pidfile */
204- setpidpath(_PATH_MOUNTD_PIDFILE);
205+ if (mount_pid_file == 0)
206+ mount_pid_file = _PATH_MOUNTD_PIDFILE;
207+ setpidpath(mount_pid_file);
208 writepid(getpid(), 1);
209
210 /* Failsafe mode */
211@@ -453,7 +469,9 @@ usage(FILE *fp, int n)
212 program_name);
213 fprintf(fp, " [--debug kind] [--help] [--allow-non-root]\n");
214 fprintf(fp, " [--promiscuous] [--version] [--port portnum]\n");
215+ fprintf(fp, " [--prog alternate_rpc_port_nubmer]\n");
216 fprintf(fp, " [--exports-file=file] [--no-cross-mounts]\n");
217+ fprintf(fp, " [--mount-pid file] [--rmtab file]\n");
218 exit(n);
219 }
220
221@@ -467,7 +485,7 @@ sigterm(int sig)
222 static void
223 terminate(void)
224 {
225- rpc_exit(MOUNTPROG, mountd_versions);
226+ rpc_exit(mount_prog, mountd_versions);
227 }
228
229 RETSIGTYPE
230Index: nfs-server-2.2beta47/rmtab.c
231===================================================================
232--- nfs-server-2.2beta47.orig/rmtab.c
233+++ nfs-server-2.2beta47/rmtab.c
234@@ -14,6 +14,8 @@ static char * rmtab_gethost(struct svc_r
235 static int rmtab_insert(char *, char *);
236 static void rmtab_file(char);
237
238+char *_PATH_RMTAB = _PATH_RMTAB_VAL;
239+
240 /*
241 * global top to linklist
242 */
243Index: nfs-server-2.2beta47/rmtab.h
244===================================================================
245--- nfs-server-2.2beta47.orig/rmtab.h
246+++ nfs-server-2.2beta47/rmtab.h
247@@ -11,8 +11,9 @@
248 * Location of rmtab file. /etc/rmtab is the standard on most systems.
249 */
250 #include <paths.h>
251-#ifndef _PATH_RMTAB
252-#define _PATH_RMTAB "/etc/rmtab"
253+extern char *_PATH_RMTAB;
254+#ifndef _PATH_RMTAB_VAL
255+#define _PATH_RMTAB_VAL "/etc/rmtab"
256 #endif
257
258 extern void rmtab_add_client(dirpath, struct svc_req *);