Staticize some stuff in mountd(8); no functional changes.

MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Edward Tomasz Napierala 2015-07-04 08:40:48 +00:00
parent 64ff224dd5
commit 19c46d8cf7

View File

@ -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);
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);
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 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;
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;
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 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 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 @@ xdr_explist_common(XDR *xdrsp, caddr_t cp __unused, int brief)
* 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 @@ get_exportlist_one(void)
/*
* 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 @@ do_mount(struct exportlist *ep, struct grouplist *grp, int exflags,
*
* 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 @@ get_net(char *cp, struct netmsk *net, int maskflg)
/*
* 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);
}