São descrições dos protocolos baseados em SunRPC (RPC em inglês para chamada de procedimento remoto). Cada arquivo geralmente descreve estruturas de dados que são usadas por esses RPCs e programas que os implementam; por exemplo, yppasswd.x
descreve o protocolo de atualização de senha do Yellow Pages e é relativamente fácil de entender:
program YPPASSWDPROG {
version YPPASSWDVERS {
/*
* Update my passwd entry
*/
int
YPPASSWDPROC_UPDATE(yppasswd) = 1;
} = 1;
} = 100009;
struct passwd {
string pw_name<>; /* username */
string pw_passwd<>; /* encrypted password */
int pw_uid; /* user id */
int pw_gid; /* group id */
string pw_gecos<>; /* in real life name */
string pw_dir<>; /* home directory */
string pw_shell<>; /* default shell */
};
struct yppasswd {
string oldpass<>; /* unencrypted old password */
passwd newpw; /* new passwd entry */
};
Isso declara um procedimento de atualização de senha RPC YP, que usa uma estrutura yppasswd
como argumento e retorna um int
. O arquivo também descreve a própria estrutura yppasswd
, juntamente com a estrutura passwd
que ela usa.
Esses arquivos geralmente são usados com rpcgen
, o que gera o código do servidor e do cliente stub, que pode ser usado para implementar um servidor RPC para o protocolo e / ou um cliente RPC. Pode até gerar um exemplo de código de cliente e servidor.
Como indicado por Kusalananda , o rpcgen(1)
manpage tem mais informações.