summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2014-11-29 15:57:31 +0000
committertrasz <trasz@FreeBSD.org>2014-11-29 15:57:31 +0000
commit39035328b42ac5a7853e743eee2701f261ef486f (patch)
tree0d6e705acbdf8897199ee0797736ab49f70ae46c
parentabb884ffe09ee2045c10aefdb17c1b476cd95833 (diff)
downloadFreeBSD-src-39035328b42ac5a7853e743eee2701f261ef486f.zip
FreeBSD-src-39035328b42ac5a7853e743eee2701f261ef486f.tar.gz
MFC r273896:
Build mount_nfs(8) with WARNS=6. Sponsored by: The FreeBSD Foundation
-rw-r--r--sbin/mount_nfs/Makefile1
-rw-r--r--sbin/mount_nfs/mount_nfs.c108
2 files changed, 59 insertions, 50 deletions
diff --git a/sbin/mount_nfs/Makefile b/sbin/mount_nfs/Makefile
index cccc517..eceed2b 100644
--- a/sbin/mount_nfs/Makefile
+++ b/sbin/mount_nfs/Makefile
@@ -10,7 +10,6 @@ MLINKS= mount_nfs.8 mount_oldnfs.8
MOUNT= ${.CURDIR}/../mount
UMNTALL= ${.CURDIR}/../../usr.sbin/rpc.umntall
CFLAGS+= -DNFS -I${MOUNT} -I${UMNTALL}
-WARNS?= 3
LINKS= ${BINDIR}/mount_nfs ${BINDIR}/mount_oldnfs
diff --git a/sbin/mount_nfs/mount_nfs.c b/sbin/mount_nfs/mount_nfs.c
index fb986ce..7f53581 100644
--- a/sbin/mount_nfs/mount_nfs.c
+++ b/sbin/mount_nfs/mount_nfs.c
@@ -79,7 +79,7 @@ __FBSDID("$FreeBSD$");
#include "mounttab.h"
/* Table for af,sotype -> netid conversions. */
-struct nc_protos {
+static struct nc_protos {
const char *netid;
int af;
int sotype;
@@ -102,20 +102,21 @@ struct nfhret {
#define ISBGRND 2
#define OF_NOINET4 4
#define OF_NOINET6 8
-int retrycnt = -1;
-int opflags = 0;
-int nfsproto = IPPROTO_TCP;
-int mnttcp_ok = 1;
-int noconn = 0;
-char *portspec = NULL; /* Server nfs port; NULL means look up via rpcbind. */
-struct sockaddr *addr;
-int addrlen = 0;
-u_char *fh = NULL;
-int fhsize = 0;
-int secflavor = -1;
-int got_principal = 0;
-
-enum mountmode {
+static int retrycnt = -1;
+static int opflags = 0;
+static int nfsproto = IPPROTO_TCP;
+static int mnttcp_ok = 1;
+static int noconn = 0;
+/* The 'portspec' is the server nfs port; NULL means look up via rpcbind. */
+static const char *portspec = NULL;
+static struct sockaddr *addr;
+static int addrlen = 0;
+static u_char *fh = NULL;
+static int fhsize = 0;
+static int secflavor = -1;
+static int got_principal = 0;
+
+static enum mountmode {
ANY,
V2,
V3,
@@ -130,8 +131,8 @@ enum tryret {
TRYRET_LOCALERR /* Local failure. */
};
-static int sec_name_to_num(char *sec);
-static char *sec_num_to_name(int num);
+static int sec_name_to_num(const char *sec);
+static const char *sec_num_to_name(int num);
static int getnfsargs(char *, struct iovec **iov, int *iovlen);
/* void set_rpc_maxgrouplist(int); */
static struct netconfig *getnetconf_cached(const char *netid);
@@ -149,9 +150,10 @@ main(int argc, char *argv[])
int c;
struct iovec *iov;
int num, iovlen;
- char *name, *p, *spec, *fstype;
+ char *mntname, *p, *spec, *tmp;
char mntpath[MAXPATHLEN], errmsg[255];
- char hostname[MAXHOSTNAMELEN + 1], *gssname, gssn[MAXHOSTNAMELEN + 50];
+ char hostname[MAXHOSTNAMELEN + 1], gssn[MAXHOSTNAMELEN + 50];
+ const char *fstype, *gssname;
iov = NULL;
iovlen = 0;
@@ -226,7 +228,7 @@ main(int argc, char *argv[])
while (opt) {
char *pval = NULL;
char *pnextopt = NULL;
- char *val = "";
+ const char *val = "";
pass_flag_to_nmount = 1;
pnextopt = strchr(opt, ',');
if (pnextopt != NULL) {
@@ -276,10 +278,10 @@ main(int argc, char *argv[])
portspec = "2049";
} else if (strcmp(opt, "port") == 0) {
pass_flag_to_nmount=0;
- asprintf(&portspec, "%d",
- atoi(val));
- if (portspec == NULL)
+ asprintf(&tmp, "%d", atoi(val));
+ if (tmp == NULL)
err(1, "asprintf");
+ portspec = tmp;
} else if (strcmp(opt, "principal") == 0) {
got_principal = 1;
} else if (strcmp(opt, "proto") == 0) {
@@ -364,9 +366,11 @@ main(int argc, char *argv[])
}
pass_flag_to_nmount=0;
}
- if (pass_flag_to_nmount)
- build_iovec(&iov, &iovlen, opt, val,
+ if (pass_flag_to_nmount) {
+ build_iovec(&iov, &iovlen, opt,
+ __DECONST(void *, val),
strlen(val) + 1);
+ }
opt = pnextopt;
}
}
@@ -426,7 +430,7 @@ main(int argc, char *argv[])
}
spec = *argv++;
- name = *argv;
+ mntname = *argv;
if (retrycnt == -1)
/* The default is to keep retrying forever. */
@@ -455,18 +459,19 @@ main(int argc, char *argv[])
hostname);
gssname = gssn;
}
- build_iovec(&iov, &iovlen, "gssname", gssname,
- strlen(gssname) + 1);
+ build_iovec(&iov, &iovlen, "gssname",
+ __DECONST(void *, gssname), strlen(gssname) + 1);
}
if (!getnfsargs(spec, &iov, &iovlen))
exit(1);
/* resolve the mountpoint with realpath(3) */
- if (checkpath(name, mntpath) != 0)
+ if (checkpath(mntname, mntpath) != 0)
err(1, "%s", mntpath);
- build_iovec(&iov, &iovlen, "fstype", fstype, (size_t)-1);
+ build_iovec(&iov, &iovlen, "fstype",
+ __DECONST(void *, fstype), (size_t)-1);
build_iovec(&iov, &iovlen, "fspath", mntpath, (size_t)-1);
build_iovec(&iov, &iovlen, "errmsg", errmsg, sizeof(errmsg));
@@ -477,7 +482,7 @@ main(int argc, char *argv[])
}
static int
-sec_name_to_num(char *sec)
+sec_name_to_num(const char *sec)
{
if (!strcmp(sec, "krb5"))
return (RPCSEC_GSS_KRB5);
@@ -490,7 +495,7 @@ sec_name_to_num(char *sec)
return (-1);
}
-static char *
+static const char *
sec_num_to_name(int flavor)
{
switch (flavor) {
@@ -674,10 +679,9 @@ nfs_tryproto(struct addrinfo *ai, char *hostp, char *spec, char **errstr,
struct rpc_err rpcerr;
CLIENT *clp;
struct netconfig *nconf, *nconf_mnt;
- const char *netid, *netid_mnt;
- char *secname;
+ const char *netid, *netid_mnt, *secname;
int doconnect, nfsvers, mntvers, sotype;
- enum clnt_stat stat;
+ enum clnt_stat clntstat;
enum mountmode trymntmode;
sotype = 0;
@@ -721,6 +725,7 @@ nfs_tryproto(struct addrinfo *ai, char *hostp, char *spec, char **errstr,
tryagain:
if (trymntmode == V4) {
nfsvers = 4;
+ mntvers = 3; /* Workaround for GCC. */
} else if (trymntmode == V2) {
nfsvers = 2;
mntvers = 1;
@@ -780,10 +785,10 @@ tryagain:
try.tv_sec = 10;
try.tv_usec = 0;
- stat = clnt_call(clp, NFSPROC_NULL, (xdrproc_t)xdr_void, NULL,
+ clntstat = clnt_call(clp, NFSPROC_NULL, (xdrproc_t)xdr_void, NULL,
(xdrproc_t)xdr_void, NULL, try);
- if (stat != RPC_SUCCESS) {
- if (stat == RPC_PROGVERSMISMATCH && trymntmode == ANY) {
+ if (clntstat != RPC_SUCCESS) {
+ if (clntstat == RPC_PROGVERSMISMATCH && trymntmode == ANY) {
clnt_destroy(clp);
trymntmode = V2;
goto tryagain;
@@ -792,7 +797,7 @@ tryagain:
snprintf(errbuf, sizeof errbuf, "[%s] %s:%s: %s", netid,
hostp, spec, clnt_sperror(clp, "NFSPROC_NULL"));
clnt_destroy(clp);
- return (returncode(stat, &rpcerr));
+ return (returncode(clntstat, &rpcerr));
}
clnt_destroy(clp);
@@ -812,8 +817,10 @@ tryagain:
build_iovec(iov, iovlen, "addr", addr, addrlen);
secname = sec_num_to_name(secflavor);
- if (secname != NULL)
- build_iovec(iov, iovlen, "sec", secname, (size_t)-1);
+ if (secname != NULL) {
+ build_iovec(iov, iovlen, "sec",
+ __DECONST(void *, secname), (size_t)-1);
+ }
build_iovec(iov, iovlen, "nfsv4", NULL, 0);
build_iovec(iov, iovlen, "dirpath", spec, (size_t)-1);
@@ -833,12 +840,12 @@ tryagain:
clp->cl_auth = authsys_create_default();
nfhret.auth = secflavor;
nfhret.vers = mntvers;
- stat = clnt_call(clp, MOUNTPROC_MNT, (xdrproc_t)xdr_dir, spec,
+ clntstat = clnt_call(clp, MOUNTPROC_MNT, (xdrproc_t)xdr_dir, spec,
(xdrproc_t)xdr_fh, &nfhret,
try);
auth_destroy(clp->cl_auth);
- if (stat != RPC_SUCCESS) {
- if (stat == RPC_PROGVERSMISMATCH && trymntmode == ANY) {
+ if (clntstat != RPC_SUCCESS) {
+ if (clntstat == RPC_PROGVERSMISMATCH && trymntmode == ANY) {
clnt_destroy(clp);
trymntmode = V2;
goto tryagain;
@@ -847,7 +854,7 @@ tryagain:
snprintf(errbuf, sizeof errbuf, "[%s] %s:%s: %s", netid_mnt,
hostp, spec, clnt_sperror(clp, "RPCPROG_MNT"));
clnt_destroy(clp);
- return (returncode(stat, &rpcerr));
+ return (returncode(clntstat, &rpcerr));
}
clnt_destroy(clp);
@@ -873,8 +880,10 @@ tryagain:
build_iovec(iov, iovlen, "addr", addr, addrlen);
build_iovec(iov, iovlen, "fh", fh, fhsize);
secname = sec_num_to_name(nfhret.auth);
- if (secname)
- build_iovec(iov, iovlen, "sec", secname, (size_t)-1);
+ if (secname) {
+ build_iovec(iov, iovlen, "sec",
+ __DECONST(void *, secname), (size_t)-1);
+ }
if (nfsvers == 3)
build_iovec(iov, iovlen, "nfsv3", NULL, 0);
@@ -886,9 +895,10 @@ tryagain:
* return code.
*/
static enum tryret
-returncode(enum clnt_stat stat, struct rpc_err *rpcerr)
+returncode(enum clnt_stat clntstat, struct rpc_err *rpcerr)
{
- switch (stat) {
+
+ switch (clntstat) {
case RPC_TIMEDOUT:
return (TRYRET_TIMEOUT);
case RPC_PMAPFAILURE:
OpenPOWER on IntegriCloud