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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to