rpc - rutinas de biblioteca para llamadas a procedimientos remotos
Biblioteca Estándar C (
libc,
-lc)
Estas rutinas permiten a los programas en C realizar llamadas a procedimientos
en otras máquinas a través de la red. Primero, el cliente llama
a un procedimiento para enviar un paquete de datos al servidor. A la llegada
del paquete, el servidor llama a una rutina de atención que realiza el
servicio solicitado, y a continuación envía de vuelta una
respuesta. Finalmente, la llamada al procedimiento termina y vuelve al
cliente.
To take use of these routines, include the header file
<rpc/rpc.h>.
The prototypes below make use of the following types:
typedef int bool_t;
typedef bool_t (*xdrproc_t)(XDR *, void *, ...);
typedef bool_t (*resultproc_t)(caddr_t resp,
struct sockaddr_in *raddr);
See the header files for the declarations of the
AUTH,
CLIENT,
SVCXPRT, and
XDR types.
void auth_destroy(AUTH *auth);
- Una macro que destruye la información de
autenticación asociada a auth. La destrucción
usalmente implica la liberación de estructuras de datos privadas.
El uso de auth es indefinido trás llamar a
auth_destroy().
AUTH *authnone_create(void);
- Crea y devuelve una asa (handle) de autenticación
RPC que pasa información de autenticación inservible en cada
llamada a procedimientos remotos. Esta es la autenticación por
omisión usada por el sistema RPC.
AUTH *authunix_create(char *host, uid_t uid, gid_t gid,
int len, gid_t aup_gids[.len]);
- Create and return an RPC authentication handle that
contains authentication information. The parameter host is the name
of the machine on which the information was created; uid is the
user's user ID; gid is the user's current group ID; len and
aup_gids refer to a counted array of groups to which the user
belongs. It is easy to impersonate a user.
AUTH *authunix_create_default(void);
- Llama a authunix_create() con los parámetros
apropiados.
int callrpc(char *host, unsigned long prognum,
unsigned long versnum, unsigned long procnum,
xdrproc_t inproc, const char *in,
xdrproc_t outproc, char *out);
- Llama al procedimiento remoto asociado a prognum,
versnum y procnum de la máquina host. El
parámetro in es la dirección del (los) argumento(s)
del procedimiento, y out es la dirección donde colocar el
(los) resultado(s). inproc se usa para codificar los
parámetros del procedimiento, y outproc se usa para
decodificar los resultados del procedimiento. Esta rutina devuelve cero en
caso de éxtio o el valor de enum clnt_stat convertido a un
entero, en caso de de fallo. La rutina clnt_perrno() es adecuada
para traducir estados de fallo a mensajes.
- Cuidado: la llamada a procedimientos con esta rutina usa
UDP/IP como protocolo de transporte. Vea clntudp_create() para
restricciones. No tiene control de plazos de tiempo o autenticación
usando esta rutina.
enum clnt_stat clnt_broadcast(unsigned long prognum,
unsigned long versnum, unsigned long procnum,
xdrproc_t inproc, char *in,
xdrproc_t outproc, char *out,
resultproc_t eachresult);
- Como callrpc(), salvo que el mensaje de llamada es
difundido a todas las redes de difusión conectadas localmente. Cada
vez que recibe una respuesta, esta rutina llama a eachresult(),
cuyo formato es:
-
eachresult(char *out, struct sockaddr_in *addr);
- donde out es lo mimo que el out pasado a
clnt_broadcast(), salvo que la salida del procedimiento remoto se
decodifica allí. addr apunta a la dirección de la
máquina que ha devuelto los resultados. Si eachresult()
devuelve cero, clnt_broadcast() espera más respuestas. En
otro caso, termina con un estado apropiado.
- Cuidado: los conectores de difusión están
limitados en tamaño a la unidad de transferencia máxima del
enlace de datos. Para Ethernet, este valor es 1500 bytes.
enum clnt_stat clnt_call(CLIENT *clnt, unsigned long procnum,
xdrproc_t inproc, char *in,
xdrproc_t outproc, char *out,
struct timeval tout);
- Una macro que llama al procedimiento remoto procnum
asociado a la asa de cliente clnt, que se obtiene con una rutina de
creación de clientes RPC tal como clnt_create(). El
parámetro in es la dirección del (los) argumento(s)
del procedimiento, y out es la dirección donde colocar el
(los) resultado(s). inproc se usa para codificar los
parámetros del procedimiento, y outproc se usa para
decodificar los resultados del procedimiento. tout es el plazo de
tiempo permitido para que los resultados lleguen.
clnt_destroy(CLIENT *clnt);
- Una macro que destruye la asa RPC del cliente. La
destrucción usualmente implica la liberación de estructuras
de datos privadas, incluyendo el propio clnt. El uso de clnt
es indefinido tras llamar a clnt_destroy(). Si la biblioteca RPC
abrió el conector asociado, también lo cerrará. En
otro caso, el conector permanece abierto.
CLIENT *clnt_create(const char *host, unsigned long prog,
unsigned long vers, const char *proto);
- Generic client creation routine. host identifies the
name of the remote host where the server is located. proto
indicates which kind of transport protocol to use. The currently supported
values for this field are “udp” and “tcp”.
Default timeouts are set, but can be modified using
clnt_control().
- Cuidado: el uso de UDP tiene sus defectos. Ya que los
mensajes RPC basados en UDP sólo pueden contener hasta 8 Kbytes de
dados codificados, este protocolo de transporte no se puede usar para
procedimientos que toman grandes argumentos o devuelven resultados
enormes.
bool_t clnt_control(CLIENT *cl, int req, char *info);
- Una macro usada para cambiar u obtener información
diversa sobre un objeto cliente. req indica el tipo de
operación e info es un puntero a la información.
Tanto para UDP como para TCP, los valores soportados de req, y sus
tipos de argumento y lo que hacen los mismos, son:
-
CLSET_TIMEOUT struct timeval // set total timeout
CLGET_TIMEOUT struct timeval // get total timeout
- Nota: si establece el plazo de tiempo usando
clnt_control(), el parámetro de plazo de tiempo pasado a
clnt_call() se ignorará en todas las llamadas futuras.
-
CLGET_SERVER_ADDR struct sockaddr_in
// get server's address
- Las siguientes operaciones sólo son válidas
para UDP:
-
CLSET_RETRY_TIMEOUT struct timeval // establece el plazo para reintento
CLGET_RETRY_TIMEOUT struct timeval // obtiene el plazo de reintento
- El plazo de reintento es el tiempo que la "RPC
UDP" espera a que el servidor responda antes de retransmitir la
petición.
clnt_freeres(CLIENT * clnt, xdrproc_t outproc, char *out);
- Una macro que libera cualquier dato reservado por el
sistema RPC/XDR cuando decodifica los resultados de una llamada RPC. El
parámetro out es la dirección de los resultados, y
outproc es la rutina XDR que describe los resultados. Esta rutina
devuelve uno si los resultados se han liberado con éxito, y cero en
caso contrario.
void clnt_geterr(CLIENT *clnt, struct rpc_err *errp);
- Una macro que copia la estructura de error de la asa del
cliente a la estructura en la dirección errp.
void clnt_pcreateerror(const char *s);
- Muestra un mensaje en la salida estándar de error
indicando por qué no se ha podido crear una asa RPC de cliente. El
mensaje es preterminado con la cadena s y un carácter dos
puntos. Se usa cuando una llamada a clnt_create(),
clntraw_create(), clnttcp_create() o clntudp_create()
falla.
void clnt_perrno(enum clnt_stat stat);
- Muestra un mensaje en la salida de error estándar
correspondiente a la condición indicada por stat. Se usa
tras un callrpc().
clnt_perror(CLIENT *clnt, const char *s);
- Muestra un mensaje en la salida de error estándar
indicando por qué ha fallado una llamada RPC. clnt es la asa
usada para hacer la llamada. El mensaje es preterminado con la cadena
s y un carácter dos puntos. Se usa tras un
clnt_call().
char *clnt_spcreateerror(const char *s);
- Como clnt_pcreateerror(), excepto que devuelve una
cadena en lugar de mostrar la información en la salida
estándar de error.
- Fallos: devuelve un puntero a datos estáticos que se
sobrescriben en cada llamada.
char *clnt_sperrno(enum clnt_stat stat);
- Toma los mismos argumentos que clnt_perrno(), pero
en lugar de enviar un mensaje a la salida de error estándar
indicando por qué ha fallado una llamada RPC, devuelve un puntero a
una cadena que contiene el mensaje. La cadena termina con un
carácter NEWLINE (nueva línea).
-
clnt_sperrno() se usa en lugar de
clnt_perrno() si el programa no tiene una salida de error
estándar (como es bastante probable en un programa que funciona
como servidor) o si el programador no quiere que el mensaje sea mostrado
con printf(3), o si se va a usar un formato de mensaje diferente
del soportado por clnt_perrno(). Nota: a diferencia de
clnt_sperror() y clnt_spcreaterror(), clnt_sperrno()
devuelve un puntero a datos estáticos pero el resultado no se
sobrescribirá en cada llamada.
char *clnt_sperror(CLIENT *rpch, const char *s);
- Igual que clnt_perror(), salvo que (como
clnt_sperrno()) devuelve una cadena en lugar de mostrar el mensaje
por la salida estándar de error.
- Fallos: devuelve un puntero a datos estáticos que se
sobrescriben en cada llamada.
CLIENT *clntraw_create(unsigned long prognum, unsigned long versnum);
- Esta rutina crea un cliente RPC de juguete (de mentira)
para el programa remoto prognum, con versión versnum.
El medio de transporte usado para pasar mensajes al servicio es realmente
un buffer dentro del espacio de direcciones del proceso, por lo que el
servidor RPC correspondiente debería residir en el mismo espacio de
direcciones. Vea svcraw_create(). Esto permite la simulación
de RPC y la estimación de sobrecargas RPC, tal como el tiempo de
ida y vuelta, sin ninguna interferencia del núcleo. Esta rutina
devuelve NULL si falla.
CLIENT *clnttcp_create(struct sockaddr_in *addr,
unsigned long prognum, unsigned long versnum,
int *sockp, unsigned int sendsz, unsigned int recvsz);
- Esta rutina crea un cliente RPC para el programa remoto
prognum, con versión versnum. El cliente usa TCP/IP
como protocolo de transporte. El programa remoto se encuentra en la
dirección de Internet *addr. Si addr->sin_port es
cero, entonces se le asigna el puerto real por el que el programa remoto
está escuchando (para obtener esta información se consulta
el servicio portmap remoto). El parámetro sockp es un
conector. Si vale RPC_ANYSOCK, entonces esta rutina abre uno nuevo
y se lo asigna a sockp. Ya que la RPC basada en TCP usa E/S
mediante buffers, el ususario puede especificar el tamaño de los
buffers de envío y recepción con los parámetros
sendsz y recvsz. Los valores cero hacen que se elijan
valores por omisión adecuados. Esta rutina devuelve NULL si
falla.
CLIENT *clntudp_create(struct sockaddr_in *addr,
unsigned long prognum, unsigned long versnum,
struct timeval wait, int *sockp);
- Esta rutina crea un cliente RPC para el programa remoto
prognum, con versión versnum. El cliente usa
UDP/IP como protocolo de transporte. El programa remoto se
encuentra en la dirección de Internet addr. Si
addr->sin_port es cero, entonces se le asigna el puerto real por
el que el programa remoto está escuchando (para obtener esta
información se consulta el servicio portmap remoto). El
parámetro sockp es un conector. Si vale RPC_ANYSOCK,
esta rutina abre uno nuevo y se lo asigna a sockp. El transporte
UDP reenvía los mensajes de llamada a intervalos de tiempo
wait hasta que se recibe una respuesta o hasta que la llamada agota
su plazo de tiempo. El plazo total de tiempo para la llamada se especifica
en clnt_call().
- Cuidado: ya que los mensajes RPC basados en RPC UDP
sólo pueden contener 8 Kbytes de datos codificados, este protocolo
de transporte no se puede usar para procedimientos que toman grandes
argumentos o devuelven resultados enormes.
CLIENT *clntudp_bufcreate(struct sockaddr_in *addr,
unsigned long prognum, unsigned long versnum,
struct timeval wait, int *sockp,
unsigned int sendsize, unsigned int recosize);
- Esta rutina crea un cliente RPC para el programa remoto
prognum, con versión versnum. El cliente usa UDP/IP
como protocolo de transporte. El programa remoto se encuentra en la
dirección de Internet addr. Si addr->sin_port es
cero, se le asigna el puerto real por le que escucha el programa remoto
(para obtener esta información se consulta el servicio
portmap remoto). El parámetro sockp es un conector.
Si vale RPC_ANYSOCK, esta rutina abre uno nuevo y se lo asigna a
sockp. El protocolo de transporte UDP reenvía el mensaje de
llamada a intervalos de tiempo wait hasta que se recibe una
respuesta o hasta que la llamada agota su plazo de tiempo. El plazo total
de tiempo para la llamada viene especificado por clnt_call().
- Esta rutina permite al usuario especificar el tamaño
de paquete máximo para enviar y recibir mensajes RPC basados en
UDP.
void get_myaddress(struct sockaddr_in *addr);
- Rellena *addr con la dirección IP de la
máquina sin consultar las rutinas de biblioteca que tratan con
/etc/hosts. Como número de puerto siempre se asigna
htons(PMAPPORT).
struct pmaplist *pmap_getmaps(struct sockaddr_in *addr);
- A user interface to the portmap service, which
returns a list of the current RPC program-to-port mappings on the host
located at IP address *addr. This routine can return NULL. The
command rpcinfo -p uses this routine.
unsigned short pmap_getport(struct sockaddr_in *addr,
unsigned long prognum, unsigned long versnum,
unsigned int protocol);
- Una interfaz de usuario para el servicio portmap que
devuelve el número de puerto en el que espera un servicio que
soporta el número de programa prognum, con versión
versnum, y habla el protocolo de transporte asociado con
protocol. El valor más probable de protocol es
IPPROTO_UDP o IPPROTO_TCP. Si se devuelve un valor cero
significa que no existe la asociación o que el sistema RPC ha
fallado al intentar contactar con el servicio portmap remoto. En
este último caso, la variable global rpc_createerr()
contiene el estado de la RPC.
enum clnt_stat pmap_rmtcall(struct sockaddr_in *addr,
unsigned long prognum, unsigned long versnum,
unsigned long procnum,
xdrproc_t inproc, char *in,
xdrproc_t outproc, char *out,
struct timeval tout, unsigned long *portp);
- A user interface to the portmap service, which
instructs portmap on the host at IP address *addr to make an
RPC call on your behalf to a procedure on that host. The parameter
*portp will be modified to the program's port number if the
procedure succeeds. The definitions of other parameters are discussed in
callrpc() and clnt_call(). This procedure should be used for
a “ping” and nothing else. See also
clnt_broadcast().
bool_t pmap_set(unsigned long prognum, unsigned long versnum,
int protocol, unsigned short port);
- Una interfaz de usuario para el servicio portmap que
establece una correspondencia entre la terna [
prognum,versnum, protocol] y port, en el
servicio portmap de la máquina. El valor más probable
de protocol es IPPROTO_UDP o IPPROTO_TCP. Esta rutina
devuelve uno si tiene éxito y cero en caso contrario. Hecho
automáticamente por svc_register().
bool_t pmap_unset(unsigned long prognum, unsigned long versnum);
- Una interfaz de usuario para el servicio portmap que
destruye todas las correspondencias entre la terna [
prognum,versnum, *] y los ports del servicio
portmap de la máquina. Esta rutina devuelve uno si tiene
éxito y cero en caso contrario.
int registerrpc(unsigned long prognum, unsigned long versnum,
unsigned long procnum, char *(*procname)(char *),
xdrproc_t inproc, xdrproc_t outproc);
- Registra el procedimiento procname en el paquete de
servicios RPC. Si llega una petición para el programa
prognum, con versión versnum, y procedimiento
procnum, se llama a procname con un puntero a su(s)
parámetro(s). procname debería devolver un puntero a
su(s) resultado(s) estático(s). inproc se usa para
decodificar los parámetros mientras que outproc se usa para
codificar los resultados. Esta rutina devuelve cero si el registro tiene
éxtio y -1 en caso contrario.
- Cuidado: se accede a los procedimientos remotos registrados
de esta forma usando el protocolo de transporte UDP/IP. Vea
svcudp_create() para restricciones.
struct rpc_createerr rpc_createerr;
- Una variable global cuyo valor es establecido por cualquier
rutina de creación de clientes RPC que no tiene éxito. Use
la rutina clnt_pcreateerror() para mostrar el por qué.
void svc_destroy(SVCXPRT *xprt);
- Una macro que destruye la asa de transporte de un servicio
RPC, xprt. La destrucción usualmente implica la
liberación de estructuras de datos privadas, incluyendo el propio
xprt. El uso de xprt es indefinido tras llamar a esta
rutina.
fd_set svc_fdset;
- A global variable reflecting the RPC service side's read
file descriptor bit mask; it is suitable as a parameter to the
select(2) system call. This is of interest only if a service
implementor does their own asynchronous event processing, instead of
calling svc_run(). This variable is read-only (do not pass its
address to select(2)!), yet it may change after calls to
svc_getreqset() or any creation routines.
int svc_fds;
- Similar to svc_fdset, but limited to 32 file
descriptors. This interface is obsoleted by svc_fdset.
svc_freeargs(SVCXPRT *xprt, xdrproc_t inproc, char *in);
- Una macro que libera cualquier dato reservado por el
sistema RPC/XDR cuando decodificó los argumentos a un procedimiento
de servicio usando svc_getargs(). Esta rutina devuelve 1 si los
resultados se han liberado con éxito y cero en caso contrario.
svc_getargs(SVCXPRT *xprt, xdrproc_t inproc, char *in);
- Una macro que decodifica los argumentos de una
petición RPC asociada con la asa de transporte de un servicio RPC
xprt. El parámetro in es la dirección donde se
colocarán los argumentos. inproc es la rutina XDR usada para
decodificar los argumentos. Esta rutina devuelve 1 si la
decodificación tiene éxito y cero en caso contrario.
struct sockaddr_in *svc_getcaller(SVCXPRT *xprt);
- La manera permitida de obtener la dirección de red
del invocador de un procedimiento asociado con la asa de transporte de un
servicio RPC, xprt.
void svc_getreqset(fd_set *rdfds);
- Esta rutina sólo es de interés si un
implementador de servicios no llama a svc_run(), sino que en su
lugar implementa un procesamiento de eventos asíncronos a su
medida. Se llama cuando la llamada al sistema select(2) ha
determinado que ha llegado una petición RPC en algún
conector RPC. rdfds es la máscara de bits resultante de
descriptores de ficheros de lectura. La rutina termina cuando se han
servido todos los conectores asociados con el valor de rdfds.
void svc_getreq(int rdfds);
- Similar to svc_getreqset(), but limited to 32 file
descriptors. This interface is obsoleted by svc_getreqset().
bool_t svc_register(SVCXPRT *xprt, unsigned long prognum,
unsigned long versnum,
void (*dispatch)(struct svc_req *, SVCXPRT *),
unsigned long protocol);
- Asocia prognum y versnum con el procedimiento
de atención de servicio, dispatch. Si protocol es
cero, el servicio no se registra con el servicio portmap. Si
protocol no es cero, se establece una correspondencia entre la
terna [ prognum,versnum,protocol] y
xprt->xp_port con el servicio portmap local (generalmente
protocol es cero, IPPROTO_UDP o IPPROTO_TCP). El
procedimiento dispatch tiene el siguiente formato:
-
dispatch(struct svc_req *request, SVCXPRT *xprt);
- La rutina svc_register() devuelve uno en caso de
éxito y cero en caso contrario.
void svc_run(void);
- Esta rutina nunca regresa. Espera la llegada de peticiones
RPC y llama al procedimiento de servicio apropiado usando
svc_getreq() cuando llega una. Usualmente, este procedimiento
está esperando a que termine una llamada al sistema
select(2).
bool_t svc_sendreply(SVCXPRT *xprt, xdrproc_t outproc, char *out);
- Llamada por una rutina de atención de un servicio
RPC para enviar los resultados de una llamada a un procedimiento remoto.
El parámetro xprt es la asa de transporte asociada de la
petición. outproc es la rutina XDR que se usa para codificar
los resultados. Y out es la dirección de los resultados.
Esta rutina devuelve uno si tiene éxito y cero en caso
contrario.
void svc_unregister(unsigned long prognum, unsigned long versnum);
- Elimina todas las correspondencias entre el par
[prognum, versnum] y las rutinas de atención, y entre
la terna [ prognum,versnum,*] y el número de
puerto.
void svcerr_auth(SVCXPRT *xprt, enum auth_stat why);
- Llamada por una rutina de atención de servicios que
rechaza realizar una llamada a un procedimiento remoto debido a un error
de autenticación.
void svcerr_decode(SVCXPRT *xprt);
- Llamada por una rutina de atención de servicios que
no puede decodificar con éxito sus parámetros. Vea
también svc_getargs().
void svcerr_noproc(SVCXPRT *xprt);
- Llamada por una rutina de atención de servicios que
no implanta el número de procedimiento que solicita el
invocador.
void svcerr_noprog(SVCXPRT *xprt);
- Llamada cuando el programa deseado no está
registrado en el paquete RPC. Usualmente, los implementadores de servicios
no necesitan esta rutina.
void svcerr_progvers(SVCXPRT *xprt, unsigned long low_vers,
unsigned long high_vers);
- Llamada cuando la versión deseada de un programa no
está registrada en el paquete RPC. Usualmente, los implementadores
de servicios no necesitan esta rutina.
void svcerr_systemerr(SVCXPRT *xprt);
- Llamada por una rutina de atención de servicios
cuando detecta un error de sistema no cubierto por ningún protocolo
particular. Por ejemplo, si un servicio no puede ya reservar
almacenamiento, puede llamar a esta rutina.
void svcerr_weakauth(SVCXPRT *xprt);
- Llamada por una rutina de atención de servicios que
rechaza realizar una llamada a un procedimiento remoto debido a
insuficientes parámetros de autenticación. La rutina llama a
svcerr_auth(xprt, AUTH_TOOWEAK.
SVCXPRT *svcfd_create(int fd, unsigned int sendsize,
unsigned int recvsize);
- Create a service on top of any open file descriptor.
Typically, this file descriptor is a connected socket for a stream
protocol such as TCP. sendsize and recvsize indicate sizes
for the send and receive buffers. If they are zero, a reasonable default
is chosen.
SVCXPRT *svcraw_create(void);
- Esta rutina crea un medio de transporte de servicio RPC de
juguete al que devuelve un puntero. El medio de transporte es en realidad
un buffer dentro del espacio de direcciones del proceso, por lo que el
cliente RPC correspondiente debería residir en el mismo espacio de
direcciones. Vea clntraw_create(). Esta rutina permite la
simulación de RPC y la estimación de sobrecargas RPC (tal
como el tiempo de ida y vuelta), sin ninguna interferencia del
núcleo. Esta rutina devuelve NULL cuando falla.
SVCXPRT *svctcp_create(int sock, unsigned int send_buf_size,
unsigned int recv_buf_size);
- Esta rutina crea un medio de transporte de servicio RPC
basado en TCP/IP devolviendo un puntero al mismo. El medio de transporte
se asociada con el conector sock, que puede ser RPC_ANYSOCK,
en cuyo caso se crea un nuevo conector. Si no se asocia el conector a un
puerto TCP local, esta rutina lo asocia a un puerto arbitrario. Al
terminar, xprt->xp_sock es el descriptor del conector del medio
de transporte y xprt->xp_port es el número de puerto del
medio de transporte. Esta rutina devuelve NULL si falla. Ya que la RPC
basada en TCP usa E/S con buffers, los usuarios pueden especificar el
tamaño de los buffers. Los valores cero hacen que se seleccionen
valores por omisión adecuados.
SVCXPRT *svcudp_bufcreate(int sock, unsigned int sendsize,
unsigned int recosize);
- Esta rutina crea un medio de transporte de servicio RPC
basado en UDP/IP devolviendo un puntero al mismo. El medio de transporte
se asocia con el conector sock, que puede ser RPC_ANYSOCK,
en cuyo caso se crea un nuevo conector. Si el conector no está
asociado a un puerto UDP local, esta rutina lo asocia a un puerto
arbitrario. Al terminar, xprt->xp_sock es el descriptor del
conector del medio de transporte y xprt->xp_port es el
número de puerto del medio de transporte. Esta rutina devuelve NULL
si falla.
- Esta rutina permite al usuario especificar el tamaño
de paquete máximo para enviar y recibir mensajes RPC basados en
UDP.
SVCXPRT *svcudp_create(int sock);
- Esta llamada es equivalente a
svcudp_bufcreate(sock,SZ,SZ) para algún tamaño
SZ por omisión.
bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar);
- Usada para codificar mensajes de respuesta RPC. Esta rutina
es útil para aquellos usuarios que desean generar mensajes al
estilo RPC sin usar el paquete RPC.
bool_t xdr_authunix_parms(XDR *xdrs, struct authunix_parms *aupp);
- Se usa para describir credenciales UNIX. Esta rutina es
útil para aquellos usuarios que desean generar estas credenciales
sin usar el paquete de autenticación RPC.
void xdr_callhdr(XDR *xdrs, struct rpc_msg *chdr);
- Se usa para describir mensajes de cabecera de llamadas RPC.
Esta rutina es útil para aquellos usuarios que desean generar
mensajes al estilo RPC sin usar el paquete RPC.
bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *cmsg);
- Se usa para describir mensajes de llamada RPC. Esta rutina
es útil para aquellos usuarios que desean generar mensajes al
estilo RPC sin usar el paquete RPC.
bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *ap);
- Se usa para describir mensajes de información de
autenticación RPC. Esta rutina es útil para aquellos
usuarios que desean generar mensajes al estilo RPC si usar el paquete
RPC.
bool_t xdr_pmap(XDR *xdrs, struct pmap *regs);
- Se usa para describir, externamente, los parámetros
de diversos procedimientos de portmap. Esta rutina es útil
para aquellos usuarios que desean generar estos parámetros sin usar
la interfaz pmap.
bool_t xdr_pmaplist(XDR *xdrs, struct pmaplist **rp);
- Se usa para describir, externamente, una lista de
correspondencias de puerto. Esta rutina es útil para aquellos
usuarios que desean generar estos parámetros sin usar la interfaz
pmap.
bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr);
- Se usa para describir mensajes de respuesta RPC. Esta
rutina es útil para aquellos usuarios que desean generar mensajes
al estilo RPC sin usar el paquete RPC.
bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg);
- Se usa para describir mensajes de respuesta RPC. Esta
rutina es útil para aquellos usuarios que desean generar mensajes
al estilo RPC sin usar el paquete RPC.
void xprt_register(SVCXPRT *xprt);
- Después de que se creen las asas de transporte del
servicio RPC, deben registrarse a sí mismas en el paquete de
servicios RPC. Esta rutina modifica la variable global svc_fds().
Usualmente, los implementadores de servicios no necesitan esta
rutina.
void xprt_unregister(SVCXPRT *xprt);
- Antes de que se destruya una asa de transporte del servicio
RPC, debe darse de baja a sí misma en el paquete de servicios RPC.
Esta rutina modifica la variable global svc_fds(). Usualmente, los
constructores de servicios no necesitan esta rutina.
Para obtener una explicación de los términos usados en esta
sección, véase
attributes(7).
Interfaz |
Atributo |
Valor |
auth_destroy(), authnone_create(),
authunix_create(), authunix_create_default(),
callrpc(), clnt_broadcast(), clnt_call(),
clnt_destroy(), clnt_create(), clnt_control(),
clnt_freeres(), clnt_geterr(), clnt_pcreateerror(),
clnt_perrno(), clnt_perror(), clnt_spcreateerror(),
clnt_sperrno(), clnt_sperror(), clntraw_create(),
clnttcp_create(), clntudp_create(),
clntudp_bufcreate(), get_myaddress(), pmap_getmaps(),
pmap_getport(), pmap_rmtcall(), pmap_set(),
pmap_unset(), registerrpc(), svc_destroy(),
svc_freeargs(), svc_getargs(), svc_getcaller(),
svc_getreqset(), svc_getreq(), svc_register(),
svc_run(), svc_sendreply(), svc_unregister(),
svcerr_auth(), svcerr_decode(), svcerr_noproc(),
svcerr_noprog(), svcerr_progvers(),
svcerr_systemerr(), svcerr_weakauth(),
svcfd_create(), svcraw_create(), svctcp_create(),
svcudp_bufcreate(), svcudp_create(),
xdr_accepted_reply(), xdr_authunix_parms(),
xdr_callhdr(), xdr_callmsg(), xdr_opaque_auth(),
xdr_pmap(), xdr_pmaplist(), xdr_rejected_reply(),
xdr_replymsg(), xprt_register(),
xprt_unregister() |
Seguridad del hilo |
Multi-hilo seguro |
xdr(3)
Los siguientes manuales:
Remote Procedure Calls: Protocol Specification
Remote Procedure Call Programming Guide
rpcgen Programming Guide
RPC: Remote Procedure Call Protocol Specification, RFC 1050, Sun
Microsystems, Inc., USC-ISI.
La traducción al español de esta página del manual fue
creada por Juan Piernas <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]