summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/unfs3/unfs3/alternate_rpc_ports.patch
blob: 029582ea1dc9f2dbd204384a0c91de3cac7f8f15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Add ability to specify rcp port numbers

In order to run more than one unfs server on a host system, you must
be able to specify alternate rpc port numbers.

Jason Wessel <jason.wessel@windriver.com>

Upstream-Status: Pending

---
 daemon.c |   44 +++++++++++++++++++++++++++++++-------------
 mount.c  |    4 ++--
 2 files changed, 33 insertions(+), 15 deletions(-)

--- a/daemon.c
+++ b/daemon.c
@@ -78,6 +78,8 @@ int opt_testconfig = FALSE;
 struct in_addr opt_bind_addr;
 int opt_readable_executables = FALSE;
 char *opt_pid_file = NULL;
+int nfs_prog = NFS3_PROGRAM;
+int mount_prog = MOUNTPROG;
 
 /* Register with portmapper? */
 int opt_portmapper = TRUE;
@@ -206,7 +208,7 @@ static void parse_options(int argc, char
 {
 
     int opt = 0;
-    char *optstring = "bcC:de:hl:m:n:prstTuwi:";
+    char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:";
 
     while (opt != -1) {
 	opt = getopt(argc, argv, optstring);
@@ -261,8 +263,24 @@ static void parse_options(int argc, char
 		printf
 		    ("\t-r          report unreadable executables as readable\n");
 		printf("\t-T          test exports file and exit\n");
+		printf("\t-x <port>   alternate NFS RPC port\n");
+		printf("\t-y <port>   alternate MOUNTD RPC port\n");
 		exit(0);
 		break;
+	    case 'x':
+		nfs_prog = strtol(optarg, NULL, 10);
+		if (nfs_prog == 0) {
+		    fprintf(stderr, "Invalid NFS RPC port\n");
+		    exit(1);
+		}
+		break;
+	    case 'y':
+		mount_prog = strtol(optarg, NULL, 10);
+		if (mount_prog == 0) {
+		    fprintf(stderr, "Invalid MOUNTD RPC port\n");
+		    exit(1);
+		}
+		break;
 	    case 'l':
 		opt_bind_addr.s_addr = inet_addr(optarg);
 		if (opt_bind_addr.s_addr == (unsigned) -1) {
@@ -347,12 +365,12 @@ void daemon_exit(int error)
 #endif				       /* WIN32 */
 
     if (opt_portmapper) {
-	svc_unregister(MOUNTPROG, MOUNTVERS1);
-	svc_unregister(MOUNTPROG, MOUNTVERS3);
+	svc_unregister(mount_prog, MOUNTVERS1);
+	svc_unregister(mount_prog, MOUNTVERS3);
     }
 
     if (opt_portmapper) {
-	svc_unregister(NFS3_PROGRAM, NFS_V3);
+	svc_unregister(nfs_prog, NFS_V3);
     }
 
     if (error == SIGSEGV)
@@ -657,13 +675,13 @@ static void mountprog_3(struct svc_req *
 static void register_nfs_service(SVCXPRT * udptransp, SVCXPRT * tcptransp)
 {
     if (opt_portmapper) {
-	pmap_unset(NFS3_PROGRAM, NFS_V3);
+	pmap_unset(nfs_prog, NFS_V3);
     }
 
     if (udptransp != NULL) {
 	/* Register NFS service for UDP */
 	if (!svc_register
-	    (udptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3,
+	    (udptransp, nfs_prog, NFS_V3, nfs3_program_3,
 	     opt_portmapper ? IPPROTO_UDP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (NFS3_PROGRAM, NFS_V3, udp).");
@@ -674,7 +692,7 @@ static void register_nfs_service(SVCXPRT
     if (tcptransp != NULL) {
 	/* Register NFS service for TCP */
 	if (!svc_register
-	    (tcptransp, NFS3_PROGRAM, NFS_V3, nfs3_program_3,
+	    (tcptransp, nfs_prog, NFS_V3, nfs3_program_3,
 	     opt_portmapper ? IPPROTO_TCP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (NFS3_PROGRAM, NFS_V3, tcp).");
@@ -686,14 +704,14 @@ static void register_nfs_service(SVCXPRT
 static void register_mount_service(SVCXPRT * udptransp, SVCXPRT * tcptransp)
 {
     if (opt_portmapper) {
-	pmap_unset(MOUNTPROG, MOUNTVERS1);
-	pmap_unset(MOUNTPROG, MOUNTVERS3);
+	pmap_unset(mount_prog, MOUNTVERS1);
+	pmap_unset(mount_prog, MOUNTVERS3);
     }
 
     if (udptransp != NULL) {
 	/* Register MOUNT service (v1) for UDP */
 	if (!svc_register
-	    (udptransp, MOUNTPROG, MOUNTVERS1, mountprog_3,
+	    (udptransp, mount_prog, MOUNTVERS1, mountprog_3,
 	     opt_portmapper ? IPPROTO_UDP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (MOUNTPROG, MOUNTVERS1, udp).");
@@ -702,7 +720,7 @@ static void register_mount_service(SVCXP
 
 	/* Register MOUNT service (v3) for UDP */
 	if (!svc_register
-	    (udptransp, MOUNTPROG, MOUNTVERS3, mountprog_3,
+	    (udptransp, mount_prog, MOUNTVERS3, mountprog_3,
 	     opt_portmapper ? IPPROTO_UDP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (MOUNTPROG, MOUNTVERS3, udp).");
@@ -713,7 +731,7 @@ static void register_mount_service(SVCXP
     if (tcptransp != NULL) {
 	/* Register MOUNT service (v1) for TCP */
 	if (!svc_register
-	    (tcptransp, MOUNTPROG, MOUNTVERS1, mountprog_3,
+	    (tcptransp, mount_prog, MOUNTVERS1, mountprog_3,
 	     opt_portmapper ? IPPROTO_TCP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (MOUNTPROG, MOUNTVERS1, tcp).");
@@ -722,7 +740,7 @@ static void register_mount_service(SVCXP
 
 	/* Register MOUNT service (v3) for TCP */
 	if (!svc_register
-	    (tcptransp, MOUNTPROG, MOUNTVERS3, mountprog_3,
+	    (tcptransp, mount_prog, MOUNTVERS3, mountprog_3,
 	     opt_portmapper ? IPPROTO_TCP : 0)) {
 	    fprintf(stderr, "%s\n",
 		    "unable to register (MOUNTPROG, MOUNTVERS3, tcp).");
--- a/mount.c
+++ b/mount.c
@@ -155,8 +155,8 @@ mountres3 *mountproc_mnt_3_svc(dirpath *
     /* error out if not version 3 */
     if (rqstp->rq_vers != 3) {
 	logmsg(LOG_INFO,
-	       "%s attempted mount with unsupported protocol version",
-	       inet_ntoa(get_remote(rqstp)));
+	       "%s attempted mount with unsupported protocol version: %i",
+	       inet_ntoa(get_remote(rqstp)), rqstp->rq_vers);
 	result.fhs_status = MNT3ERR_INVAL;
 	return &result;
     }
OpenPOWER on IntegriCloud