/* * This file was extracted by hand from * https://pubs.opengroup.org/onlinepubs/9629799/chap10.htm#tagcjh_11_03 */ /* * The NLMv3 protocol */ pragma header nlm3; const LM_MAXSTRLEN = 1024; const LM_MAXNAMELEN = 1025; const MAXNETOBJ_SZ = 1024; typedef opaque netobj; enum nlm_stats { LCK_GRANTED = 0, LCK_DENIED = 1, LCK_DENIED_NOLOCKS = 2, LCK_BLOCKED = 3, LCK_DENIED_GRACE_PERIOD = 4 }; pragma big_endian nlm_stats; struct nlm_stat { nlm_stats stat; }; struct nlm_res { netobj cookie; nlm_stat stat; }; struct nlm_holder { bool exclusive; int uppid; netobj oh; unsigned int l_offset; unsigned int l_len; }; union nlm_testrply switch (nlm_stats stat) { case LCK_DENIED: nlm_holder holder; default: void; }; struct nlm_testres { netobj cookie; nlm_testrply test_stat; }; struct nlm_lock { string caller_name; netobj fh; netobj oh; int uppid; unsigned int l_offset; unsigned int l_len; }; struct nlm_lockargs { netobj cookie; bool block; bool exclusive; nlm_lock alock; bool reclaim; int state; }; struct nlm_cancargs { netobj cookie; bool block; bool exclusive; nlm_lock alock; }; struct nlm_testargs { netobj cookie; bool exclusive; nlm_lock alock; }; struct nlm_unlockargs { netobj cookie; nlm_lock alock; }; enum fsh_mode { fsm_DN = 0, fsm_DR = 1, fsm_DW = 2, fsm_DRW = 3 }; enum fsh_access { fsa_NONE = 0, fsa_R = 1, fsa_W = 2, fsa_RW = 3 }; struct nlm_share { string caller_name; netobj fh; netobj oh; fsh_mode mode; fsh_access access; }; struct nlm_shareargs { netobj cookie; nlm_share share; bool reclaim; }; struct nlm_shareres { netobj cookie; nlm_stats stat; int sequence; }; struct nlm_notify { string name; long state; }; /* * Argument for the Linux-private SM_NOTIFY procedure */ const SM_PRIV_SIZE = 16; struct nlm_notifyargs { nlm_notify notify; opaque private[SM_PRIV_SIZE]; }; program NLM_PROG { version NLM_VERS { void NLM_NULL(void) = 0; nlm_testres NLM_TEST(nlm_testargs) = 1; nlm_res NLM_LOCK(nlm_lockargs) = 2; nlm_res NLM_CANCEL(nlm_cancargs) = 3; nlm_res NLM_UNLOCK(nlm_unlockargs) = 4; nlm_res NLM_GRANTED(nlm_testargs) = 5; void NLM_TEST_MSG(nlm_testargs) = 6; void NLM_LOCK_MSG(nlm_lockargs) = 7; void NLM_CANCEL_MSG(nlm_cancargs) = 8; void NLM_UNLOCK_MSG(nlm_unlockargs) = 9; void NLM_GRANTED_MSG(nlm_testargs) = 10; void NLM_TEST_RES(nlm_testres) = 11; void NLM_LOCK_RES(nlm_res) = 12; void NLM_CANCEL_RES(nlm_res) = 13; void NLM_UNLOCK_RES(nlm_res) = 14; void NLM_GRANTED_RES(nlm_res) = 15; void NLM_SM_NOTIFY(nlm_notifyargs) = 16; nlm_shareres NLM_SHARE(nlm_shareargs) = 20; nlm_shareres NLM_UNSHARE(nlm_shareargs) = 21; nlm_res NLM_NM_LOCK(nlm_lockargs) = 22; void NLM_FREE_ALL(nlm_notify) = 23; } = 3; } = 100021;