Add support for replies to NLMv3 SHARE and UNSHARE requests and to the

remaining NLMv4 requests.

svn path=/trunk/; revision=2988
This commit is contained in:
Guy Harris 2001-02-04 09:04:11 +00:00
parent 52bf014948
commit 3bb7974896
1 changed files with 56 additions and 14 deletions

View File

@ -1,7 +1,7 @@
/* packet-nlm.c
* Routines for nlm dissection
*
* $Id: packet-nlm.c,v 1.14 2001/01/28 03:39:48 guy Exp $
* $Id: packet-nlm.c,v 1.15 2001/02/04 09:04:11 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -78,6 +78,7 @@ static int hf_nlm_share = -1;
static int hf_nlm_share_mode = -1;
static int hf_nlm_share_access = -1;
static int hf_nlm_share_name = -1;
static int hf_nlm_sequence = -1;
static gint ett_nlm = -1;
static gint ett_nlm_lock = -1;
@ -332,6 +333,16 @@ dissect_nlm_share(tvbuff_t *tvb, int offset, packet_info *pinfo,
return offset;
}
static int
dissect_nlm_shareres(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, int version)
{
offset = dissect_rpc_data_tvb(tvb, pinfo, tree, hf_nlm_cookie, offset);
offset = dissect_rpc_uint32_tvb(tvb, pinfo, tree, hf_nlm_state, offset);
offset = dissect_rpc_uint32_tvb(tvb, pinfo, tree, hf_nlm_sequence, offset);
return offset;
}
static int
dissect_nlm_freeall(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree,int version)
@ -454,6 +465,27 @@ dissect_nlm3_share(tvbuff_t *tvb, int offset, packet_info *pinfo,
return dissect_nlm_share(tvb,offset,pinfo,tree,3);
}
static int
dissect_nlm4_share(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
return dissect_nlm_share(tvb,offset,pinfo,tree,4);
}
static int
dissect_nlm3_shareres(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
return dissect_nlm_shareres(tvb,offset,pinfo,tree,3);
}
static int
dissect_nlm4_shareres(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
return dissect_nlm_shareres(tvb,offset,pinfo,tree,4);
}
static int
dissect_nlm3_freeall(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
@ -461,6 +493,13 @@ dissect_nlm3_freeall(tvbuff_t *tvb, int offset, packet_info *pinfo,
return dissect_nlm_freeall(tvb,offset,pinfo,tree,3);
}
static int
dissect_nlm4_freeall(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree)
{
return dissect_nlm_freeall(tvb,offset,pinfo,tree,4);
}
@ -579,13 +618,13 @@ static const vsff nlm3_proc[] = {
{ NLM_GRANTED_RES, "GRANTED_RES",
dissect_nlm_gen_reply, NULL },
{ NLM_SHARE, "SHARE",
dissect_nlm3_share, NULL }, /* XXX */
dissect_nlm3_share, dissect_nlm3_shareres },
{ NLM_UNSHARE, "UNSHARE",
dissect_nlm3_share, NULL }, /* XXX */
dissect_nlm3_share, dissect_nlm3_shareres },
{ NLM_NM_LOCK, "NM_LOCK",
dissect_nlm1_lock, dissect_nlm_gen_reply },
dissect_nlm1_lock, dissect_nlm_gen_reply },
{ NLM_FREE_ALL, "FREE_ALL",
dissect_nlm3_freeall, NULL }, /* XXX */
dissect_nlm3_freeall, NULL },
{ 0, NULL,
NULL, NULL }
};
@ -597,15 +636,15 @@ static const vsff nlm4_proc[] = {
{ NLM_NULL, "NULL",
NULL, NULL },
{ NLM_TEST, "TEST",
dissect_nlm4_test, NULL },
dissect_nlm4_test, dissect_nlm4_test_res },
{ NLM_LOCK, "LOCK",
dissect_nlm4_lock, NULL },
dissect_nlm4_lock, dissect_nlm_gen_reply },
{ NLM_CANCEL, "CANCEL",
dissect_nlm4_cancel, NULL },
dissect_nlm4_cancel, dissect_nlm_gen_reply },
{ NLM_UNLOCK, "UNLOCK",
dissect_nlm4_unlock, NULL },
dissect_nlm4_unlock, dissect_nlm_gen_reply },
{ NLM_GRANTED, "GRANTED",
dissect_nlm4_granted, NULL },
dissect_nlm4_granted, dissect_nlm_gen_reply },
{ NLM_TEST_MSG, "TEST_MSG",
dissect_nlm4_test, NULL },
{ NLM_LOCK_MSG, "LOCK_MSG",
@ -627,13 +666,13 @@ static const vsff nlm4_proc[] = {
{ NLM_GRANTED_RES, "GRANTED_RES",
dissect_nlm_gen_reply, NULL },
{ NLM_SHARE, "SHARE",
NULL, NULL }, /* XXX */
dissect_nlm4_share, dissect_nlm4_shareres },
{ NLM_UNSHARE, "UNSHARE",
NULL, NULL }, /* XXX */
dissect_nlm4_share, dissect_nlm4_shareres },
{ NLM_NM_LOCK, "NM_LOCK",
dissect_nlm4_lock, NULL },
dissect_nlm4_lock, dissect_nlm_gen_reply },
{ NLM_FREE_ALL, "FREE_ALL",
NULL, NULL }, /* XXX */
dissect_nlm4_freeall, NULL },
{ 0, NULL,
NULL, NULL }
};
@ -701,6 +740,9 @@ proto_register_nlm(void)
{ &hf_nlm_share_name, {
"name", "nlm.share.name", FT_STRING, BASE_NONE,
NULL, 0, "name" }},
{ &hf_nlm_sequence, {
"sequence", "nlm.sequence", FT_INT32, BASE_DEC,
NULL, 0, "sequence" }},
};
static gint *ett[] = {