diff options
Diffstat (limited to 'epan/dissectors/dcerpc')
-rw-r--r-- | epan/dissectors/dcerpc/drsuapi/drsuapi.idl | 65 | ||||
-rw-r--r-- | epan/dissectors/dcerpc/idl2eth.c | 19 |
2 files changed, 50 insertions, 34 deletions
diff --git a/epan/dissectors/dcerpc/drsuapi/drsuapi.idl b/epan/dissectors/dcerpc/drsuapi/drsuapi.idl index e76f9249e3..0a4a7d93fa 100644 --- a/epan/dissectors/dcerpc/drsuapi/drsuapi.idl +++ b/epan/dissectors/dcerpc/drsuapi/drsuapi.idl @@ -238,8 +238,7 @@ interface drsuapi typedef struct { drsuapi_DsReplicaCoursor coursor; -# NTTIME_1sec time1; - hyper time1; + NTTIME_1sec time1; } drsuapi_DsReplicaCoursorEx; typedef struct { @@ -291,23 +290,23 @@ interface drsuapi DRSUAPI_DS_REPLICA_UPDATE_0x00000010 = 0x00000010 } drsuapi_DsReplicaUpdateRefsOptions; -# typedef struct { -# uint32 unknown1; -# uint32 unknown2; -# GUID dest_dsa_guid; -# drsuapi_DsReplicaUpdateRefsOptions options; -# drsuapi_DsReplicaSyncRequest1Info sync_req_info1; -# ascstr dest_dsa_dns_name; -# } drsuapi_DsReplicaUpdateRefsRequest1; -# -# typedef [switch_type(int32)] union { -# [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1; -# } drsuapi_DsReplicaUpdateRefsRequest; + typedef struct { + uint32 unknown1; + uint32 unknown2; + GUID dest_dsa_guid; + drsuapi_DsReplicaUpdateRefsOptions options; + drsuapi_DsReplicaSyncRequest1Info sync_req_info1; + ascstr dest_dsa_dns_name; + } drsuapi_DsReplicaUpdateRefsRequest1; + + typedef [switch_type(int32)] union { + [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1; + } drsuapi_DsReplicaUpdateRefsRequest; WERROR drsuapi_DsReplicaUpdateRefs( -# [in,ref] policy_handle *bind_handle, -# [in] int32 level, -# [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req + [in,ref] policy_handle *bind_handle, + [in] int32 level, + [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req ); /*****************/ @@ -787,21 +786,21 @@ interface drsuapi [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[]; } drsuapi_DsReplicaAttrValMetaData2Ctr; -# typedef struct { -# hyper u1; /* session number? */ -# uint32 u2; -# uint32 u3; -# GUID bind_guid; -# NTTIME_1sec bind_time; -# uint32 u4; /* flags? */ -# uint32 u5; -# } drsuapi_DsReplicaConnection04; -# -# typedef struct { -# [range(0,10000)] uint32 count; -# uint32 reserved; -# [size_is(count)] drsuapi_DsReplicaConnection04 array[]; -# } drsuapi_DsReplicaConnection04Ctr; + typedef struct { + hyper u1; /* session number? */ + uint32 u2; + uint32 u3; + GUID bind_guid; + NTTIME_1sec bind_time; + uint32 u4; /* flags? */ + uint32 u5; + } drsuapi_DsReplicaConnection04; + + typedef struct { + [range(0,10000)] uint32 count; + uint32 reserved; + [size_is(count)] drsuapi_DsReplicaConnection04 array[]; + } drsuapi_DsReplicaConnection04Ctr; typedef struct { unistr *str1; @@ -833,7 +832,7 @@ interface drsuapi [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2; [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2; [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02)] drsuapi_DsReplicaNeighbourCtr *neighbours02; -# [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] drsuapi_DsReplicaConnection04Ctr *connections04; + [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] drsuapi_DsReplicaConnection04Ctr *connections04; [case(DRSUAPI_DS_REPLICA_INFO_CURSURS05)] drsuapi_DsReplicaCoursor05Ctr *coursors05; [case(DRSUAPI_DS_REPLICA_INFO_06)] drsuapi_DsReplica06Ctr *i06; } drsuapi_DsReplicaInfo; diff --git a/epan/dissectors/dcerpc/idl2eth.c b/epan/dissectors/dcerpc/idl2eth.c index 187326416e..679f882fc1 100644 --- a/epan/dissectors/dcerpc/idl2eth.c +++ b/epan/dissectors/dcerpc/idl2eth.c @@ -32,6 +32,8 @@ TODO time_t A 32 bit integer holding a unix style time_t + NTTIME_hyper A 64 bit integer representing a NTTIME + NTTIME_1sec bool8 @@ -42,7 +44,6 @@ TODO uuid_t policy_handle NTTIME - NTTIME_hyper */ /* All field dissectors that call a normal type @@ -1169,6 +1170,22 @@ find_type(char *name) FPRINTF(eth_code, "}\n"); FPRINTF(eth_code, "\n"); tmptype=register_new_type("NTTIME_hyper", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4); + } else if(!strcmp(name,"NTTIME_1sec")){ + /* 8 bytes, aligned to 8 bytes */ + 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, " ALIGN_TO_8_BYTES;\n"); + FPRINTF(eth_code, " offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep, hf_index);\n"); + + FPRINTF(eth_code, "\n"); + FPRINTF(eth_code, " return offset;\n"); + FPRINTF(eth_code, "}\n"); + FPRINTF(eth_code, "\n"); + tmptype=register_new_type("NTTIME_1sec", dissectorname, "FT_ABSOLUTE_TIME", "BASE_NONE", "0", "NULL", 4); } else if(!strcmp(name,"udlong")){ /* 8 bytes, aligned to 4 bytes */ sprintf(dissectorname, "%s_dissect_%s", ifname, name); |