svn commit: r202707 - head/usr.sbin/ypserv

Hiroki Sato hrs at FreeBSD.org
Wed Jan 20 16:50:14 UTC 2010


Author: hrs
Date: Wed Jan 20 16:50:13 2010
New Revision: 202707
URL: http://svn.freebsd.org/changeset/base/202707

Log:
  Simply ignore unsupported protocols listed in /etc/netconfig and
  abort only if no transport is available.  This fixes
  (INET && !INET6) and (!INET && INET6) case, for example.

Modified:
  head/usr.sbin/ypserv/yp_main.c

Modified: head/usr.sbin/ypserv/yp_main.c
==============================================================================
--- head/usr.sbin/ypserv/yp_main.c	Wed Jan 20 16:28:39 2010	(r202706)
+++ head/usr.sbin/ypserv/yp_main.c	Wed Jan 20 16:50:13 2010	(r202707)
@@ -450,6 +450,7 @@ main(int argc, char *argv[])
 {
 	int ch;
 	int error;
+	int ntrans;
 	
 	void *nc_handle;
 	struct netconfig *nconf;
@@ -527,12 +528,13 @@ main(int argc, char *argv[])
 	/*
 	 * Create RPC service for each transport.
 	 */
+	ntrans = 0;
 	while((nconf = getnetconfig(nc_handle))) {
 		if ((nconf->nc_flag & NC_VISIBLE)) {
 			if (__rpc_nconf2sockinfo(nconf, &si) == 0) {
-				_msgout("cannot get information for %s",
-				    nconf->nc_netid);
-				exit(1);
+				_msgout("cannot get information for %s.  "
+				    "Ignored.", nconf->nc_netid);
+				continue;
 			}
 			if (_rpcpmstart) {
 				if (si.si_socktype != _rpcfdtype ||
@@ -545,12 +547,16 @@ main(int argc, char *argv[])
 				endnetconfig(nc_handle);
 				exit(1);
 			}
+			ntrans++;
 		}
 	}
 	endnetconfig(nc_handle);
 	while(!(SLIST_EMPTY(&ble_head)))
 		SLIST_REMOVE_HEAD(&ble_head, ble_next);
-
+	if (ntrans == 0) {
+		_msgout("no transport is available.  Aborted.");
+		exit(1);
+	}
 	if (_rpcpmstart) {
 		(void) signal(SIGALRM, (SIG_PF) closedown);
 		(void) alarm(_RPCSVC_CLOSEDOWN/2);


More information about the svn-src-head mailing list