steved pushed to rpcbind (f22). "Updated to latest upstream release: 0.2.3 (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Tue Apr 28 17:31:24 UTC 2015


>From e8257000bd7750d3407254ca7890e2b17b7b431f Mon Sep 17 00:00:00 2001
From: Steve Dickson <steved at redhat.com>
Date: Tue, 28 Apr 2015 12:07:17 -0400
Subject: Updated to latest upstream release: 0.2.3

Signed-off-by: Steve Dickson <steved at redhat.com>

diff --git a/.gitignore b/.gitignore
index 1d1304d..5ec4602 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@ rpcbind-0.2.0
 rpcbind-0.2.1
 /rpcbind-0.2.2.tar.bz2
 rpcbind-0.2.2
+/rpcbind-0.2.3.tar.bz2
+rpcbind-0.2.3
diff --git a/rpcbind-0.2.1-rpcuser.patch b/rpcbind-0.2.1-rpcuser.patch
deleted file mode 100644
index 426f997..0000000
--- a/rpcbind-0.2.1-rpcuser.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-commit b3b031b07cc5909aaf964f9d4cf46f6097769320
-Author: Steve Dickson <steved at redhat.com>
-Date:   Wed Aug 21 14:40:22 2013 -0400
-
-    rpcbind: rpcuser not being set in Makefile.am
-    
-    Commit 8d7a0708 cause a regression where the rpcuser id was not
-    being set, which in turn cause rpcbind to immediately exit.
-    This patch removes the extra ',' that was in the AC_ARG_WITH
-    statement in the configure.ac file.
-    
-    Signed-off-by: Steve Dickson <steved at redhat.com>
-
-diff --git a/configure.ac b/configure.ac
-index 2b67720..1cf42d3 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -23,7 +23,7 @@ AC_ARG_WITH([statedir],
- AC_SUBST([statedir], [$with_statedir])
- 
- AC_ARG_WITH([rpcuser],
--  AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
-+  AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@])
-   ,, [with_rpcuser=root])
- AC_SUBST([rpcuser], [$with_rpcuser])
-  
diff --git a/rpcbind-0.2.2-xlog-debug.patch b/rpcbind-0.2.2-xlog-debug.patch
deleted file mode 100644
index cbda4b8..0000000
--- a/rpcbind-0.2.2-xlog-debug.patch
+++ /dev/null
@@ -1,1213 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index ea5725f..3add1e3 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -38,7 +38,8 @@ rpcbind_SOURCES = \
- 	src/rpcbind.h \
- 	src/security.c \
- 	src/util.c \
--	src/warmstart.c
-+	src/warmstart.c \
-+	src/xlog.c
- rpcbind_LDADD = $(TIRPC_LIBS)
- 
- if SYSTEMD
-diff --git a/man/rpcbind.8 b/man/rpcbind.8
-index da32701..af6200f 100644
---- a/man/rpcbind.8
-+++ b/man/rpcbind.8
-@@ -76,8 +76,8 @@ do an abort on errors.
- Run in debug mode.
- In this mode,
- .Nm
--will not fork when it starts, will print additional information
--during operation, and will abort on certain errors if
-+will log additional information during operation, 
-+and will abort on certain errors if
- .Fl a
- is also specified.
- With this option, the name-to-address translation consistency
-diff --git a/src/pmap_svc.c b/src/pmap_svc.c
-index 337e64d..ad28b93 100644
---- a/src/pmap_svc.c
-+++ b/src/pmap_svc.c
-@@ -54,9 +54,11 @@ static	char sccsid[] = "@(#)pmap_svc.c 1.23 89/04/05 Copyr 1984 Sun Micro";
- #include <rpc/pmap_prot.h>
- #include <rpc/rpcb_prot.h>
- #ifdef RPCBIND_DEBUG
-+#include <syslog.h>
- #include <stdlib.h>
- #endif
- #include "rpcbind.h"
-+#include "xlog.h"
- #include <rpc/svc_soc.h> /* svc_getcaller routine definition */
- static struct pmaplist *find_service_pmap __P((rpcprog_t, rpcvers_t,
- 					       rpcprot_t));
-@@ -78,7 +80,7 @@ pmap_service(struct svc_req *rqstp, SVCXPRT *xprt)
- 		 */
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "PMAPPROC_NULL\n");
-+			xlog(LOG_DEBUG, "PMAPPROC_NULL\n");
- #endif
- 		check_access(xprt, rqstp->rq_proc, 0, PMAPVERS);
- 		if ((!svc_sendreply(xprt, (xdrproc_t) xdr_void, NULL)) &&
-@@ -117,7 +119,7 @@ pmap_service(struct svc_req *rqstp, SVCXPRT *xprt)
- 		 */
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "PMAPPROC_DUMP\n");
-+			xlog(LOG_DEBUG, "PMAPPROC_DUMP\n");
- #endif
- 		pmapproc_dump(rqstp, xprt);
- 		break;
-@@ -196,7 +198,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
- 	}
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--	  fprintf(stderr, "%s request for (%lu, %lu) : ",
-+	  xlog(LOG_DEBUG, "%s request for (%lu, %lu) : ",
- 		  op == PMAPPROC_SET ? "PMAP_SET" : "PMAP_UNSET",
- 		  reg.pm_prog, reg.pm_vers);
- #endif
-@@ -243,14 +245,14 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
- done_change:
- 	if ((!svc_sendreply(xprt, (xdrproc_t) xdr_long, (caddr_t) &ans)) &&
- 	    debugging) {
--		fprintf(stderr, "portmap: svc_sendreply\n");
-+		xlog(L_ERROR, "portmap: svc_sendreply failed!\n");
- 		if (doabort) {
- 			rpcbind_abort();
- 		}
- 	}
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "%s\n", ans == TRUE ? "succeeded" : "failed");
-+		xlog(LOG_DEBUG, "%s\n", ans == TRUE ? "succeeded" : "failed");
- #endif
- 	if (op == PMAPPROC_SET)
- 		rpcbs_set(RPCBVERS_2_STAT, ans);
-@@ -285,7 +287,7 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 	if (debugging) {
- 		uaddr =  taddr2uaddr(rpcbind_get_conf(xprt->xp_netid),
- 			    svc_getrpccaller(xprt));
--		fprintf(stderr, "PMAP_GETPORT req for (%lu, %lu, %s) from %s :",
-+		xlog(LOG_DEBUG, "PMAP_GETPORT req for (%lu, %lu, %s) from %s :",
- 			reg.pm_prog, reg.pm_vers,
- 			pmap_ipprot2netid(reg.pm_prot)?: "<invalid>",
- 			uaddr);
-@@ -315,14 +317,14 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 	lport = port;
- 	if ((!svc_sendreply(xprt, (xdrproc_t) xdr_long, (caddr_t)&lport)) &&
- 			debugging) {
--		(void) fprintf(stderr, "portmap: svc_sendreply\n");
-+		xlog(L_ERROR, "portmap: svc_sendreply failed!\n");
- 		if (doabort) {
- 			rpcbind_abort();
- 		}
- 	}
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "port = %d\n", port);
-+		xlog(LOG_DEBUG, "port = %d\n", port);
- #endif
- 	rpcbs_getaddr(RPCBVERS_2_STAT, reg.pm_prog, reg.pm_vers,
- 		pmap_ipprot2netid(reg.pm_prot) ?: "<unknown>",
-@@ -347,8 +349,7 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 	
- 	if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr,
- 			(caddr_t)&list_pml)) && debugging) {
--		if (debugging)
--			(void) fprintf(stderr, "portmap: svc_sendreply\n");
-+		xlog(L_ERROR, "portmap: svc_sendreply failed!\n");
- 		if (doabort) {
- 			rpcbind_abort();
- 		}
-diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c
-index e350f85..92361a2 100644
---- a/src/rpcb_svc.c
-+++ b/src/rpcb_svc.c
-@@ -86,7 +86,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 		 */
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_NULL\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_NULL");
- #endif
- 		/* This call just logs, no actual checks */
- 		check_access(transp, rqstp->rq_proc, 0, RPCBVERS);
-@@ -114,7 +114,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_DUMP:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_DUMP\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_DUMP");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_void;
- 		xdr_result = (xdrproc_t)xdr_rpcblist_ptr;
-@@ -128,7 +128,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_GETTIME:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_GETTIME\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_GETTIME");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_void;
- 		xdr_result = (xdrproc_t)xdr_u_long;
-@@ -138,7 +138,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_UADDR2TADDR:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_UADDR2TADDR\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_UADDR2TADDR");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_wrapstring;
- 		xdr_result = (xdrproc_t)xdr_netbuf;
-@@ -148,7 +148,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_TADDR2UADDR:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_TADDR2UADDR\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_TADDR2UADDR");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_netbuf;
- 		xdr_result = (xdrproc_t)xdr_wrapstring;
-@@ -164,7 +164,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 				(char *) &argument)) {
- 		svcerr_decode(transp);
- 		if (debugging)
--			(void) fprintf(stderr, "rpcbind: could not decode\n");
-+			(void) xlog(LOG_DEBUG, "rpcbind: could not decode");
- 		return;
- 	}
- 
-@@ -182,7 +182,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 						result)) {
- 		svcerr_systemerr(transp);
- 		if (debugging) {
--			(void) fprintf(stderr, "rpcbind: svc_sendreply\n");
-+			(void) xlog(LOG_DEBUG, "rpcbind: svc_sendreply");
- 			if (doabort) {
- 				rpcbind_abort();
- 			}
-@@ -192,7 +192,7 @@ done:
- 	if (!svc_freeargs(transp, (xdrproc_t)xdr_argument, (char *)
- 				&argument)) {
- 		if (debugging) {
--			(void) fprintf(stderr, "unable to free arguments\n");
-+			(void) xlog(LOG_DEBUG, "unable to free arguments");
- 			if (doabort) {
- 				rpcbind_abort();
- 			}
-@@ -220,7 +220,7 @@ rpcbproc_getaddr_3_local(void *arg, struct svc_req *rqstp /*__unused*/,
- 
- 		uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid),
- 			    svc_getrpccaller(transp));
--		fprintf(stderr, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ",
-+		xlog(LOG_DEBUG, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ",
- 		    (unsigned long)regp->r_prog, (unsigned long)regp->r_vers,
- 		    regp->r_netid, uaddr);
- 		free(uaddr);
-diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c
-index 313e6d1..f1a72a6 100644
---- a/src/rpcb_svc_4.c
-+++ b/src/rpcb_svc_4.c
-@@ -89,7 +89,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 		 */
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_NULL\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_NULL\n");
- #endif
- 		check_access(transp, rqstp->rq_proc, 0, RPCBVERS4);
- 		(void) svc_sendreply(transp, (xdrproc_t) xdr_void,
-@@ -125,7 +125,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_GETVERSADDR:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_GETVERSADDR\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_GETVERSADDR\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_rpcb;
- 		xdr_result = (xdrproc_t)xdr_wrapstring;
-@@ -135,7 +135,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_DUMP:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_DUMP\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_DUMP\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_void;
- 		xdr_result = (xdrproc_t)xdr_rpcblist_ptr;
-@@ -145,7 +145,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_INDIRECT:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_INDIRECT\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_INDIRECT\n");
- #endif
- 		rpcbproc_callit_com(rqstp, transp, rqstp->rq_proc, RPCBVERS4);
- 		return;
-@@ -154,7 +154,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_BCAST:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_BCAST\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_BCAST\n");
- #endif
- 		rpcbproc_callit_com(rqstp, transp, rqstp->rq_proc, RPCBVERS4);
- 		return;
-@@ -162,7 +162,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_GETTIME:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_GETTIME\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_GETTIME\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_void;
- 		xdr_result = (xdrproc_t)xdr_u_long;
-@@ -172,7 +172,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_UADDR2TADDR:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_UADDR2TADDR\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_UADDR2TADDR\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_wrapstring;
- 		xdr_result = (xdrproc_t)xdr_netbuf;
-@@ -182,7 +182,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_TADDR2UADDR:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_TADDR2UADDR\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_TADDR2UADDR\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_netbuf;
- 		xdr_result = (xdrproc_t)xdr_wrapstring;
-@@ -192,7 +192,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_GETADDRLIST:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_GETADDRLIST\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_GETADDRLIST\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_rpcb;
- 		xdr_result = (xdrproc_t)xdr_rpcb_entry_list_ptr;
-@@ -202,7 +202,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	case RPCBPROC_GETSTAT:
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "RPCBPROC_GETSTAT\n");
-+			xlog(LOG_DEBUG, "RPCBPROC_GETSTAT\n");
- #endif
- 		xdr_argument = (xdrproc_t)xdr_void;
- 		xdr_result = (xdrproc_t)xdr_rpcb_stat_byvers;
-@@ -218,7 +218,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 		(char *)&argument)) {
- 		svcerr_decode(transp);
- 		if (debugging)
--			(void) fprintf(stderr, "rpcbind: could not decode\n");
-+			(void) xlog(LOG_DEBUG, "rpcbind: could not decode\n");
- 		return;
- 	}
- 
-@@ -236,7 +236,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 						result)) {
- 		svcerr_systemerr(transp);
- 		if (debugging) {
--			(void) fprintf(stderr, "rpcbind: svc_sendreply\n");
-+			(void) xlog(LOG_DEBUG, "rpcbind: svc_sendreply\n");
- 			if (doabort) {
- 				rpcbind_abort();
- 			}
-@@ -246,7 +246,7 @@ done:
- 	if (!svc_freeargs(transp, (xdrproc_t) xdr_argument,
- 				(char *)&argument)) {
- 		if (debugging) {
--			(void) fprintf(stderr, "unable to free arguments\n");
-+			(void) xlog(LOG_DEBUG, "unable to free arguments\n");
- 			if (doabort) {
- 				rpcbind_abort();
- 			}
-@@ -277,7 +277,7 @@ rpcbproc_getaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp,
- 
- 		uaddr =	taddr2uaddr(rpcbind_get_conf(transp->xp_netid),
- 			    svc_getrpccaller(transp));
--		fprintf(stderr, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ",
-+		xlog(LOG_DEBUG, "RPCB_GETADDR req for (%lu, %lu, %s) from %s: ",
- 		    (unsigned long)regp->r_prog, (unsigned long)regp->r_vers,
- 		    regp->r_netid, uaddr);
- 		free(uaddr);
-@@ -307,7 +307,7 @@ rpcbproc_getversaddr_4_local(void *arg, struct svc_req *rqstp, SVCXPRT *transp,
- 
- 		uaddr = taddr2uaddr(rpcbind_get_conf(transp->xp_netid),
- 			    svc_getrpccaller(transp));
--		fprintf(stderr, "RPCB_GETVERSADDR rqst for (%lu, %lu, %s)"
-+		xlog(LOG_DEBUG, "RPCB_GETVERSADDR rqst for (%lu, %lu, %s)"
- 				" from %s : ",
- 		    (unsigned long)regp->r_prog, (unsigned long)regp->r_vers,
- 		    regp->r_netid, uaddr);
-@@ -353,7 +353,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp /*__unused*/,
- 	}
- #ifdef RPCBIND_DEBUG
- 	if (debugging) {
--		fprintf(stderr, "r_addr: %s r_netid: %s nc_protofmly: %s\n",
-+		xlog(LOG_DEBUG, "r_addr: %s r_netid: %s nc_protofmly: %s\n",
- 		    regp->r_addr, regp->r_netid, reg_nconf->nc_protofmly);
- 	}
- #endif
-@@ -369,20 +369,20 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp /*__unused*/,
- 		}
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "\tmerge with: %s\n",
-+			xlog(LOG_DEBUG, "\tmerge with: %s\n",
- 			    rbl->rpcb_map.r_addr);
- #endif
- 		if ((maddr = mergeaddr(transp, rbl->rpcb_map.r_netid,
- 				rbl->rpcb_map.r_addr, saddr)) == NULL) {
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, " FAILED\n");
-+			xlog(LOG_DEBUG, " FAILED\n");
- #endif
- 			continue;
- 		} else if (!maddr[0]) {
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, " SUCCEEDED, but port died -  maddr: nullstring\n");
-+		xlog(LOG_DEBUG, " SUCCEEDED, but port died -  maddr: nullstring\n");
- #endif
- 			/* The server died. Unset this combination */
- 			delete_prog(regp->r_prog);
-@@ -390,7 +390,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp /*__unused*/,
- 		}
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, " SUCCEEDED maddr: %s\n", maddr);
-+			xlog(LOG_DEBUG, " SUCCEEDED maddr: %s\n", maddr);
- #endif
- 		/*
- 		 * Add it to rlist.
-@@ -418,7 +418,7 @@ rpcbproc_getaddrlist_4_local(void *arg, struct svc_req *rqstp /*__unused*/,
- #ifdef RPCBIND_DEBUG
- 	if (debugging) {
- 		for (rp = rlist; rp; rp = rp->rpcb_entry_next) {
--			fprintf(stderr, "\t%s %s\n", rp->rpcb_entry_map.r_maddr,
-+			xlog(LOG_DEBUG, "\t%s %s\n", rp->rpcb_entry_map.r_maddr,
- 				rp->rpcb_entry_map.r_nc_proto);
- 		}
- 	}
-diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
-index f6bd6bd..9a094f5 100644
---- a/src/rpcb_svc_com.c
-+++ b/src/rpcb_svc_com.c
-@@ -137,14 +137,14 @@ rpcbproc_set_com(void *arg, struct svc_req *rqstp /*__unused*/, SVCXPRT *transp,
- 
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "RPCB_SET request for (%lu, %lu, %s, %s) : ",
-+		xlog(LOG_DEBUG, "RPCB_SET request for (%lu, %lu, %s, %s) : ",
- 		    (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
- 	if (debugging)
--		fprintf(stderr, "%s\n", ans == TRUE ? "succeeded" : "failed");
-+		xlog(LOG_DEBUG, "RPCB_SET: %s", ans == TRUE ? "succeeded" : "failed");
- #endif
- 	/* XXX: should have used some defined constant here */
- 	rpcbs_set(rpcbversnum - 2, ans);
-@@ -225,7 +225,7 @@ rpcbproc_unset_com(void *arg, struct svc_req *rqstp /*__unused*/, SVCXPRT *trans
- 
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "RPCB_UNSET request for (%lu, %lu, %s) : ",
-+		xlog(LOG_DEBUG, "RPCB_UNSET request for (%lu, %lu, %s) : ",
- 		    (unsigned long)regp->r_prog, (unsigned long)regp->r_vers,
- 		    regp->r_netid);
- #endif
-@@ -233,7 +233,7 @@ rpcbproc_unset_com(void *arg, struct svc_req *rqstp /*__unused*/, SVCXPRT *trans
- 	ans = map_unset(regp, getowner(transp, owner, sizeof owner));
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "%s\n", ans == TRUE ? "succeeded" : "failed");
-+		xlog(LOG_DEBUG, "RPCB_UNSET: %s", ans == TRUE ? "succeeded" : "failed");
- #endif
- 	/* XXX: should have used some defined constant here */
- 	rpcbs_unset(rpcbversnum - 2, ans);
-@@ -264,9 +264,9 @@ map_unset(RPCB *regp, char *owner)
- 		 * if superuser or the owner itself.
- 		 */
- #ifdef RPCBIND_DEBUG
--		fprintf(stderr,"Suppression RPC_UNSET(map_unset)\n ");
--		fprintf(stderr,"rbl->rpcb_map.r_owner=%s\n ",rbl->rpcb_map.r_owner);
--		fprintf(stderr,"owner=%s\n ",owner);
-+		xlog(LOG_DEBUG,"Suppression RPC_UNSET(map_unset) ");
-+		xlog(LOG_DEBUG,"rbl->rpcb_map.r_owner=%s ",rbl->rpcb_map.r_owner);
-+		xlog(LOG_DEBUG,"owner=%s ",owner);
- #endif
- 		if (strcmp(owner, "superuser") &&
- 			strcmp(rbl->rpcb_map.r_owner, owner))
-@@ -349,7 +349,7 @@ rpcbproc_getaddr_com(RPCB *regp, struct svc_req *rqstp /*__unused*/,
- 	}
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "getaddr: %s\n", uaddr);
-+		xlog(LOG_DEBUG, "getaddr: %s", uaddr);
- #endif
- 	/* XXX: should have used some defined constant here */
- 	rpcbs_getaddr(rpcbversnum - 2, regp->r_prog, regp->r_vers,
-@@ -506,7 +506,7 @@ create_rmtcall_fd(struct netconfig *nconf)
- 
- 	if ((fd = __rpc_nconf2fd(nconf)) == -1) {
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 	"create_rmtcall_fd: couldn't open \"%s\" (errno %d)\n",
- 			nconf->nc_device, errno);
- 		return (-1);
-@@ -514,7 +514,7 @@ create_rmtcall_fd(struct netconfig *nconf)
- 	xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0);
- 	if (xprt == NULL) {
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 				"create_rmtcall_fd: svc_tli_create failed\n");
- 		return (-1);
- 	}
-@@ -656,7 +656,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- #endif	/* notyet */
- 		if (buf_alloc == NULL) {
- 			if (debugging)
--				fprintf(stderr,
-+				xlog(LOG_DEBUG,
- 					"rpcbproc_callit_com:  No Memory!\n");
- 			if (reply_type == RPCBPROC_INDIRECT)
- 				svcerr_systemerr(transp);
-@@ -672,7 +672,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_decode(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  svc_getargs failed\n");
- 		goto error;
- 	}
-@@ -686,7 +686,7 @@ 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 : ",
-+		xlog(LOG_DEBUG, "%s %s req for (%lu, %lu, %lu, %s) from %s : ",
- 			versnum == PMAPVERS ? "pmap_rmtcall" :
- 			versnum == RPCBVERS ? "rpcb_rmtcall" :
- 			versnum == RPCBVERS4 ? "rpcb_indirect" : "unknown",
-@@ -707,7 +707,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 	if (rbl == (rpcblist_ptr)NULL) {
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			fprintf(stderr, "not found\n");
-+			xlog(LOG_DEBUG, "not found\n");
- #endif
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_noprog(transp);
-@@ -726,7 +726,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 
- #ifdef RPCBIND_DEBUG
- 	if (debugging)
--		fprintf(stderr, "found at uaddr %s\n", rbl->rpcb_map.r_addr);
-+		xlog(LOG_DEBUG, "found at uaddr %s\n", rbl->rpcb_map.r_addr);
- #endif
- 	/*
- 	 *	Check whether this entry is valid and a server is present
-@@ -750,14 +750,14 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  rpcbind_get_conf failed\n");
- 		goto error;
- 	}
- 	localsa = local_sa(((struct sockaddr *)caller->buf)->sa_family);
- 	if (localsa == NULL) {
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com: no local address\n");
- 		goto error;
- 	}
-@@ -780,7 +780,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);
-+		xlog(LOG_DEBUG, "merged uaddr %s\n", m_uaddr);
- #endif
- 	if ((fd = find_rmtcallfd_by_netid(nconf->nc_netid)) == -1) {
- 		if (reply_type == RPCBPROC_INDIRECT)
-@@ -800,20 +800,20 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		 * beat on it any more.
- 		 */
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  duplicate request\n");
- 		goto error;
- 	case -1:
- 		/*  forward_register failed.  Perhaps no memory. */
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  forward_register failed\n");
- 		goto error;
- 	}
- 
- #ifdef DEBUG_RMTCALL
- 	if (debugging)
--		fprintf(stderr,
-+		xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  original XID %x, new XID %x\n",
- 				*xidp, call_msg.rm_xid);
- #endif
-@@ -831,7 +831,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 			if (reply_type == RPCBPROC_INDIRECT)
- 				svcerr_systemerr(transp);
- 			if (debugging)
--				fprintf(stderr,
-+				xlog(LOG_DEBUG,
- 				"rpcbproc_callit_com:  No memory!\n");
- 			goto error;
- 		}
-@@ -843,7 +843,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  xdr_callhdr failed\n");
- 		goto error;
- 	}
-@@ -851,7 +851,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 			"rpcbproc_callit_com:  xdr_u_long failed\n");
- 		goto error;
- 	}
-@@ -870,7 +870,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 	} else {
- 		/* we do not support any other authentication scheme */
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- "rpcbproc_callit_com:  oa_flavor != AUTH_NONE and oa_flavor != AUTH_SYS\n");
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_weakauth(transp); /* XXX too strong.. */
-@@ -880,7 +880,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 		"rpcbproc_callit_com:  authwhatever_create returned NULL\n");
- 		goto error;
- 	}
-@@ -889,7 +889,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 			svcerr_systemerr(transp);
- 		AUTH_DESTROY(auth);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 		"rpcbproc_callit_com:  AUTH_MARSHALL failed\n");
- 		goto error;
- 	}
-@@ -898,7 +898,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp,
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 		"rpcbproc_callit_com:  xdr_opaque_parms failed\n");
- 		goto error;
- 	}
-@@ -918,7 +918,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,
-+			xlog(LOG_DEBUG,
- 	"rpcbproc_callit_com:  sendto failed:  errno %d\n", errno);
- 		if (reply_type == RPCBPROC_INDIRECT)
- 			svcerr_systemerr(transp);
-@@ -1123,15 +1123,7 @@ my_svc_run()
- 		}
- 		nfds = p - pollfds;
- 		poll_ret = 0;
--#ifdef SVC_RUN_DEBUG
--		if (debugging) {
--			fprintf(stderr, "polling for read on fd < ");
--			for (i = 0, p = pollfds; i < nfds; i++, p++)
--				if (p->events)
--					fprintf(stderr, "%d ", p->fd);
--			fprintf(stderr, ">\n");
--		}
--#endif
-+
- 		switch (poll_ret = poll(pollfds, nfds, 30 * 1000)) {
- 		case -1:
- 			/*
-@@ -1144,15 +1136,6 @@ my_svc_run()
- 			__svc_clean_idle(&cleanfds, 30, FALSE);
- 			continue;
- 		default:
--#ifdef SVC_RUN_DEBUG
--			if (debugging) {
--				fprintf(stderr, "poll returned read fds < ");
--				for (i = 0, p = pollfds; i < nfds; i++, p++)
--					if (p->revents)
--						fprintf(stderr, "%d ", p->fd);
--				fprintf(stderr, ">\n");
--			}
--#endif
- 			/*
- 			 * If we found as many replies on callback fds
- 			 * as the number of descriptors selectable which
-@@ -1165,11 +1148,6 @@ my_svc_run()
- 				continue;
- 			svc_getreq_poll(pollfds, poll_ret-check_ret);
- 		}
--#ifdef SVC_RUN_DEBUG
--		if (debugging) {
--			fprintf(stderr, "svc_maxfd now %u\n", svc_maxfd);
--		}
--#endif
- 	}
- }
- 
-@@ -1189,7 +1167,7 @@ check_rmtcalls(struct pollfd *pfds, int nfds)
- 				ncallbacks_found++;
- #ifdef DEBUG_RMTCALL
- 			if (debugging)
--				fprintf(stderr,
-+				xlog(LOG_DEBUG,
- "my_svc_run:  polled on forwarding fd %d, netid %s - calling handle_reply\n",
- 		pfds[j].fd, xprt->xp_netid);
- #endif
-@@ -1253,7 +1231,7 @@ handle_reply(int fd, SVCXPRT *xprt)
- 	} while (inlen < 0 && errno == EINTR);
- 	if (inlen < 0) {
- 		if (debugging)
--			fprintf(stderr,
-+			xlog(LOG_DEBUG,
- 	"handle_reply:  recvfrom returned %d, errno %d\n", inlen, errno);
- 		goto done;
- 	}
-@@ -1265,14 +1243,14 @@ handle_reply(int fd, SVCXPRT *xprt)
- 	xdrmem_create(&reply_xdrs, buffer, (u_int)inlen, XDR_DECODE);
- 	if (!xdr_replymsg(&reply_xdrs, &reply_msg)) {
- 		if (debugging)
--			(void) fprintf(stderr,
-+			(void) xlog(LOG_DEBUG,
- 				"handle_reply:  xdr_replymsg failed\n");
- 		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",
-+		xlog(LOG_DEBUG, "handle_reply:  reply xid: %d fi addr: %p\n",
- 			reply_msg.rm_xid, fi);
- 	}
- #endif
-@@ -1282,7 +1260,7 @@ 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",
-+			(void) xlog(LOG_DEBUG, "handle_reply:  %s\n",
- 				clnt_sperrno(reply_error.re_status));
- 		send_svcsyserr(xprt, fi);
- 		goto done;
-@@ -1306,7 +1284,7 @@ done:
- 	if (reply_msg.rm_xid == 0) {
- #ifdef	SVC_RUN_DEBUG
- 	if (debugging) {
--		fprintf(stderr, "handle_reply:  NULL xid on exit!\n");
-+		xlog(LOG_DEBUG, "handle_reply:  NULL xid on exit!\n");
- 	}
- #endif
- 	} else
-diff --git a/src/rpcbind.c b/src/rpcbind.c
-index 35c45f5..6d8bed2 100644
---- a/src/rpcbind.c
-+++ b/src/rpcbind.c
-@@ -78,6 +78,7 @@
- static inline void __nss_configure_lookup(const char *db, const char *s) {}
- #endif
- #include "rpcbind.h"
-+#include "xlog.h"
- 
- /*#define RPCBIND_DEBUG*/
- 
-@@ -165,7 +166,7 @@ main(int argc, char *argv[])
- 			rl.rlim_cur = 128;
- 		setrlimit(RLIMIT_NOFILE, &rl);
- 	}
--	openlog("rpcbind", LOG_CONS, LOG_DAEMON);
-+
- 	if (geteuid()) { /* This command allowed only to root */
- 		fprintf(stderr, "Sorry. You are not superuser\n");
- 		exit(1);
-@@ -190,7 +191,17 @@ main(int argc, char *argv[])
- 		syslog(LOG_ERR, "%s: can't find local transport\n", argv[0]);
- 		exit(1);
- 	}
--	
-+	xlog_open("rpcbind");
-+	if (dofork) {
-+		xlog_syslog(TRUE);
-+		xlog_stderr(FALSE);
-+	} else {
-+		xlog_syslog(FALSE);
-+		xlog_stderr(TRUE);
-+	}
-+	if (debugging)
-+		xlog_config(D_ALL, 1);
-+
- 	rpc_control(RPC_SVC_CONNMAXREC_SET, &maxrec);
- 
- 	init_transport(nconf);
-@@ -219,18 +230,16 @@ main(int argc, char *argv[])
- 	(void) signal(SIGUSR1, SIG_IGN);
- 	(void) signal(SIGUSR2, SIG_IGN);
- 
--	if (debugging) {
- #ifdef RPCBIND_DEBUG 
--		printf("rpcbind debugging enabled.");
--		if (doabort) {
--			printf("  Will abort on errors!\n");
--		} else {
--			printf("\n");
--		}
-+	if (debugging) {
-+		xlog(LOG_DEBUG, "debugging enabled.");
-+		if (doabort)
-+			xlog(LOG_DEBUG, "Will abort on errors!\n");
-+	}
- #endif
--	} else if (dofork) {
-+	if (dofork) {
- 		if (daemon(0, 0))
--        		err(1, "fork failed");
-+        	err(1, "fork failed");
- 	}
- 
- 	if (runasdaemon || rpcbinduser) {
-@@ -344,11 +353,11 @@ init_transport(struct netconfig *nconf)
- 		int i;
- 		char **s;
- 
--		(void) fprintf(stderr, "%s: %ld lookup routines :\n",
-+		(void) xlog(LOG_DEBUG, "%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);
-+			xlog(LOG_DEBUG, "[%d] - %s\n", i, *s);
- 	}
- #endif
- 	if (!__rpc_nconf2sockinfo(nconf, &si)) {
-@@ -571,7 +580,7 @@ init_transport(struct netconfig *nconf)
- 				}
- 				nb.len = nb.maxlen = sa_size;
- 				uaddr = taddr2uaddr(nconf, &nb);
--				(void) fprintf(stderr,
-+				(void) xlog(LOG_DEBUG,
- 				    "rpcbind : my address is %s\n", uaddr);
- 				(void) free(uaddr);
- 			}
-@@ -654,7 +663,7 @@ init_transport(struct netconfig *nconf)
- 			}
- 			nb.len = nb.maxlen = sa_size2;
- 			uaddr = taddr2uaddr(nconf, &nb);
--			(void) fprintf(stderr, "rpcbind : my address is %s\n",
-+			(void) xlog(LOG_DEBUG, "rpcbind : my address is %s\n",
- 			    uaddr);
- 			(void) free(uaddr);
- 		}
-@@ -761,13 +770,13 @@ got_socket:
- #ifdef RPCBIND_DEBUG
- 	if (debugging) {
- 		if (status < 0) {
--			fprintf(stderr, "Error in finding bind status for %s\n",
-+			xlog(LOG_DEBUG, "Error in finding bind status for %s\n",
- 				nconf->nc_netid);
- 		} else if (status == 0) {
--			fprintf(stderr, "check binding for %s\n",
-+			xlog(LOG_DEBUG, "check binding for %s\n",
- 				nconf->nc_netid);
- 		} else if (status > 0) {
--			fprintf(stderr, "No check binding for %s\n",
-+			xlog(LOG_DEBUG, "No check binding for %s\n",
- 				nconf->nc_netid);
- 		}
- 	}
-@@ -781,11 +790,11 @@ got_socket:
- #ifdef RPCBIND_DEBUG
- 		if (debugging) {
- 			if (status < 0) {
--				fprintf(stderr,
-+				xlog(LOG_DEBUG,
- 				    "Could not create rmtcall fd for %s\n",
- 					nconf->nc_netid);
- 			} else {
--				fprintf(stderr, "rmtcall fd for %s is %d\n",
-+				xlog(LOG_DEBUG, "rmtcall fd for %s is %d\n",
- 					nconf->nc_netid, status);
- 			}
- 		}
-@@ -810,8 +819,8 @@ rbllist_add(rpcprog_t prog, rpcvers_t vers, struct netconfig *nconf,
- 	}
- #ifdef RPCBIND_DEBUG	
- 	if (debugging){
--	  fprintf(stderr,"FUNCTION rbllist_add");
--	  fprintf(stderr,"Add the prog %lu vers %lu to the rpcbind list\n",
-+	  xlog(LOG_DEBUG,"FUNCTION rbllist_add");
-+	  xlog(LOG_DEBUG,"Add the prog %lu vers %lu to the rpcbind list",
-                   (ulong)prog, (ulong)vers);
- 	}
- #endif	
-diff --git a/src/security.c b/src/security.c
-index d272f74..70edef4 100644
---- a/src/security.c
-+++ b/src/security.c
-@@ -80,7 +80,7 @@ check_access(SVCXPRT *xprt, rpcproc_t proc, rpcprog_t prog, unsigned int rpcbver
- 		if (!insecure && !is_loopback(caller)) {
- #ifdef RPCBIND_DEBUG
- 			  if (debugging)
--			    fprintf(stderr, " declined (non-loopback sender) \n");
-+			    xlog(LOG_DEBUG, " declined (non-loopback sender) \n");
- #endif
- 			if (verboselog)
- 				logit(log_severity, addr, proc, prog,
-@@ -134,7 +134,7 @@ is_loopback(struct netbuf *nbuf)
- 		sin = (struct sockaddr_in *)addr;
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			  fprintf(stderr,
-+			  xlog(LOG_DEBUG,
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin->sin_port));
- #endif
-@@ -146,7 +146,7 @@ is_loopback(struct netbuf *nbuf)
- 		sin6 = (struct sockaddr_in6 *)addr;
- #ifdef RPCBIND_DEBUG
- 		if (debugging)
--			  fprintf(stderr,
-+			  xlog(LOG_DEBUG,
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin6->sin6_port));
- #endif
-diff --git a/src/xlog.c b/src/xlog.c
-new file mode 100644
-index 0000000..ab6c717
---- /dev/null
-+++ b/src/xlog.c
-@@ -0,0 +1,234 @@
-+/*
-+ * support/nfs/xlog.c
-+ *
-+ * This module handles the logging of requests.
-+ *
-+ * TODO:	Merge the two "XXX_log() calls.
-+ *
-+ * Authors:	Donald J. Becker, <becker at super.org>
-+ *		Rick Sladkey, <jrs at world.std.com>
-+ *		Fred N. van Kempen, <waltje at uWalt.NL.Mugnet.ORG>
-+ *		Olaf Kirch, <okir at monad.swb.de>
-+ *
-+ *		This software maybe be used for any purpose provided
-+ *		the above copyright notice is retained.  It is supplied
-+ *		as is, with no warranty expressed or implied.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
-+#include <unistd.h>
-+#include <signal.h>
-+#include <time.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <stdarg.h>
-+#include <syslog.h>
-+#include <errno.h>
-+#include "xlog.h"
-+
-+#undef	VERBOSE_PRINTF
-+
-+static int  log_stderr = 1;
-+static int  log_syslog = 1;
-+static int  logging = 0;		/* enable/disable DEBUG logs	*/
-+static int  logmask = 0;		/* What will be logged		*/
-+static char log_name[256];		/* name of this program		*/
-+static int  log_pid = -1;		/* PID of this program		*/
-+
-+int export_errno = 0;
-+
-+static void	xlog_toggle(int sig);
-+static struct xlog_debugfac	debugnames[] = {
-+	{ "general",	D_GENERAL, },
-+	{ "call",	D_CALL, },
-+	{ "auth",	D_AUTH, },
-+	{ "parse",	D_PARSE, },
-+	{ "all",	D_ALL, },
-+	{ NULL,		0, },
-+};
-+
-+void
-+xlog_open(char *progname)
-+{
-+	openlog(progname, LOG_PID, LOG_DAEMON);
-+
-+	strncpy(log_name, progname, sizeof (log_name) - 1);
-+	log_name [sizeof (log_name) - 1] = '\0';
-+	log_pid = getpid();
-+
-+	signal(SIGUSR1, xlog_toggle);
-+	signal(SIGUSR2, xlog_toggle);
-+}
-+
-+void
-+xlog_stderr(int on)
-+{
-+	log_stderr = on;
-+}
-+
-+void
-+xlog_syslog(int on)
-+{
-+	log_syslog = on;
-+}
-+
-+static void
-+xlog_toggle(int sig)
-+{
-+	unsigned int	tmp, i;
-+
-+	if (sig == SIGUSR1) {
-+		if ((logmask & D_ALL) && !logging) {
-+			xlog(D_GENERAL, "turned on logging");
-+			logging = 1;
-+			return;
-+		}
-+		tmp = ~logmask;
-+		logmask |= ((logmask & D_ALL) << 1) | D_GENERAL;
-+		for (i = -1, tmp &= logmask; tmp; tmp >>= 1, i++)
-+			if (tmp & 1)
-+				xlog(D_GENERAL,
-+					"turned on logging level %d", i);
-+	} else {
-+		xlog(D_GENERAL, "turned off logging");
-+		logging = 0;
-+	}
-+	signal(sig, xlog_toggle);
-+}
-+
-+void
-+xlog_config(int fac, int on)
-+{
-+	if (on)
-+		logmask |= fac;
-+	else
-+		logmask &= ~fac;
-+	if (on)
-+		logging = 1;
-+}
-+
-+void
-+xlog_sconfig(char *kind, int on)
-+{
-+	struct xlog_debugfac	*tbl = debugnames;
-+
-+	while (tbl->df_name != NULL && strcasecmp(tbl->df_name, kind)) 
-+		tbl++;
-+	if (!tbl->df_name) {
-+		xlog (L_WARNING, "Invalid debug facility: %s\n", kind);
-+		return;
-+	}
-+	xlog_config(tbl->df_fac, on);
-+}
-+
-+int
-+xlog_enabled(int fac)
-+{
-+	return (logging && (fac & logmask));
-+}
-+
-+
-+/* Write something to the system logfile and/or stderr */
-+void
-+xlog_backend(int kind, const char *fmt, va_list args)
-+{
-+	va_list args2;
-+
-+	if (!(kind & (L_ALL)) && !(logging && (kind & logmask)))
-+		return;
-+
-+	if (log_stderr)
-+		va_copy(args2, args);
-+
-+	if (log_syslog) {
-+		switch (kind) {
-+		case L_FATAL:
-+			vsyslog(LOG_ERR, fmt, args);
-+			break;
-+		case L_ERROR:
-+			vsyslog(LOG_ERR, fmt, args);
-+			break;
-+		case L_WARNING:
-+			vsyslog(LOG_WARNING, fmt, args);
-+			break;
-+		case L_NOTICE:
-+			vsyslog(LOG_NOTICE, fmt, args);
-+			break;
-+		default:
-+			if (!log_stderr)
-+				vsyslog(LOG_INFO, fmt, args);
-+			break;
-+		}
-+	}
-+
-+	if (log_stderr) {
-+#ifdef VERBOSE_PRINTF
-+		time_t		now;
-+		struct tm	*tm;
-+
-+		time(&now);
-+		tm = localtime(&now);
-+		fprintf(stderr, "%s[%d] %04d-%02d-%02d %02d:%02d:%02d ",
-+				log_name, log_pid,
-+				tm->tm_year+1900, tm->tm_mon + 1, tm->tm_mday,
-+				tm->tm_hour, tm->tm_min, tm->tm_sec);
-+#else
-+		fprintf(stderr, "%s: ", log_name);
-+#endif
-+		vfprintf(stderr, fmt, args2);
-+		fprintf(stderr, "\n");
-+		va_end(args2);
-+	}
-+
-+	if (kind == L_FATAL)
-+		exit(1);
-+}
-+
-+void
-+xlog(int kind, const char* fmt, ...)
-+{
-+	va_list args;
-+
-+	if (kind & (L_ERROR|D_GENERAL))
-+		export_errno = 1;
-+
-+	va_start(args, fmt);
-+	xlog_backend(kind, fmt, args);
-+	va_end(args);
-+}
-+
-+void
-+xlog_warn(const char* fmt, ...)
-+{
-+	va_list args;
-+
-+	va_start(args, fmt);
-+	xlog_backend(L_WARNING, fmt, args);
-+	va_end(args);
-+}
-+
-+
-+void
-+xlog_err(const char* fmt, ...)
-+{
-+	va_list args;
-+
-+	va_start(args, fmt);
-+	xlog_backend(L_FATAL, fmt, args);
-+	va_end(args);
-+}
-+
-+void
-+xlog_errno(int err, const char *fmt, ...)
-+{
-+	va_list args;
-+
-+	errno = err;
-+	va_start(args, fmt);
-+	xlog_backend(L_FATAL, fmt, args);
-+	va_end(args);
-+}
-diff --git a/src/xlog.h b/src/xlog.h
-new file mode 100644
-index 0000000..a57b96c
---- /dev/null
-+++ b/src/xlog.h
-@@ -0,0 +1,52 @@
-+/*
-+ * xlog		Logging functionality
-+ *
-+ * Copyright (C) 1995 Olaf Kirch <okir at monad.swb.de>
-+ */
-+
-+#ifndef XLOG_H
-+#define XLOG_H
-+
-+#include <stdarg.h>
-+
-+/* These are logged always. L_FATAL also does exit(1) */
-+#define L_FATAL		0x0100
-+#define L_ERROR		0x0200
-+#define L_WARNING	0x0400
-+#define L_NOTICE	0x0800
-+#define L_ALL		0xFF00
-+
-+/* These are logged if enabled with xlog_[s]config */
-+/* NB: code does not expect ORing together D_ and L_ */
-+#define D_GENERAL	0x0001		/* general debug info */
-+#define D_CALL		0x0002
-+#define D_AUTH		0x0004
-+#define D_FAC3		0x0008
-+#define D_FAC4		0x0010
-+#define D_FAC5		0x0020
-+#define D_PARSE		0x0040
-+#define D_FAC7		0x0080
-+#define D_ALL		0x00FF
-+
-+/* This can be used to define symbolic log names that can be passed to
-+ * xlog_config.
-+ */
-+struct xlog_debugfac {
-+	char		*df_name;
-+	int		df_fac;
-+};
-+
-+extern int export_errno;
-+void			xlog_open(char *progname);
-+void			xlog_stderr(int on);
-+void			xlog_syslog(int on);
-+void			xlog_config(int fac, int on);
-+void			xlog_sconfig(char *, int on);
-+int			xlog_enabled(int fac);
-+void			xlog(int fac, const char *fmt, ...);
-+void			xlog_warn(const char *fmt, ...);
-+void			xlog_err(const char *fmt, ...);
-+void			xlog_errno(int err, const char *fmt, ...);
-+void			xlog_backend(int fac, const char *fmt, va_list args);
-+
-+#endif /* XLOG_H */
diff --git a/rpcbind-0.2.3-rc1.patch b/rpcbind-0.2.3-rc1.patch
deleted file mode 100644
index 3fecb51..0000000
--- a/rpcbind-0.2.3-rc1.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index c99566d..ea5725f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -13,7 +13,7 @@ AM_CPPFLAGS = \
- 	$(TIRPC_CFLAGS)
- 
- if DEBUG
--AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
-+AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DDEBUG_RMTCALL
- AM_CPPFLAGS +=	-DND_DEBUG -DBIND_DEBUG
- endif
- 
-diff --git a/configure.ac b/configure.ac
-index 75e7e71..27496c7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -55,4 +55,6 @@ AS_IF([test x$enable_libwrap = xyes], [
- 
- AC_SEARCH_LIBS([pthread_create], [pthread])
- 
-+AC_CHECK_HEADERS(nss.h)
-+
- AC_OUTPUT([Makefile])
-diff --git a/src/rpcbind.c b/src/rpcbind.c
-index f7c71ee..0c81e8c 100644
---- a/src/rpcbind.c
-+++ b/src/rpcbind.c
-@@ -50,6 +50,7 @@
- #include <sys/file.h>
- #include <sys/socket.h>
- #include <sys/un.h>
-+#include <netinet/in.h>
- #include <rpc/rpc.h>
- #include <rpc/rpc_com.h>
- #ifdef PORTMAP
-@@ -268,6 +269,13 @@ main(int argc, char *argv[])
- 
- 	network_init();
- 
-+#ifdef SYSTEMD
-+	/* Try to notify system of successful startup, regardless of whether we
-+	 * used systemd socket activation or not. When started from the command
-+	 * line, this should not hurt either.
-+	 */
-+	sd_notify(0, "READY=1");
-+#endif
- 	my_svc_run();
- 	syslog(LOG_ERR, "svc_run returned unexpectedly");
- 	rpcbind_abort();
-@@ -277,6 +285,31 @@ main(int argc, char *argv[])
- }
- 
- /*
-+ * Normally systemd will open sockets in dual ipv4/ipv6 mode.
-+ * That won't work with netconfig and we'll only match
-+ * the ipv6 socket. Convert it to IPV6_V6ONLY and issue
-+ * a warning for the user to fix their systemd config.
-+ */
-+static int
-+handle_ipv6_socket(int fd)
-+{
-+	int opt;
-+	socklen_t len = sizeof(opt);
-+
-+	if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, &len)) {
-+		syslog(LOG_ERR, "failed to get ipv6 socket opts: %m");
-+		return -1;
-+	}
-+
-+	if (opt) /* socket is already in V6ONLY mode */
-+		return 0;
-+
-+	syslog(LOG_ERR, "systemd has passed an IPv4/IPv6 dual-mode socket.");
-+	syslog(LOG_ERR, "Please fix your systemd config by specifying IPv4 and IPv6 sockets separately and using BindIPv6Only=ipv6-only.");
-+	return -1;
-+}
-+
-+/*
-  * Adds the entry into the rpcbind database.
-  * If PORTMAP, then for UDP and TCP, it adds the entries for version 2 also
-  * Returns 0 if succeeds, else fails
-@@ -361,6 +394,9 @@ init_transport(struct netconfig *nconf)
- 			goto error;
- 		}
- 
-+		if (sa.sa.sa_family == AF_INET6 && handle_ipv6_socket(fd))
-+		        goto error;
-+
- 		/* Copy the address */
- 		taddr.addr.maxlen = taddr.addr.len = addrlen;
- 		taddr.addr.buf = malloc(addrlen);
-diff --git a/src/warmstart.c b/src/warmstart.c
-index d1bb971..85ecf96 100644
---- a/src/warmstart.c
-+++ b/src/warmstart.c
-@@ -101,13 +101,13 @@ read_struct(char *filename, xdrproc_t structproc, void *list)
- {
- 	FILE *fp;
- 	XDR xdrs;
--	 
-+
- 	if (debugging)
- 		fprintf(stderr, "rpcbind: using '%s' startup file\n", filename);
- 
--	if ((fp = fopen(filename, "r")) == NULL) {
-+	if (((fp = fopen(filename, "r")) == NULL) && errno != ENOENT) {
- 		syslog(LOG_ERR,
--			"Cannot open '%s' file for reading, errno %d (%s)", 
-+			"Cannot open '%s' file for reading, errno %d (%s)",
- 			filename, errno, strerror(errno));
- 		goto error;
- 	}
diff --git a/rpcbind-0.2.3-rc2.patch b/rpcbind-0.2.3-rc2.patch
deleted file mode 100644
index 3027d66..0000000
--- a/rpcbind-0.2.3-rc2.patch
+++ /dev/null
@@ -1,523 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index c99566d..ea5725f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -13,7 +13,7 @@ AM_CPPFLAGS = \
- 	$(TIRPC_CFLAGS)
- 
- if DEBUG
--AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
-+AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DDEBUG_RMTCALL
- AM_CPPFLAGS +=	-DND_DEBUG -DBIND_DEBUG
- endif
- 
-diff --git a/configure.ac b/configure.ac
-index 75e7e71..27496c7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -55,4 +55,6 @@ AS_IF([test x$enable_libwrap = xyes], [
- 
- AC_SEARCH_LIBS([pthread_create], [pthread])
- 
-+AC_CHECK_HEADERS(nss.h)
-+
- AC_OUTPUT([Makefile])
-diff --git a/src/rpcbind.c b/src/rpcbind.c
-index f7c71ee..35c45f5 100644
---- a/src/rpcbind.c
-+++ b/src/rpcbind.c
-@@ -50,6 +50,7 @@
- #include <sys/file.h>
- #include <sys/socket.h>
- #include <sys/un.h>
-+#include <netinet/in.h>
- #include <rpc/rpc.h>
- #include <rpc/rpc_com.h>
- #ifdef PORTMAP
-@@ -268,6 +269,13 @@ main(int argc, char *argv[])
- 
- 	network_init();
- 
-+#ifdef SYSTEMD
-+	/* Try to notify system of successful startup, regardless of whether we
-+	 * used systemd socket activation or not. When started from the command
-+	 * line, this should not hurt either.
-+	 */
-+	sd_notify(0, "READY=1");
-+#endif
- 	my_svc_run();
- 	syslog(LOG_ERR, "svc_run returned unexpectedly");
- 	rpcbind_abort();
-@@ -277,6 +285,31 @@ main(int argc, char *argv[])
- }
- 
- /*
-+ * Normally systemd will open sockets in dual ipv4/ipv6 mode.
-+ * That won't work with netconfig and we'll only match
-+ * the ipv6 socket. Convert it to IPV6_V6ONLY and issue
-+ * a warning for the user to fix their systemd config.
-+ */
-+static int
-+handle_ipv6_socket(int fd)
-+{
-+	int opt;
-+	socklen_t len = sizeof(opt);
-+
-+	if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, &len)) {
-+		syslog(LOG_ERR, "failed to get ipv6 socket opts: %m");
-+		return -1;
-+	}
-+
-+	if (opt) /* socket is already in V6ONLY mode */
-+		return 0;
-+
-+	syslog(LOG_ERR, "systemd has passed an IPv4/IPv6 dual-mode socket.");
-+	syslog(LOG_ERR, "Please fix your systemd config by specifying IPv4 and IPv6 sockets separately and using BindIPv6Only=ipv6-only.");
-+	return -1;
-+}
-+
-+/*
-  * Adds the entry into the rpcbind database.
-  * If PORTMAP, then for UDP and TCP, it adds the entries for version 2 also
-  * Returns 0 if succeeds, else fails
-@@ -361,6 +394,9 @@ init_transport(struct netconfig *nconf)
- 			goto error;
- 		}
- 
-+		if (sa.sa.sa_family == AF_INET6 && handle_ipv6_socket(fd))
-+		        goto error;
-+
- 		/* Copy the address */
- 		taddr.addr.maxlen = taddr.addr.len = addrlen;
- 		taddr.addr.buf = malloc(addrlen);
-@@ -389,18 +425,6 @@ init_transport(struct netconfig *nconf)
- 	if (my_xprt != NULL)
- 		goto got_socket;
- 
--	/*
--	 * XXX - using RPC library internal functions. For NC_TPI_CLTS
--	 * we call this later, for each socket we like to bind.
--	 */
--	if (nconf->nc_semantics != NC_TPI_CLTS) {
--		if ((fd = __rpc_nconf2fd(nconf)) < 0) {
--			syslog(LOG_ERR, "cannot create socket for %s",
--			    nconf->nc_netid);
--			return (1);
--		}
--	}
--
- 	if ((strcmp(nconf->nc_netid, "local") == 0) ||
- 	    (strcmp(nconf->nc_netid, "unix") == 0)) {
- 		memset(&sun, 0, sizeof sun);
-@@ -451,11 +475,13 @@ init_transport(struct netconfig *nconf)
- 				    nconf->nc_netid);
- 				return (1);
- 			}
-+
-+			hints.ai_flags &= ~AI_NUMERICHOST;
- 			switch (hints.ai_family) {
- 			case AF_INET:
- 				if (inet_pton(AF_INET, hosts[nhostsbak],
- 				    host_addr) == 1) {
--					hints.ai_flags &= AI_NUMERICHOST;
-+					hints.ai_flags |= AI_NUMERICHOST;
- 				} else {
- 					/*
- 					 * Skip if we have an AF_INET6 adress.
-@@ -468,7 +494,7 @@ init_transport(struct netconfig *nconf)
- 			case AF_INET6:
- 				if (inet_pton(AF_INET6, hosts[nhostsbak],
- 				    host_addr) == 1) {
--					hints.ai_flags &= AI_NUMERICHOST;
-+					hints.ai_flags |= AI_NUMERICHOST;
- 				} else {
- 					/*
- 					 * Skip if we have an AF_INET adress.
-@@ -561,6 +587,12 @@ init_transport(struct netconfig *nconf)
- 		if (!checkbind)
- 			return 1;
- 	} else {	/* NC_TPI_COTS */
-+		if ((fd = __rpc_nconf2fd(nconf)) < 0) {
-+			syslog(LOG_ERR, "cannot create socket for %s",
-+			    nconf->nc_netid);
-+			return (1);
-+		}
-+
- 		if ((strcmp(nconf->nc_netid, "local") != 0) &&
- 		    (strcmp(nconf->nc_netid, "unix") != 0)) {
- 			if ((aicode = getaddrinfo(NULL, servname, &hints, &res))!= 0) {
-diff --git a/src/rpcinfo.c b/src/rpcinfo.c
-index 747eba3..9b46864 100644
---- a/src/rpcinfo.c
-+++ b/src/rpcinfo.c
-@@ -115,10 +115,8 @@ struct rpcbdump_short
- 
- #ifdef PORTMAP
- static void ip_ping (u_short, char *, int, char **);
--static CLIENT *clnt_com_create (struct sockaddr_in *, u_long, u_long, int *,
--				char *);
- static void pmapdump (int, char **);
--static void get_inet_address (struct sockaddr_in *, char *);
-+static CLIENT *ip_getclient(const char *hostname, rpcprog_t prognum, rpcvers_t versnum, const char *proto);
- #endif
- 
- static bool_t reply_proc (void *, struct netbuf *, struct netconfig *);
-@@ -356,38 +354,17 @@ local_rpcb (rpcprog_t prog, rpcvers_t vers)
- }
- 
- #ifdef PORTMAP
--static CLIENT *
--clnt_com_create (addr, prog, vers, fdp, trans)
--     struct sockaddr_in *addr;
--     u_long prog;
--     u_long vers;
--     int *fdp;
--     char *trans;
-+static enum clnt_stat
-+ip_ping_one(client, vers)
-+     CLIENT *client;
-+     u_int32_t vers;
- {
--  CLIENT *clnt;
--
--  if (strcmp (trans, "tcp") == 0)
--    {
--      clnt = clnttcp_create (addr, prog, vers, fdp, 0, 0);
--    }
--  else
--    {
--      struct timeval to;
-+  struct timeval to = { .tv_sec = 10, .tv_usec = 0 };
- 
--      to.tv_sec = 5;
--      to.tv_usec = 0;
--      clnt = clntudp_create (addr, prog, vers, to, fdp);
--    }
--  if (clnt == (CLIENT *) NULL)
--    {
--      clnt_pcreateerror ("rpcinfo");
--      if (vers == MIN_VERS)
--	printf ("program %lu is not available\n", prog);
--      else
--	printf ("program %lu version %lu is not available\n", prog, vers);
--      exit (1);
--    }
--  return (clnt);
-+  (void) CLNT_CONTROL (client, CLSET_VERS, &vers);
-+  return CLNT_CALL (client, NULLPROC, (xdrproc_t) xdr_void,
-+		    (char *) NULL, (xdrproc_t) xdr_void, (char *) NULL,
-+		    to);
- }
- 
- /*
-@@ -398,17 +375,15 @@ clnt_com_create (addr, prog, vers, fdp, trans)
-  * version 0 calls succeeds, it tries for MAXVERS call and repeats the same.
-  */
- static void
--ip_ping (portnum, trans, argc, argv)
-+ip_ping (portnum, proto, argc, argv)
-      u_short portnum;
--     char *trans;
-+     char *proto;
-      int argc;
-      char **argv;
- {
-   CLIENT *client;
--  int fd = RPC_ANYFD;
--  struct timeval to;
--  struct sockaddr_in addr;
-   enum clnt_stat rpc_stat;
-+  const char *hostname;
-   u_long prognum, vers, minvers, maxvers;
-   struct rpc_err rpcerr;
-   int failure = 0;
-@@ -418,10 +393,9 @@ ip_ping (portnum, trans, argc, argv)
-       usage ();
-       exit (1);
-     }
--  to.tv_sec = 10;
--  to.tv_usec = 0;
-+
-+  hostname = argv[0];
-   prognum = getprognum (argv[1]);
--  get_inet_address (&addr, argv[0]);
-   if (argc == 2)
-     {				/* Version number not known */
-       /*
-@@ -434,11 +408,10 @@ ip_ping (portnum, trans, argc, argv)
-     {
-       vers = getvers (argv[2]);
-     }
--  addr.sin_port = htons (portnum);
--  client = clnt_com_create (&addr, prognum, vers, &fd, trans);
--  rpc_stat = CLNT_CALL (client, NULLPROC, (xdrproc_t) xdr_void,
--			(char *) NULL, (xdrproc_t) xdr_void, (char *) NULL,
--			to);
-+
-+  client = ip_getclient(hostname, prognum, vers, proto);
-+
-+  rpc_stat = ip_ping_one(client, vers);
-   if (argc != 2)
-     {
-       /* Version number was known */
-@@ -447,8 +420,8 @@ ip_ping (portnum, trans, argc, argv)
-       (void) CLNT_DESTROY (client);
-       return;
-     }
-+
-   /* Version number not known */
--  (void) CLNT_CONTROL (client, CLSET_FD_NCLOSE, (char *) NULL);
-   if (rpc_stat == RPC_PROGVERSMISMATCH)
-     {
-       clnt_geterr (client, &rpcerr);
-@@ -461,12 +434,7 @@ ip_ping (portnum, trans, argc, argv)
-        * Oh dear, it DOES support version 0.
-        * Let's try version MAX_VERS.
-        */
--      (void) CLNT_DESTROY (client);
--      addr.sin_port = htons (portnum);
--      client = clnt_com_create (&addr, prognum, MAX_VERS, &fd, trans);
--      rpc_stat = CLNT_CALL (client, NULLPROC, (xdrproc_t) xdr_void,
--			    (char *) NULL, (xdrproc_t) xdr_void,
--			    (char *) NULL, to);
-+      rpc_stat = ip_ping_one(client, MAX_VERS);
-       if (rpc_stat == RPC_PROGVERSMISMATCH)
- 	{
- 	  clnt_geterr (client, &rpcerr);
-@@ -495,21 +463,15 @@ ip_ping (portnum, trans, argc, argv)
-       (void) pstatus (client, prognum, (u_long) 0);
-       exit (1);
-     }
--  (void) CLNT_DESTROY (client);
-   for (vers = minvers; vers <= maxvers; vers++)
-     {
--      addr.sin_port = htons (portnum);
--      client = clnt_com_create (&addr, prognum, vers, &fd, trans);
--      rpc_stat = CLNT_CALL (client, NULLPROC, (xdrproc_t) xdr_void,
--			    (char *) NULL, (xdrproc_t) xdr_void,
--			    (char *) NULL, to);
-+      rpc_stat = ip_ping_one(client, vers);
-       if (pstatus (client, prognum, vers) < 0)
- 	failure = 1;
--      (void) CLNT_DESTROY (client);
-     }
-   if (failure)
-     exit (1);
--  (void) close (fd);
-+  (void) CLNT_DESTROY (client);
-   return;
- }
- 
-@@ -521,9 +483,7 @@ pmapdump (argc, argv)
-      int argc;
-      char **argv;
- {
--  struct sockaddr_in server_addr;
-   struct pmaplist *head = NULL;
--  int socket = RPC_ANYSOCK;
-   struct timeval minutetimeout;
-   register CLIENT *client;
-   struct rpcent *rpc;
-@@ -539,10 +499,13 @@ pmapdump (argc, argv)
-   if (argc == 1)
-     {
-       host = argv[0];
--      get_inet_address (&server_addr, host);
--      server_addr.sin_port = htons (PMAPPORT);
--      client = clnttcp_create (&server_addr, PMAPPROG, PMAPVERS,
--			       &socket, 50, 500);
-+
-+      /* This is a little bit more complicated than it should be.
-+       * ip_getclient will do an rpcb_getaddr call to identify the
-+       * port of the portmapper - but it works, and it's easier than
-+       * creating a copy of ip_getclient that avoids the getaddr call.
-+       */
-+      client = ip_getclient(host, PMAPPROG, PMAPVERS, "tcp");
-     }
-   else
-     client = local_rpcb (PMAPPROG, PMAPVERS);
-@@ -609,48 +572,74 @@ pmapdump (argc, argv)
-     }
- }
- 
--static void
--get_inet_address (addr, host)
--     struct sockaddr_in *addr;
--     char *host;
-+/*
-+ * Try to obtain the address of a given host/program/version, using the
-+ * specified protocol (one of udp or tcp).
-+ * This loops over all netconfig entries (according to the order given by
-+ * netpath and the config file), and tries to resolve the hostname, and obtain
-+ * the address using rpcb_getaddr.
-+ */
-+CLIENT *
-+ip_getclient(hostname, prognum, versnum, proto)
-+     const char *hostname;
-+     rpcprog_t prognum;
-+     rpcvers_t versnum;
-+     const char *proto;
- {
--  struct netconfig *nconf;
--  struct addrinfo hints, *res;
--  int error;
-+  void *handle;
-+  enum clnt_stat saved_stat = RPC_SUCCESS;
-+  struct netconfig *nconf, *result = NULL;
-+  struct netbuf bind_address;
-+  struct sockaddr_storage __sa;
-+  CLIENT *client;
-+
-+  memset(&bind_address, 0, sizeof(bind_address));
-+  bind_address.maxlen = sizeof(__sa);
-+  bind_address.buf = &__sa;
- 
--  (void) memset ((char *) addr, 0, sizeof (*addr));
--  addr->sin_addr.s_addr = inet_addr (host);
--  if (addr->sin_addr.s_addr == -1 || addr->sin_addr.s_addr == 0)
-+  handle = setnetconfig();
-+  while ((nconf = getnetconfig(handle)) != NULL)
-     {
--      if ((nconf = __rpc_getconfip ("udp")) == NULL &&
--	  (nconf = __rpc_getconfip ("tcp")) == NULL)
--	{
--	  fprintf (stderr, "rpcinfo: couldn't find a suitable transport\n");
--	  exit (1);
--	}
-+      if (!strcmp(nconf->nc_proto, proto)) {
-+        if (rpcb_getaddr(prognum, versnum, nconf, &bind_address, hostname))
-+          {
-+	    result = getnetconfigent(nconf->nc_netid);
-+	    endnetconfig(handle);
-+	    break;
-+	  }
-+
-+        if (rpc_createerr.cf_stat != RPC_UNKNOWNHOST)
-+          {
-+            clnt_pcreateerror (hostname);
-+	    exit (1);
-+	  }
-+
-+	saved_stat = rpc_createerr.cf_stat;
-+      }
-+    }
-+
-+  if (result == NULL)
-+    {
-+      if (saved_stat != RPC_SUCCESS)
-+        {
-+          rpc_createerr.cf_stat = saved_stat;
-+          clnt_pcreateerror (hostname);
-+        }
-       else
--	{
--	  memset (&hints, 0, sizeof hints);
--	  hints.ai_family = AF_INET;
--	  if ((error = getaddrinfo (host, "rpcbind", &hints, &res)) != 0 &&
--              (error = getaddrinfo (host, "portmapper", &hints, &res)) != 0)
--	    {
--	      fprintf (stderr, "rpcinfo: %s: %s\n",
--		       host, gai_strerror (error));
--	      exit (1);
--	    }
--	  else
--	    {
--	      memcpy (addr, res->ai_addr, res->ai_addrlen);
--	      freeaddrinfo (res);
--	    }
--	  (void) freenetconfigent (nconf);
--	}
-+        fprintf (stderr, "Cannot find suitable transport for protocol %s\n", proto);
-+
-+      exit (1);
-     }
--  else
-+
-+  client = clnt_tli_create(RPC_ANYFD, result, &bind_address, prognum, versnum, 0, 0);
-+  if (client == NULL)
-     {
--      addr->sin_family = AF_INET;
-+      clnt_pcreateerror(hostname);
-+      exit (1);
-     }
-+
-+  freenetconfigent(result);
-+  return client;
- }
- #endif /* PORTMAP */
- 
-diff --git a/src/util.c b/src/util.c
-index 7d56479..a6c835b 100644
---- a/src/util.c
-+++ b/src/util.c
-@@ -71,9 +71,6 @@ static struct sockaddr_in6 *local_in6;
- #endif
- 
- static int bitmaskcmp __P((void *, void *, void *, int));
--#ifdef INET6
--static void in6_fillscopeid __P((struct sockaddr_in6 *));
--#endif
- 
- /*
-  * For all bits set in "mask", compare the corresponding bits in
-@@ -93,28 +90,6 @@ bitmaskcmp(void *dst, void *src, void *mask, int bytelen)
- }
- 
- /*
-- * Similar to code in ifconfig.c. Fill in the scope ID for link-local
-- * addresses returned by getifaddrs().
-- */
--#ifdef INET6
--static void
--in6_fillscopeid(struct sockaddr_in6 *sin6)
--{
--	u_int16_t ifindex;
--	u_int16_t *addr;
--
--        if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
--		addr = (u_int16_t *)&sin6->sin6_addr.s6_addr[2];
--		ifindex = ntohs(*addr);
--		if (sin6->sin6_scope_id == 0 && ifindex != 0) {
--			sin6->sin6_scope_id = ifindex;
--			*addr = 0;
--		}
--	}
--}
--#endif
--
--/*
-  * Find a server address that can be used by `caller' to contact
-  * the local service specified by `serv_uaddr'. If `clnt_uaddr' is
-  * non-NULL, it is used instead of `caller' as a hint suggesting
-@@ -211,7 +186,6 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
- 			 * a link-local address then use the scope id to see
- 			 * which one.
- 			 */
--			in6_fillscopeid(SA2SIN6(ifsa));
- 			if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(ifsa)) &&
- 			    IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(caller_sa)) &&
- 			    IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(hint_sa))) {
-diff --git a/src/warmstart.c b/src/warmstart.c
-index d1bb971..b6eb73e 100644
---- a/src/warmstart.c
-+++ b/src/warmstart.c
-@@ -101,14 +101,15 @@ read_struct(char *filename, xdrproc_t structproc, void *list)
- {
- 	FILE *fp;
- 	XDR xdrs;
--	 
-+
- 	if (debugging)
- 		fprintf(stderr, "rpcbind: using '%s' startup file\n", filename);
- 
- 	if ((fp = fopen(filename, "r")) == NULL) {
--		syslog(LOG_ERR,
--			"Cannot open '%s' file for reading, errno %d (%s)", 
--			filename, errno, strerror(errno));
-+		if (errno != ENOENT)
-+			syslog(LOG_ERR,
-+				"Cannot open '%s' file for reading, errno %d (%s)",
-+				filename, errno, strerror(errno));
- 		goto error;
- 	}
- 
diff --git a/rpcbind-0_2_1-rc3.patch b/rpcbind-0_2_1-rc3.patch
deleted file mode 100644
index ff46f67..0000000
--- a/rpcbind-0_2_1-rc3.patch
+++ /dev/null
@@ -1,1054 +0,0 @@
-diff --git a/.gitignore b/.gitignore
-index 5a7546c..bee4bab 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -1,3 +1,4 @@
-+INSTALL
- Makefile
- Makefile.in
- aclocal.m4
-@@ -13,18 +14,14 @@ depcomp
- install-sh
- libtool
- ltmain.sh
--man/Makefile
--man/Makefile.in
- missing
--src/.deps/
--src/Makefile
--src/Makefile.in
- src/config.h
- src/stamp-h2
- stamp-h1
- # file generated during compilation
-+.deps
- *.o
--src/rpcbind
--src/rpcinfo
-+rpcbind
-+rpcinfo
- # cscope database files
- cscope.*
-diff --git a/INSTALL b/INSTALL
-index 98e5d87..7d1c323 100644
---- a/INSTALL
-+++ b/INSTALL
-@@ -1,32 +1,25 @@
--Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
--Foundation, Inc.
-+Installation Instructions
-+*************************
- 
--   This file is free documentation; the Free Software Foundation gives
--unlimited permission to copy, distribute and modify it.
--
--
--rpcbind Quick Installation
--==========================
--
--$ ./configure
--$ make
--# make install
--
--   The install phase will install the rpcbind and rpcinfo commands
--under /usr/bin.  If you wish they replace the basic portmap and 
--rpcinfo commands, you can run:
--
--# mv /sbin/portmap /sbin/portmap.sav
--# ln -s /usr/bin/rpcbind /sbin/portmap
--
--# mv /usr/sbin/rpcinfo /usr/sbin/rpcinfo.sav
--# ln -s /usr/bin/rpcinfo /usr/sbin/rpcinfo
-+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- 
-+   Copying and distribution of this file, with or without modification,
-+are permitted in any medium without royalty provided the copyright
-+notice and this notice are preserved.  This file is offered as-is,
-+without warranty of any kind.
- 
- Basic Installation
- ==================
- 
--   These are generic installation instructions.
-+   Briefly, the shell commands `./configure; make; make install' should
-+configure, build, and install this package.  The following
-+more-detailed instructions are generic; see the `README' file for
-+instructions specific to this package.  Some packages provide this
-+`INSTALL' file but do not implement all of the features documented
-+below.  The lack of an optional feature in a given package is not
-+necessarily a bug.  More recommendations for GNU packages can be found
-+in *note Makefile Conventions: (standards)Makefile Conventions.
- 
-    The `configure' shell script attempts to guess correct values for
- various system-dependent variables used during compilation.  It uses
-@@ -39,9 +32,9 @@ debugging `configure').
- 
-    It can also use an optional file (typically called `config.cache'
- and enabled with `--cache-file=config.cache' or simply `-C') that saves
--the results of its tests to speed up reconfiguring.  (Caching is
-+the results of its tests to speed up reconfiguring.  Caching is
- disabled by default to prevent problems with accidental use of stale
--cache files.)
-+cache files.
- 
-    If you need to do unusual things to compile the package, please try
- to figure out how `configure' could check whether to do them, and mail
-@@ -51,30 +44,37 @@ some point `config.cache' contains results you don't want to keep, you
- may remove or edit it.
- 
-    The file `configure.ac' (or `configure.in') is used to create
--`configure' by a program called `autoconf'.  You only need
--`configure.ac' if you want to change it or regenerate `configure' using
--a newer version of `autoconf'.
-+`configure' by a program called `autoconf'.  You need `configure.ac' if
-+you want to change it or regenerate `configure' using a newer version
-+of `autoconf'.
- 
--The simplest way to compile this package is:
-+   The simplest way to compile this package is:
- 
-   1. `cd' to the directory containing the package's source code and type
--     `./configure' to configure the package for your system.  If you're
--     using `csh' on an old version of System V, you might need to type
--     `sh ./configure' instead to prevent `csh' from trying to execute
--     `configure' itself.
-+     `./configure' to configure the package for your system.
- 
--     Running `configure' takes awhile.  While running, it prints some
--     messages telling which features it is checking for.
-+     Running `configure' might take a while.  While running, it prints
-+     some messages telling which features it is checking for.
- 
-   2. Type `make' to compile the package.
- 
-   3. Optionally, type `make check' to run any self-tests that come with
--     the package.
-+     the package, generally using the just-built uninstalled binaries.
- 
-   4. Type `make install' to install the programs and any data files and
--     documentation.
--
--  5. You can remove the program binaries and object files from the
-+     documentation.  When installing into a prefix owned by root, it is
-+     recommended that the package be configured and built as a regular
-+     user, and only the `make install' phase executed with root
-+     privileges.
-+
-+  5. Optionally, type `make installcheck' to repeat any self-tests, but
-+     this time using the binaries in their final installed location.
-+     This target does not install anything.  Running this target as a
-+     regular user, particularly if the prior `make install' required
-+     root privileges, verifies that the installation completed
-+     correctly.
-+
-+  6. You can remove the program binaries and object files from the
-      source code directory by typing `make clean'.  To also remove the
-      files that `configure' created (so you can compile the package for
-      a different kind of computer), type `make distclean'.  There is
-@@ -83,6 +83,16 @@ The simplest way to compile this package is:
-      all sorts of other programs in order to regenerate files that came
-      with the distribution.
- 
-+  7. Often, you can also type `make uninstall' to remove the installed
-+     files again.  In practice, not all packages have tested that
-+     uninstallation works correctly, even though it is required by the
-+     GNU Coding Standards.
-+
-+  8. Some packages, particularly those that use Automake, provide `make
-+     distcheck', which can by used by developers to test that all other
-+     targets like `make install' and `make uninstall' work correctly.
-+     This target is generally not run by end users.
-+
- Compilers and Options
- =====================
- 
-@@ -94,7 +104,7 @@ for details on some of the pertinent environment variables.
- by setting variables in the command line or in the environment.  Here
- is an example:
- 
--     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
- 
-    *Note Defining Variables::, for more details.
- 
-@@ -103,44 +113,89 @@ Compiling For Multiple Architectures
- 
-    You can compile the package for more than one kind of computer at the
- same time, by placing the object files for each architecture in their
--own directory.  To do this, you must use a version of `make' that
--supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-+own directory.  To do this, you can use GNU `make'.  `cd' to the
- directory where you want the object files and executables to go and run
- the `configure' script.  `configure' automatically checks for the
--source code in the directory that `configure' is in and in `..'.
-+source code in the directory that `configure' is in and in `..'.  This
-+is known as a "VPATH" build.
- 
--   If you have to use a `make' that does not support the `VPATH'
--variable, you have to compile the package for one architecture at a
--time in the source code directory.  After you have installed the
--package for one architecture, use `make distclean' before reconfiguring
--for another architecture.
-+   With a non-GNU `make', it is safer to compile the package for one
-+architecture at a time in the source code directory.  After you have
-+installed the package for one architecture, use `make distclean' before
-+reconfiguring for another architecture.
-+
-+   On MacOS X 10.5 and later systems, you can create libraries and
-+executables that work on multiple system types--known as "fat" or
-+"universal" binaries--by specifying multiple `-arch' options to the
-+compiler but only a single `-arch' option to the preprocessor.  Like
-+this:
-+
-+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-+                 CPP="gcc -E" CXXCPP="g++ -E"
-+
-+   This is not guaranteed to produce working output in all cases, you
-+may have to build one architecture at a time and combine the results
-+using the `lipo' tool if you have problems.
- 
- Installation Names
- ==================
- 
--   By default, `make install' will install the package's files in
--`/usr/local/bin', `/usr/local/man', etc.  You can specify an
--installation prefix other than `/usr/local' by giving `configure' the
--option `--prefix=PATH'.
-+   By default, `make install' installs the package's commands under
-+`/usr/local/bin', include files under `/usr/local/include', etc.  You
-+can specify an installation prefix other than `/usr/local' by giving
-+`configure' the option `--prefix=PREFIX', where PREFIX must be an
-+absolute file name.
- 
-    You can specify separate installation prefixes for
- architecture-specific files and architecture-independent files.  If you
--give `configure' the option `--exec-prefix=PATH', the package will use
--PATH as the prefix for installing programs and libraries.
--Documentation and other data files will still use the regular prefix.
-+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-+PREFIX as the prefix for installing programs and libraries.
-+Documentation and other data files still use the regular prefix.
- 
-    In addition, if you use an unusual directory layout you can give
--options like `--bindir=PATH' to specify different values for particular
-+options like `--bindir=DIR' to specify different values for particular
- kinds of files.  Run `configure --help' for a list of the directories
--you can set and what kinds of files go in them.
-+you can set and what kinds of files go in them.  In general, the
-+default for these options is expressed in terms of `${prefix}', so that
-+specifying just `--prefix' will affect all of the other directory
-+specifications that were not explicitly provided.
-+
-+   The most portable way to affect installation locations is to pass the
-+correct locations to `configure'; however, many packages provide one or
-+both of the following shortcuts of passing variable assignments to the
-+`make install' command line to change installation locations without
-+having to reconfigure or recompile.
-+
-+   The first method involves providing an override variable for each
-+affected directory.  For example, `make install
-+prefix=/alternate/directory' will choose an alternate location for all
-+directory configuration variables that were expressed in terms of
-+`${prefix}'.  Any directories that were specified during `configure',
-+but not in terms of `${prefix}', must each be overridden at install
-+time for the entire installation to be relocated.  The approach of
-+makefile variable overrides for each directory variable is required by
-+the GNU Coding Standards, and ideally causes no recompilation.
-+However, some platforms have known limitations with the semantics of
-+shared libraries that end up requiring recompilation when using this
-+method, particularly noticeable in packages that use GNU Libtool.
-+
-+   The second method involves providing the `DESTDIR' variable.  For
-+example, `make install DESTDIR=/alternate/directory' will prepend
-+`/alternate/directory' before all installation names.  The approach of
-+`DESTDIR' overrides is not required by the GNU Coding Standards, and
-+does not work on platforms that have drive letters.  On the other hand,
-+it does better at avoiding recompilation issues, and works well even
-+when some directory options were not specified in terms of `${prefix}'
-+at `configure' time.
-+
-+Optional Features
-+=================
- 
-    If the package supports it, you can cause programs to be installed
- with an extra prefix or suffix on their names by giving `configure' the
- option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
- 
--Optional Features
--=================
--
-    Some packages pay attention to `--enable-FEATURE' options to
- `configure', where FEATURE indicates an optional part of the package.
- They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-@@ -153,6 +208,45 @@ find the X include and library files automatically, but if it doesn't,
- you can use the `configure' options `--x-includes=DIR' and
- `--x-libraries=DIR' to specify their locations.
- 
-+   Some packages offer the ability to configure how verbose the
-+execution of `make' will be.  For these packages, running `./configure
-+--enable-silent-rules' sets the default to minimal output, which can be
-+overridden with `make V=1'; while running `./configure
-+--disable-silent-rules' sets the default to verbose, which can be
-+overridden with `make V=0'.
-+
-+Particular systems
-+==================
-+
-+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-+CC is not installed, it is recommended to use the following options in
-+order to use an ANSI C compiler:
-+
-+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-+
-+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-+
-+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
-+a workaround.  If GNU CC is not installed, it is therefore recommended
-+to try
-+
-+     ./configure CC="cc"
-+
-+and if that doesn't work, try
-+
-+     ./configure CC="cc -nodtk"
-+
-+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
-+directory contains several dysfunctional programs; working variants of
-+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
-+in your `PATH', put it _after_ `/usr/bin'.
-+
-+   On Haiku, software installed for all users goes in `/boot/common',
-+not `/usr/local'.  It is recommended to use the following options:
-+
-+     ./configure --prefix=/boot/common
-+
- Specifying the System Type
- ==========================
- 
-@@ -168,14 +262,15 @@ type, such as `sun4', or a canonical name which has the form:
- 
- where SYSTEM can have one of these forms:
- 
--     OS KERNEL-OS
-+     OS
-+     KERNEL-OS
- 
-    See the file `config.sub' for the possible values of each field.  If
- `config.sub' isn't included in this package, then this package doesn't
- need to know the machine type.
- 
-    If you are _building_ compiler tools for cross-compiling, you should
--use the `--target=TYPE' option to select the type of system they will
-+use the option `--target=TYPE' to select the type of system they will
- produce code for.
- 
-    If you want to _use_ a cross compiler, that generates code for a
-@@ -205,9 +300,14 @@ them in the `configure' command line, using `VAR=value'.  For example:
- 
-      ./configure CC=/usr/local2/bin/gcc
- 
--will cause the specified gcc to be used as the C compiler (unless it is
-+causes the specified `gcc' to be used as the C compiler (unless it is
- overridden in the site shell script).
- 
-+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-+an Autoconf bug.  Until the bug is fixed you can use this workaround:
-+
-+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-+
- `configure' Invocation
- ======================
- 
-@@ -216,7 +316,14 @@ operates.
- 
- `--help'
- `-h'
--     Print a summary of the options to `configure', and exit.
-+     Print a summary of all of the options to `configure', and exit.
-+
-+`--help=short'
-+`--help=recursive'
-+     Print a summary of the options unique to this package's
-+     `configure', and exit.  The `short' variant lists options used
-+     only in the top level, while the `recursive' variant lists options
-+     also present in any nested packages.
- 
- `--version'
- `-V'
-@@ -243,6 +350,16 @@ operates.
-      Look for the package's source code in directory DIR.  Usually
-      `configure' can determine that directory automatically.
- 
-+`--prefix=DIR'
-+     Use DIR as the installation prefix.  *note Installation Names::
-+     for more details, including other options available for fine-tuning
-+     the installation locations.
-+
-+`--no-create'
-+`-n'
-+     Run the configure checks, but stop before creating any output
-+     files.
-+
- `configure' also accepts some other, not widely useful, options.  Run
- `configure --help' for more details.
- 
-diff --git a/Makefile.am b/Makefile.am
-index cd56148..9fa608e 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,2 +1,44 @@
--SUBDIRS= src man
-+AM_CPPFLAGS = \
-+	-DCHECK_LOCAL \
-+	-DPORTMAP \
-+	-DFACILITY=LOG_MAIL \
-+	-DSEVERITY=LOG_INFO \
-+	-DINET6 \
-+	-DRPCBIND_STATEDIR="\"$(statedir)\"" \
-+	-DRPCUSER="\"$(rpcuser)\"" \
-+	-D_GNU_SOURCE \
-+	$(TIRPC_CFLAGS)
- 
-+if DEBUG
-+AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
-+AM_CPPFLAGS +=	-DND_DEBUG -DBIND_DEBUG
-+endif
-+
-+if WARMSTART
-+AM_CPPFLAGS +=	-DWARMSTART
-+endif
-+
-+if LIBWRAP
-+AM_CPPFLAGS +=	-DLIBWRAP
-+endif
-+
-+bin_PROGRAMS = rpcbind rpcinfo
-+
-+rpcbind_SOURCES = \
-+	src/check_bound.c \
-+	src/pmap_svc.c \
-+	src/rpcb_stat.c \
-+	src/rpcb_svc.c \
-+	src/rpcb_svc_4.c \
-+	src/rpcb_svc_com.c \
-+	src/rpcbind.c \
-+	src/rpcbind.h \
-+	src/security.c \
-+	src/util.c \
-+	src/warmstart.c
-+rpcbind_LDADD = $(TIRPC_LIBS)
-+
-+rpcinfo_SOURCES =       src/rpcinfo.c
-+rpcinfo_LDADD   =       $(TIRPC_LIBS)
-+
-+dist_man8_MANS = man/rpcbind.8 man/rpcinfo.8
-diff --git a/autogen.sh b/autogen.sh
-index 1613b6d..761db90 100755
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -36,7 +36,7 @@ if test x"${1}" = x"clean"; then
- fi
- 
- aclocal
--libtoolize --force --copy
--autoheader
-+#libtoolize --force --copy
-+#autoheader
- automake --add-missing --copy --gnu # -Wall
- autoconf # -Wall
-diff --git a/configure.in b/configure.in
-index de1c730..2b67720 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1,66 +1,39 @@
-- AC_INIT(rpcbind, 0.2.0)
-+AC_INIT(rpcbind, 0.2.0)
-  
-- AM_INIT_AUTOMAKE
--# AM_MAINTAINER_MODE
-+AM_INIT_AUTOMAKE
- AC_CONFIG_SRCDIR([src/rpcbind.c])
-- AC_PROG_CC
-- AM_CONFIG_HEADER(config.h)
-- AC_HEADER_DIRENT
-- AC_PREFIX_DEFAULT(/usr)
--
--AC_CONFIG_SRCDIR([src/config.h.in])
--AC_CONFIG_HEADERS([src/config.h])
--
--AC_PROG_LIBTOOL
--
--AC_ARG_ENABLE(debug,[  --enable-debug      Turns on rpcbind debugging], 
--	[case "${enableval}" in
--		yes) debug=true ;;
--		no)  debug=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
--	esac],[debug=false])
--AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
--
--AC_ARG_ENABLE(warmstarts,[  --enable-warmstarts  Enables Warm Starts], 
--	[case "${enableval}" in
--		yes) warmstarts=true ;;
--		no)  warmstarts=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-warmstarts) ;;
--	esac],[warmstarts=false])
--AM_CONDITIONAL(WARMSTART, test x$warmstarts = xtrue)
--
--if test "$warmstarts" = "true" ; then
--	AC_ARG_WITH(statedir,
--		[  --with-statedir=/foo use state dir /foo [/tmp]],
--    	statedir=$withval,
--		statedir=/tmp)
--		AC_SUBST(statedir)
--	AC_DEFINE_UNQUOTED(RPCBIND_STATEDIR, "$statedir", [This defines the location where the state files will be kept for warm starts])
--fi
--AC_ARG_WITH(rpcuser,
--	[  --with-rpcuser=user uid to use [root]],
--	rpcuser=$withval,
--	rpcuser=root)
--	AC_SUBST(rpcuser)
--AC_DEFINE_UNQUOTED(RPCBIND_USER, "$rpcuser", [This defines the uid to run as])
-+AC_PREFIX_DEFAULT(/usr)
-+AC_PROG_CC
-+
-+AC_ARG_ENABLE([libwrap],
-+  AS_HELP_STRING([--enable-libwrap], [Enables host name checking through tcpd @<:@default=no@:>@]))
-+AM_CONDITIONAL(LIBWRAP, test x$enable_libwrap = xyes)
-+
-+AC_ARG_ENABLE([debug],
-+  AS_HELP_STRING([--enable-debug], [Turns on rpcbind debugging @<:@default=no@:>@]))
-+AM_CONDITIONAL(DEBUG, test x$enable_debug = xyes)
-+
-+AC_ARG_ENABLE([warmstarts],
-+  AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@]))
-+AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes)
-+
-+AC_ARG_WITH([statedir],
-+  AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/tmp@:>@])
-+  ,, [with_statedir=/tmp])
-+AC_SUBST([statedir], [$with_statedir])
-+
-+AC_ARG_WITH([rpcuser],
-+  AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
-+  ,, [with_rpcuser=root])
-+AC_SUBST([rpcuser], [$with_rpcuser])
-+ 
-+PKG_CHECK_MODULES([TIRPC], [libtirpc])
- 
--AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h \
--                  netinet/in.h stdlib.h string.h \
--                  sys/param.h sys/socket.h \
--                  sys/time.h syslog.h \
--                  unistd.h nss.h])
-+AS_IF([test x$enable_libwrap = xyes], [
-+	AC_CHECK_LIB([wrap], [hosts_access], ,
-+		AC_MSG_ERROR([libwrap support requested but unable to find libwrap]))
-+])
- 
--AC_CHECK_LIB([pthread], [pthread_create])
--AC_CHECK_LIB([tirpc], [clnt_create])
--AC_ARG_ENABLE(libwrap,[ --enable-libwrap  Enables host name checking], 
--	[case "${enableval}" in
--		yes) libwarp=true 
--			AC_CHECK_LIB([wrap],  [hosts_access]) ;;
--		no)  libwarp=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-libwrap) ;;
--	esac],[libwarp=false])
--AM_CONDITIONAL(LIBWRAP, test x$libwarp = xtrue)
-+AC_SEARCH_LIBS([pthread_create], [pthread])
- 
--AC_CONFIG_FILES([Makefile src/Makefile man/Makefile])
--AC_OUTPUT()
--                                                                   
-+AC_OUTPUT([Makefile])
-diff --git a/man/Makefile.am b/man/Makefile.am
-deleted file mode 100644
-index 84818e9..0000000
---- a/man/Makefile.am
-+++ /dev/null
-@@ -1,2 +0,0 @@
--man8_MANS   = rpcbind.8
--EXTRA_DIST  = $(man8_MANS)
-diff --git a/man/rpcbind.8 b/man/rpcbind.8
-index 32806d4..c5b8fb7 100644
---- a/man/rpcbind.8
-+++ b/man/rpcbind.8
-@@ -82,6 +82,8 @@ during operation, and will abort on certain errors if
- is also specified.
- With this option, the name-to-address translation consistency
- checks are shown in detail.
-+.It Fl f
-+Do not fork and become a background process.
- .It Fl h
- Specify specific IP addresses to bind to for UDP requests.
- This option
-diff --git a/src/Makefile.am b/src/Makefile.am
-deleted file mode 100644
-index cc0a85b..0000000
---- a/src/Makefile.am
-+++ /dev/null
-@@ -1,34 +0,0 @@
--INCLUDES = -I$(srcdir)/tirpc -DPORTMAP -DINET6 -DVERSION="\"$(VERSION)\"" \
--                                                -D_GNU_SOURCE -Wall -pipe
--if DEBUG
--INCLUDES +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
--INCLUDES +=	-DND_DEBUG -DBIND_DEBUG
--endif
--
--if WARMSTART
--INCLUDES +=	-DWARMSTART
--endif
--
--if LIBWRAP
--INCLUDES +=	-DLIBWRAP
--endif
--
--
--bin_PROGRAMS = rpcbind rpcinfo
--
--rpcbind_SOURCES =       check_bound.c rpcbind.c \
--                        rpcb_svc_4.c rpcb_svc_com.c \
--                        util.c pmap_svc.c rpcb_stat.c \
--                        rpcb_svc.c security.c warmstart.c \
--                        rpcbind.h
--
--rpcinfo_SOURCES =       rpcinfo.c
--rpcinfo_LDFLAGS =       -lpthread -ltirpc
--rpcinfo_LDADD   =       $(LIB_TIRPC)
--
--
--rpcbind_LDFLAGS = -lpthread -ltirpc
--rpcbind_LDADD = $(LIB_TIRPC)
--AM_CPPFLAGS = -I/usr/include/tirpc -DCHECK_LOCAL -DPORTMAP \
--                       -DFACILITY=LOG_MAIL -DSEVERITY=LOG_INFO
--     
-diff --git a/src/config.h.in b/src/config.h.in
-deleted file mode 100644
-index 67a0e39..0000000
---- a/src/config.h.in
-+++ /dev/null
-@@ -1,105 +0,0 @@
--/* config.h.in.  Generated from configure.in by autoheader.  */
--
--/* Define to 1 if you have the <arpa/inet.h> header file. */
--#undef HAVE_ARPA_INET_H
--
--/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_DIRENT_H
--
--/* Define to 1 if you have the <fcntl.h> header file. */
--#undef HAVE_FCNTL_H
--
--/* Define to 1 if you have the <inttypes.h> header file. */
--#undef HAVE_INTTYPES_H
--
--/* Define to 1 if you have the `pthread' library (-lpthread). */
--#undef HAVE_LIBPTHREAD
--
--/* Define to 1 if you have the `tirpc' library (-ltirpc). */
--#undef HAVE_LIBTIRPC
--
--/* Define to 1 if you have the <memory.h> header file. */
--#undef HAVE_MEMORY_H
--
--/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
--#undef HAVE_NDIR_H
--
--/* Define to 1 if you have the <netdb.h> header file. */
--#undef HAVE_NETDB_H
--
--/* Define to 1 if you have the <netinet/in.h> header file. */
--#undef HAVE_NETINET_IN_H
--
--/* Define to 1 if you have the <stdint.h> header file. */
--#undef HAVE_STDINT_H
--
--/* Define to 1 if you have the <stdlib.h> header file. */
--#undef HAVE_STDLIB_H
--
--/* Define to 1 if you have the <strings.h> header file. */
--#undef HAVE_STRINGS_H
--
--/* Define to 1 if you have the <string.h> header file. */
--#undef HAVE_STRING_H
--
--/* Define to 1 if you have the <syslog.h> header file. */
--#undef HAVE_SYSLOG_H
--
--/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_SYS_DIR_H
--
--/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_SYS_NDIR_H
--
--/* Define to 1 if you have the <sys/param.h> header file. */
--#undef HAVE_SYS_PARAM_H
--
--/* Define to 1 if you have the <sys/socket.h> header file. */
--#undef HAVE_SYS_SOCKET_H
--
--/* Define to 1 if you have the <sys/stat.h> header file. */
--#undef HAVE_SYS_STAT_H
--
--/* Define to 1 if you have the <sys/time.h> header file. */
--#undef HAVE_SYS_TIME_H
--
--/* Define to 1 if you have the <sys/types.h> header file. */
--#undef HAVE_SYS_TYPES_H
--
--/* Define to 1 if you have the <unistd.h> header file. */
--#undef HAVE_UNISTD_H
--
--/* Name of package */
--#undef PACKAGE
--
--/* Define to the address where bug reports for this package should be sent. */
--#undef PACKAGE_BUGREPORT
--
--/* Define to the full name of this package. */
--#undef PACKAGE_NAME
--
--/* Define to the full name and version of this package. */
--#undef PACKAGE_STRING
--
--/* Define to the one symbol short name of this package. */
--#undef PACKAGE_TARNAME
--
--/* Define to the version of this package. */
--#undef PACKAGE_VERSION
--
--/* Define to 1 if you have the ANSI C header files. */
--#undef STDC_HEADERS
--
--/* Version number of package */
--#undef VERSION
--
--/* This defines the location where the state files will be kept for warm
--   starts */
--#undef RPCBIND_STATEDIR
--
--/* This defines the uid to run as */
--#undef RPCBIND_USER
--
-diff --git a/src/pmap_svc.c b/src/pmap_svc.c
-index 4736700..337e64d 100644
---- a/src/pmap_svc.c
-+++ b/src/pmap_svc.c
-@@ -80,7 +80,7 @@ pmap_service(struct svc_req *rqstp, SVCXPRT *xprt)
- 		if (debugging)
- 			fprintf(stderr, "PMAPPROC_NULL\n");
- #endif
--		check_access(xprt, rqstp->rq_proc, NULL, PMAPVERS);
-+		check_access(xprt, rqstp->rq_proc, 0, PMAPVERS);
- 		if ((!svc_sendreply(xprt, (xdrproc_t) xdr_void, NULL)) &&
- 			debugging) {
- 			if (doabort) {
-@@ -201,11 +201,11 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
- 		  reg.pm_prog, reg.pm_vers);
- #endif
- 
--	if (!check_access(xprt, op, &reg, PMAPVERS)) {
-+	if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return (FALSE);
- 	}
--		
-+
- 	rpcbreg.r_prog = reg.pm_prog;
- 	rpcbreg.r_vers = reg.pm_vers;
- 
-@@ -276,7 +276,7 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 		return (FALSE);
- 	}
- 
--	if (!check_access(xprt, PMAPPROC_GETPORT, &reg, PMAPVERS)) {
-+	if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return FALSE;
- 	}
-@@ -340,7 +340,7 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 		return (FALSE);
- 	}
- 
--	if (!check_access(xprt, PMAPPROC_DUMP, NULL, PMAPVERS)) {
-+	if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return FALSE;
- 	}
-diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c
-index 0514ba5..e350f85 100644
---- a/src/rpcb_svc.c
-+++ b/src/rpcb_svc.c
-@@ -75,6 +75,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	char *result;
- 	xdrproc_t xdr_argument, xdr_result;
- 	void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t));
-+	rpcprog_t setprog = 0;
- 
- 	rpcbs_procinfo(RPCBVERS_3_STAT, rqstp->rq_proc);
- 
-@@ -88,7 +89,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 			fprintf(stderr, "RPCBPROC_NULL\n");
- #endif
- 		/* This call just logs, no actual checks */
--		check_access(transp, rqstp->rq_proc, NULL, RPCBVERS);
-+		check_access(transp, rqstp->rq_proc, 0, RPCBVERS);
- 		(void) svc_sendreply(transp, (xdrproc_t)xdr_void, (char *)NULL);
- 		return;
- 
-@@ -166,7 +167,13 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 			(void) fprintf(stderr, "rpcbind: could not decode\n");
- 		return;
- 	}
--	if (!check_access(transp, rqstp->rq_proc, &argument, RPCBVERS)) {
-+
-+	if (rqstp->rq_proc == RPCBPROC_SET
-+	 || rqstp->rq_proc == RPCBPROC_UNSET
-+	 || rqstp->rq_proc == RPCBPROC_GETADDR)
-+		setprog = argument.rpcbproc_set_3_arg.r_prog;
-+
-+	if (!check_access(transp, rqstp->rq_proc, setprog, RPCBVERS)) {
- 		svcerr_weakauth(transp);
- 		goto done;
- 	}
-diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c
-index 9fd5bef..313e6d1 100644
---- a/src/rpcb_svc_4.c
-+++ b/src/rpcb_svc_4.c
-@@ -78,6 +78,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	char *result;
- 	xdrproc_t xdr_argument, xdr_result;
- 	void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t));
-+	rpcprog_t setprog = 0;
- 
- 	rpcbs_procinfo(RPCBVERS_4_STAT, rqstp->rq_proc);
- 
-@@ -90,7 +91,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 		if (debugging)
- 			fprintf(stderr, "RPCBPROC_NULL\n");
- #endif
--		check_access(transp, rqstp->rq_proc, NULL, RPCBVERS4);
-+		check_access(transp, rqstp->rq_proc, 0, RPCBVERS4);
- 		(void) svc_sendreply(transp, (xdrproc_t) xdr_void,
- 					(char *)NULL);
- 		return;
-@@ -220,7 +221,13 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 			(void) fprintf(stderr, "rpcbind: could not decode\n");
- 		return;
- 	}
--	if (!check_access(transp, rqstp->rq_proc, &argument, RPCBVERS4)) {
-+
-+	if (rqstp->rq_proc == RPCBPROC_SET
-+	 || rqstp->rq_proc == RPCBPROC_UNSET
-+	 || rqstp->rq_proc == RPCBPROC_GETADDR)
-+		setprog = argument.rpcbproc_set_4_arg.r_prog;
-+
-+	if (!check_access(transp, rqstp->rq_proc, setprog, RPCBVERS4)) {
- 		svcerr_weakauth(transp);
- 		goto done;
- 	}
-diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
-index 291421f..5bb9a44 100644
---- a/src/rpcb_svc_com.c
-+++ b/src/rpcb_svc_com.c
-@@ -1372,10 +1372,13 @@ static char *
- getowner(SVCXPRT *transp, char *owner, size_t ownersize)
- {
- 	uid_t uid;
-- 
--	if (__rpc_get_local_uid(transp, &uid) < 0)
--		snprintf(owner, ownersize, "unknown");
--	else if (uid == 0)
-+
-+	if (__rpc_get_local_uid(transp, &uid) < 0) {
-+		if (is_localroot(svc_getrpccaller(transp)))
-+			snprintf(owner, ownersize, "superuser");
-+		else 
-+			snprintf(owner, ownersize, "unknown");
-+	} else if (uid == 0)
- 		snprintf(owner, ownersize, "superuser");
- 	else
- 		snprintf(owner, ownersize, "%d", uid);  
-diff --git a/src/rpcbind.c b/src/rpcbind.c
-index 525ffba..24e069b 100644
---- a/src/rpcbind.c
-+++ b/src/rpcbind.c
-@@ -68,7 +68,6 @@
- #include <string.h>
- #include <errno.h>
- #include <nss.h>
--#include "config.h"
- #include "rpcbind.h"
- 
- /*#define RPCBIND_DEBUG*/
-@@ -77,6 +76,7 @@
- 
- int debugging = 0;	/* Tell me what's going on */
- int doabort = 0;	/* When debugging, do an abort on errors */
-+int dofork = 1;		/* fork? */
- 
- rpcblist_ptr list_rbl;	/* A list of version 3/4 rpcbind services */
- 
-@@ -213,8 +213,8 @@ main(int argc, char *argv[])
- 			printf("\n");
- 		}
- #endif
--	} else {
--		if (daemon(0, 0)) 
-+	} else if (dofork) {
-+		if (daemon(0, 0))
-         		err(1, "fork failed");
- 	}
- 
-@@ -276,6 +276,7 @@ init_transport(struct netconfig *nconf)
- 	int addrlen = 0;
- 	int nhostsbak;
- 	int checkbind;
-+	int on = 1;
- 	struct sockaddr *sa = NULL;
- 	u_int32_t host_addr[4];  /* IPv4 or IPv6 */
- 	struct sockaddr_un sun;
-@@ -493,6 +494,14 @@ init_transport(struct netconfig *nconf)
- 		}
- 		oldmask = umask(S_IXUSR|S_IXGRP|S_IXOTH);
- 		__rpc_fd2sockinfo(fd, &si);
-+		if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on,
-+				sizeof(on)) != 0) {
-+			syslog(LOG_ERR, "cannot set SO_REUSEADDR on %s",
-+				nconf->nc_netid);
-+			if (res != NULL)
-+				freeaddrinfo(res);
-+			return 1;
-+		}
- 		if (bind(fd, sa, addrlen) < 0) {
- 			syslog(LOG_ERR, "cannot bind %s: %m", nconf->nc_netid);
- 			if (res != NULL)
-@@ -731,7 +740,7 @@ parseargs(int argc, char *argv[])
- {
- 	int c;
- 	oldstyle_local = 1;
--	while ((c = getopt(argc, argv, "dwah:ils")) != -1) {
-+	while ((c = getopt(argc, argv, "adh:ilswf")) != -1) {
- 		switch (c) {
- 		case 'a':
- 			doabort = 1;	/* when debugging, do an abort on */
-@@ -758,13 +767,16 @@ parseargs(int argc, char *argv[])
- 		case 's':
- 			runasdaemon = 1;
- 			break;
-+		case 'f':
-+			dofork = 0;
-+			break;
- #ifdef WARMSTART
- 		case 'w':
- 			warmstart = 1;
- 			break;
- #endif
- 		default:	/* error */
--			fprintf(stderr,	"usage: rpcbind [-Idwils]\n");
-+			fprintf(stderr,	"usage: rpcbind [-adhilswf]\n");
- 			exit (1);
- 		}
- 	}
-diff --git a/src/rpcbind.h b/src/rpcbind.h
-index c800577..74f9591 100644
---- a/src/rpcbind.h
-+++ b/src/rpcbind.h
-@@ -119,7 +119,7 @@ void rpcbind_abort(void);
- void reap(int);
- void toggle_verboselog(int);
- 
--int check_access(SVCXPRT *, rpcproc_t, void *, unsigned int);
-+int check_access(SVCXPRT *, rpcproc_t, rpcprog_t, unsigned int);
- int check_callit(SVCXPRT *, struct r_rmtcall_args *, int);
- void logit(int, struct sockaddr *, rpcproc_t, rpcprog_t, const char *);
- int is_loopback(struct netbuf *);
-diff --git a/src/security.c b/src/security.c
-index 0edeac6..d272f74 100644
---- a/src/security.c
-+++ b/src/security.c
-@@ -62,34 +62,21 @@ int log_severity = PORTMAP_LOG_FACILITY|PORTMAP_LOG_SEVERITY;
- extern int verboselog;
- 
- int 
--check_access(SVCXPRT *xprt, rpcproc_t proc, void *args, unsigned int rpcbvers)
-+check_access(SVCXPRT *xprt, rpcproc_t proc, rpcprog_t prog, unsigned int rpcbvers)
- {
- 	struct netbuf *caller = svc_getrpccaller(xprt);
- 	struct sockaddr *addr = (struct sockaddr *)caller->buf;
- #ifdef LIBWRAP
- 	struct request_info req;
- #endif
--	rpcprog_t prog = 0;
--	rpcb *rpcbp;
--	struct pmap *pmap;
- 
- 	/*
- 	 * The older PMAP_* equivalents have the same numbers, so
- 	 * they are accounted for here as well.
- 	 */
- 	switch (proc) {
--	case RPCBPROC_GETADDR:
- 	case RPCBPROC_SET:
- 	case RPCBPROC_UNSET:
--		if (rpcbvers > PMAPVERS) {
--			rpcbp = (rpcb *)args;
--			prog = rpcbp->r_prog;
--		} else {
--			pmap = (struct pmap *)args;
--			prog = pmap->pm_prog;
--		}
--		if (proc == RPCBPROC_GETADDR)
--			break;
- 		if (!insecure && !is_loopback(caller)) {
- #ifdef RPCBIND_DEBUG
- 			  if (debugging)
-@@ -101,6 +88,7 @@ check_access(SVCXPRT *xprt, rpcproc_t proc, void *args, unsigned int rpcbvers)
- 			return 0;
- 		}
- 		break;
-+	case RPCBPROC_GETADDR:
- 	case RPCBPROC_CALLIT:
- 	case RPCBPROC_INDIRECT:
- 	case RPCBPROC_DUMP:
-@@ -150,8 +138,7 @@ is_loopback(struct netbuf *nbuf)
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin->sin_port));
- #endif
--	       	return ((sin->sin_addr.s_addr == htonl(INADDR_LOOPBACK)) &&
--		    (ntohs(sin->sin_port) < IPPORT_RESERVED));
-+	       	return (sin->sin_addr.s_addr == htonl(INADDR_LOOPBACK));
- #ifdef INET6
- 	case AF_INET6:
- 		if (!oldstyle_local)
-@@ -163,10 +150,9 @@ is_loopback(struct netbuf *nbuf)
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin6->sin6_port));
- #endif
--		return ((IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr) ||
-+		return (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr) ||
- 			 (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr) &&
--			  sin6->sin6_addr.s6_addr32[3] == htonl(INADDR_LOOPBACK))) &&
--		        (ntohs(sin6->sin6_port) < IPV6PORT_RESERVED));
-+			  sin6->sin6_addr.s6_addr32[3] == htonl(INADDR_LOOPBACK)));
- #endif
- 	case AF_LOCAL:
- 		return 1;
-diff --git a/src/warmstart.c b/src/warmstart.c
-index 25e5d89..d1bb971 100644
---- a/src/warmstart.c
-+++ b/src/warmstart.c
-@@ -46,7 +46,6 @@
- #include <unistd.h>
- #include <errno.h>
- 
--#include "config.h"
- #include "rpcbind.h"
- 
- #ifndef RPCBIND_STATEDIR
diff --git a/rpcbind-0_2_1-rc4.patch b/rpcbind-0_2_1-rc4.patch
deleted file mode 100644
index 44b8cb9..0000000
--- a/rpcbind-0_2_1-rc4.patch
+++ /dev/null
@@ -1,1093 +0,0 @@
-diff --git a/.gitignore b/.gitignore
-index 5a7546c..bee4bab 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -1,3 +1,4 @@
-+INSTALL
- Makefile
- Makefile.in
- aclocal.m4
-@@ -13,18 +14,14 @@ depcomp
- install-sh
- libtool
- ltmain.sh
--man/Makefile
--man/Makefile.in
- missing
--src/.deps/
--src/Makefile
--src/Makefile.in
- src/config.h
- src/stamp-h2
- stamp-h1
- # file generated during compilation
-+.deps
- *.o
--src/rpcbind
--src/rpcinfo
-+rpcbind
-+rpcinfo
- # cscope database files
- cscope.*
-diff --git a/INSTALL b/INSTALL
-index 98e5d87..7d1c323 100644
---- a/INSTALL
-+++ b/INSTALL
-@@ -1,32 +1,25 @@
--Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
--Foundation, Inc.
-+Installation Instructions
-+*************************
- 
--   This file is free documentation; the Free Software Foundation gives
--unlimited permission to copy, distribute and modify it.
--
--
--rpcbind Quick Installation
--==========================
--
--$ ./configure
--$ make
--# make install
--
--   The install phase will install the rpcbind and rpcinfo commands
--under /usr/bin.  If you wish they replace the basic portmap and 
--rpcinfo commands, you can run:
--
--# mv /sbin/portmap /sbin/portmap.sav
--# ln -s /usr/bin/rpcbind /sbin/portmap
--
--# mv /usr/sbin/rpcinfo /usr/sbin/rpcinfo.sav
--# ln -s /usr/bin/rpcinfo /usr/sbin/rpcinfo
-+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- 
-+   Copying and distribution of this file, with or without modification,
-+are permitted in any medium without royalty provided the copyright
-+notice and this notice are preserved.  This file is offered as-is,
-+without warranty of any kind.
- 
- Basic Installation
- ==================
- 
--   These are generic installation instructions.
-+   Briefly, the shell commands `./configure; make; make install' should
-+configure, build, and install this package.  The following
-+more-detailed instructions are generic; see the `README' file for
-+instructions specific to this package.  Some packages provide this
-+`INSTALL' file but do not implement all of the features documented
-+below.  The lack of an optional feature in a given package is not
-+necessarily a bug.  More recommendations for GNU packages can be found
-+in *note Makefile Conventions: (standards)Makefile Conventions.
- 
-    The `configure' shell script attempts to guess correct values for
- various system-dependent variables used during compilation.  It uses
-@@ -39,9 +32,9 @@ debugging `configure').
- 
-    It can also use an optional file (typically called `config.cache'
- and enabled with `--cache-file=config.cache' or simply `-C') that saves
--the results of its tests to speed up reconfiguring.  (Caching is
-+the results of its tests to speed up reconfiguring.  Caching is
- disabled by default to prevent problems with accidental use of stale
--cache files.)
-+cache files.
- 
-    If you need to do unusual things to compile the package, please try
- to figure out how `configure' could check whether to do them, and mail
-@@ -51,30 +44,37 @@ some point `config.cache' contains results you don't want to keep, you
- may remove or edit it.
- 
-    The file `configure.ac' (or `configure.in') is used to create
--`configure' by a program called `autoconf'.  You only need
--`configure.ac' if you want to change it or regenerate `configure' using
--a newer version of `autoconf'.
-+`configure' by a program called `autoconf'.  You need `configure.ac' if
-+you want to change it or regenerate `configure' using a newer version
-+of `autoconf'.
- 
--The simplest way to compile this package is:
-+   The simplest way to compile this package is:
- 
-   1. `cd' to the directory containing the package's source code and type
--     `./configure' to configure the package for your system.  If you're
--     using `csh' on an old version of System V, you might need to type
--     `sh ./configure' instead to prevent `csh' from trying to execute
--     `configure' itself.
-+     `./configure' to configure the package for your system.
- 
--     Running `configure' takes awhile.  While running, it prints some
--     messages telling which features it is checking for.
-+     Running `configure' might take a while.  While running, it prints
-+     some messages telling which features it is checking for.
- 
-   2. Type `make' to compile the package.
- 
-   3. Optionally, type `make check' to run any self-tests that come with
--     the package.
-+     the package, generally using the just-built uninstalled binaries.
- 
-   4. Type `make install' to install the programs and any data files and
--     documentation.
--
--  5. You can remove the program binaries and object files from the
-+     documentation.  When installing into a prefix owned by root, it is
-+     recommended that the package be configured and built as a regular
-+     user, and only the `make install' phase executed with root
-+     privileges.
-+
-+  5. Optionally, type `make installcheck' to repeat any self-tests, but
-+     this time using the binaries in their final installed location.
-+     This target does not install anything.  Running this target as a
-+     regular user, particularly if the prior `make install' required
-+     root privileges, verifies that the installation completed
-+     correctly.
-+
-+  6. You can remove the program binaries and object files from the
-      source code directory by typing `make clean'.  To also remove the
-      files that `configure' created (so you can compile the package for
-      a different kind of computer), type `make distclean'.  There is
-@@ -83,6 +83,16 @@ The simplest way to compile this package is:
-      all sorts of other programs in order to regenerate files that came
-      with the distribution.
- 
-+  7. Often, you can also type `make uninstall' to remove the installed
-+     files again.  In practice, not all packages have tested that
-+     uninstallation works correctly, even though it is required by the
-+     GNU Coding Standards.
-+
-+  8. Some packages, particularly those that use Automake, provide `make
-+     distcheck', which can by used by developers to test that all other
-+     targets like `make install' and `make uninstall' work correctly.
-+     This target is generally not run by end users.
-+
- Compilers and Options
- =====================
- 
-@@ -94,7 +104,7 @@ for details on some of the pertinent environment variables.
- by setting variables in the command line or in the environment.  Here
- is an example:
- 
--     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
- 
-    *Note Defining Variables::, for more details.
- 
-@@ -103,44 +113,89 @@ Compiling For Multiple Architectures
- 
-    You can compile the package for more than one kind of computer at the
- same time, by placing the object files for each architecture in their
--own directory.  To do this, you must use a version of `make' that
--supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-+own directory.  To do this, you can use GNU `make'.  `cd' to the
- directory where you want the object files and executables to go and run
- the `configure' script.  `configure' automatically checks for the
--source code in the directory that `configure' is in and in `..'.
-+source code in the directory that `configure' is in and in `..'.  This
-+is known as a "VPATH" build.
- 
--   If you have to use a `make' that does not support the `VPATH'
--variable, you have to compile the package for one architecture at a
--time in the source code directory.  After you have installed the
--package for one architecture, use `make distclean' before reconfiguring
--for another architecture.
-+   With a non-GNU `make', it is safer to compile the package for one
-+architecture at a time in the source code directory.  After you have
-+installed the package for one architecture, use `make distclean' before
-+reconfiguring for another architecture.
-+
-+   On MacOS X 10.5 and later systems, you can create libraries and
-+executables that work on multiple system types--known as "fat" or
-+"universal" binaries--by specifying multiple `-arch' options to the
-+compiler but only a single `-arch' option to the preprocessor.  Like
-+this:
-+
-+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-+                 CPP="gcc -E" CXXCPP="g++ -E"
-+
-+   This is not guaranteed to produce working output in all cases, you
-+may have to build one architecture at a time and combine the results
-+using the `lipo' tool if you have problems.
- 
- Installation Names
- ==================
- 
--   By default, `make install' will install the package's files in
--`/usr/local/bin', `/usr/local/man', etc.  You can specify an
--installation prefix other than `/usr/local' by giving `configure' the
--option `--prefix=PATH'.
-+   By default, `make install' installs the package's commands under
-+`/usr/local/bin', include files under `/usr/local/include', etc.  You
-+can specify an installation prefix other than `/usr/local' by giving
-+`configure' the option `--prefix=PREFIX', where PREFIX must be an
-+absolute file name.
- 
-    You can specify separate installation prefixes for
- architecture-specific files and architecture-independent files.  If you
--give `configure' the option `--exec-prefix=PATH', the package will use
--PATH as the prefix for installing programs and libraries.
--Documentation and other data files will still use the regular prefix.
-+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-+PREFIX as the prefix for installing programs and libraries.
-+Documentation and other data files still use the regular prefix.
- 
-    In addition, if you use an unusual directory layout you can give
--options like `--bindir=PATH' to specify different values for particular
-+options like `--bindir=DIR' to specify different values for particular
- kinds of files.  Run `configure --help' for a list of the directories
--you can set and what kinds of files go in them.
-+you can set and what kinds of files go in them.  In general, the
-+default for these options is expressed in terms of `${prefix}', so that
-+specifying just `--prefix' will affect all of the other directory
-+specifications that were not explicitly provided.
-+
-+   The most portable way to affect installation locations is to pass the
-+correct locations to `configure'; however, many packages provide one or
-+both of the following shortcuts of passing variable assignments to the
-+`make install' command line to change installation locations without
-+having to reconfigure or recompile.
-+
-+   The first method involves providing an override variable for each
-+affected directory.  For example, `make install
-+prefix=/alternate/directory' will choose an alternate location for all
-+directory configuration variables that were expressed in terms of
-+`${prefix}'.  Any directories that were specified during `configure',
-+but not in terms of `${prefix}', must each be overridden at install
-+time for the entire installation to be relocated.  The approach of
-+makefile variable overrides for each directory variable is required by
-+the GNU Coding Standards, and ideally causes no recompilation.
-+However, some platforms have known limitations with the semantics of
-+shared libraries that end up requiring recompilation when using this
-+method, particularly noticeable in packages that use GNU Libtool.
-+
-+   The second method involves providing the `DESTDIR' variable.  For
-+example, `make install DESTDIR=/alternate/directory' will prepend
-+`/alternate/directory' before all installation names.  The approach of
-+`DESTDIR' overrides is not required by the GNU Coding Standards, and
-+does not work on platforms that have drive letters.  On the other hand,
-+it does better at avoiding recompilation issues, and works well even
-+when some directory options were not specified in terms of `${prefix}'
-+at `configure' time.
-+
-+Optional Features
-+=================
- 
-    If the package supports it, you can cause programs to be installed
- with an extra prefix or suffix on their names by giving `configure' the
- option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
- 
--Optional Features
--=================
--
-    Some packages pay attention to `--enable-FEATURE' options to
- `configure', where FEATURE indicates an optional part of the package.
- They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-@@ -153,6 +208,45 @@ find the X include and library files automatically, but if it doesn't,
- you can use the `configure' options `--x-includes=DIR' and
- `--x-libraries=DIR' to specify their locations.
- 
-+   Some packages offer the ability to configure how verbose the
-+execution of `make' will be.  For these packages, running `./configure
-+--enable-silent-rules' sets the default to minimal output, which can be
-+overridden with `make V=1'; while running `./configure
-+--disable-silent-rules' sets the default to verbose, which can be
-+overridden with `make V=0'.
-+
-+Particular systems
-+==================
-+
-+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-+CC is not installed, it is recommended to use the following options in
-+order to use an ANSI C compiler:
-+
-+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-+
-+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-+
-+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
-+a workaround.  If GNU CC is not installed, it is therefore recommended
-+to try
-+
-+     ./configure CC="cc"
-+
-+and if that doesn't work, try
-+
-+     ./configure CC="cc -nodtk"
-+
-+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
-+directory contains several dysfunctional programs; working variants of
-+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
-+in your `PATH', put it _after_ `/usr/bin'.
-+
-+   On Haiku, software installed for all users goes in `/boot/common',
-+not `/usr/local'.  It is recommended to use the following options:
-+
-+     ./configure --prefix=/boot/common
-+
- Specifying the System Type
- ==========================
- 
-@@ -168,14 +262,15 @@ type, such as `sun4', or a canonical name which has the form:
- 
- where SYSTEM can have one of these forms:
- 
--     OS KERNEL-OS
-+     OS
-+     KERNEL-OS
- 
-    See the file `config.sub' for the possible values of each field.  If
- `config.sub' isn't included in this package, then this package doesn't
- need to know the machine type.
- 
-    If you are _building_ compiler tools for cross-compiling, you should
--use the `--target=TYPE' option to select the type of system they will
-+use the option `--target=TYPE' to select the type of system they will
- produce code for.
- 
-    If you want to _use_ a cross compiler, that generates code for a
-@@ -205,9 +300,14 @@ them in the `configure' command line, using `VAR=value'.  For example:
- 
-      ./configure CC=/usr/local2/bin/gcc
- 
--will cause the specified gcc to be used as the C compiler (unless it is
-+causes the specified `gcc' to be used as the C compiler (unless it is
- overridden in the site shell script).
- 
-+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-+an Autoconf bug.  Until the bug is fixed you can use this workaround:
-+
-+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-+
- `configure' Invocation
- ======================
- 
-@@ -216,7 +316,14 @@ operates.
- 
- `--help'
- `-h'
--     Print a summary of the options to `configure', and exit.
-+     Print a summary of all of the options to `configure', and exit.
-+
-+`--help=short'
-+`--help=recursive'
-+     Print a summary of the options unique to this package's
-+     `configure', and exit.  The `short' variant lists options used
-+     only in the top level, while the `recursive' variant lists options
-+     also present in any nested packages.
- 
- `--version'
- `-V'
-@@ -243,6 +350,16 @@ operates.
-      Look for the package's source code in directory DIR.  Usually
-      `configure' can determine that directory automatically.
- 
-+`--prefix=DIR'
-+     Use DIR as the installation prefix.  *note Installation Names::
-+     for more details, including other options available for fine-tuning
-+     the installation locations.
-+
-+`--no-create'
-+`-n'
-+     Run the configure checks, but stop before creating any output
-+     files.
-+
- `configure' also accepts some other, not widely useful, options.  Run
- `configure --help' for more details.
- 
-diff --git a/Makefile.am b/Makefile.am
-index cd56148..d10c906 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,2 +1,44 @@
--SUBDIRS= src man
-+AM_CPPFLAGS = \
-+	-DCHECK_LOCAL \
-+	-DPORTMAP \
-+	-DFACILITY=LOG_MAIL \
-+	-DSEVERITY=LOG_INFO \
-+	-DINET6 \
-+	-DRPCBIND_STATEDIR="\"$(statedir)\"" \
-+	-DRPCBIND_USER="\"$(rpcuser)\"" \
-+	-D_GNU_SOURCE \
-+	$(TIRPC_CFLAGS)
- 
-+if DEBUG
-+AM_CPPFLAGS +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
-+AM_CPPFLAGS +=	-DND_DEBUG -DBIND_DEBUG
-+endif
-+
-+if WARMSTART
-+AM_CPPFLAGS +=	-DWARMSTART
-+endif
-+
-+if LIBWRAP
-+AM_CPPFLAGS +=	-DLIBWRAP
-+endif
-+
-+bin_PROGRAMS = rpcbind rpcinfo
-+
-+rpcbind_SOURCES = \
-+	src/check_bound.c \
-+	src/pmap_svc.c \
-+	src/rpcb_stat.c \
-+	src/rpcb_svc.c \
-+	src/rpcb_svc_4.c \
-+	src/rpcb_svc_com.c \
-+	src/rpcbind.c \
-+	src/rpcbind.h \
-+	src/security.c \
-+	src/util.c \
-+	src/warmstart.c
-+rpcbind_LDADD = $(TIRPC_LIBS)
-+
-+rpcinfo_SOURCES =       src/rpcinfo.c
-+rpcinfo_LDADD   =       $(TIRPC_LIBS)
-+
-+dist_man8_MANS = man/rpcbind.8 man/rpcinfo.8
-diff --git a/autogen.sh b/autogen.sh
-index 1613b6d..761db90 100755
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -36,7 +36,7 @@ if test x"${1}" = x"clean"; then
- fi
- 
- aclocal
--libtoolize --force --copy
--autoheader
-+#libtoolize --force --copy
-+#autoheader
- automake --add-missing --copy --gnu # -Wall
- autoconf # -Wall
-diff --git a/configure.in b/configure.in
-index de1c730..2b67720 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1,66 +1,39 @@
-- AC_INIT(rpcbind, 0.2.0)
-+AC_INIT(rpcbind, 0.2.0)
-  
-- AM_INIT_AUTOMAKE
--# AM_MAINTAINER_MODE
-+AM_INIT_AUTOMAKE
- AC_CONFIG_SRCDIR([src/rpcbind.c])
-- AC_PROG_CC
-- AM_CONFIG_HEADER(config.h)
-- AC_HEADER_DIRENT
-- AC_PREFIX_DEFAULT(/usr)
--
--AC_CONFIG_SRCDIR([src/config.h.in])
--AC_CONFIG_HEADERS([src/config.h])
--
--AC_PROG_LIBTOOL
--
--AC_ARG_ENABLE(debug,[  --enable-debug      Turns on rpcbind debugging], 
--	[case "${enableval}" in
--		yes) debug=true ;;
--		no)  debug=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
--	esac],[debug=false])
--AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
--
--AC_ARG_ENABLE(warmstarts,[  --enable-warmstarts  Enables Warm Starts], 
--	[case "${enableval}" in
--		yes) warmstarts=true ;;
--		no)  warmstarts=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-warmstarts) ;;
--	esac],[warmstarts=false])
--AM_CONDITIONAL(WARMSTART, test x$warmstarts = xtrue)
--
--if test "$warmstarts" = "true" ; then
--	AC_ARG_WITH(statedir,
--		[  --with-statedir=/foo use state dir /foo [/tmp]],
--    	statedir=$withval,
--		statedir=/tmp)
--		AC_SUBST(statedir)
--	AC_DEFINE_UNQUOTED(RPCBIND_STATEDIR, "$statedir", [This defines the location where the state files will be kept for warm starts])
--fi
--AC_ARG_WITH(rpcuser,
--	[  --with-rpcuser=user uid to use [root]],
--	rpcuser=$withval,
--	rpcuser=root)
--	AC_SUBST(rpcuser)
--AC_DEFINE_UNQUOTED(RPCBIND_USER, "$rpcuser", [This defines the uid to run as])
-+AC_PREFIX_DEFAULT(/usr)
-+AC_PROG_CC
-+
-+AC_ARG_ENABLE([libwrap],
-+  AS_HELP_STRING([--enable-libwrap], [Enables host name checking through tcpd @<:@default=no@:>@]))
-+AM_CONDITIONAL(LIBWRAP, test x$enable_libwrap = xyes)
-+
-+AC_ARG_ENABLE([debug],
-+  AS_HELP_STRING([--enable-debug], [Turns on rpcbind debugging @<:@default=no@:>@]))
-+AM_CONDITIONAL(DEBUG, test x$enable_debug = xyes)
-+
-+AC_ARG_ENABLE([warmstarts],
-+  AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@]))
-+AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes)
-+
-+AC_ARG_WITH([statedir],
-+  AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/tmp@:>@])
-+  ,, [with_statedir=/tmp])
-+AC_SUBST([statedir], [$with_statedir])
-+
-+AC_ARG_WITH([rpcuser],
-+  AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
-+  ,, [with_rpcuser=root])
-+AC_SUBST([rpcuser], [$with_rpcuser])
-+ 
-+PKG_CHECK_MODULES([TIRPC], [libtirpc])
- 
--AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h \
--                  netinet/in.h stdlib.h string.h \
--                  sys/param.h sys/socket.h \
--                  sys/time.h syslog.h \
--                  unistd.h nss.h])
-+AS_IF([test x$enable_libwrap = xyes], [
-+	AC_CHECK_LIB([wrap], [hosts_access], ,
-+		AC_MSG_ERROR([libwrap support requested but unable to find libwrap]))
-+])
- 
--AC_CHECK_LIB([pthread], [pthread_create])
--AC_CHECK_LIB([tirpc], [clnt_create])
--AC_ARG_ENABLE(libwrap,[ --enable-libwrap  Enables host name checking], 
--	[case "${enableval}" in
--		yes) libwarp=true 
--			AC_CHECK_LIB([wrap],  [hosts_access]) ;;
--		no)  libwarp=no ;;
--		*) AC_MSG_ERROR(bad value ${enableval} for --enable-libwrap) ;;
--	esac],[libwarp=false])
--AM_CONDITIONAL(LIBWRAP, test x$libwarp = xtrue)
-+AC_SEARCH_LIBS([pthread_create], [pthread])
- 
--AC_CONFIG_FILES([Makefile src/Makefile man/Makefile])
--AC_OUTPUT()
--                                                                   
-+AC_OUTPUT([Makefile])
-diff --git a/man/Makefile.am b/man/Makefile.am
-deleted file mode 100644
-index 84818e9..0000000
---- a/man/Makefile.am
-+++ /dev/null
-@@ -1,2 +0,0 @@
--man8_MANS   = rpcbind.8
--EXTRA_DIST  = $(man8_MANS)
-diff --git a/man/rpcbind.8 b/man/rpcbind.8
-index 32806d4..da32701 100644
---- a/man/rpcbind.8
-+++ b/man/rpcbind.8
-@@ -82,6 +82,8 @@ during operation, and will abort on certain errors if
- is also specified.
- With this option, the name-to-address translation consistency
- checks are shown in detail.
-+.It Fl f
-+Do not fork and become a background process.
- .It Fl h
- Specify specific IP addresses to bind to for UDP requests.
- This option
-@@ -141,7 +143,6 @@ All RPC servers must be restarted if
- .Nm
- is restarted.
- .Sh SEE ALSO
--.Xr rpcbind 3 ,
- .Xr rpcinfo 8
- .Sh LINUX PORT
- .Bl Aurelien Charbon <aurelien.charbon at bull.net>
-diff --git a/src/Makefile.am b/src/Makefile.am
-deleted file mode 100644
-index cc0a85b..0000000
---- a/src/Makefile.am
-+++ /dev/null
-@@ -1,34 +0,0 @@
--INCLUDES = -I$(srcdir)/tirpc -DPORTMAP -DINET6 -DVERSION="\"$(VERSION)\"" \
--                                                -D_GNU_SOURCE -Wall -pipe
--if DEBUG
--INCLUDES +=	-DRPCBIND_DEBUG -DSVC_RUN_DEBUG -DDEBUG_RMTCALL
--INCLUDES +=	-DND_DEBUG -DBIND_DEBUG
--endif
--
--if WARMSTART
--INCLUDES +=	-DWARMSTART
--endif
--
--if LIBWRAP
--INCLUDES +=	-DLIBWRAP
--endif
--
--
--bin_PROGRAMS = rpcbind rpcinfo
--
--rpcbind_SOURCES =       check_bound.c rpcbind.c \
--                        rpcb_svc_4.c rpcb_svc_com.c \
--                        util.c pmap_svc.c rpcb_stat.c \
--                        rpcb_svc.c security.c warmstart.c \
--                        rpcbind.h
--
--rpcinfo_SOURCES =       rpcinfo.c
--rpcinfo_LDFLAGS =       -lpthread -ltirpc
--rpcinfo_LDADD   =       $(LIB_TIRPC)
--
--
--rpcbind_LDFLAGS = -lpthread -ltirpc
--rpcbind_LDADD = $(LIB_TIRPC)
--AM_CPPFLAGS = -I/usr/include/tirpc -DCHECK_LOCAL -DPORTMAP \
--                       -DFACILITY=LOG_MAIL -DSEVERITY=LOG_INFO
--     
-diff --git a/src/config.h.in b/src/config.h.in
-deleted file mode 100644
-index 67a0e39..0000000
---- a/src/config.h.in
-+++ /dev/null
-@@ -1,105 +0,0 @@
--/* config.h.in.  Generated from configure.in by autoheader.  */
--
--/* Define to 1 if you have the <arpa/inet.h> header file. */
--#undef HAVE_ARPA_INET_H
--
--/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_DIRENT_H
--
--/* Define to 1 if you have the <fcntl.h> header file. */
--#undef HAVE_FCNTL_H
--
--/* Define to 1 if you have the <inttypes.h> header file. */
--#undef HAVE_INTTYPES_H
--
--/* Define to 1 if you have the `pthread' library (-lpthread). */
--#undef HAVE_LIBPTHREAD
--
--/* Define to 1 if you have the `tirpc' library (-ltirpc). */
--#undef HAVE_LIBTIRPC
--
--/* Define to 1 if you have the <memory.h> header file. */
--#undef HAVE_MEMORY_H
--
--/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
--#undef HAVE_NDIR_H
--
--/* Define to 1 if you have the <netdb.h> header file. */
--#undef HAVE_NETDB_H
--
--/* Define to 1 if you have the <netinet/in.h> header file. */
--#undef HAVE_NETINET_IN_H
--
--/* Define to 1 if you have the <stdint.h> header file. */
--#undef HAVE_STDINT_H
--
--/* Define to 1 if you have the <stdlib.h> header file. */
--#undef HAVE_STDLIB_H
--
--/* Define to 1 if you have the <strings.h> header file. */
--#undef HAVE_STRINGS_H
--
--/* Define to 1 if you have the <string.h> header file. */
--#undef HAVE_STRING_H
--
--/* Define to 1 if you have the <syslog.h> header file. */
--#undef HAVE_SYSLOG_H
--
--/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_SYS_DIR_H
--
--/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
--   */
--#undef HAVE_SYS_NDIR_H
--
--/* Define to 1 if you have the <sys/param.h> header file. */
--#undef HAVE_SYS_PARAM_H
--
--/* Define to 1 if you have the <sys/socket.h> header file. */
--#undef HAVE_SYS_SOCKET_H
--
--/* Define to 1 if you have the <sys/stat.h> header file. */
--#undef HAVE_SYS_STAT_H
--
--/* Define to 1 if you have the <sys/time.h> header file. */
--#undef HAVE_SYS_TIME_H
--
--/* Define to 1 if you have the <sys/types.h> header file. */
--#undef HAVE_SYS_TYPES_H
--
--/* Define to 1 if you have the <unistd.h> header file. */
--#undef HAVE_UNISTD_H
--
--/* Name of package */
--#undef PACKAGE
--
--/* Define to the address where bug reports for this package should be sent. */
--#undef PACKAGE_BUGREPORT
--
--/* Define to the full name of this package. */
--#undef PACKAGE_NAME
--
--/* Define to the full name and version of this package. */
--#undef PACKAGE_STRING
--
--/* Define to the one symbol short name of this package. */
--#undef PACKAGE_TARNAME
--
--/* Define to the version of this package. */
--#undef PACKAGE_VERSION
--
--/* Define to 1 if you have the ANSI C header files. */
--#undef STDC_HEADERS
--
--/* Version number of package */
--#undef VERSION
--
--/* This defines the location where the state files will be kept for warm
--   starts */
--#undef RPCBIND_STATEDIR
--
--/* This defines the uid to run as */
--#undef RPCBIND_USER
--
-diff --git a/src/pmap_svc.c b/src/pmap_svc.c
-index 4736700..337e64d 100644
---- a/src/pmap_svc.c
-+++ b/src/pmap_svc.c
-@@ -80,7 +80,7 @@ pmap_service(struct svc_req *rqstp, SVCXPRT *xprt)
- 		if (debugging)
- 			fprintf(stderr, "PMAPPROC_NULL\n");
- #endif
--		check_access(xprt, rqstp->rq_proc, NULL, PMAPVERS);
-+		check_access(xprt, rqstp->rq_proc, 0, PMAPVERS);
- 		if ((!svc_sendreply(xprt, (xdrproc_t) xdr_void, NULL)) &&
- 			debugging) {
- 			if (doabort) {
-@@ -201,11 +201,11 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
- 		  reg.pm_prog, reg.pm_vers);
- #endif
- 
--	if (!check_access(xprt, op, &reg, PMAPVERS)) {
-+	if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return (FALSE);
- 	}
--		
-+
- 	rpcbreg.r_prog = reg.pm_prog;
- 	rpcbreg.r_vers = reg.pm_vers;
- 
-@@ -276,7 +276,7 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 		return (FALSE);
- 	}
- 
--	if (!check_access(xprt, PMAPPROC_GETPORT, &reg, PMAPVERS)) {
-+	if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return FALSE;
- 	}
-@@ -340,7 +340,7 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
- 		return (FALSE);
- 	}
- 
--	if (!check_access(xprt, PMAPPROC_DUMP, NULL, PMAPVERS)) {
-+	if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) {
- 		svcerr_weakauth(xprt);
- 		return FALSE;
- 	}
-diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c
-index 0514ba5..e350f85 100644
---- a/src/rpcb_svc.c
-+++ b/src/rpcb_svc.c
-@@ -75,6 +75,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 	char *result;
- 	xdrproc_t xdr_argument, xdr_result;
- 	void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t));
-+	rpcprog_t setprog = 0;
- 
- 	rpcbs_procinfo(RPCBVERS_3_STAT, rqstp->rq_proc);
- 
-@@ -88,7 +89,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 			fprintf(stderr, "RPCBPROC_NULL\n");
- #endif
- 		/* This call just logs, no actual checks */
--		check_access(transp, rqstp->rq_proc, NULL, RPCBVERS);
-+		check_access(transp, rqstp->rq_proc, 0, RPCBVERS);
- 		(void) svc_sendreply(transp, (xdrproc_t)xdr_void, (char *)NULL);
- 		return;
- 
-@@ -166,7 +167,13 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
- 			(void) fprintf(stderr, "rpcbind: could not decode\n");
- 		return;
- 	}
--	if (!check_access(transp, rqstp->rq_proc, &argument, RPCBVERS)) {
-+
-+	if (rqstp->rq_proc == RPCBPROC_SET
-+	 || rqstp->rq_proc == RPCBPROC_UNSET
-+	 || rqstp->rq_proc == RPCBPROC_GETADDR)
-+		setprog = argument.rpcbproc_set_3_arg.r_prog;
-+
-+	if (!check_access(transp, rqstp->rq_proc, setprog, RPCBVERS)) {
- 		svcerr_weakauth(transp);
- 		goto done;
- 	}
-diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c
-index 9fd5bef..313e6d1 100644
---- a/src/rpcb_svc_4.c
-+++ b/src/rpcb_svc_4.c
-@@ -78,6 +78,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 	char *result;
- 	xdrproc_t xdr_argument, xdr_result;
- 	void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t));
-+	rpcprog_t setprog = 0;
- 
- 	rpcbs_procinfo(RPCBVERS_4_STAT, rqstp->rq_proc);
- 
-@@ -90,7 +91,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 		if (debugging)
- 			fprintf(stderr, "RPCBPROC_NULL\n");
- #endif
--		check_access(transp, rqstp->rq_proc, NULL, RPCBVERS4);
-+		check_access(transp, rqstp->rq_proc, 0, RPCBVERS4);
- 		(void) svc_sendreply(transp, (xdrproc_t) xdr_void,
- 					(char *)NULL);
- 		return;
-@@ -220,7 +221,13 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
- 			(void) fprintf(stderr, "rpcbind: could not decode\n");
- 		return;
- 	}
--	if (!check_access(transp, rqstp->rq_proc, &argument, RPCBVERS4)) {
-+
-+	if (rqstp->rq_proc == RPCBPROC_SET
-+	 || rqstp->rq_proc == RPCBPROC_UNSET
-+	 || rqstp->rq_proc == RPCBPROC_GETADDR)
-+		setprog = argument.rpcbproc_set_4_arg.r_prog;
-+
-+	if (!check_access(transp, rqstp->rq_proc, setprog, RPCBVERS4)) {
- 		svcerr_weakauth(transp);
- 		goto done;
- 	}
-diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
-index 291421f..f6bd6bd 100644
---- a/src/rpcb_svc_com.c
-+++ b/src/rpcb_svc_com.c
-@@ -1227,6 +1227,8 @@ send_svcsyserr(SVCXPRT *xprt, struct finfo *fi)
- 	return;
- }
- 
-+extern SVCAUTH svc_auth_none;
-+
- static void
- handle_reply(int fd, SVCXPRT *xprt)
- {
-@@ -1293,7 +1295,10 @@ handle_reply(int fd, SVCXPRT *xprt)
- 	a.rmt_localvers = fi->versnum;
- 
- 	xprt_set_caller(xprt, fi);
-+	xprt->xp_auth = &svc_auth_none;
- 	svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
-+	SVCAUTH_DESTROY(xprt->xp_auth);
-+	xprt->xp_auth = NULL;
- done:
- 	if (buffer)
- 		free(buffer);
-@@ -1372,10 +1377,13 @@ static char *
- getowner(SVCXPRT *transp, char *owner, size_t ownersize)
- {
- 	uid_t uid;
-- 
--	if (__rpc_get_local_uid(transp, &uid) < 0)
--		snprintf(owner, ownersize, "unknown");
--	else if (uid == 0)
-+
-+	if (__rpc_get_local_uid(transp, &uid) < 0) {
-+		if (is_localroot(svc_getrpccaller(transp)))
-+			snprintf(owner, ownersize, "superuser");
-+		else 
-+			snprintf(owner, ownersize, "unknown");
-+	} else if (uid == 0)
- 		snprintf(owner, ownersize, "superuser");
- 	else
- 		snprintf(owner, ownersize, "%d", uid);  
-diff --git a/src/rpcbind.c b/src/rpcbind.c
-index 525ffba..9a0504d 100644
---- a/src/rpcbind.c
-+++ b/src/rpcbind.c
-@@ -68,7 +68,6 @@
- #include <string.h>
- #include <errno.h>
- #include <nss.h>
--#include "config.h"
- #include "rpcbind.h"
- 
- /*#define RPCBIND_DEBUG*/
-@@ -77,6 +76,7 @@
- 
- int debugging = 0;	/* Tell me what's going on */
- int doabort = 0;	/* When debugging, do an abort on errors */
-+int dofork = 1;		/* fork? */
- 
- rpcblist_ptr list_rbl;	/* A list of version 3/4 rpcbind services */
- 
-@@ -213,8 +213,8 @@ main(int argc, char *argv[])
- 			printf("\n");
- 		}
- #endif
--	} else {
--		if (daemon(0, 0)) 
-+	} else if (dofork) {
-+		if (daemon(0, 0))
-         		err(1, "fork failed");
- 	}
- 
-@@ -236,6 +236,10 @@ main(int argc, char *argv[])
-                         syslog(LOG_ERR, "setgid to '%s' (%d) failed: %m", id, p->pw_gid);
-                         exit(1);
-                 }
-+		if (setgroups(0, NULL) == -1) {
-+			syslog(LOG_ERR, "dropping supplemental groups failed: %m");
-+			exit(1);
-+		}
- 		if (setuid(p->pw_uid) == -1) {
- 			syslog(LOG_ERR, "setuid to '%s' (%d) failed: %m", id, p->pw_uid);
- 			exit(1);
-@@ -276,6 +280,7 @@ init_transport(struct netconfig *nconf)
- 	int addrlen = 0;
- 	int nhostsbak;
- 	int checkbind;
-+	int on = 1;
- 	struct sockaddr *sa = NULL;
- 	u_int32_t host_addr[4];  /* IPv4 or IPv6 */
- 	struct sockaddr_un sun;
-@@ -493,6 +498,14 @@ init_transport(struct netconfig *nconf)
- 		}
- 		oldmask = umask(S_IXUSR|S_IXGRP|S_IXOTH);
- 		__rpc_fd2sockinfo(fd, &si);
-+		if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on,
-+				sizeof(on)) != 0) {
-+			syslog(LOG_ERR, "cannot set SO_REUSEADDR on %s",
-+				nconf->nc_netid);
-+			if (res != NULL)
-+				freeaddrinfo(res);
-+			return 1;
-+		}
- 		if (bind(fd, sa, addrlen) < 0) {
- 			syslog(LOG_ERR, "cannot bind %s: %m", nconf->nc_netid);
- 			if (res != NULL)
-@@ -731,7 +744,7 @@ parseargs(int argc, char *argv[])
- {
- 	int c;
- 	oldstyle_local = 1;
--	while ((c = getopt(argc, argv, "dwah:ils")) != -1) {
-+	while ((c = getopt(argc, argv, "adh:ilswf")) != -1) {
- 		switch (c) {
- 		case 'a':
- 			doabort = 1;	/* when debugging, do an abort on */
-@@ -758,13 +771,16 @@ parseargs(int argc, char *argv[])
- 		case 's':
- 			runasdaemon = 1;
- 			break;
-+		case 'f':
-+			dofork = 0;
-+			break;
- #ifdef WARMSTART
- 		case 'w':
- 			warmstart = 1;
- 			break;
- #endif
- 		default:	/* error */
--			fprintf(stderr,	"usage: rpcbind [-Idwils]\n");
-+			fprintf(stderr,	"usage: rpcbind [-adhilswf]\n");
- 			exit (1);
- 		}
- 	}
-diff --git a/src/rpcbind.h b/src/rpcbind.h
-index c800577..74f9591 100644
---- a/src/rpcbind.h
-+++ b/src/rpcbind.h
-@@ -119,7 +119,7 @@ void rpcbind_abort(void);
- void reap(int);
- void toggle_verboselog(int);
- 
--int check_access(SVCXPRT *, rpcproc_t, void *, unsigned int);
-+int check_access(SVCXPRT *, rpcproc_t, rpcprog_t, unsigned int);
- int check_callit(SVCXPRT *, struct r_rmtcall_args *, int);
- void logit(int, struct sockaddr *, rpcproc_t, rpcprog_t, const char *);
- int is_loopback(struct netbuf *);
-diff --git a/src/security.c b/src/security.c
-index 0edeac6..d272f74 100644
---- a/src/security.c
-+++ b/src/security.c
-@@ -62,34 +62,21 @@ int log_severity = PORTMAP_LOG_FACILITY|PORTMAP_LOG_SEVERITY;
- extern int verboselog;
- 
- int 
--check_access(SVCXPRT *xprt, rpcproc_t proc, void *args, unsigned int rpcbvers)
-+check_access(SVCXPRT *xprt, rpcproc_t proc, rpcprog_t prog, unsigned int rpcbvers)
- {
- 	struct netbuf *caller = svc_getrpccaller(xprt);
- 	struct sockaddr *addr = (struct sockaddr *)caller->buf;
- #ifdef LIBWRAP
- 	struct request_info req;
- #endif
--	rpcprog_t prog = 0;
--	rpcb *rpcbp;
--	struct pmap *pmap;
- 
- 	/*
- 	 * The older PMAP_* equivalents have the same numbers, so
- 	 * they are accounted for here as well.
- 	 */
- 	switch (proc) {
--	case RPCBPROC_GETADDR:
- 	case RPCBPROC_SET:
- 	case RPCBPROC_UNSET:
--		if (rpcbvers > PMAPVERS) {
--			rpcbp = (rpcb *)args;
--			prog = rpcbp->r_prog;
--		} else {
--			pmap = (struct pmap *)args;
--			prog = pmap->pm_prog;
--		}
--		if (proc == RPCBPROC_GETADDR)
--			break;
- 		if (!insecure && !is_loopback(caller)) {
- #ifdef RPCBIND_DEBUG
- 			  if (debugging)
-@@ -101,6 +88,7 @@ check_access(SVCXPRT *xprt, rpcproc_t proc, void *args, unsigned int rpcbvers)
- 			return 0;
- 		}
- 		break;
-+	case RPCBPROC_GETADDR:
- 	case RPCBPROC_CALLIT:
- 	case RPCBPROC_INDIRECT:
- 	case RPCBPROC_DUMP:
-@@ -150,8 +138,7 @@ is_loopback(struct netbuf *nbuf)
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin->sin_port));
- #endif
--	       	return ((sin->sin_addr.s_addr == htonl(INADDR_LOOPBACK)) &&
--		    (ntohs(sin->sin_port) < IPPORT_RESERVED));
-+	       	return (sin->sin_addr.s_addr == htonl(INADDR_LOOPBACK));
- #ifdef INET6
- 	case AF_INET6:
- 		if (!oldstyle_local)
-@@ -163,10 +150,9 @@ is_loopback(struct netbuf *nbuf)
- 				  "Checking caller's adress (port = %d)\n",
- 				  ntohs(sin6->sin6_port));
- #endif
--		return ((IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr) ||
-+		return (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr) ||
- 			 (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr) &&
--			  sin6->sin6_addr.s6_addr32[3] == htonl(INADDR_LOOPBACK))) &&
--		        (ntohs(sin6->sin6_port) < IPV6PORT_RESERVED));
-+			  sin6->sin6_addr.s6_addr32[3] == htonl(INADDR_LOOPBACK)));
- #endif
- 	case AF_LOCAL:
- 		return 1;
-diff --git a/src/warmstart.c b/src/warmstart.c
-index 25e5d89..d1bb971 100644
---- a/src/warmstart.c
-+++ b/src/warmstart.c
-@@ -46,7 +46,6 @@
- #include <unistd.h>
- #include <errno.h>
- 
--#include "config.h"
- #include "rpcbind.h"
- 
- #ifndef RPCBIND_STATEDIR
diff --git a/rpcbind.spec b/rpcbind.spec
index e4ac13e..1280b5d 100644
--- a/rpcbind.spec
+++ b/rpcbind.spec
@@ -1,6 +1,6 @@
 Name:           rpcbind
-Version:        0.2.2
-Release:        2.2%{?dist}
+Version:        0.2.3
+Release:        0.0%{?dist}
 Summary:        Universal Addresses to RPC Program Number Mapper
 Group:          System Environment/Daemons
 License:        BSD
@@ -12,9 +12,6 @@ Source1: rpcbind.service
 Source2: rpcbind.socket
 Source3: rpcbind.sysconfig
 
-Patch001: rpcbind-0.2.3-rc2.patch
-Patch002: rpcbind-0.2.2-xlog-debug.patch
-
 Requires: glibc-common setup
 Conflicts: man-pages < 2.43-12
 BuildRequires: automake, autoconf, libtool, systemd, systemd-devel
@@ -35,9 +32,6 @@ RPC calls on a server on that machine.
 %prep
 %setup -q
 
-%patch001 -p1
-%patch002 -p1
-
 %build
 %ifarch s390 s390x
 PIE="-fPIE"
@@ -135,6 +129,9 @@ fi
 %dir %attr(700,rpc,rpc) /var/run/rpcbind
 
 %changelog
+* Tue Apr 28 2015 Steve Dickson <steved at redhat.com> - 0.2.3-0.0
+- Updated to latest upstream release: 0.2.3
+
 * Thu Mar 19 2015 Steve Dickson <steved at redhat.com> - 0.2.2-2.2
 - Changed RPCBDIR to be /var/run so bindings are perserved
   during upgrades but not reboots.
diff --git a/sources b/sources
index 87b1391..e77f0b2 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8acf839bfef2364a05fbd6be5f8edf9a  rpcbind-0.2.2.tar.bz2
+c8875246b2688a1adfbd6ad43480278d  rpcbind-0.2.3.tar.bz2
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/rpcbind.git/commit/?h=f22&id=e8257000bd7750d3407254ca7890e2b17b7b431f


More information about the scm-commits mailing list