diff options
Diffstat (limited to 'usr.sbin/rpcbind')
-rw-r--r-- | usr.sbin/rpcbind/check_bound.c | 23 | ||||
-rw-r--r-- | usr.sbin/rpcbind/pmap_svc.c | 38 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcb_stat.c | 15 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcb_svc.c | 13 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcb_svc_4.c | 30 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcb_svc_com.c | 288 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcbind.c | 466 | ||||
-rw-r--r-- | usr.sbin/rpcbind/rpcbind.h | 42 | ||||
-rw-r--r-- | usr.sbin/rpcbind/warmstart.c | 12 |
9 files changed, 471 insertions, 456 deletions
diff --git a/usr.sbin/rpcbind/check_bound.c b/usr.sbin/rpcbind/check_bound.c index 446dceb3502f..820f76d37346 100644 --- a/usr.sbin/rpcbind/check_bound.c +++ b/usr.sbin/rpcbind/check_bound.c @@ -42,13 +42,16 @@ #include <sys/types.h> #include <sys/socket.h> + #include <rpc/rpc.h> #include <rpc/svc_dg.h> + #include <netconfig.h> -#include <syslog.h> +#include <stdio.h> +#include <stdlib.h> #include <string.h> +#include <syslog.h> #include <unistd.h> -#include <stdlib.h> #include "rpcbind.h" @@ -61,9 +64,9 @@ struct fdlist { static struct fdlist *fdhead; /* Link list of the check fd's */ static struct fdlist *fdtail; -static char *nullstring = ""; +static char nullstring[] = ""; -static bool_t check_bound(struct fdlist *, char *uaddr); +static bool_t check_bound(struct fdlist *, const char *uaddr); /* * Returns 1 if the given address is bound for the given addr & transport @@ -71,7 +74,7 @@ static bool_t check_bound(struct fdlist *, char *uaddr); * Returns 0 for success. */ static bool_t -check_bound(struct fdlist *fdl, char *uaddr) +check_bound(struct fdlist *fdl, const char *uaddr) { int fd; struct netbuf *na; @@ -101,7 +104,7 @@ check_bound(struct fdlist *fdl, char *uaddr) } int -add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) +add_bndlist(const struct netconfig *nconf, struct netbuf *baddr __unused) { struct fdlist *fdl; struct netconfig *newnconf; @@ -109,7 +112,7 @@ add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) newnconf = getnetconfigent(nconf->nc_netid); if (newnconf == NULL) return (-1); - fdl = malloc(sizeof (struct fdlist)); + fdl = malloc(sizeof(*fdl)); if (fdl == NULL) { freenetconfigent(newnconf); syslog(LOG_ERR, "no memory!"); @@ -131,7 +134,7 @@ add_bndlist(struct netconfig *nconf, struct netbuf *baddr __unused) } bool_t -is_bound(char *netid, char *uaddr) +is_bound(const char *netid, const char *uaddr) { struct fdlist *fdl; @@ -189,7 +192,7 @@ mergeaddr(SVCXPRT *xprt, char *netid, char *uaddr, char *saddr) return (NULL); } -#ifdef ND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) { if (saddr == NULL) { fprintf(stderr, "mergeaddr: client uaddr = %s\n", @@ -205,7 +208,7 @@ mergeaddr(SVCXPRT *xprt, char *netid, char *uaddr, char *saddr) * This is all we should need for IP 4 and 6 */ m_uaddr = addrmerge(svc_getrpccaller(xprt), s_uaddr, c_uaddr, netid); -#ifdef ND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "mergeaddr: uaddr = %s, merged uaddr = %s\n", uaddr, m_uaddr); diff --git a/usr.sbin/rpcbind/pmap_svc.c b/usr.sbin/rpcbind/pmap_svc.c index cea1606258ae..4dcbb0f6ddd2 100644 --- a/usr.sbin/rpcbind/pmap_svc.c +++ b/usr.sbin/rpcbind/pmap_svc.c @@ -35,7 +35,7 @@ /* * pmap_svc.c - * The server procedure for the version 2 portmaper. + * The server procedure for the version 2 portmapper. * All the portmapper related interface from the portmap side. */ @@ -47,12 +47,12 @@ #include <rpc/pmap_prot.h> #include <rpc/rpcb_prot.h> #ifdef RPCBIND_DEBUG +#include <stdio.h> #include <stdlib.h> #endif #include "rpcbind.h" -static struct pmaplist *find_service_pmap(rpcprog_t, rpcvers_t, - rpcprot_t); +static struct pmaplist *find_service_pmap(rpcprog_t, rpcvers_t, rpcprot_t); static bool_t pmapproc_change(struct svc_req *, SVCXPRT *, u_long); static bool_t pmapproc_getport(struct svc_req *, SVCXPRT *); static bool_t pmapproc_dump(struct svc_req *, SVCXPRT *); @@ -168,6 +168,11 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) uid_t uid; char uidbuf[32]; + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); + return (FALSE); + } + #ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "%s request for (%lu, %lu) : ", @@ -175,11 +180,6 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) reg.pm_prog, reg.pm_vers); #endif - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); - return (FALSE); - } - if (!check_access(xprt, op, ®, PMAPVERS)) { svcerr_weakauth(xprt); return FALSE; @@ -192,12 +192,12 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) * and looping. */ if (__rpc_get_local_uid(xprt, &uid) < 0) - rpcbreg.r_owner = "unknown"; + rpcbreg.r_owner = __UNCONST(rpcbind_unknown); else if (uid == 0) - rpcbreg.r_owner = "superuser"; + rpcbreg.r_owner = __UNCONST(rpcbind_superuser); else { /* r_owner will be strdup-ed later */ - snprintf(uidbuf, sizeof uidbuf, "%d", uid); + snprintf(uidbuf, sizeof(uidbuf), "%d", uid); rpcbreg.r_owner = uidbuf; } @@ -207,14 +207,14 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) if (op == PMAPPROC_SET) { char buf[32]; - snprintf(buf, sizeof buf, "0.0.0.0.%d.%d", + snprintf(buf, sizeof(buf), "0.0.0.0.%d.%d", (int)((reg.pm_port >> 8) & 0xff), (int)(reg.pm_port & 0xff)); rpcbreg.r_addr = buf; if (reg.pm_prot == IPPROTO_UDP) { - rpcbreg.r_netid = udptrans; + rpcbreg.r_netid = __UNCONST(udptrans); } else if (reg.pm_prot == IPPROTO_TCP) { - rpcbreg.r_netid = tcptrans; + rpcbreg.r_netid = __UNCONST(tcptrans); } else { ans = FALSE; goto done_change; @@ -224,9 +224,9 @@ pmapproc_change(struct svc_req *rqstp __unused, SVCXPRT *xprt, unsigned long op) bool_t ans1, ans2; rpcbreg.r_addr = NULL; - rpcbreg.r_netid = tcptrans; + rpcbreg.r_netid = __UNCONST(tcptrans); ans1 = map_unset(&rpcbreg, rpcbreg.r_owner); - rpcbreg.r_netid = udptrans; + rpcbreg.r_netid = __UNCONST(udptrans); ans2 = map_unset(&rpcbreg, rpcbreg.r_owner); ans = ans1 || ans2; } else { @@ -285,9 +285,9 @@ pmapproc_getport(struct svc_req *rqstp __unused, SVCXPRT *xprt) #endif fnd = find_service_pmap(reg.pm_prog, reg.pm_vers, reg.pm_prot); if (fnd) { - char serveuaddr[32], *ua; + char serveuaddr[32]; int h1, h2, h3, h4, p1, p2; - char *netid; + const char *netid, *ua; if (reg.pm_prot == IPPROTO_UDP) { ua = udp_uaddr; @@ -303,7 +303,7 @@ pmapproc_getport(struct svc_req *rqstp __unused, SVCXPRT *xprt) &h4, &p1, &p2) == 6) { p1 = (fnd->pml_map.pm_port >> 8) & 0xff; p2 = (fnd->pml_map.pm_port) & 0xff; - snprintf(serveuaddr, sizeof serveuaddr, + snprintf(serveuaddr, sizeof(serveuaddr), "%d.%d.%d.%d.%d.%d", h1, h2, h3, h4, p1, p2); if (is_bound(netid, serveuaddr)) { port = fnd->pml_map.pm_port; diff --git a/usr.sbin/rpcbind/rpcb_stat.c b/usr.sbin/rpcbind/rpcb_stat.c index 9c03ce368293..9500bb7b7cbe 100644 --- a/usr.sbin/rpcbind/rpcb_stat.c +++ b/usr.sbin/rpcbind/rpcb_stat.c @@ -37,15 +37,18 @@ * Copyright (c) 1990 by Sun Microsystems, Inc. */ -#include <netconfig.h> +#include <sys/stat.h> + #include <rpc/rpc.h> #include <rpc/rpcb_prot.h> -#include <sys/stat.h> #ifdef PORTMAP #include <rpc/pmap_prot.h> #endif + +#include <netconfig.h> #include <stdlib.h> #include <string.h> + #include "rpcbind.h" static rpcb_stat_byvers inf; @@ -96,8 +99,8 @@ rpcbs_unset(rpcvers_t rtype, bool_t success) } void -rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, char *netid, - char *uaddr) +rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, + const char *netid, const char *uaddr) { rpcbs_addrlist *al; struct netconfig *nconf; @@ -121,7 +124,7 @@ rpcbs_getaddr(rpcvers_t rtype, rpcprog_t prog, rpcvers_t vers, char *netid, if (nconf == NULL) { return; } - al = (rpcbs_addrlist *) malloc(sizeof (rpcbs_addrlist)); + al = malloc(sizeof(*al)); if (al == NULL) { return; } @@ -170,7 +173,7 @@ rpcbs_rmtcall(rpcvers_t rtype, rpcproc_t rpcbproc, rpcprog_t prog, if (nconf == NULL) { return; } - rl = (rpcbs_rmtcalllist *) malloc(sizeof (rpcbs_rmtcalllist)); + rl = malloc(sizeof(*rl)); if (rl == NULL) { return; } diff --git a/usr.sbin/rpcbind/rpcb_svc.c b/usr.sbin/rpcbind/rpcb_svc.c index 94323ab992aa..5a23abe3dbc6 100644 --- a/usr.sbin/rpcbind/rpcb_svc.c +++ b/usr.sbin/rpcbind/rpcb_svc.c @@ -46,6 +46,7 @@ #include <netconfig.h> #include <stdio.h> #ifdef RPCBIND_DEBUG +#include <stdio.h> #include <stdlib.h> #endif #include <string.h> @@ -53,9 +54,9 @@ #include "rpcbind.h" static void *rpcbproc_getaddr_3_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); + rpcvers_t); static void *rpcbproc_dump_3_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); + rpcvers_t); /* * Called by svc_getreqset. There is a separate server handle for @@ -89,7 +90,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) #endif /* This call just logs, no actual checks */ check_access(transp, rqstp->rq_proc, NULL, RPCBVERS); - (void) svc_sendreply(transp, (xdrproc_t)xdr_void, (char *)NULL); + (void) svc_sendreply(transp, (xdrproc_t)xdr_void, NULL); return; case RPCBPROC_SET: @@ -204,7 +205,7 @@ done: /* ARGSUSED */ static void * rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t versnum __unused) + SVCXPRT *transp __unused, rpcvers_t versnum __unused) { RPCB *regp = (RPCB *)arg; #ifdef RPCBIND_DEBUG @@ -212,7 +213,7 @@ rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, char *uaddr; uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid), - svc_getrpccaller(transp)); + svc_getrpccaller(transp)); fprintf(stderr, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ", (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, regp->r_netid, uaddr); @@ -226,7 +227,7 @@ rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp __unused, /* ARGSUSED */ static void * rpcbproc_dump_3_local(void *arg __unused, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t versnum __unused) + SVCXPRT *transp __unused, rpcvers_t versnum __unused) { return ((void *)&list_rbl); } diff --git a/usr.sbin/rpcbind/rpcb_svc_4.c b/usr.sbin/rpcbind/rpcb_svc_4.c index 77240e4d3ef5..817312709cf0 100644 --- a/usr.sbin/rpcbind/rpcb_svc_4.c +++ b/usr.sbin/rpcbind/rpcb_svc_4.c @@ -51,12 +51,14 @@ #include "rpcbind.h" static void *rpcbproc_getaddr_4_local(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); -static void *rpcbproc_getversaddr_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); -static void *rpcbproc_getaddrlist_4_local - (void *, struct svc_req *, SVCXPRT *, rpcvers_t); + rpcvers_t); +static void *rpcbproc_getversaddr_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); +static void *rpcbproc_getaddrlist_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); static void free_rpcb_entry_list(rpcb_entry_list_ptr *); -static void *rpcbproc_dump_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); +static void *rpcbproc_dump_4_local(void *, struct svc_req *, SVCXPRT *, + rpcvers_t); /* * Called by svc_getreqset. There is a separate server handle for @@ -88,8 +90,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) fprintf(stderr, "RPCBPROC_NULL\n"); #endif check_access(transp, rqstp->rq_proc, NULL, RPCBVERS4); - (void) svc_sendreply(transp, (xdrproc_t) xdr_void, - (char *)NULL); + (void) svc_sendreply(transp, (xdrproc_t) xdr_void, NULL); return; case RPCBPROC_SET: @@ -257,7 +258,7 @@ done: /* ARGSUSED */ static void * rpcbproc_getaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp, - rpcvers_t rpcbversnum __unused) + rpcvers_t rpcbversnum __unused) { RPCB *regp = (RPCB *)arg; #ifdef RPCBIND_DEBUG @@ -315,7 +316,7 @@ rpcbproc_getversaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp, /* ARGSUSED */ static void * rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t versnum __unused) + SVCXPRT *transp, rpcvers_t versnum __unused) { RPCB *regp = (RPCB *)arg; static rpcb_entry_list_ptr rlist; @@ -384,7 +385,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, /* * Add it to rlist. */ - rp = malloc(sizeof (rpcb_entry_list)); + rp = malloc(sizeof(*rp)); if (rp == NULL) goto fail; a = &rp->rpcb_entry_map; @@ -397,7 +398,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, if (rlist == NULL) { rlist = rp; tail = rp; - } else { + } else if (tail != NULL) { tail->rpcb_entry_next = rp; tail = rp; } @@ -417,9 +418,10 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp __unused, * Perhaps wrong, but better than it not getting counted at all. */ rpcbs_getaddr(RPCBVERS4 - 2, prog, vers, transp->xp_netid, maddr); - return (void *)&rlist; + return (&rlist); -fail: free_rpcb_entry_list(&rlist); +fail: + free_rpcb_entry_list(&rlist); return (NULL); } @@ -444,7 +446,7 @@ free_rpcb_entry_list(rpcb_entry_list_ptr *rlistp) /* ARGSUSED */ static void * rpcbproc_dump_4_local(void *arg __unused, struct svc_req *req __unused, - SVCXPRT *xprt __unused, rpcvers_t versnum __unused) + SVCXPRT *xprt __unused, rpcvers_t versnum __unused) { return ((void *)&list_rbl); } diff --git a/usr.sbin/rpcbind/rpcb_svc_com.c b/usr.sbin/rpcbind/rpcb_svc_com.c index 15ecda213abc..a82cf44bfa3c 100644 --- a/usr.sbin/rpcbind/rpcb_svc_com.c +++ b/usr.sbin/rpcbind/rpcb_svc_com.c @@ -110,7 +110,7 @@ static int check_rmtcalls(struct pollfd *, int); static void xprt_set_caller(SVCXPRT *, struct finfo *); static void send_svcsyserr(SVCXPRT *, struct finfo *); static void handle_reply(int, SVCXPRT *); -static void find_versions(rpcprog_t, char *, rpcvers_t *, rpcvers_t *); +static void find_versions(rpcprog_t, const char *, rpcvers_t *, rpcvers_t *); static rpcblist_ptr find_service(rpcprog_t, rpcvers_t, char *); static char *getowner(SVCXPRT *, char *, size_t); static int add_pmaplist(RPCB *); @@ -122,17 +122,17 @@ static int del_pmaplist(RPCB *); /* ARGSUSED */ void * rpcbproc_set_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, - rpcvers_t rpcbversnum) + rpcvers_t rpcbversnum) { - RPCB *regp = (RPCB *)arg; + RPCB *regp = arg; static bool_t ans; char owner[64]; #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "RPCB_SET request for (%lu, %lu, %s, %s) : ", - (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, - regp->r_netid, regp->r_addr); + fprintf(stderr, "%s: RPCB_SET request for (%lu, %lu, %s, %s): ", + __func__, (unsigned long)regp->r_prog, + (unsigned long)regp->r_vers, regp->r_netid, regp->r_addr); #endif ans = map_set(regp, getowner(transp, owner, sizeof owner)); #ifdef RPCBIND_DEBUG @@ -145,7 +145,7 @@ rpcbproc_set_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, } bool_t -map_set(RPCB *regp, char *owner) +map_set(RPCB *regp, const char *owner) { RPCB reg, *a; rpcblist_ptr rbl, fnd; @@ -170,7 +170,7 @@ map_set(RPCB *regp, char *owner) /* * add to the end of the list */ - rbl = malloc(sizeof (RPCBLIST)); + rbl = malloc(sizeof(*rbl)); if (rbl == NULL) return (FALSE); a = &(rbl->rpcb_map); @@ -186,7 +186,7 @@ map_set(RPCB *regp, char *owner) free(rbl); return (FALSE); } - rbl->rpcb_next = (rpcblist_ptr)NULL; + rbl->rpcb_next = NULL; if (list_rbl == NULL) { list_rbl = rbl; } else { @@ -196,7 +196,7 @@ map_set(RPCB *regp, char *owner) fnd->rpcb_next = rbl; } #ifdef PORTMAP - (void) add_pmaplist(regp); + (void)add_pmaplist(regp); #endif return (TRUE); } @@ -207,17 +207,17 @@ map_set(RPCB *regp, char *owner) /* ARGSUSED */ void * rpcbproc_unset_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, - rpcvers_t rpcbversnum) + rpcvers_t rpcbversnum) { - RPCB *regp = (RPCB *)arg; + RPCB *regp = arg; static bool_t ans; char owner[64]; #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "RPCB_UNSET request for (%lu, %lu, %s) : ", - (unsigned long)regp->r_prog, (unsigned long)regp->r_vers, - regp->r_netid); + fprintf(stderr, "%s: RPCB_UNSET request for (%lu, %lu, %s): ", + __func__, (unsigned long)regp->r_prog, + (unsigned long)regp->r_vers, regp->r_netid); #endif ans = map_unset(regp, getowner(transp, owner, sizeof owner)); #ifdef RPCBIND_DEBUG @@ -230,7 +230,7 @@ rpcbproc_unset_com(void *arg, struct svc_req *rqstp __unused, SVCXPRT *transp, } bool_t -map_unset(RPCB *regp, char *owner) +map_unset(RPCB *regp, const char *owner) { int ans = 0; rpcblist_ptr rbl, prev, tmp; @@ -252,7 +252,7 @@ map_unset(RPCB *regp, char *owner) * Check whether appropriate uid. Unset only * if superuser or the owner itself. */ - if (strcmp(owner, "superuser") && + if (strcmp(owner, rpcbind_superuser) && strcmp(rbl->rpcb_map.r_owner, owner)) return (0); /* found it; rbl moves forward, prev stays */ @@ -270,21 +270,21 @@ map_unset(RPCB *regp, char *owner) } #ifdef PORTMAP if (ans) - (void) del_pmaplist(regp); + (void)del_pmaplist(regp); #endif /* * We return 1 either when the entry was not there or it * was able to unset it. It can come to this point only if - * atleast one of the conditions is true. + * at least one of the conditions is true. */ return (1); } void -delete_prog(unsigned int prog) +delete_prog(rpcprog_t prog) { RPCB reg; - register rpcblist_ptr rbl; + rpcblist_ptr rbl; for (rbl = list_rbl; rbl != NULL; rbl = rbl->rpcb_next) { if ((rbl->rpcb_map.r_prog != prog)) @@ -294,14 +294,18 @@ delete_prog(unsigned int prog) reg.r_prog = rbl->rpcb_map.r_prog; reg.r_vers = rbl->rpcb_map.r_vers; reg.r_netid = strdup(rbl->rpcb_map.r_netid); - (void) map_unset(®, "superuser"); - free(reg.r_netid); + if (reg.r_netid == NULL) + syslog(LOG_ERR, "%s: %m", __func__); + else { + (void)map_unset(®, rpcbind_superuser); + free(reg.r_netid); + } } } void * rpcbproc_getaddr_com(RPCB *regp, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum, rpcvers_t verstype) + SVCXPRT *transp, rpcvers_t rpcbversnum, rpcvers_t verstype) { static char *uaddr; char *saddr = NULL; @@ -333,23 +337,23 @@ rpcbproc_getaddr_com(RPCB *regp, struct svc_req *rqstp __unused, } #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "getaddr: %s\n", uaddr); + fprintf(stderr, "%s: %s\n", __func__, uaddr); #endif /* XXX: should have used some defined constant here */ rpcbs_getaddr(rpcbversnum - 2, regp->r_prog, regp->r_vers, transp->xp_netid, uaddr); - return (void *)&uaddr; + return (&uaddr); } /* ARGSUSED */ void * rpcbproc_gettime_com(void *arg __unused, struct svc_req *rqstp __unused, - SVCXPRT *transp __unused, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp __unused, rpcvers_t rpcbversnum __unused) { static time_t curtime; - (void) time(&curtime); - return (void *)&curtime; + (void)time(&curtime); + return (&curtime); } /* @@ -359,9 +363,9 @@ rpcbproc_gettime_com(void *arg __unused, struct svc_req *rqstp __unused, /* ARGSUSED */ void * rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp, rpcvers_t rpcbversnum __unused) { - char **uaddrp = (char **)arg; + char **uaddrp = arg; struct netconfig *nconf; static struct netbuf nbuf; static struct netbuf *taddr; @@ -370,10 +374,10 @@ rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, taddr = NULL; if (((nconf = rpcbind_get_conf(transp->xp_netid)) == NULL) || ((taddr = uaddr2taddr(nconf, *uaddrp)) == NULL)) { - (void) memset((char *)&nbuf, 0, sizeof (struct netbuf)); - return (void *)&nbuf; + memset(&nbuf, 0, sizeof(nbuf)); + return (&nbuf); } - return (void *)taddr; + return (taddr); } /* @@ -383,9 +387,9 @@ rpcbproc_uaddr2taddr_com(void *arg, struct svc_req *rqstp __unused, /* ARGSUSED */ void * rpcbproc_taddr2uaddr_com(void *arg, struct svc_req *rqstp __unused, - SVCXPRT *transp, rpcvers_t rpcbversnum __unused) + SVCXPRT *transp, rpcvers_t rpcbversnum __unused) { - struct netbuf *taddr = (struct netbuf *)arg; + struct netbuf *taddr = arg; static char *uaddr; struct netconfig *nconf; @@ -393,7 +397,7 @@ rpcbproc_taddr2uaddr_com(void *arg, struct svc_req *rqstp __unused, int fd; if ((fd = open("/dev/null", O_RDONLY)) == -1) { - uaddr = (char *)strerror(errno); + uaddr = strerror(errno); return (&uaddr); } #endif /* CHEW_FDS */ @@ -480,7 +484,7 @@ static struct rmtcallfd_list *rmthead; static struct rmtcallfd_list *rmttail; int -create_rmtcall_fd(struct netconfig *nconf) +create_rmtcall_fd(const struct netconfig *nconf) { int fd; struct rmtcallfd_list *rmt; @@ -488,21 +492,20 @@ create_rmtcall_fd(struct netconfig *nconf) if ((fd = __rpc_nconf2fd(nconf)) == -1) { if (debugging) - fprintf(stderr, - "create_rmtcall_fd: couldn't open \"%s\" (errno %d)\n", - nconf->nc_device, errno); + fprintf(stderr, "%s: couldn't open \"%s\": %m\n", + __func__, nconf->nc_device); return (-1); } - xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0); + xprt = svc_tli_create(fd, 0, NULL, 0, 0); if (xprt == NULL) { if (debugging) - fprintf(stderr, - "create_rmtcall_fd: svc_tli_create failed\n"); + fprintf(stderr, "%s: svc_tli_create failed\n", + __func__); return (-1); } - rmt = malloc(sizeof (struct rmtcallfd_list)); + rmt = malloc(sizeof(*rmt)); if (rmt == NULL) { - syslog(LOG_ERR, "create_rmtcall_fd: no memory!"); + syslog(LOG_ERR, "%s: %m", __func__); return (-1); } rmt->xprt = xprt; @@ -591,16 +594,16 @@ find_rmtcallxprt_by_fd(int fd) void rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - rpcproc_t reply_type, rpcvers_t versnum) + rpcproc_t reply_type, rpcvers_t versnum) { - register rpcblist_ptr rbl; + rpcblist_ptr rbl; struct netconfig *nconf; struct netbuf *caller; struct r_rmtcall_args a; char *buf_alloc = NULL, *outbufp; char *outbuf_alloc = NULL; char buf[RPC_BUF_MAX], outbuf[RPC_BUF_MAX]; - struct netbuf *na = (struct netbuf *) NULL; + struct netbuf *na = NULL; struct rpc_msg call_msg; int outlen; u_int sendsz; @@ -638,8 +641,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, #endif /* notyet */ if (buf_alloc == NULL) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: No Memory!\n"); + fprintf(stderr, "%s: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); return; @@ -650,12 +652,11 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, } call_msg.rm_xid = 0; /* For error checking purposes */ - if (!svc_getargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { + if (!svc_getargs(transp, (xdrproc_t)xdr_rmtcall_args, (char *) &a)) { if (reply_type == RPCBPROC_INDIRECT) svcerr_decode(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: svc_getargs failed\n"); + fprintf(stderr, "%s: svc_getargs failed\n", __func__); goto error; } @@ -668,14 +669,15 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, #ifdef RPCBIND_DEBUG if (debugging) { uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid), caller); - fprintf(stderr, "%s %s req for (%lu, %lu, %lu, %s) from %s : ", - versnum == PMAPVERS ? "pmap_rmtcall" : - versnum == RPCBVERS ? "rpcb_rmtcall" : - versnum == RPCBVERS4 ? "rpcb_indirect" : "unknown", - reply_type == RPCBPROC_INDIRECT ? "indirect" : "callit", - (unsigned long)a.rmt_prog, (unsigned long)a.rmt_vers, - (unsigned long)a.rmt_proc, transp->xp_netid, - uaddr ? uaddr : "unknown"); + fprintf(stderr, + "%s: %s %s req for (%lu, %lu, %lu, %s) from %s: ", + __func__, versnum == PMAPVERS ? "pmap_rmtcall" : + versnum == RPCBVERS ? "rpcb_rmtcall" : + versnum == RPCBVERS4 ? "rpcb_indirect" : rpcbind_unknown, + reply_type == RPCBPROC_INDIRECT ? "indirect" : "callit", + (unsigned long)a.rmt_prog, (unsigned long)a.rmt_vers, + (unsigned long)a.rmt_proc, transp->xp_netid, + uaddr ? uaddr : rpcbind_unknown); free(uaddr); } #endif @@ -685,7 +687,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, rpcbs_rmtcall(versnum - 2, reply_type, a.rmt_prog, a.rmt_vers, a.rmt_proc, transp->xp_netid, rbl); - if (rbl == (rpcblist_ptr)NULL) { + if (rbl == NULL) { #ifdef RPCBIND_DEBUG if (debugging) fprintf(stderr, "not found\n"); @@ -726,19 +728,18 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, free(uaddr); } nconf = rpcbind_get_conf(transp->xp_netid); - if (nconf == (struct netconfig *)NULL) { + if (nconf == NULL) { if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: rpcbind_get_conf failed\n"); + fprintf(stderr, "%s: rpcbind_get_conf failed\n", + __func__); goto error; } localsa = local_sa(((struct sockaddr *)caller->buf)->sa_family); if (localsa == NULL) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: no local address\n"); + fprintf(stderr, "%s: no local address\n", __func__); goto error; } tbuf.len = tbuf.maxlen = localsa->sa_len; @@ -749,7 +750,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, nconf->nc_netid); #ifdef RPCBIND_DEBUG if (debugging) - fprintf(stderr, "merged uaddr %s\n", m_uaddr); + fprintf(stderr, "%s: merged uaddr %s\n", __func__, m_uaddr); #endif if ((fd = find_rmtcallfd_by_netid(nconf->nc_netid)) == -1) { if (reply_type == RPCBPROC_INDIRECT) @@ -769,22 +770,20 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, * beat on it any more. */ if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: duplicate request\n"); + fprintf(stderr, "%s: duplicate request\n", __func__); goto error; case -1: /* forward_register failed. Perhaps no memory. */ if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: forward_register failed\n"); + fprintf(stderr, "%s: forward_register failed\n", + __func__); goto error; } #ifdef DEBUG_RMTCALL if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: original XID %x, new XID %x\n", - *xidp, call_msg.rm_xid); + fprintf(stderr, "%s: original XID %x, new XID %x\n", __func__, + *xidp, call_msg.rm_xid); #endif call_msg.rm_direction = CALL; call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION; @@ -797,11 +796,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, outbuf_alloc = malloc(sendsz); #endif /* notyet */ if (outbuf_alloc == NULL) { + if (debugging) + fprintf(stderr, "%s: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); - if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: No memory!\n"); goto error; } xdrmem_create(&outxdr, outbuf_alloc, sendsz, XDR_ENCODE); @@ -812,16 +810,14 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_callhdr failed\n"); + fprintf(stderr, "%s: xdr_callhdr failed\n", __func__); goto error; } if (!xdr_u_int32_t(&outxdr, &(a.rmt_proc))) { if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_u_long failed\n"); + fprintf(stderr, "%s: xdr_u_long failed\n", __func__); goto error; } @@ -839,8 +835,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, } else { /* we do not support any other authentication scheme */ if (debugging) - fprintf(stderr, -"rpcbproc_callit_com: oa_flavor != AUTH_NONE and oa_flavor != AUTH_SYS\n"); + fprintf(stderr, "%s: oa_flavor != AUTH_NONE and " + "oa_flavor != AUTH_SYS\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_weakauth(transp); /* XXX too strong.. */ goto error; @@ -850,7 +846,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, svcerr_systemerr(transp); if (debugging) fprintf(stderr, - "rpcbproc_callit_com: authwhatever_create returned NULL\n"); + "%s: authwhatever_create returned NULL\n", + __func__); goto error; } if (!AUTH_MARSHALL(auth, &outxdr)) { @@ -858,8 +855,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, svcerr_systemerr(transp); AUTH_DESTROY(auth); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: AUTH_MARSHALL failed\n"); + fprintf(stderr, "%s: AUTH_MARSHALL failed\n", + __func__); goto error; } AUTH_DESTROY(auth); @@ -867,8 +864,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: xdr_opaque_parms failed\n"); + fprintf(stderr, "%s: xdr_opaque_parms failed\n", + __func__); goto error; } outlen = (int) XDR_GETPOS(&outxdr); @@ -887,8 +884,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, if (sendto(fd, outbufp, outlen, 0, (struct sockaddr *)na->buf, na->len) != outlen) { if (debugging) - fprintf(stderr, - "rpcbproc_callit_com: sendto failed: errno %d\n", errno); + fprintf(stderr, "%s: sendto failed: %m\n", __func__); if (reply_type == RPCBPROC_INDIRECT) svcerr_systemerr(transp); goto error; @@ -897,7 +893,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, error: if (call_msg.rm_xid != 0) - (void) free_slot_by_xid(call_msg.rm_xid); + (void)free_slot_by_xid(call_msg.rm_xid); out: free(local_uaddr); free(buf_alloc); @@ -913,14 +909,12 @@ out: */ static int forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, - int forward_fd, char *uaddr, rpcproc_t reply_type, - rpcvers_t versnum, u_int32_t *callxidp) + int forward_fd, char *uaddr, rpcproc_t reply_type, + rpcvers_t versnum, u_int32_t *callxidp) { - int i; - int j = 0; - time_t min_time, time_now; - static u_int32_t lastxid; - int entry = -1; + static u_int32_t lastxid; + time_t min_time, time_now; + int i, j = 0, entry = -1; min_time = FINFO[0].time; time_now = time((time_t *)0); @@ -945,7 +939,7 @@ forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, } else { /* Should we wait any longer */ if ((time_now - FINFO[i].time) > MAXTIME_OFF) - (void) free_slot_by_index(i); + (void)free_slot_by_index(i); } } if (entry == -1) { @@ -961,7 +955,7 @@ forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, /* use this empty slot */ j = entry; } else { - (void) free_slot_by_index(j); + (void)free_slot_by_index(j); } if ((FINFO[j].caller_addr = netbufdup(caller_addr)) == NULL) { return (-1); @@ -990,7 +984,7 @@ forward_register(u_int32_t caller_xid, struct netbuf *caller_addr, static struct finfo * forward_find(u_int32_t reply_xid) { - int i; + int i; i = reply_xid % (u_int32_t)NFORWARD; if ((FINFO[i].flag & FINFO_ACTIVE) && @@ -1012,7 +1006,7 @@ free_slot_by_xid(u_int32_t xid) static int free_slot_by_index(int index) { - struct finfo *fi; + struct finfo *fi; fi = &FINFO[index]; if (fi->flag & FINFO_ACTIVE) { @@ -1084,15 +1078,14 @@ extern bool_t __svc_clean_idle(fd_set *, int, bool_t); void my_svc_run(void) { - size_t nfds; struct pollfd pollfds[FD_SETSIZE + 1]; - int poll_ret, check_ret; - int n; + fd_set cleanfds; + struct pollfd *p; + size_t nfds; #ifdef SVC_RUN_DEBUG - int i; + size_t i; #endif - register struct pollfd *p; - fd_set cleanfds; + int n, poll_ret, check_ret; for (;;) { p = pollfds; @@ -1110,7 +1103,8 @@ my_svc_run(void) poll_ret = 0; #ifdef SVC_RUN_DEBUG if (debugging) { - fprintf(stderr, "polling for read on fd < "); + fprintf(stderr, "%s: polling for read on fd < ", + __func__); for (i = 0, p = pollfds; i < nfds; i++, p++) if (p->events) fprintf(stderr, "%d ", p->fd); @@ -1137,6 +1131,13 @@ my_svc_run(void) * that it was set by the signal handlers (or any * other outside event) and not caused by poll(). */ +#ifdef SVC_RUN_DEBUG + if (debugging) { + fprintf(stderr, "%s: poll returned %d: %m\n", + __func__, poll_ret); + } +#endif + /* FALLTHROUGH */ case 0: cleanfds = svc_fdset; __svc_clean_idle(&cleanfds, 30, FALSE); @@ -1144,10 +1145,12 @@ my_svc_run(void) default: #ifdef SVC_RUN_DEBUG if (debugging) { - fprintf(stderr, "poll returned read fds < "); + fprintf(stderr, "%s: poll returned read fds < ", + __func__); for (i = 0, p = pollfds; i < nfds; i++, p++) if (p->revents) - fprintf(stderr, "%d ", p->fd); + fprintf(stderr, "%d (%#x)", + p->fd, p->revents); fprintf(stderr, ">\n"); } #endif @@ -1165,7 +1168,8 @@ my_svc_run(void) } #ifdef SVC_RUN_DEBUG if (debugging) { - fprintf(stderr, "svc_maxfd now %u\n", svc_maxfd); + fprintf(stderr, "%s: svc_maxfd now %u\n", __func__, + svc_maxfd); } #endif } @@ -1187,9 +1191,9 @@ check_rmtcalls(struct pollfd *pfds, int nfds) ncallbacks_found++; #ifdef DEBUG_RMTCALL if (debugging) - fprintf(stderr, -"my_svc_run: polled on forwarding fd %d, netid %s - calling handle_reply\n", - pfds[j].fd, xprt->xp_netid); + fprintf(stderr, "%s: polled on forwarding " + "fd %d, netid %s - calling handle_reply\n", + __func__, pfds[j].fd, xprt->xp_netid); #endif handle_reply(pfds[j].fd, xprt); pfds[j].revents = 0; @@ -1251,27 +1255,26 @@ handle_reply(int fd, SVCXPRT *xprt) } while (inlen < 0 && errno == EINTR); if (inlen < 0) { if (debugging) - fprintf(stderr, - "handle_reply: recvfrom returned %d, errno %d\n", inlen, errno); + fprintf(stderr, "%s: recvfrom returned %d: %m\n", + __func__, inlen); goto done; } reply_msg.acpted_rply.ar_verf = _null_auth; reply_msg.acpted_rply.ar_results.where = 0; - reply_msg.acpted_rply.ar_results.proc = (xdrproc_t) xdr_void; + reply_msg.acpted_rply.ar_results.proc = (xdrproc_t)xdr_void; xdrmem_create(&reply_xdrs, buffer, (u_int)inlen, XDR_DECODE); if (!xdr_replymsg(&reply_xdrs, &reply_msg)) { if (debugging) - (void) fprintf(stderr, - "handle_reply: xdr_replymsg failed\n"); + fprintf(stderr, "%s: xdr_replymsg failed\n", __func__); goto done; } fi = forward_find(reply_msg.rm_xid); #ifdef SVC_RUN_DEBUG if (debugging) { - fprintf(stderr, "handle_reply: reply xid: %d fi addr: %p\n", - reply_msg.rm_xid, fi); + fprintf(stderr, "%s: reply xid: %d fi addr: %p\n", + __func__, reply_msg.rm_xid, fi); } #endif if (fi == NULL) { @@ -1280,8 +1283,8 @@ handle_reply(int fd, SVCXPRT *xprt) _seterr_reply(&reply_msg, &reply_error); if (reply_error.re_status != RPC_SUCCESS) { if (debugging) - (void) fprintf(stderr, "handle_reply: %s\n", - clnt_sperrno(reply_error.re_status)); + fprintf(stderr, "%s: %s\n", __func__, + clnt_sperrno(reply_error.re_status)); send_svcsyserr(xprt, fi); goto done; } @@ -1297,31 +1300,32 @@ handle_reply(int fd, SVCXPRT *xprt) uaddr = taddr2uaddr(rpcbind_get_conf("udp"), svc_getrpccaller(xprt)); if (debugging) { - fprintf(stderr, "handle_reply: forwarding address %s to %s\n", - a.rmt_uaddr, uaddr ? uaddr : "unknown"); + fprintf(stderr, "%s: forwarding address %s to %s\n", + __func__, a.rmt_uaddr, uaddr ? uaddr : rpcbind_unknown); } free(uaddr); #endif - svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a); + svc_sendreply(xprt, (xdrproc_t)xdr_rmtcall_result, &a); done: free(buffer); if (reply_msg.rm_xid == 0) { #ifdef SVC_RUN_DEBUG if (debugging) { - fprintf(stderr, "handle_reply: NULL xid on exit!\n"); + fprintf(stderr, "%s: NULL xid on exit!\n", __func__); } #endif } else - (void) free_slot_by_xid(reply_msg.rm_xid); + (void)free_slot_by_xid(reply_msg.rm_xid); } static void -find_versions(rpcprog_t prog, char *netid, rpcvers_t *lowvp, rpcvers_t *highvp) +find_versions(rpcprog_t prog, const char *netid, rpcvers_t *lowvp, + rpcvers_t *highvp) { - register rpcblist_ptr rbl; - unsigned int lowv = 0; - unsigned int highv = 0; + rpcblist_ptr rbl; + rpcvers_t lowv = 0; + rpcvers_t highv = 0; for (rbl = list_rbl; rbl != NULL; rbl = rbl->rpcb_next) { if ((rbl->rpcb_map.r_prog != prog) || @@ -1355,8 +1359,8 @@ find_versions(rpcprog_t prog, char *netid, rpcvers_t *lowvp, rpcvers_t *highvp) static rpcblist_ptr find_service(rpcprog_t prog, rpcvers_t vers, char *netid) { - register rpcblist_ptr hit = NULL; - register rpcblist_ptr rbl; + rpcblist_ptr hit = NULL; + rpcblist_ptr rbl; for (rbl = list_rbl; rbl != NULL; rbl = rbl->rpcb_next) { if ((rbl->rpcb_map.r_prog != prog) || @@ -1380,9 +1384,9 @@ getowner(SVCXPRT *transp, char *owner, size_t ownersize) uid_t uid; if (__rpc_get_local_uid(transp, &uid) < 0) - strlcpy(owner, "unknown", ownersize); + strlcpy(owner, rpcbind_unknown, ownersize); else if (uid == 0) - strlcpy(owner, "superuser", ownersize); + strlcpy(owner, rpcbind_superuser, ownersize); else snprintf(owner, ownersize, "%d", uid); @@ -1420,9 +1424,9 @@ add_pmaplist(RPCB *arg) /* * add to END of list */ - pml = malloc(sizeof (struct pmaplist)); + pml = malloc(sizeof(*pml)); if (pml == NULL) { - (void) syslog(LOG_ERR, "rpcbind: no memory!\n"); + syslog(LOG_ERR, "%s: %m", __func__); return (1); } pml->pml_map = pmap; @@ -1434,7 +1438,7 @@ add_pmaplist(RPCB *arg) /* Attach to the end of the list */ for (fnd = list_pml; fnd->pml_next; fnd = fnd->pml_next) - ; + continue; fnd->pml_next = pml; } return (0); diff --git a/usr.sbin/rpcbind/rpcbind.c b/usr.sbin/rpcbind/rpcbind.c index 182dbff7dbed..faa24a4415e2 100644 --- a/usr.sbin/rpcbind/rpcbind.c +++ b/usr.sbin/rpcbind/rpcbind.c @@ -111,36 +111,37 @@ static int terminate_wfd; #ifdef WARMSTART /* Local Variable */ -static int warmstart = 0; /* Grab an old copy of registrations. */ +static int warmstart = 0; /* Grab an old copy of registrations */ #endif #ifdef PORTMAP struct pmaplist *list_pml; /* A list of version 2 rpcbind services */ -char *udptrans; /* Name of UDP transport */ -char *tcptrans; /* Name of TCP transport */ -char *udp_uaddr; /* Universal UDP address */ -char *tcp_uaddr; /* Universal TCP address */ +const char *udptrans; /* Name of UDP transport */ +const char *tcptrans; /* Name of TCP transport */ +const char *udp_uaddr; /* Universal UDP address */ +const char *tcp_uaddr; /* Universal TCP address */ #endif -static char servname[] = "rpcbind"; -static char superuser[] = "superuser"; -static char nlname[] = "netlink"; +static const char servname[] = "rpcbind"; +const char rpcbind_superuser[] = "superuser"; +const char rpcbind_unknown[] = "unknown"; +static const char nlname[] = "netlink"; -static struct netconfig netlink_nconf = { - .nc_netid = nlname, +static const struct netconfig netlink_nconf = { + .nc_netid = __UNCONST(nlname), .nc_semantics = NC_TPI_CLTS, }; -static struct t_bind netlink_taddr = { +static const struct t_bind netlink_taddr = { .addr = { .maxlen = sizeof(nlname), .len = sizeof(nlname), - .buf = nlname, + .buf = __UNCONST(nlname), }, }; -static int init_transport(struct netconfig *); -static void rbllist_add(rpcprog_t, rpcvers_t, struct netconfig *, - struct netbuf *); +static int init_transport(const struct netconfig *); +static void rbllist_add(rpcprog_t, rpcvers_t, const struct netconfig *, + struct netbuf *); static void cleanup_pidfile(void); static void terminate(int); static void parseargs(int, char *[]); @@ -192,7 +193,7 @@ main(int argc, char *argv[]) fprintf(stderr, "Sorry. You are not superuser\n"); exit(1); } - nc_handle = setnetconfig(); /* open netconfig file */ + nc_handle = setnetconfig(); /* open netconfig file */ if (nc_handle == NULL) { syslog(LOG_ERR, "could not read /etc/netconfig"); exit(1); @@ -216,7 +217,7 @@ main(int argc, char *argv[]) while ((nconf = getnetconfig(nc_handle))) { if (nconf->nc_flag & NC_VISIBLE) { - if (ipv6_only == 1 && strcmp(nconf->nc_protofmly, + if (ipv6_only == 1 && strcmp(nconf->nc_protofmly, "inet") == 0) { /* DO NOTHING */ } else @@ -296,7 +297,7 @@ main(int argc, char *argv[]) * Returns 0 if succeeds, else fails */ static int -init_transport(struct netconfig *nconf) +init_transport(const struct netconfig *nconf) { int fd = -1; struct t_bind taddr; @@ -308,8 +309,8 @@ init_transport(struct netconfig *nconf) int addrlen; int nhostsbak; int bound; - struct sockaddr *sa; u_int32_t host_addr[4]; /* IPv4 or IPv6 */ + struct sockaddr *sa; struct sockaddr_un sun; mode_t oldmask; bool local, netlink; @@ -321,17 +322,17 @@ init_transport(struct netconfig *nconf) if ((nconf->nc_semantics != NC_TPI_CLTS) && (nconf->nc_semantics != NC_TPI_COTS) && (nconf->nc_semantics != NC_TPI_COTS_ORD)) - return (1); /* not my type */ -#ifdef ND_DEBUG + return (1); /* not my type */ +#ifdef RPCBIND_DEBUG if (debugging) { - int i; - char **s; - - (void)fprintf(stderr, "%s: %ld lookup routines :\n", - nconf->nc_netid, nconf->nc_nlookups); - for (i = 0, s = nconf->nc_lookups; i < nconf->nc_nlookups; - i++, s++) - fprintf(stderr, "[%d] - %s\n", i, *s); + unsigned int i; + char **s; + + (void)fprintf(stderr, "%s: %ld lookup routines :\n", + nconf->nc_netid, nconf->nc_nlookups); + for (i = 0, s = nconf->nc_lookups; i < nconf->nc_nlookups; + i++, s++) + (void)fprintf(stderr, "[%d] - %s\n", i, *s); } #endif @@ -339,224 +340,223 @@ init_transport(struct netconfig *nconf) * XXX - using RPC library internal functions. */ if (local) { - /* - * For other transports we call this later, for each socket we - * like to bind. - */ - if ((fd = __rpc_nconf2fd(nconf)) < 0) { - int non_fatal = 0; - if (errno == EAFNOSUPPORT) - non_fatal = 1; - syslog(non_fatal?LOG_DEBUG:LOG_ERR, "cannot create socket for %s", - nconf->nc_netid); - return (1); - } + /* + * For other transports we call this later, for each socket we + * like to bind. + */ + if ((fd = __rpc_nconf2fd(nconf)) < 0) { + syslog(errno == EAFNOSUPPORT ? LOG_DEBUG : LOG_ERR, + "cannot create socket for %s", + nconf->nc_netid); + return (1); + } } if (!__rpc_nconf2sockinfo(nconf, &si)) { - syslog(LOG_ERR, "cannot get information for %s", - nconf->nc_netid); - return (1); + syslog(LOG_ERR, "cannot get information for %s", + nconf->nc_netid); + return (1); } if (local) { - memset(&sun, 0, sizeof sun); - sun.sun_family = AF_LOCAL; - unlink(_PATH_RPCBINDSOCK); - strcpy(sun.sun_path, _PATH_RPCBINDSOCK); - sun.sun_len = SUN_LEN(&sun); - addrlen = sizeof (struct sockaddr_un); - sa = (struct sockaddr *)&sun; + memset(&sun, 0, sizeof sun); + sun.sun_family = AF_LOCAL; + unlink(_PATH_RPCBINDSOCK); + strcpy(sun.sun_path, _PATH_RPCBINDSOCK); + sun.sun_len = SUN_LEN(&sun); + addrlen = sizeof (struct sockaddr_un); + sa = (struct sockaddr *)&sun; } else if (!netlink) { - /* Get rpcbind's address on this transport */ - - memset(&hints, 0, sizeof hints); - hints.ai_flags = AI_PASSIVE; - hints.ai_family = si.si_af; - hints.ai_socktype = si.si_socktype; - hints.ai_protocol = si.si_proto; + /* Get rpcbind's address on this transport */ + memset(&hints, 0, sizeof hints); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = si.si_af; + hints.ai_socktype = si.si_socktype; + hints.ai_protocol = si.si_proto; } if (!local && !netlink) { - /* - * If no hosts were specified, just bind to INADDR_ANY. - * Otherwise make sure 127.0.0.1 is added to the list. - */ - nhostsbak = nhosts + 1; - hosts = realloc(hosts, nhostsbak * sizeof(char *)); - if (nhostsbak == 1) - hosts[0] = "*"; - else { - if (hints.ai_family == AF_INET && nobind_localhost == 0) { - hosts[nhostsbak - 1] = "127.0.0.1"; - } else if (hints.ai_family == AF_INET6 && nobind_localhost == 0) { - hosts[nhostsbak - 1] = "::1"; - } else - return 1; - } - - /* - * Bind to specific IPs if asked to - */ - bound = 0; - while (nhostsbak > 0) { - --nhostsbak; /* - * XXX - using RPC library internal functions. + * If no hosts were specified, just bind to INADDR_ANY. + * Otherwise make sure 127.0.0.1 is added to the list. */ - if ((fd = __rpc_nconf2fd(nconf)) < 0) { - int non_fatal = 0; - if (errno == EAFNOSUPPORT && - nconf->nc_semantics != NC_TPI_CLTS) - non_fatal = 1; - syslog(non_fatal ? LOG_DEBUG : LOG_ERR, - "cannot create socket for %s", nconf->nc_netid); - return (1); + nhostsbak = nhosts + 1; + hosts = realloc(hosts, nhostsbak * sizeof(char *)); + if (nhostsbak == 1) + hosts[0] = "*"; + else { + if (hints.ai_family == AF_INET && + !nobind_localhost) { + hosts[nhostsbak - 1] = "127.0.0.1"; + } else if (hints.ai_family == AF_INET6 && + !nobind_localhost) { + hosts[nhostsbak - 1] = "::1"; + } else + return 1; } - switch (hints.ai_family) { - case AF_INET: - if (inet_pton(AF_INET, hosts[nhostsbak], - host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; - } else { + + /* + * Bind to specific IPs if asked to + */ + bound = 0; + while (nhostsbak > 0) { + --nhostsbak; /* - * Skip if we have an AF_INET6 address. + * XXX - using RPC library internal functions. */ - if (inet_pton(AF_INET6, - hosts[nhostsbak], host_addr) == 1) { - close(fd); - continue; + if ((fd = __rpc_nconf2fd(nconf)) < 0) { + int non_fatal = 0; + if (errno == EAFNOSUPPORT && + nconf->nc_semantics != NC_TPI_CLTS) + non_fatal = 1; + syslog(non_fatal ? LOG_DEBUG : LOG_ERR, + "cannot create socket for %s", nconf->nc_netid); + return (1); } - } - break; - case AF_INET6: - if (inet_pton(AF_INET6, hosts[nhostsbak], - host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; - } else { + switch (hints.ai_family) { + case AF_INET: + if (inet_pton(AF_INET, hosts[nhostsbak], + host_addr) == 1) { + hints.ai_flags &= AI_NUMERICHOST; + } else { + /* + * Skip if we have an AF_INET6 address. + */ + if (inet_pton(AF_INET6, + hosts[nhostsbak], host_addr) == 1) { + close(fd); + continue; + } + } + break; + case AF_INET6: + if (inet_pton(AF_INET6, hosts[nhostsbak], + host_addr) == 1) { + hints.ai_flags &= AI_NUMERICHOST; + } else { + /* + * Skip if we have an AF_INET address. + */ + if (inet_pton(AF_INET, hosts[nhostsbak], + host_addr) == 1) { + close(fd); + continue; + } + } + if (setsockopt(fd, IPPROTO_IPV6, + IPV6_V6ONLY, &on, sizeof on) < 0) { + syslog(LOG_ERR, + "can't set v6-only binding for " + "ipv6 socket: %m"); + continue; + } + break; + default: + break; + } + /* - * Skip if we have an AF_INET address. + * If no hosts were specified, just bind to INADDR_ANY */ - if (inet_pton(AF_INET, hosts[nhostsbak], - host_addr) == 1) { - close(fd); + if (strcmp("*", hosts[nhostsbak]) == 0) + hosts[nhostsbak] = NULL; + if ((aicode = getaddrinfo(hosts[nhostsbak], servname, &hints, + &res)) != 0) { + syslog(LOG_ERR, "cannot get local address for %s: %s", + nconf->nc_netid, gai_strerror(aicode)); continue; } - } - if (setsockopt(fd, IPPROTO_IPV6, - IPV6_V6ONLY, &on, sizeof on) < 0) { - syslog(LOG_ERR, - "can't set v6-only binding for " - "ipv6 socket: %m"); - continue; - } - break; - default: - break; - } + addrlen = res->ai_addrlen; + sa = (struct sockaddr *)res->ai_addr; + oldmask = umask(S_IXUSR|S_IXGRP|S_IXOTH); + if (bind(fd, sa, addrlen) != 0) { + syslog(LOG_ERR, "cannot bind %s on %s: %m", + (hosts[nhostsbak] == NULL) ? "*" : + hosts[nhostsbak], nconf->nc_netid); + if (res != NULL) + freeaddrinfo(res); + continue; + } else + bound = 1; + (void)umask(oldmask); + + /* Copy the address */ + taddr.addr.len = taddr.addr.maxlen = addrlen; + taddr.addr.buf = malloc(addrlen); + if (taddr.addr.buf == NULL) { + syslog(LOG_ERR, + "cannot allocate memory for %s address", + nconf->nc_netid); + if (res != NULL) + freeaddrinfo(res); + return 1; + } + memcpy(taddr.addr.buf, sa, addrlen); +#ifdef RPCBIND_DEBUG + if (debugging) { + /* + * for debugging print out our universal + * address + */ + char *uaddr; + struct netbuf nb; + + nb.buf = sa; + nb.len = nb.maxlen = sa->sa_len; + uaddr = taddr2uaddr(nconf, &nb); + (void)fprintf(stderr, + "rpcbind : my address is %s\n", uaddr); + (void)free(uaddr); + } +#endif - /* - * If no hosts were specified, just bind to INADDR_ANY - */ - if (strcmp("*", hosts[nhostsbak]) == 0) - hosts[nhostsbak] = NULL; - if ((aicode = getaddrinfo(hosts[nhostsbak], servname, &hints, - &res)) != 0) { - syslog(LOG_ERR, "cannot get local address for %s: %s", - nconf->nc_netid, gai_strerror(aicode)); - continue; + if (nconf->nc_semantics != NC_TPI_CLTS) + listen(fd, SOMAXCONN); + + my_xprt = (SVCXPRT *)svc_tli_create(fd, nconf, &taddr, + RPC_MAXDATASIZE, RPC_MAXDATASIZE); } - addrlen = res->ai_addrlen; - sa = (struct sockaddr *)res->ai_addr; + } else if (local) { oldmask = umask(S_IXUSR|S_IXGRP|S_IXOTH); - if (bind(fd, sa, addrlen) != 0) { - syslog(LOG_ERR, "cannot bind %s on %s: %m", - (hosts[nhostsbak] == NULL) ? "*" : - hosts[nhostsbak], nconf->nc_netid); - if (res != NULL) - freeaddrinfo(res); - continue; - } else - bound = 1; - (void)umask(oldmask); + if (bind(fd, sa, addrlen) < 0) { + syslog(LOG_ERR, "cannot bind %s: %m", nconf->nc_netid); + if (res != NULL) + freeaddrinfo(res); + return 1; + } + (void) umask(oldmask); /* Copy the address */ taddr.addr.len = taddr.addr.maxlen = addrlen; taddr.addr.buf = malloc(addrlen); if (taddr.addr.buf == NULL) { - syslog(LOG_ERR, - "cannot allocate memory for %s address", - nconf->nc_netid); - if (res != NULL) - freeaddrinfo(res); - return 1; + syslog(LOG_ERR, "cannot allocate memory for %s address", + nconf->nc_netid); + if (res != NULL) + freeaddrinfo(res); + return 1; } memcpy(taddr.addr.buf, sa, addrlen); -#ifdef ND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) { - /* - * for debugging print out our universal - * address - */ - char *uaddr; - struct netbuf nb; - - nb.buf = sa; - nb.len = nb.maxlen = sa->sa_len; - uaddr = taddr2uaddr(nconf, &nb); - (void)fprintf(stderr, - "rpcbind : my address is %s\n", uaddr); - (void)free(uaddr); - } + /* for debugging print out our universal address */ + char *uaddr; + struct netbuf nb; + + nb.buf = sa; + nb.len = nb.maxlen = sa->sa_len; + uaddr = taddr2uaddr(nconf, &nb); + (void)fprintf(stderr, "rpcbind : my address is %s\n", + uaddr); + (void)free(uaddr); + } #endif if (nconf->nc_semantics != NC_TPI_CLTS) - listen(fd, SOMAXCONN); + listen(fd, SOMAXCONN); my_xprt = (SVCXPRT *)svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE); - } - } else if (local) { - oldmask = umask(S_IXUSR|S_IXGRP|S_IXOTH); - if (bind(fd, sa, addrlen) < 0) { - syslog(LOG_ERR, "cannot bind %s: %m", nconf->nc_netid); - if (res != NULL) - freeaddrinfo(res); - return 1; - } - (void) umask(oldmask); - - /* Copy the address */ - taddr.addr.len = taddr.addr.maxlen = addrlen; - taddr.addr.buf = malloc(addrlen); - if (taddr.addr.buf == NULL) { - syslog(LOG_ERR, "cannot allocate memory for %s address", - nconf->nc_netid); - if (res != NULL) - freeaddrinfo(res); - return 1; - } - memcpy(taddr.addr.buf, sa, addrlen); -#ifdef ND_DEBUG - if (debugging) { - /* for debugging print out our universal address */ - char *uaddr; - struct netbuf nb; - - nb.buf = sa; - nb.len = nb.maxlen = sa->sa_len; - uaddr = taddr2uaddr(nconf, &nb); - (void) fprintf(stderr, "rpcbind : my address is %s\n", - uaddr); - (void) free(uaddr); - } -#endif - - if (nconf->nc_semantics != NC_TPI_CLTS) - listen(fd, SOMAXCONN); - - my_xprt = (SVCXPRT *)svc_tli_create(fd, nconf, &taddr, - RPC_MAXDATASIZE, RPC_MAXDATASIZE); } else { assert(netlink); taddr = netlink_taddr; @@ -581,7 +581,7 @@ init_transport(struct netconfig *nconf) if (!svc_register(my_xprt, PMAPPROG, PMAPVERS, pmap_service, 0)) { syslog(LOG_ERR, "could not register on %s", - nconf->nc_netid); + nconf->nc_netid); goto error; } pml = malloc(sizeof (struct pmaplist)); @@ -597,7 +597,7 @@ init_transport(struct netconfig *nconf) free(pml); pml = NULL; syslog(LOG_ERR, - "cannot have more than one TCP transport"); + "cannot have more than one TCP transport"); goto error; } tcptrans = strdup(nconf->nc_netid); @@ -609,7 +609,7 @@ init_transport(struct netconfig *nconf) } else if (strcmp(nconf->nc_proto, NC_UDP) == 0) { if (udptrans[0]) { syslog(LOG_ERR, - "cannot have more than one UDP transport"); + "cannot have more than one UDP transport"); goto error; } udptrans = strdup(nconf->nc_netid); @@ -626,9 +626,9 @@ init_transport(struct netconfig *nconf) list_pml = pml; /* Add version 3 information */ - pml = malloc(sizeof (struct pmaplist)); + pml = malloc(sizeof(*pml)); if (pml == NULL) { - syslog(LOG_ERR, "no memory!"); + syslog(LOG_ERR, "%m"); exit(1); } pml->pml_map = list_pml->pml_map; @@ -637,9 +637,9 @@ init_transport(struct netconfig *nconf) list_pml = pml; /* Add version 4 information */ - pml = malloc (sizeof (struct pmaplist)); + pml = malloc(sizeof(*pml)); if (pml == NULL) { - syslog(LOG_ERR, "no memory!"); + syslog(LOG_ERR, "%m"); exit(1); } pml->pml_map = list_pml->pml_map; @@ -655,7 +655,7 @@ init_transport(struct netconfig *nconf) /* version 3 registration */ if (!svc_reg(my_xprt, RPCBPROG, RPCBVERS, rpcb_service_3, NULL)) { syslog(LOG_ERR, "could not register %s version 3", - nconf->nc_netid); + nconf->nc_netid); goto error; } rbllist_add(RPCBPROG, RPCBVERS, nconf, &taddr.addr); @@ -663,24 +663,24 @@ init_transport(struct netconfig *nconf) /* version 4 registration */ if (!svc_reg(my_xprt, RPCBPROG, RPCBVERS4, rpcb_service_4, NULL)) { syslog(LOG_ERR, "could not register %s version 4", - nconf->nc_netid); + nconf->nc_netid); goto error; } rbllist_add(RPCBPROG, RPCBVERS4, nconf, &taddr.addr); /* decide if bound checking works for this transport */ status = add_bndlist(nconf, &taddr.addr); -#ifdef BIND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) { if (status < 0) { fprintf(stderr, "Error in finding bind status for %s\n", - nconf->nc_netid); + nconf->nc_netid); } else if (status == 0) { fprintf(stderr, "check binding for %s\n", - nconf->nc_netid); + nconf->nc_netid); } else if (status > 0) { fprintf(stderr, "No check binding for %s\n", - nconf->nc_netid); + nconf->nc_netid); } } #endif @@ -690,15 +690,15 @@ init_transport(struct netconfig *nconf) if (!netlink && nconf->nc_semantics == NC_TPI_CLTS) { status = create_rmtcall_fd(nconf); -#ifdef BIND_DEBUG +#ifdef RPCBIND_DEBUG if (debugging) { if (status < 0) { fprintf(stderr, "Could not create rmtcall fd for %s\n", - nconf->nc_netid); + nconf->nc_netid); } else { fprintf(stderr, "rmtcall fd for %s is %d\n", - nconf->nc_netid, status); + nconf->nc_netid, status); } } #endif @@ -761,13 +761,13 @@ listen_addr(const struct sockaddr *sa) continue; switch (sa->sa_family) { case AF_INET: - if (memcmp(&SA2SINADDR(sa), &SA2SINADDR(bound_sa[i]), + if (memcmp(&SA2SINADDR(sa), &SA2SINADDR(bound_sa[i]), sizeof(struct in_addr)) == 0) return (1); break; #ifdef INET6 case AF_INET6: - if (memcmp(&SA2SIN6ADDR(sa), &SA2SIN6ADDR(bound_sa[i]), + if (memcmp(&SA2SIN6ADDR(sa), &SA2SIN6ADDR(bound_sa[i]), sizeof(struct in6_addr)) == 0) return (1); break; @@ -780,8 +780,8 @@ listen_addr(const struct sockaddr *sa) } static void -rbllist_add(rpcprog_t prog, rpcvers_t vers, struct netconfig *nconf, - struct netbuf *addr) +rbllist_add(rpcprog_t prog, rpcvers_t vers, const struct netconfig *nconf, + struct netbuf *addr) { rpcblist_ptr rbl; @@ -795,7 +795,7 @@ rbllist_add(rpcprog_t prog, rpcvers_t vers, struct netconfig *nconf, rbl->rpcb_map.r_vers = vers; rbl->rpcb_map.r_netid = strdup(nconf->nc_netid); rbl->rpcb_map.r_addr = taddr2uaddr(nconf, addr); - rbl->rpcb_map.r_owner = strdup(superuser); + rbl->rpcb_map.r_owner = strdup(rpcbind_superuser); rbl->rpcb_next = list_rbl; /* Attach to global list */ list_rbl = rbl; } @@ -928,9 +928,9 @@ void reap(int dummy __unused) { int save_errno = errno; - + while (wait3(NULL, WNOHANG, NULL) > 0) - ; + ; errno = save_errno; } diff --git a/usr.sbin/rpcbind/rpcbind.h b/usr.sbin/rpcbind/rpcbind.h index 28addac494ce..dd49b27efe0d 100644 --- a/usr.sbin/rpcbind/rpcbind.h +++ b/usr.sbin/rpcbind/rpcbind.h @@ -80,14 +80,17 @@ extern int rpcbindlockfd; #ifdef PORTMAP extern struct pmaplist *list_pml; /* A list of version 2 rpcbind services */ -extern char *udptrans; /* Name of UDP transport */ -extern char *tcptrans; /* Name of TCP transport */ -extern char *udp_uaddr; /* Universal UDP address */ -extern char *tcp_uaddr; /* Universal TCP address */ +extern const char *udptrans; /* Name of UDP transport */ +extern const char *tcptrans; /* Name of TCP transport */ +extern const char *udp_uaddr; /* Universal UDP address */ +extern const char *tcp_uaddr; /* Universal TCP address */ #endif -int add_bndlist(struct netconfig *, struct netbuf *); -bool_t is_bound(char *, char *); +extern const char rpcbind_superuser[]; +extern const char rpcbind_unknown[]; + +int add_bndlist(const struct netconfig *, struct netbuf *); +bool_t is_bound(const char *, const char *); char *mergeaddr(SVCXPRT *, char *, char *, char *); struct netconfig *rpcbind_get_conf(const char *); @@ -95,9 +98,10 @@ void rpcbs_init(void); void rpcbs_procinfo(rpcvers_t, rpcproc_t); void rpcbs_set(rpcvers_t, bool_t); void rpcbs_unset(rpcvers_t, bool_t); -void rpcbs_getaddr(rpcvers_t, rpcprog_t, rpcvers_t, char *, char *); +void rpcbs_getaddr(rpcvers_t, rpcprog_t, rpcvers_t, const char *, + const char *); void rpcbs_rmtcall(rpcvers_t, rpcproc_t, rpcprog_t, rpcvers_t, rpcproc_t, - char *, rpcblist_ptr); + char *, rpcblist_ptr); void *rpcbproc_getstat(void *, struct svc_req *, SVCXPRT *, rpcvers_t); void rpcb_service_3(struct svc_req *, SVCXPRT *); @@ -106,20 +110,16 @@ void rpcb_service_4(struct svc_req *, SVCXPRT *); /* Common functions shared between versions */ void *rpcbproc_set_com(void *, struct svc_req *, SVCXPRT *, rpcvers_t); void *rpcbproc_unset_com(void *, struct svc_req *, SVCXPRT *, rpcvers_t); -bool_t map_set(RPCB *, char *); -bool_t map_unset(RPCB *, char *); +bool_t map_set(RPCB *, const char *); +bool_t map_unset(RPCB *, const char *); void delete_prog(unsigned int); void *rpcbproc_getaddr_com(RPCB *, struct svc_req *, SVCXPRT *, rpcvers_t, - rpcvers_t); -void *rpcbproc_gettime_com(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); -void *rpcbproc_uaddr2taddr_com(void *, struct svc_req *, - SVCXPRT *, rpcvers_t); -void *rpcbproc_taddr2uaddr_com(void *, struct svc_req *, SVCXPRT *, - rpcvers_t); -int create_rmtcall_fd(struct netconfig *); -void rpcbproc_callit_com(struct svc_req *, SVCXPRT *, rpcvers_t, - rpcvers_t); + rpcvers_t); +void *rpcbproc_gettime_com(void *, struct svc_req *, SVCXPRT *, rpcvers_t); +void *rpcbproc_uaddr2taddr_com(void *, struct svc_req *, SVCXPRT *, rpcvers_t); +void *rpcbproc_taddr2uaddr_com(void *, struct svc_req *, SVCXPRT *, rpcvers_t); +int create_rmtcall_fd(const struct netconfig *); +void rpcbproc_callit_com(struct svc_req *, SVCXPRT *, rpcvers_t, rpcvers_t); void my_svc_run(void); void rpcbind_abort(void); @@ -156,4 +156,6 @@ struct sockaddr *local_sa(int); #define SA2SIN6ADDR(sa) (SA2SIN6(sa)->sin6_addr) #endif +#define __UNCONST(a) __DECONST(void *, (a)) + #endif /* rpcbind_h */ diff --git a/usr.sbin/rpcbind/warmstart.c b/usr.sbin/rpcbind/warmstart.c index 075aebf421f1..e3c075f64a08 100644 --- a/usr.sbin/rpcbind/warmstart.c +++ b/usr.sbin/rpcbind/warmstart.c @@ -87,7 +87,7 @@ write_struct(char *filename, xdrproc_t structproc, void *list) return (FALSE); } } - (void) umask(omask); + (void)umask(omask); xdrstdio_create(&xdrs, fp, XDR_ENCODE); if (structproc(&xdrs, list) == FALSE) { @@ -143,9 +143,9 @@ error: fprintf(stderr, "rpcbind: will start from scratch\n"); void write_warmstart(void) { - (void) write_struct(RPCBFILE, (xdrproc_t)xdr_rpcblist_ptr, &list_rbl); + (void)write_struct(RPCBFILE, (xdrproc_t)xdr_rpcblist_ptr, &list_rbl); #ifdef PORTMAP - (void) write_struct(PMAPFILE, (xdrproc_t)xdr_pmaplist_ptr, &list_pml); + (void)write_struct(PMAPFILE, (xdrproc_t)xdr_pmaplist_ptr, &list_pml); #endif } @@ -166,13 +166,13 @@ read_warmstart(void) ok2 = read_struct(PMAPFILE, (xdrproc_t)xdr_pmaplist_ptr, &tmp_pmapl); #endif if (ok2 == FALSE) { - xdr_free((xdrproc_t) xdr_rpcblist_ptr, (char *)&tmp_rpcbl); + xdr_free((xdrproc_t)xdr_rpcblist_ptr, &tmp_rpcbl); return; } - xdr_free((xdrproc_t) xdr_rpcblist_ptr, (char *)&list_rbl); + xdr_free((xdrproc_t)xdr_rpcblist_ptr, &list_rbl); list_rbl = tmp_rpcbl; #ifdef PORTMAP - xdr_free((xdrproc_t) xdr_pmaplist_ptr, (char *)&list_pml); + xdr_free((xdrproc_t)xdr_pmaplist_ptr, &list_pml); list_pml = tmp_pmapl; #endif } |