Home | History | Annotate | Download | only in librpc

Lines Matching defs:xdr

51 extern XDR *xdr_init_common(const char *name, int is_client);
52 extern void xdr_destroy_common(XDR *xdr);
63 the XDR for server entries which represent a callback client. Those
66 XDR *xdr;
67 /* Because the xdr is NULL for callback clients (as opposed to true
130 if (trav->xdr->fd == n) {
132 trav->xdr->xops->read(trav->xdr);
232 svc->xdr = NULL;
237 svc->xdr = xdr_init_common("/dev/oncrpc/00000000:0",
238 0 /* not a client XDR */);
239 if (svc->xdr == NULL) {
250 if (r_control(svc->xdr->fd,
255 xdr_destroy_common(svc->xdr);
261 FD_SET(svc->xdr->fd, &xprt->fdset);
262 if (svc->xdr->fd > xprt->max_fd) xprt->max_fd = svc->xdr->fd;
263 svc->x_prog = svc->xdr->x_prog = prog;
264 svc->x_vers = svc->xdr->x_vers = vers;
302 if (found->xdr) {
311 if (r_control(found->xdr->fd,
318 FD_CLR(found->xdr->fd, &xprt->fdset);
320 V("RPC server %08x:%d: destroying XDR\n",
322 xdr_destroy_common(found->xdr);
324 else V("RPC server %08x:%d does not have an associated XDR\n",
364 program-version numbers must match what's in the XDR of the service. */
367 svc->xdr->fd, svc->x_prog, svc->x_vers);
369 uint32 prog = ntohl(((uint32 *)(svc->xdr->in_msg))[RPC_OFFSET+3]);
370 uint32 vers = ntohl(((uint32 *)(svc->xdr->in_msg))[RPC_OFFSET+4]);
371 uint32 proc = ntohl(((uint32 *)(svc->xdr->in_msg))[RPC_OFFSET+5]);
373 if (ntohl(((uint32 *)svc->xdr->in_msg)[RPC_OFFSET+1]) != RPC_MSG_CALL) {
384 if (vers != svc->xdr->x_vers) {
386 vers, svc->xdr->x_vers);
402 svc->xdr->in_next = (RPC_OFFSET + 6 + 4)*sizeof(uint32);
405 svc->xdr->x_op = XDR_DECODE;
453 XDR of the server that they refer to. The xprt pointer is actually a
462 bool_t result = (bool_t) (*xdr_args)(serv->xdr, args_ptr);
463 XDR_MSG_DONE (serv->xdr);
473 serv->xdr->x_op = XDR_FREE;
474 return (*xdr_args)((XDRxdr, args_ptr);
490 serv->xdr->x_op = XDR_ENCODE;
492 if (!xdr_reply_msg_start(serv->xdr, &verf) ||
493 !xdr_results(serv->xdr, xdr_location))
496 ((uint32 *)(serv->xdr->out_msg))[RPC_OFFSET] =
497 ((uint32 *)(serv->xdr->in_msg))[RPC_OFFSET]; //RPC xid
499 serv->xdr->x_prog,
500 serv->xdr->x_vers,
501 ntohl(((uint32 *)(serv->xdr->out_msg))[RPC_OFFSET]));
502 XDR_MSG_SEND(serv->xdr);
510 #define SVCERR_XDR_SEND(xdr, reply) \
511 ( XDR_MSG_START(xdr, RPC_MSG_REPLY) && \
512 xdr_send_reply_header(xdr, &reply) && \
513 XDR_MSG_SEND(xdr) )
521 reply.u.ar.verf = serv->xdr->verf;
524 if (!SVCERR_XDR_SEND(serv->xdr, reply))
526 XDR_MSG_ABORT(serv->xdr);
536 reply.u.ar.verf = serv->xdr->verf;
539 if (!SVCERR_XDR_SEND(serv->xdr, reply))
541 XDR_MSG_ABORT(serv->xdr);
551 reply.u.ar.verf = serv->xdr->verf;
554 if (!SVCERR_XDR_SEND(serv->xdr, reply))
556 XDR_MSG_ABORT(serv->xdr);