summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mountd
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2015-07-04 08:40:48 +0000
committertrasz <trasz@FreeBSD.org>2015-07-04 08:40:48 +0000
commitb8c5808ce8b41c551b2416a161ff58ff4e2bccd8 (patch)
treefde2b7a47cab8f1b0758fc58aa7fd7ce84e8ab02 /usr.sbin/mountd
parentb37de404b763622e5df60992dfc18774d60e6931 (diff)
downloadFreeBSD-src-b8c5808ce8b41c551b2416a161ff58ff4e2bccd8.zip
FreeBSD-src-b8c5808ce8b41c551b2416a161ff58ff4e2bccd8.tar.gz
Staticize some stuff in mountd(8); no functional changes.
MFC after: 1 month Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'usr.sbin/mountd')
-rw-r--r--usr.sbin/mountd/mountd.c260
1 files changed, 131 insertions, 129 deletions
diff --git a/usr.sbin/mountd/mountd.c b/usr.sbin/mountd/mountd.c
index d916577..649c7d5f 100644
--- a/usr.sbin/mountd/mountd.c
+++ b/usr.sbin/mountd/mountd.c
@@ -165,97 +165,98 @@ struct fhreturn {
#define GETPORT_MAXTRY 20 /* Max tries to get a port # */
/* Global defs */
-char *add_expdir(struct dirlist **, char *, int);
-void add_dlist(struct dirlist **, struct dirlist *,
- struct grouplist *, int, struct exportlist *);
-void add_mlist(char *, char *);
-int check_dirpath(char *);
-int check_options(struct dirlist *);
-int checkmask(struct sockaddr *sa);
-int chk_host(struct dirlist *, struct sockaddr *, int *, int *, int *,
- int **);
+static char *add_expdir(struct dirlist **, char *, int);
+static void add_dlist(struct dirlist **, struct dirlist *,
+ struct grouplist *, int, struct exportlist *);
+static void add_mlist(char *, char *);
+static int check_dirpath(char *);
+static int check_options(struct dirlist *);
+static int checkmask(struct sockaddr *sa);
+static int chk_host(struct dirlist *, struct sockaddr *, int *, int *,
+ int *, int **);
static int create_service(struct netconfig *nconf);
static void complete_service(struct netconfig *nconf, char *port_str);
static void clearout_service(void);
-void del_mlist(char *hostp, char *dirp);
-struct dirlist *dirp_search(struct dirlist *, char *);
-int do_mount(struct exportlist *, struct grouplist *, int,
- struct xucred *, char *, int, struct statfs *);
-int do_opt(char **, char **, struct exportlist *, struct grouplist *,
- int *, int *, struct xucred *);
-struct exportlist *ex_search(fsid_t *);
-struct exportlist *get_exp(void);
-void free_dir(struct dirlist *);
-void free_exp(struct exportlist *);
-void free_grp(struct grouplist *);
-void free_host(struct hostlist *);
-void get_exportlist(void);
-int get_host(char *, struct grouplist *, struct grouplist *);
-struct hostlist *get_ht(void);
-int get_line(void);
-void get_mountlist(void);
-int get_net(char *, struct netmsk *, int);
-void getexp_err(struct exportlist *, struct grouplist *);
-struct grouplist *get_grp(void);
-void hang_dirp(struct dirlist *, struct grouplist *,
+static void del_mlist(char *hostp, char *dirp);
+static struct dirlist *dirp_search(struct dirlist *, char *);
+static int do_mount(struct exportlist *, struct grouplist *, int,
+ struct xucred *, char *, int, struct statfs *);
+static int do_opt(char **, char **, struct exportlist *,
+ struct grouplist *, int *, int *, struct xucred *);
+static struct exportlist *ex_search(fsid_t *);
+static struct exportlist *get_exp(void);
+static void free_dir(struct dirlist *);
+static void free_exp(struct exportlist *);
+static void free_grp(struct grouplist *);
+static void free_host(struct hostlist *);
+static void get_exportlist(void);
+static int get_host(char *, struct grouplist *, struct grouplist *);
+static struct hostlist *get_ht(void);
+static int get_line(void);
+static void get_mountlist(void);
+static int get_net(char *, struct netmsk *, int);
+static void getexp_err(struct exportlist *, struct grouplist *);
+static struct grouplist *get_grp(void);
+static void hang_dirp(struct dirlist *, struct grouplist *,
struct exportlist *, int);
-void huphandler(int sig);
-int makemask(struct sockaddr_storage *ssp, int bitlen);
-void mntsrv(struct svc_req *, SVCXPRT *);
-void nextfield(char **, char **);
-void out_of_mem(void);
-void parsecred(char *, struct xucred *);
-int parsesec(char *, struct exportlist *);
-int put_exlist(struct dirlist *, XDR *, struct dirlist *, int *, int);
-void *sa_rawaddr(struct sockaddr *sa, int *nbytes);
-int sacmp(struct sockaddr *sa1, struct sockaddr *sa2,
- struct sockaddr *samask);
-int scan_tree(struct dirlist *, struct sockaddr *);
-static void usage(void);
-int xdr_dir(XDR *, char *);
-int xdr_explist(XDR *, caddr_t);
-int xdr_explist_brief(XDR *, caddr_t);
-int xdr_explist_common(XDR *, caddr_t, int);
-int xdr_fhs(XDR *, caddr_t);
-int xdr_mlist(XDR *, caddr_t);
-void terminate(int);
-
-struct exportlist *exphead;
-struct mountlist *mlhead;
-struct grouplist *grphead;
-char *exnames_default[2] = { _PATH_EXPORTS, NULL };
-char **exnames;
-char **hosts = NULL;
-struct xucred def_anon = {
+static void huphandler(int sig);
+static int makemask(struct sockaddr_storage *ssp, int bitlen);
+static void mntsrv(struct svc_req *, SVCXPRT *);
+static void nextfield(char **, char **);
+static void out_of_mem(void);
+static void parsecred(char *, struct xucred *);
+static int parsesec(char *, struct exportlist *);
+static int put_exlist(struct dirlist *, XDR *, struct dirlist *,
+ int *, int);
+static void *sa_rawaddr(struct sockaddr *sa, int *nbytes);
+static int sacmp(struct sockaddr *sa1, struct sockaddr *sa2,
+ struct sockaddr *samask);
+static int scan_tree(struct dirlist *, struct sockaddr *);
+static void usage(void);
+static int xdr_dir(XDR *, char *);
+static int xdr_explist(XDR *, caddr_t);
+static int xdr_explist_brief(XDR *, caddr_t);
+static int xdr_explist_common(XDR *, caddr_t, int);
+static int xdr_fhs(XDR *, caddr_t);
+static int xdr_mlist(XDR *, caddr_t);
+static void terminate(int);
+
+static struct exportlist *exphead;
+static struct mountlist *mlhead;
+static struct grouplist *grphead;
+static char *exnames_default[2] = { _PATH_EXPORTS, NULL };
+static char **exnames;
+static char **hosts = NULL;
+static struct xucred def_anon = {
XUCRED_VERSION,
(uid_t)-2,
1,
{ (gid_t)-2 },
NULL
};
-int force_v2 = 0;
-int resvport_only = 1;
-int nhosts = 0;
-int dir_only = 1;
-int dolog = 0;
-int got_sighup = 0;
-int xcreated = 0;
-
-char *svcport_str = NULL;
-static int mallocd_svcport = 0;
-static int *sock_fd;
-static int sock_fdcnt;
-static int sock_fdpos;
-static int suspend_nfsd = 0;
-
-int opt_flags;
+static int force_v2 = 0;
+static int resvport_only = 1;
+static int nhosts = 0;
+static int dir_only = 1;
+static int dolog = 0;
+static int got_sighup = 0;
+static int xcreated = 0;
+
+static char *svcport_str = NULL;
+static int mallocd_svcport = 0;
+static int *sock_fd;
+static int sock_fdcnt;
+static int sock_fdpos;
+static int suspend_nfsd = 0;
+
+static int opt_flags;
static int have_v6 = 1;
-int v4root_phase = 0;
-char v4root_dirpath[PATH_MAX + 1];
-int has_publicfh = 0;
+static int v4root_phase = 0;
+static char v4root_dirpath[PATH_MAX + 1];
+static int has_publicfh = 0;
-struct pidfh *pfh = NULL;
+static struct pidfh *pfh = NULL;
/* Bits for opt_flags above */
#define OP_MAPROOT 0x01
#define OP_MAPALL 0x02
@@ -269,11 +270,11 @@ struct pidfh *pfh = NULL;
#define OP_SEC 0x400
#ifdef DEBUG
-int debug = 1;
-void SYSLOG(int, const char *, ...) __printflike(2, 3);
+static int debug = 1;
+static void SYSLOG(int, const char *, ...) __printflike(2, 3);
#define syslog SYSLOG
#else
-int debug = 0;
+static int debug = 0;
#endif
/*
@@ -1131,7 +1132,7 @@ mntsrv(struct svc_req *rqstp, SVCXPRT *transp)
/*
* Xdr conversion for a dirpath string
*/
-int
+static int
xdr_dir(XDR *xdrsp, char *dirp)
{
return (xdr_string(xdrsp, &dirp, MNTPATHLEN));
@@ -1140,7 +1141,7 @@ xdr_dir(XDR *xdrsp, char *dirp)
/*
* Xdr routine to generate file handle reply
*/
-int
+static int
xdr_fhs(XDR *xdrsp, caddr_t cp)
{
struct fhreturn *fhrp = (struct fhreturn *)cp;
@@ -1176,7 +1177,7 @@ xdr_fhs(XDR *xdrsp, caddr_t cp)
return (0);
}
-int
+static int
xdr_mlist(XDR *xdrsp, caddr_t cp __unused)
{
struct mountlist *mlp;
@@ -1204,7 +1205,7 @@ xdr_mlist(XDR *xdrsp, caddr_t cp __unused)
/*
* Xdr conversion for export list
*/
-int
+static int
xdr_explist_common(XDR *xdrsp, caddr_t cp __unused, int brief)
{
struct exportlist *ep;
@@ -1240,7 +1241,7 @@ errout:
* Called from xdr_explist() to traverse the tree and export the
* directory paths.
*/
-int
+static int
put_exlist(struct dirlist *dp, XDR *xdrsp, struct dirlist *adp, int *putdefp,
int brief)
{
@@ -1304,23 +1305,23 @@ put_exlist(struct dirlist *dp, XDR *xdrsp, struct dirlist *adp, int *putdefp,
return (0);
}
-int
+static int
xdr_explist(XDR *xdrsp, caddr_t cp)
{
return xdr_explist_common(xdrsp, cp, 0);
}
-int
+static int
xdr_explist_brief(XDR *xdrsp, caddr_t cp)
{
return xdr_explist_common(xdrsp, cp, 1);
}
-char *line;
-int linesize;
-FILE *exp_file;
+static char *line;
+static size_t linesize;
+static FILE *exp_file;
/*
* Get the export list from one, currently open file
@@ -1638,7 +1639,7 @@ nextline:
/*
* Get the export list from all specified files
*/
-void
+static void
get_exportlist(void)
{
struct exportlist *ep, *ep2;
@@ -1801,7 +1802,7 @@ get_exportlist(void)
/*
* Allocate an export list element
*/
-struct exportlist *
+static struct exportlist *
get_exp(void)
{
struct exportlist *ep;
@@ -1815,7 +1816,7 @@ get_exp(void)
/*
* Allocate a group list element
*/
-struct grouplist *
+static struct grouplist *
get_grp(void)
{
struct grouplist *gp;
@@ -1829,7 +1830,7 @@ get_grp(void)
/*
* Clean up upon an error in get_exportlist().
*/
-void
+static void
getexp_err(struct exportlist *ep, struct grouplist *grp)
{
struct grouplist *tgrp;
@@ -1848,7 +1849,7 @@ getexp_err(struct exportlist *ep, struct grouplist *grp)
/*
* Search the export list for a matching fs.
*/
-struct exportlist *
+static struct exportlist *
ex_search(fsid_t *fsid)
{
struct exportlist *ep;
@@ -1866,7 +1867,7 @@ ex_search(fsid_t *fsid)
/*
* Add a directory path to the list.
*/
-char *
+static char *
add_expdir(struct dirlist **dpp, char *cp, int len)
{
struct dirlist *dp;
@@ -1887,7 +1888,7 @@ add_expdir(struct dirlist **dpp, char *cp, int len)
* Hang the dir list element off the dirpath binary tree as required
* and update the entry for host.
*/
-void
+static void
hang_dirp(struct dirlist *dp, struct grouplist *grp, struct exportlist *ep,
int flags)
{
@@ -1935,7 +1936,7 @@ hang_dirp(struct dirlist *dp, struct grouplist *grp, struct exportlist *ep,
* Traverse the binary tree either updating a node that is already there
* for the new directory or adding the new node.
*/
-void
+static void
add_dlist(struct dirlist **dpp, struct dirlist *newdp, struct grouplist *grp,
int flags, struct exportlist *ep)
{
@@ -1989,7 +1990,7 @@ add_dlist(struct dirlist **dpp, struct dirlist *newdp, struct grouplist *grp,
/*
* Search for a dirpath on the export point.
*/
-struct dirlist *
+static struct dirlist *
dirp_search(struct dirlist *dp, char *dirp)
{
int cmp;
@@ -2009,7 +2010,7 @@ dirp_search(struct dirlist *dp, char *dirp)
/*
* Scan for a host match in a directory tree.
*/
-int
+static int
chk_host(struct dirlist *dp, struct sockaddr *saddr, int *defsetp,
int *hostsetp, int *numsecflavors, int **secflavorsp)
{
@@ -2065,7 +2066,7 @@ chk_host(struct dirlist *dp, struct sockaddr *saddr, int *defsetp,
/*
* Scan tree for a host that matches the address.
*/
-int
+static int
scan_tree(struct dirlist *dp, struct sockaddr *saddr)
{
int defset, hostset;
@@ -2084,7 +2085,7 @@ scan_tree(struct dirlist *dp, struct sockaddr *saddr)
/*
* Traverse the dirlist tree and free it up.
*/
-void
+static void
free_dir(struct dirlist *dp)
{
@@ -2099,7 +2100,7 @@ free_dir(struct dirlist *dp)
/*
* Parse a colon separated list of security flavors
*/
-int
+static int
parsesec(char *seclist, struct exportlist *ep)
{
char *cp, savedc;
@@ -2150,7 +2151,7 @@ parsesec(char *seclist, struct exportlist *ep)
* Option arguments may either be -<option>=<value> or
* -<option> <value>
*/
-int
+static int
do_opt(char **cpp, char **endcpp, struct exportlist *ep, struct grouplist *grp,
int *has_hostp, int *exflagsp, struct xucred *cr)
{
@@ -2263,7 +2264,7 @@ do_opt(char **cpp, char **endcpp, struct exportlist *ep, struct grouplist *grp,
* Translate a character string to the corresponding list of network
* addresses for a hostname.
*/
-int
+static int
get_host(char *cp, struct grouplist *grp, struct grouplist *tgrp)
{
struct grouplist *checkgrp;
@@ -2323,7 +2324,7 @@ get_host(char *cp, struct grouplist *grp, struct grouplist *tgrp)
/*
* Free up an exports list component
*/
-void
+static void
free_exp(struct exportlist *ep)
{
@@ -2342,7 +2343,7 @@ free_exp(struct exportlist *ep)
/*
* Free hosts.
*/
-void
+static void
free_host(struct hostlist *hp)
{
struct hostlist *hp2;
@@ -2354,7 +2355,7 @@ free_host(struct hostlist *hp)
}
}
-struct hostlist *
+static struct hostlist *
get_ht(void)
{
struct hostlist *hp;
@@ -2370,7 +2371,7 @@ get_ht(void)
/*
* Out of memory, fatal
*/
-void
+static void
out_of_mem(void)
{
@@ -2382,7 +2383,7 @@ out_of_mem(void)
* Do the nmount() syscall with the update flag to push the export info into
* the kernel.
*/
-int
+static int
do_mount(struct exportlist *ep, struct grouplist *grp, int exflags,
struct xucred *anoncrp, char *dirp, int dirplen, struct statfs *fsb)
{
@@ -2613,7 +2614,7 @@ error_exit:
*
* If `maskflg' is nonzero, then `cp' is a netmask, not a network address.
*/
-int
+static int
get_net(char *cp, struct netmsk *net, int maskflg)
{
struct netent *np = NULL;
@@ -2743,7 +2744,7 @@ fail:
/*
* Parse out the next white space separated field
*/
-void
+static void
nextfield(char **cp, char **endcp)
{
char *p;
@@ -2765,7 +2766,7 @@ nextfield(char **cp, char **endcp)
* Get an exports file line. Skip over blank lines and handle line
* continuations.
*/
-int
+static int
get_line(void)
{
char *p, *cp;
@@ -2809,7 +2810,7 @@ get_line(void)
/*
* Parse a description of a credential.
*/
-void
+static void
parsecred(char *namelist, struct xucred *cr)
{
char *name;
@@ -2890,7 +2891,7 @@ parsecred(char *namelist, struct xucred *cr)
/*
* Routines that maintain the remote mounttab
*/
-void
+static void
get_mountlist(void)
{
struct mountlist *mlp, **mlpp;
@@ -2927,7 +2928,7 @@ get_mountlist(void)
fclose(mlfile);
}
-void
+static void
del_mlist(char *hostp, char *dirp)
{
struct mountlist *mlp, **mlpp;
@@ -2963,7 +2964,7 @@ del_mlist(char *hostp, char *dirp)
}
}
-void
+static void
add_mlist(char *hostp, char *dirp)
{
struct mountlist *mlp, **mlpp;
@@ -2997,7 +2998,7 @@ add_mlist(char *hostp, char *dirp)
/*
* Free up a group list.
*/
-void
+static void
free_grp(struct grouplist *grp)
{
if (grp->gr_type == GT_HOST) {
@@ -3011,7 +3012,7 @@ free_grp(struct grouplist *grp)
}
#ifdef DEBUG
-void
+static void
SYSLOG(int pri, const char *fmt, ...)
{
va_list ap;
@@ -3025,7 +3026,7 @@ SYSLOG(int pri, const char *fmt, ...)
/*
* Check options for consistency.
*/
-int
+static int
check_options(struct dirlist *dp)
{
@@ -3063,7 +3064,7 @@ check_options(struct dirlist *dp)
/*
* Check an absolute directory path for any symbolic links. Return true
*/
-int
+static int
check_dirpath(char *dirp)
{
char *cp;
@@ -3089,7 +3090,7 @@ check_dirpath(char *dirp)
* Make a netmask according to the specified prefix length. The ss_family
* and other non-address fields must be initialised before calling this.
*/
-int
+static int
makemask(struct sockaddr_storage *ssp, int bitlen)
{
u_char *p;
@@ -3112,7 +3113,7 @@ makemask(struct sockaddr_storage *ssp, int bitlen)
* Check that the sockaddr is a valid netmask. Returns 0 if the mask
* is acceptable (i.e. of the form 1...10....0).
*/
-int
+static int
checkmask(struct sockaddr *sa)
{
u_char *mask;
@@ -3140,7 +3141,7 @@ checkmask(struct sockaddr *sa)
* `sa1' matches `sa2' when filtered by the netmask in `samask'.
* If samask is NULL, perform a full comparison.
*/
-int
+static int
sacmp(struct sockaddr *sa1, struct sockaddr *sa2, struct sockaddr *samask)
{
unsigned char *p1, *p2, *mask;
@@ -3179,7 +3180,7 @@ sacmp(struct sockaddr *sa1, struct sockaddr *sa2, struct sockaddr *samask)
* raw address, and set *nbytes to its length in bytes. Returns
* NULL if the address family is unknown.
*/
-void *
+static void *
sa_rawaddr(struct sockaddr *sa, int *nbytes) {
void *p;
int len;
@@ -3203,17 +3204,18 @@ sa_rawaddr(struct sockaddr *sa, int *nbytes) {
return (p);
}
-void
+static void
huphandler(int sig __unused)
{
+
got_sighup = 1;
}
-void terminate(int sig __unused)
+static void
+terminate(int sig __unused)
{
pidfile_remove(pfh);
rpcb_unset(MOUNTPROG, MOUNTVERS, NULL);
rpcb_unset(MOUNTPROG, MOUNTVERS3, NULL);
exit (0);
}
-
OpenPOWER on IntegriCloud