X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=nlm%2Fnlm.x;h=6cd39c2b6c8d29c0364dbbe624c92021e6b2cb80;hb=a0c4ea7d9f4ad7fab543c064c47be7d334a9ceda;hp=e8a28804fe5cf3b691891885565afaf94880534e;hpb=e01ed6a239175772baf904d66105766f825fc1d4;p=deb_libnfs.git diff --git a/nlm/nlm.x b/nlm/nlm.x index e8a2880..6cd39c2 100644 --- a/nlm/nlm.x +++ b/nlm/nlm.x @@ -1,5 +1,31 @@ -/* based on rfc1813 and wireshark */ - +/* +Copyright (c) 2014, Ronnie Sahlberg +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ struct nlm_fh4 { opaque data<>; @@ -28,8 +54,8 @@ struct nlm4_holder { bool exclusive; unsigned int svid; nlm4_oh oh; - unsigned hyper l_offset; - unsigned hyper l_len; + u_quad_t l_offset; + u_quad_t l_len; }; const NLM_MAXNAME = 256; @@ -38,8 +64,8 @@ struct nlm4_lock { struct nlm_fh4 fh; nlm4_oh oh; unsigned int svid; - unsigned hyper l_offset; - unsigned hyper l_len; + u_quad_t l_offset; + u_quad_t l_len; }; struct nlm4_share { @@ -50,25 +76,75 @@ struct nlm4_share { unsigned int access; }; - -struct nlm4_testres_ok { - nlm_cookie cookie; +struct nlm4_testres_denied { nlm4_holder holder; }; -union NLM4_TESTres switch (nlmstat4 status) { - case NLM4_GRANTED: - nlm4_testres_ok lock; +union nlm4_testreply switch (nlmstat4 status) { + case NLM4_DENIED: + nlm4_testres_denied lock; default: void; }; +struct NLM4_TESTres { + nlm_cookie cookie; + nlm4_testreply reply; +}; + struct NLM4_TESTargs { nlm_cookie cookie; bool exclusive; nlm4_lock lock; }; +struct NLM4_CANCres { + nlm_cookie cookie; + nlmstat4 status; +}; + +struct NLM4_CANCargs { + nlm_cookie cookie; + bool block; + bool exclusive; + nlm4_lock lock; +}; + +struct NLM4_UNLOCKres { + nlm_cookie cookie; + nlmstat4 status; +}; + +struct NLM4_UNLOCKargs { + nlm_cookie cookie; + nlm4_lock lock; +}; + +struct NLM4_LOCKres { + nlm_cookie cookie; + nlmstat4 status; +}; + +struct NLM4_LOCKargs { + nlm_cookie cookie; + bool block; + bool exclusive; + nlm4_lock lock; + bool reclaim; + int state; +}; + +struct NLM4_GRANTEDargs { + nlm_cookie cookie; + bool exclusive; + nlm4_lock lock; +}; + +struct NLM4_GRANTEDres { + nlm_cookie cookie; + nlmstat4 status; +}; + program NLM_PROGRAM { version NLM_V4 { void @@ -77,47 +153,47 @@ program NLM_PROGRAM { NLM4_TESTres NLM4_TEST(NLM4_TESTargs) = 1; -/* nlm4_res */ -/* NLM4_LOCK(nlm4_lockargs) = 2; */ + NLM4_LOCKres + NLM4_LOCK(NLM4_LOCKargs) = 2; -/* nlm4_res */ -/* NLM4_CANCEL(nlm4_cancargs) = 3; */ + NLM4_CANCres + NLM4_CANCEL(NLM4_CANCargs) = 3; -/* nlm4_res */ -/* NLM4_UNLOCK(nlm4_unlockargs) = 4; */ + NLM4_UNLOCKres + NLM4_UNLOCK(NLM4_UNLOCKargs) = 4; -/* nlm4_res */ -/* NLM4_GRANTED(nlm4_testargs) = 5; */ + NLM4_GRANTEDres + NLM4_GRANT(NLM4_GRANTEDargs) = 5; void NLM4_TEST_MSG(NLM4_TESTargs) = 6; -/* void */ -/* NLM4_LOCK_MSG(nlm4_lockargs) = 7; */ + void + NLM4_LOCK_MSG(NLM4_LOCKargs) = 7; -/* void */ -/* NLM4_CANCEL_MSG(nlm4_cancargs) = 8; */ + void + NLM4_CANCEL_MSG(NLM4_CANCargs) = 8; -/* void */ -/* NLM4_UNLOCK_MSG(nlm4_unlockargs) = 9; */ + void + NLM4_UNLOCK_MSG(NLM4_UNLOCKargs) = 9; -/* void */ -/* NLM4_GRANTED_MSG(nlm4_testargs) = 10; */ + void + NLM4_GRANT_MSG(NLM4_GRANTEDargs) = 10; void NLM4_TEST_RES(NLM4_TESTres) = 11; -/* void */ -/* NLM4_LOCK_RES(nlm4_res) = 12; */ + void + NLM4_LOCK_RES(NLM4_LOCKres) = 12; -/* void */ -/* NLM4_CANCEL_RES(nlm4_res) = 13; */ + void + NLM4_CANCEL_RES(NLM4_CANCres) = 13; -/* void */ -/* NLM4_UNLOCK_RES(nlm4_res) = 14; */ + void + NLM4_UNLOCK_RES(NLM4_UNLOCKres) = 14; -/* void */ -/* NLM4_GRANTED_RES(nlm4_res) = 15; */ + void + NLM4_GRANT_RES(NLM4_GRANTEDres) = 15; /* nlm4_shareres */ /* NLM4_SHARE(nlm4_shareargs) = 20; */