+#ifndef rpc_protocol_h
+#define rpc_protocol_h
+
+#include "types.h"
+
+using proc_t = uint32_t;
+using status_t = int32_t;
+using rpc_sz_t = uint32_t;
+
+struct request_header {
+ int xid;
+ proc_t proc;
+ unsigned int clt_nonce;
+ unsigned int srv_nonce;
+ int xid_rep;
+
+ MEMBERS(xid, proc, clt_nonce, srv_nonce, xid_rep)
+};
+
+struct reply_header {
+ int xid;
+ int ret;
+
+ MEMBERS(xid, ret)
+};
+
+const size_t RPC_HEADER_SZ = max(sizeof(request_header), sizeof(reply_header)) + sizeof(rpc_sz_t);
+const size_t DEFAULT_RPC_SZ = 1024; // size of initial buffer allocation
+const size_t MAX_PDU = 10<<20; //maximum PDF is 10M
+
+#endif