diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-03-15 08:24:10 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-03-15 08:24:10 +0000 |
commit | 5d7b72fd86ba42bdd440717def5878c40ab86c56 (patch) | |
tree | 1eb082a45c3e00fea0b9f8d8ad9203d89cac8d3d /epan/dissectors | |
parent | 5817da91dc310b97970928525e0691a9c7f8ca7b (diff) |
update to idl2eth adding WERROR as a built in type
svn path=/trunk/; revision=13758
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/dcerpc/drsuapi/drsuapi.idl | 9 | ||||
-rw-r--r-- | epan/dissectors/dcerpc/idl2eth.c | 46 | ||||
-rw-r--r-- | epan/dissectors/packet-dcerpc-drsuapi.c | 22 |
3 files changed, 65 insertions, 12 deletions
diff --git a/epan/dissectors/dcerpc/drsuapi/drsuapi.idl b/epan/dissectors/dcerpc/drsuapi/drsuapi.idl index e4e5799f9e..e76f9249e3 100644 --- a/epan/dissectors/dcerpc/drsuapi/drsuapi.idl +++ b/epan/dissectors/dcerpc/drsuapi/drsuapi.idl @@ -451,8 +451,7 @@ interface drsuapi } drsuapi_DsWriteAccountSpnRequest; typedef struct { -# WERROR status; - uint32 status; + WERROR status; } drsuapi_DsWriteAccountSpnResult1; typedef [switch_type(int32)] union { @@ -625,8 +624,7 @@ interface drsuapi hyper highest_usn; NTTIME last_success; NTTIME last_attempt; -# WERROR result_last_attempt; - uint32 result_last_attempt; + WERROR result_last_attempt; uint32 consecutive_sync_failures; } drsuapi_DsReplicaNeighbour; @@ -662,8 +660,7 @@ interface drsuapi GUID dsa_obj_guid; NTTIME first_failure; uint32 num_failures; -# WERROR last_result; - uint32 last_result; + WERROR last_result; } drsuapi_DsReplicaKccDsaFailure; typedef struct { diff --git a/epan/dissectors/dcerpc/idl2eth.c b/epan/dissectors/dcerpc/idl2eth.c index 4b050c8ac4..187326416e 100644 --- a/epan/dissectors/dcerpc/idl2eth.c +++ b/epan/dissectors/dcerpc/idl2eth.c @@ -13,6 +13,38 @@ TODO add code to verify that union tag length is correct */ +/* List of built in types : + WERROR A 32 bit integer holding a DCE/NT status code. + + uint8 A 8 bit integer + int8 + + uint16 A 16 bit integer + int16 + + uint32 A 32 bit integer + int32 + + uint64 A 64 bit integer + + udlong A 64 bit integer aligned on 4 byte boundary + dlong + + time_t A 32 bit integer holding a unix style time_t + + + + bool8 + + unistr + ascstr + GUID + uuid_t + policy_handle + NTTIME + NTTIME_hyper +*/ + /* All field dissectors that call a normal type (i.e. not a pointer, not an array) has a local variable guint param declared which is passed on to the @@ -1197,6 +1229,20 @@ find_type(char *name) FPRINTF(eth_code, "}\n"); FPRINTF(eth_code, "\n"); tmptype=register_new_type("time_t", dissectorname, "FT_ABSOLUTE_TIME", "BASE_DEC", "0", "NULL", 4); + } else if(!strcmp(name,"WERROR")){ + sprintf(dissectorname, "%s_dissect_%s", ifname, name); + FPRINTF(NULL,"\nAutogenerating built-in type:%s\n------------\n",name); + FPRINTF(eth_code, "\n"); + FPRINTF(eth_code, "static int\n"); + FPRINTF(eth_code, "%s(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param _U_)\n", dissectorname); + FPRINTF(eth_code, "{\n"); + FPRINTF(eth_code, " \n"); + FPRINTF(eth_code, " offset=dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, NULL);\n"); + FPRINTF(eth_code, "\n"); + FPRINTF(eth_code, " return offset;\n"); + FPRINTF(eth_code, "}\n"); + FPRINTF(eth_code, "\n"); + tmptype=register_new_type("WERROR", dissectorname, "FT_UINT32", "BASE_DEC", "0", "VALS(NT_errors)", 4); } } diff --git a/epan/dissectors/packet-dcerpc-drsuapi.c b/epan/dissectors/packet-dcerpc-drsuapi.c index 848fa91ee1..77f978d78b 100644 --- a/epan/dissectors/packet-dcerpc-drsuapi.c +++ b/epan/dissectors/packet-dcerpc-drsuapi.c @@ -3829,11 +3829,21 @@ drsuapi_dissect_union_DsWriteAccountSpnRequest(tvbuff_t *tvb, int offset, packet return offset; } + +static int +drsuapi_dissect_WERROR(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + + offset=dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, NULL); + + return offset; +} + static int drsuapi_dissect_DsWriteAccountSpnResult1_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { guint32 param=0; - offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnResult1_status, param); + offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsWriteAccountSpnResult1_status, param); return offset; } @@ -5279,7 +5289,7 @@ static int drsuapi_dissect_DsReplicaNeighbour_result_last_attempt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { guint32 param=0; - offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_result_last_attempt, param); + offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaNeighbour_result_last_attempt, param); return offset; } @@ -5644,7 +5654,7 @@ static int drsuapi_dissect_DsReplicaKccDsaFailure_last_result(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { guint32 param=0; - offset=drsuapi_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_last_result, param); + offset=drsuapi_dissect_WERROR(tvb, offset, pinfo, tree, drep, hf_drsuapi_DsReplicaKccDsaFailure_last_result, param); return offset; } @@ -8461,7 +8471,7 @@ proto_register_drsuapi(void) { &hf_drsuapi_DsWriteAccountSpnResult1_status, { "status", "drsuapi.DsWriteAccountSpnResult1.status", FT_UINT32, BASE_DEC, - NULL, 0, + VALS(NT_errors), 0, "", HFILL }}, { &hf_drsuapi_DsWriteAccountSpnResult_1_res1, @@ -8841,7 +8851,7 @@ proto_register_drsuapi(void) { &hf_drsuapi_DsReplicaNeighbour_result_last_attempt, { "result_last_attempt", "drsuapi.DsReplicaNeighbour.result_last_attempt", FT_UINT32, BASE_DEC, - NULL, 0, + VALS(NT_errors), 0, "", HFILL }}, { &hf_drsuapi_DsReplicaNeighbour_consecutive_sync_failures, @@ -8946,7 +8956,7 @@ proto_register_drsuapi(void) { &hf_drsuapi_DsReplicaKccDsaFailure_last_result, { "last_result", "drsuapi.DsReplicaKccDsaFailure.last_result", FT_UINT32, BASE_DEC, - NULL, 0, + VALS(NT_errors), 0, "", HFILL }}, { &hf_drsuapi_DsReplicaKccDsaFailuresCtr_count, |