if ((dbp = __bind_create (server, server_len, flags)) == NULL)
dbp = __bind_create (server, server_len, flags, cinfo); if (dbp == NULL)
__do_niscall2 (const nis_server *server, u_int server_len, u_long prog,	       xdrproc_t xargs, caddr_t req, xdrproc_t xres, caddr_t resp,	       u_long flags, nis_cb *cb){  enum clnt_stat result;  nis_error retcode;  dir_binding *dbp;  if (flags & MASTER_ONLY)    server_len = 1;  if ((dbp = __bind_create (server, server_len, flags)) == NULL)    return NIS_NAMEUNREACHABLE;  while (__bind_connect (dbp) != NIS_SUCCESS)    {      if (__bind_next (dbp) != NIS_SUCCESS)	{	  __bind_destroy (dbp);	  return NIS_NAMEUNREACHABLE;	}    }  do    {    again:      result = clnt_call (dbp->clnt, prog, xargs, req, xres, resp, RPCTIMEOUT);      if (result != RPC_SUCCESS)	{	  clnt_perror (dbp->clnt, "__do_niscall2: clnt_call");	  __bind_destroy (dbp);	  retcode = NIS_RPCERROR;	}      else	{	  switch (prog)	    {	    case NIS_IBLIST:	      if ((((nis_result *)resp)->status == NIS_CBRESULTS) &&		  (cb != NULL))		{		  __nis_do_callback(dbp, &((nis_result *)resp)->cookie, cb);		  break;		}	      /* Yes, this is correct. If we doesn't have to start		 a callback, look if we have to search another server */	    case NIS_LOOKUP:	    case NIS_ADD:	    case NIS_MODIFY:	    case NIS_REMOVE:	    case NIS_IBADD:	    case NIS_IBMODIFY:	    case NIS_IBREMOVE:	    case NIS_IBFIRST:	    case NIS_IBNEXT:	      if ((((nis_result *)resp)->status == NIS_NOTFOUND) ||		  (((nis_result *)resp)->status == NIS_NOSUCHNAME) ||		  (((nis_result *)resp)->status == NIS_NOT_ME))		{		  if (__bind_next (dbp) == NIS_SUCCESS)		    {		      while (__bind_connect (dbp) != NIS_SUCCESS)			{			  if (__bind_next (dbp) != NIS_SUCCESS)			    {			      __bind_destroy (dbp);			      return NIS_SUCCESS;			    }			}		    }		  else		    break; /* No more servers to search in */		  goto again;		}	      break;	    case NIS_FINDDIRECTORY:	      if ((((fd_result *)resp)->status == NIS_NOTFOUND) ||		  (((fd_result *)resp)->status == NIS_NOSUCHNAME) ||		  (((fd_result *)resp)->status == NIS_NOT_ME))		{		  if (__bind_next (dbp) == NIS_SUCCESS)		    {		      while (__bind_connect (dbp) != NIS_SUCCESS)			{			  if (__bind_next (dbp) != NIS_SUCCESS)			    {			      __bind_destroy (dbp);			      return NIS_SUCCESS;			    }			}		    }		  else		    break; /* No more servers to search in */		  goto again;		}	      break;	    case NIS_DUMPLOG: /* log_result */	    case NIS_DUMP:	      if ((((log_result *)resp)->lr_status == NIS_NOTFOUND) ||		  (((log_result *)resp)->lr_status == NIS_NOSUCHNAME) ||		  (((log_result *)resp)->lr_status == NIS_NOT_ME))		{		  if (__bind_next (dbp) == NIS_SUCCESS)		    {		      while (__bind_connect (dbp) != NIS_SUCCESS)			{			  if (__bind_next (dbp) != NIS_SUCCESS)			    {			      __bind_destroy (dbp);			      return NIS_SUCCESS;			    }			}		    }		  else		    break; /* No more servers to search in */		  goto again;		}	      break;	    default:	      break;	    }	  __bind_destroy (dbp);	  retcode = NIS_SUCCESS;	}    }  while ((flags & HARD_LOOKUP) && retcode == NIS_RPCERROR);  return retcode;}