diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2010-09-28 05:50:54 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2010-09-28 05:50:54 +0000 |
commit | 888227b0d2947b43ffb9ed3ef28bb63d3262c420 (patch) | |
tree | 98b06fce923e87676a017fa3160548612c600a0d /epan/dissectors/packet-rquota.c | |
parent | 34c9bd4fe639ab41d740ec9474d132ec48324d89 (diff) |
update the RQUOTA dissector and add support for version 2 of the protocol
svn path=/trunk/; revision=34270
Diffstat (limited to 'epan/dissectors/packet-rquota.c')
-rw-r--r-- | epan/dissectors/packet-rquota.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/epan/dissectors/packet-rquota.c b/epan/dissectors/packet-rquota.c index 4f4efbd0b7..15242b37fb 100644 --- a/epan/dissectors/packet-rquota.c +++ b/epan/dissectors/packet-rquota.c @@ -36,8 +36,11 @@ static int proto_rquota = -1; static int hf_rquota_procedure_v1 = -1; +static int hf_rquota_procedure_v2 = -1; static int hf_rquota_pathp = -1; static int hf_rquota_uid = -1; +static int hf_rquota_type = -1; +static int hf_rquota_id = -1; static int hf_rquota_status = -1; static int hf_rquota_rquota = -1; static int hf_rquota_bsize = -1; @@ -156,10 +159,49 @@ static const value_string rquota1_proc_vals[] = { { RQUOTAPROC_NULL, "NULL" }, { RQUOTAPROC_GETQUOTA, "GETQUOTA" }, { RQUOTAPROC_GETACTIVEQUOTA, "GETACTIVEQUOTA" }, + { RQUOTAPROC_SETQUOTA, "SETQUOTA" }, + { RQUOTAPROC_SETACTIVEQUOTA, "SETACTIVEQUOTA" }, { 0, NULL } }; /* end of RQUOTA version 1 */ + +static int +dissect_getquota2_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree) +{ + offset = dissect_rpc_string(tvb, tree, + hf_rquota_pathp, offset, NULL); + + offset = dissect_rpc_uint32(tvb, tree, + hf_rquota_type, offset); + + offset = dissect_rpc_uint32(tvb, tree, + hf_rquota_id, offset); + + return offset; +} + + +static const vsff rquota2_proc[] = { + { RQUOTAPROC_NULL, "NULL", + NULL, NULL }, + { RQUOTAPROC_GETQUOTA, "GETQUOTA", + dissect_getquota2_call, dissect_getquota_result }, + { RQUOTAPROC_GETACTIVEQUOTA, "GETACTIVEQUOTA", + dissect_getquota2_call, dissect_getquota_result }, + { 0, NULL, + NULL, NULL } +}; +static const value_string rquota2_proc_vals[] = { + { RQUOTAPROC_NULL, "NULL" }, + { RQUOTAPROC_GETQUOTA, "GETQUOTA" }, + { RQUOTAPROC_GETACTIVEQUOTA, "GETACTIVEQUOTA" }, + { RQUOTAPROC_SETQUOTA, "SETQUOTA" }, + { RQUOTAPROC_SETACTIVEQUOTA, "SETACTIVEQUOTA" }, + { 0, NULL } +}; +/* end of RQUOTA version 2 */ + void proto_register_rquota(void) { @@ -169,9 +211,18 @@ proto_register_rquota(void) { &hf_rquota_procedure_v1, { "V1 Procedure", "rquota.procedure_v1", FT_UINT32, BASE_DEC, VALS(rquota1_proc_vals), 0, NULL, HFILL }}, + { &hf_rquota_procedure_v2, { + "V2 Procedure", "rquota.procedure_v2", FT_UINT32, BASE_DEC, + VALS(rquota2_proc_vals), 0, NULL, HFILL }}, { &hf_rquota_uid, { "uid", "rquota.uid", FT_UINT32, BASE_DEC, NULL, 0, "User ID", HFILL }}, + { &hf_rquota_type, { + "type", "rquota.type", FT_UINT32, BASE_DEC, + NULL, 0, "Type", HFILL }}, + { &hf_rquota_id, { + "id", "rquota.id", FT_UINT32, BASE_DEC, + NULL, 0, "ID", HFILL }}, { &hf_rquota_pathp, { "pathp", "rquota.pathp", FT_STRING, BASE_NONE, @@ -247,6 +298,7 @@ proto_reg_handoff_rquota(void) rpc_init_prog(proto_rquota, RQUOTA_PROGRAM, ett_rquota); /* Register the procedure tables */ rpc_init_proc_table(RQUOTA_PROGRAM, 1, rquota1_proc, hf_rquota_procedure_v1); + rpc_init_proc_table(RQUOTA_PROGRAM, 2, rquota2_proc, hf_rquota_procedure_v2); } |