169 lines
2.9 KiB
Plaintext
169 lines
2.9 KiB
Plaintext
/*
|
|
* 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;
|