bzero (xdrbuf, sizeof (xdrbuf));
__bzero (xdrbuf, sizeof (xdrbuf));
universal (struct svc_req *rqstp, SVCXPRT *transp){  int prog, proc;  char *outdata;  char xdrbuf[UDPMSGSIZE];  struct proglst *pl;  /*   * enforce "procnum 0 is echo" convention   */  if (rqstp->rq_proc == NULLPROC)    {      if (svc_sendreply (transp, (xdrproc_t)xdr_void, (char *) NULL) == FALSE)	{	  (void) fprintf (stderr, "xxx\n");	  exit (1);	}      return;    }  prog = rqstp->rq_prog;  proc = rqstp->rq_proc;  for (pl = proglst; pl != NULL; pl = pl->p_nxt)    if (pl->p_prognum == prog && pl->p_procnum == proc)      {	/* decode arguments into a CLEAN buffer */	bzero (xdrbuf, sizeof (xdrbuf));	/* required ! */	if (!svc_getargs (transp, pl->p_inproc, xdrbuf))	  {	    svcerr_decode (transp);	    return;	  }	outdata = (*(pl->p_progname)) (xdrbuf);	if (outdata == NULL && pl->p_outproc != (xdrproc_t)xdr_void)	  /* there was an error */	  return;	if (!svc_sendreply (transp, pl->p_outproc, outdata))	  {	    (void) fprintf (stderr,			    _ ("trouble replying to prog %d\n"),			    pl->p_prognum);	    exit (1);	  }	/* free the decoded arguments */	(void) svc_freeargs (transp, pl->p_inproc, xdrbuf);	return;      }  (void) fprintf (stderr, _ ("never registered prog %d\n"), prog);  exit (1);}