| /* | |
| * 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<MAXNETOBJ_SZ>; | |
| 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<LM_MAXSTRLEN>; | |
| 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<LM_MAXSTRLEN>; | |
| 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<LM_MAXNAMELEN>; | |
| 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; |