Для передачи и приема имени каталога и его содержимого можно использовать простые строки, заканчивающиеся пустым указателем. Кроме того, передача этих параметров включена непосредственно в код сервера и клиента.
После этого нужно определить номера программы, процедуры и версии для клиента и сервера. Это можно сделать автоматически, используя rpcgen, или на базе предопределенных макросов упрощенного интерфейса. В примере номера определены вручную.
Сервер и клиент должны заранее согласовать, что они будут использовать логические адреса (физические адреса не имеют значения, поскольку они скрыты от разработчика приложения).
Номера программы определяются стандартным способом:
0x20000000 - 0x3FFFFFFF: Пользовательские
0x40000000 - 0x5FFFFFFF: Переходные
0x60000000 - 0xFFFFFFFF: Резервированные
DIR_SIZE определяет размер буфера для каталога в программах сервера и клиента.
Теперь файл rls.h содержит:
/* номер программы сервера */
#define DIRPROG ((u_long) 0x20000001)
#define DIRVERS ((u_long) 1) /* номер версии */
#define READDIR ((u_long) 1) /* номер процедуры */