diff options
Diffstat (limited to 'epan/dissectors/packet-dtpt.c')
-rw-r--r-- | epan/dissectors/packet-dtpt.c | 269 |
1 files changed, 134 insertions, 135 deletions
diff --git a/epan/dissectors/packet-dtpt.c b/epan/dissectors/packet-dtpt.c index 26c9488f10..b0e05051f2 100644 --- a/epan/dissectors/packet-dtpt.c +++ b/epan/dissectors/packet-dtpt.c @@ -26,99 +26,100 @@ void proto_register_dtpt(void); -static int proto_dtpt = -1; - -static int hf_dtpt_version = -1; -static int hf_dtpt_message_type = -1; -static int hf_dtpt_flags = -1; -static int hf_dtpt_flags_deep = -1; -static int hf_dtpt_flags_containers = -1; -static int hf_dtpt_flags_nocontainers = -1; -static int hf_dtpt_flags_nearest = -1; -static int hf_dtpt_flags_return_name = -1; -static int hf_dtpt_flags_return_type = -1; -static int hf_dtpt_flags_return_version = -1; -static int hf_dtpt_flags_return_comment = -1; -static int hf_dtpt_flags_return_addr = -1; -static int hf_dtpt_flags_return_blob = -1; -static int hf_dtpt_flags_return_aliases = -1; -static int hf_dtpt_flags_return_query_string = -1; -static int hf_dtpt_flags_flushcache = -1; -static int hf_dtpt_flags_flushprevious = -1; -static int hf_dtpt_flags_res_service = -1; -static int hf_dtpt_payload_size = -1; -static int hf_dtpt_handle = -1; -static int hf_dtpt_error = -1; -static int hf_dtpt_buffer_size = -1; -static int hf_dtpt_data_size = -1; -static int hf_dtpt_queryset_rawsize = -1; -static int hf_dtpt_queryset_size = -1; -static int hf_dtpt_queryset_service_instance_name_pointer = -1; -static int hf_dtpt_queryset_service_class_id_pointer = -1; -static int hf_dtpt_queryset_version = -1; -static int hf_dtpt_queryset_comment_pointer = -1; -static int hf_dtpt_queryset_namespace = -1; -static int hf_dtpt_queryset_provider_id_pointer = -1; -static int hf_dtpt_queryset_context_pointer = -1; -static int hf_dtpt_queryset_protocols_number = -1; -static int hf_dtpt_queryset_protocols_pointer = -1; -static int hf_dtpt_queryset_query_string_pointer = -1; -static int hf_dtpt_queryset_cs_addrs_number = -1; -static int hf_dtpt_queryset_cs_addrs_pointer = -1; -static int hf_dtpt_queryset_output_flags = -1; -static int hf_dtpt_queryset_blob_pointer = -1; -static int hf_dtpt_wstring_length = -1; -static int hf_dtpt_wstring_data = -1; -static int hf_dtpt_guid_length = -1; -static int hf_dtpt_guid_data = -1; -static int hf_dtpt_service_instance_name = -1; -static int hf_dtpt_service_class_id = -1; -static int hf_dtpt_comment = -1; -static int hf_dtpt_ns_provider_id = -1; -static int hf_dtpt_context = -1; -static int hf_dtpt_protocols_number = -1; -static int hf_dtpt_protocols_length = -1; -static int hf_dtpt_protocol_family = -1; -static int hf_dtpt_protocol_protocol = -1; -static int hf_dtpt_query_string = -1; -static int hf_dtpt_cs_addrs_number = -1; -static int hf_dtpt_cs_addrs_length1 = -1; -static int hf_dtpt_cs_addr_socket_type = -1; -static int hf_dtpt_cs_addr_protocol = -1; -static int hf_dtpt_cs_addr_local_pointer = -1; -static int hf_dtpt_cs_addr_local_length = -1; -static int hf_dtpt_cs_addr_local = -1; -static int hf_dtpt_cs_addr_remote_pointer = -1; -static int hf_dtpt_cs_addr_remote_length = -1; -static int hf_dtpt_cs_addr_remote = -1; -static int hf_dtpt_sockaddr_length = -1; -static int hf_dtpt_sockaddr_family = -1; -static int hf_dtpt_sockaddr_port = -1; -static int hf_dtpt_sockaddr_address = -1; -static int hf_dtpt_blob_rawsize = -1; -static int hf_dtpt_blob_size = -1; -static int hf_dtpt_blob_data_pointer = -1; -static int hf_dtpt_blob_data_length = -1; -static int hf_dtpt_blob_data = -1; -static int hf_dtpt_connect_addr = -1; -static int hf_dtpt_padding = -1; - -static gint ett_dtpt = -1; -static gint ett_dtpt_flags = -1; -static gint ett_dtpt_queryset = -1; -static gint ett_dtpt_wstring = -1; -static gint ett_dtpt_guid = -1; -static gint ett_dtpt_protocols = -1; -static gint ett_dtpt_protocol = -1; -static gint ett_dtpt_cs_addrs = -1; -static gint ett_dtpt_cs_addr1 = -1; -static gint ett_dtpt_cs_addr2 = -1; -static gint ett_dtpt_sockaddr = -1; -static gint ett_dtpt_blobraw = -1; -static gint ett_dtpt_blob = -1; - - - +static int proto_dtpt; + +static int hf_dtpt_version; +static int hf_dtpt_message_type; +static int hf_dtpt_flags; +static int hf_dtpt_flags_deep; +static int hf_dtpt_flags_containers; +static int hf_dtpt_flags_nocontainers; +static int hf_dtpt_flags_nearest; +static int hf_dtpt_flags_return_name; +static int hf_dtpt_flags_return_type; +static int hf_dtpt_flags_return_version; +static int hf_dtpt_flags_return_comment; +static int hf_dtpt_flags_return_addr; +static int hf_dtpt_flags_return_blob; +static int hf_dtpt_flags_return_aliases; +static int hf_dtpt_flags_return_query_string; +static int hf_dtpt_flags_flushcache; +static int hf_dtpt_flags_flushprevious; +static int hf_dtpt_flags_res_service; +static int hf_dtpt_payload_size; +static int hf_dtpt_handle; +static int hf_dtpt_error; +static int hf_dtpt_buffer_size; +static int hf_dtpt_data_size; +static int hf_dtpt_queryset_rawsize; +static int hf_dtpt_queryset_size; +static int hf_dtpt_queryset_service_instance_name_pointer; +static int hf_dtpt_queryset_service_class_id_pointer; +static int hf_dtpt_queryset_version; +static int hf_dtpt_queryset_comment_pointer; +static int hf_dtpt_queryset_namespace; +static int hf_dtpt_queryset_provider_id_pointer; +static int hf_dtpt_queryset_context_pointer; +static int hf_dtpt_queryset_protocols_number; +static int hf_dtpt_queryset_protocols_pointer; +static int hf_dtpt_queryset_query_string_pointer; +static int hf_dtpt_queryset_cs_addrs_number; +static int hf_dtpt_queryset_cs_addrs_pointer; +static int hf_dtpt_queryset_output_flags; +static int hf_dtpt_queryset_blob_pointer; +static int hf_dtpt_wstring_length; +static int hf_dtpt_wstring_data; +static int hf_dtpt_guid_length; +static int hf_dtpt_guid_data; +static int hf_dtpt_service_instance_name; +static int hf_dtpt_service_class_id; +static int hf_dtpt_comment; +static int hf_dtpt_ns_provider_id; +static int hf_dtpt_context; +static int hf_dtpt_protocols_number; +static int hf_dtpt_protocols_length; +static int hf_dtpt_protocol_family; +static int hf_dtpt_protocol_protocol; +static int hf_dtpt_query_string; +static int hf_dtpt_cs_addrs_number; +static int hf_dtpt_cs_addrs_length1; +static int hf_dtpt_cs_addr_socket_type; +static int hf_dtpt_cs_addr_protocol; +static int hf_dtpt_cs_addr_local_pointer; +static int hf_dtpt_cs_addr_local_length; +static int hf_dtpt_cs_addr_local; +static int hf_dtpt_cs_addr_remote_pointer; +static int hf_dtpt_cs_addr_remote_length; +static int hf_dtpt_cs_addr_remote; +static int hf_dtpt_sockaddr_length; +static int hf_dtpt_sockaddr_family; +static int hf_dtpt_sockaddr_port; +static int hf_dtpt_sockaddr_address; +static int hf_dtpt_blob_rawsize; +static int hf_dtpt_blob_size; +static int hf_dtpt_blob_data_pointer; +static int hf_dtpt_blob_data_length; +static int hf_dtpt_blob_data; +static int hf_dtpt_connect_addr; +static int hf_dtpt_padding; + +static gint ett_dtpt; +static gint ett_dtpt_flags; +static gint ett_dtpt_queryset; +static gint ett_dtpt_wstring; +static gint ett_dtpt_guid; +static gint ett_dtpt_protocols; +static gint ett_dtpt_protocol; +static gint ett_dtpt_cs_addrs; +static gint ett_dtpt_cs_addr1; +static gint ett_dtpt_cs_addr2; +static gint ett_dtpt_sockaddr; +static gint ett_dtpt_blobraw; +static gint ett_dtpt_blob; + + + +static dissector_handle_t dtpt_handle; static dissector_handle_t dtpt_conversation_handle; /** static dissector_handle_t dtpt_data_handle; **/ @@ -189,21 +190,21 @@ static const value_string names_protocol[] = { { 0, NULL } }; -#define LUP_DEEP 0x0001 -#define LUP_CONTAINERS 0x0002 -#define LUP_NOCONTAINERS 0x0004 -#define LUP_NEAREST 0x0008 -#define LUP_RETURN_NAME 0x0010 -#define LUP_RETURN_TYPE 0x0020 -#define LUP_RETURN_VERSION 0x0040 -#define LUP_RETURN_COMMENT 0x0080 -#define LUP_RETURN_ADDR 0x0100 -#define LUP_RETURN_BLOB 0x0200 -#define LUP_RETURN_ALIASES 0x0400 -#define LUP_RETURN_QUERY_STRING 0x0800 -#define LUP_FLUSHCACHE 0x1000 -#define LUP_FLUSHPREVIOUS 0x2000 -#define LUP_RES_SERVICE 0x8000 +#define LUP_DEEP 0x00000001 +#define LUP_CONTAINERS 0x00000002 +#define LUP_NOCONTAINERS 0x00000004 +#define LUP_NEAREST 0x00000008 +#define LUP_RETURN_NAME 0x00000010 +#define LUP_RETURN_TYPE 0x00000020 +#define LUP_RETURN_VERSION 0x00000040 +#define LUP_RETURN_COMMENT 0x00000080 +#define LUP_RETURN_ADDR 0x00000100 +#define LUP_RETURN_BLOB 0x00000200 +#define LUP_RETURN_ALIASES 0x00000400 +#define LUP_RETURN_QUERY_STRING 0x00000800 +#define LUP_FLUSHCACHE 0x00001000 +#define LUP_FLUSHPREVIOUS 0x00002000 +#define LUP_RES_SERVICE 0x00008000 #define SOCKADDR_WITH_LEN 1 #define SOCKADDR_CONNECT 2 @@ -215,7 +216,7 @@ dissect_dtpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ static int -dissect_dtpt_wstring(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) +dissect_dtpt_wstring(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo, int hfindex) { guint32 wstring_length; guint32 wstring_size; @@ -223,7 +224,7 @@ dissect_dtpt_wstring(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) guint32 wstring_padding = 0; wstring_length = tvb_get_letohl(tvb, offset); - wstring_data = tvb_get_string_enc(wmem_packet_scope(), tvb, offset+4, wstring_length, ENC_UTF_16|ENC_LITTLE_ENDIAN); + wstring_data = tvb_get_string_enc(pinfo->pool, tvb, offset+4, wstring_length, ENC_UTF_16|ENC_LITTLE_ENDIAN); wstring_size = wstring_length; if (wstring_size%4) { wstring_padding = (4-wstring_size%4); @@ -251,7 +252,7 @@ dissect_dtpt_wstring(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) } static int -dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) +dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo, int hfindex) { guint32 guid_length; @@ -270,10 +271,10 @@ dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) } dtpt_guid_item = proto_tree_add_guid(tree, hfindex, tvb, offset, 4 + guid_length, &guid); if (dtpt_guid_item) { - guid_name = guids_get_guid_name(&guid, wmem_packet_scope()); + guid_name = guids_get_guid_name(&guid, pinfo->pool); if (guid_name != NULL) proto_item_set_text(dtpt_guid_item, "%s: %s (%s)", - proto_registrar_get_name(hfindex), guid_name, guid_to_str(wmem_packet_scope(), &guid)); + proto_registrar_get_name(hfindex), guid_name, guid_to_str(pinfo->pool, &guid)); dtpt_guid_tree = proto_item_add_subtree(dtpt_guid_item, ett_dtpt_guid); } if (dtpt_guid_tree) { @@ -287,7 +288,7 @@ dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) if (guid_name != NULL && dtpt_guid_data_item != NULL) { proto_item_set_text(dtpt_guid_data_item, "%s: %s (%s)", proto_registrar_get_name(hf_dtpt_guid_data), - guid_name, guid_to_str(wmem_packet_scope(), &guid)); + guid_name, guid_to_str(pinfo->pool, &guid)); } } } @@ -299,7 +300,7 @@ dissect_dtpt_guid(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex) } static int -dissect_dtpt_sockaddr(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex, int sockaddr_type) +dissect_dtpt_sockaddr(tvbuff_t *tvb, guint offset, proto_tree *tree, packet_info *pinfo, int hfindex, int sockaddr_type) { guint32 sockaddr_length = 0; proto_item *sockaddr_item = NULL; @@ -350,7 +351,7 @@ dissect_dtpt_sockaddr(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex proto_tree_add_item(sockaddr_tree, hf_dtpt_sockaddr_address, tvb, offset+4,4,ENC_BIG_ENDIAN); proto_tree_add_item(sockaddr_tree, hf_dtpt_padding, tvb, offset+8, 8, ENC_NA); - proto_item_append_text(sockaddr_item, ": %s:%d", tvb_ip_to_str(wmem_packet_scope(), tvb,offset+4), port); + proto_item_append_text(sockaddr_item, ": %s:%d", tvb_ip_to_str(pinfo->pool, tvb,offset+4), port); } break; } @@ -373,7 +374,7 @@ dissect_dtpt_sockaddr(tvbuff_t *tvb, guint offset, proto_tree *tree, int hfindex proto_tree_add_item(sockaddr_tree, hf_dtpt_sockaddr_address, tvb, offset+10,4,ENC_BIG_ENDIAN); proto_tree_add_item(sockaddr_tree, hf_dtpt_padding, tvb, offset+14, 16, ENC_NA); - proto_item_append_text(sockaddr_item, ": %s:%d", tvb_ip_to_str(wmem_packet_scope(), tvb,offset+10), port); + proto_item_append_text(sockaddr_item, ": %s:%d", tvb_ip_to_str(pinfo->pool, tvb,offset+10), port); } break; } @@ -426,7 +427,7 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree *dtpt_addrs_tree = NULL; guint32 blob_rawsize = 0; guint32 blob_size = 0; - guint32 blob_data_length = 0; + guint32 blob_data_length; queryset_rawsize = tvb_get_letohl(tvb, offset + 0); if (queryset_rawsize != 60) return 0; @@ -481,11 +482,11 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) offset += 4; offset += 60; - offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_service_instance_name); - offset = dissect_dtpt_guid (tvb, offset, dtpt_tree, hf_dtpt_service_class_id ); - offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_comment ); - offset = dissect_dtpt_guid (tvb, offset, dtpt_tree, hf_dtpt_ns_provider_id ); - offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_context ); + offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, pinfo, hf_dtpt_service_instance_name); + offset = dissect_dtpt_guid (tvb, offset, dtpt_tree, pinfo, hf_dtpt_service_class_id ); + offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, pinfo, hf_dtpt_comment ); + offset = dissect_dtpt_guid (tvb, offset, dtpt_tree, pinfo, hf_dtpt_ns_provider_id ); + offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, pinfo, hf_dtpt_context ); num_protocols = tvb_get_letohl(tvb, offset); if (num_protocols>0) { protocols_length = tvb_get_letohl(tvb, offset+4); @@ -518,7 +519,7 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } offset += 4 + (num_protocols>0?4:0) + num_protocols*8; - offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, hf_dtpt_query_string); + offset = dissect_dtpt_wstring(tvb, offset, dtpt_tree, pinfo, hf_dtpt_query_string); addrs_start = offset; num_addrs = tvb_get_letohl(tvb, offset); @@ -573,8 +574,8 @@ dissect_dtpt_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) offset2_start = offset2; - offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, hf_dtpt_cs_addr_local, SOCKADDR_WITH_LEN); - offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, hf_dtpt_cs_addr_remote, SOCKADDR_WITH_LEN); + offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, pinfo, hf_dtpt_cs_addr_local, SOCKADDR_WITH_LEN); + offset2 = dissect_dtpt_sockaddr(tvb, offset2, dtpt_addr2_tree, pinfo, hf_dtpt_cs_addr_remote, SOCKADDR_WITH_LEN); proto_item_set_len(dtpt_addr2_item, offset2 - offset2_start); @@ -738,19 +739,19 @@ dissect_dtpt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ } break; case ConnectRequest: { - dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, hf_dtpt_connect_addr, SOCKADDR_CONNECT); + dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, pinfo, hf_dtpt_connect_addr, SOCKADDR_CONNECT); proto_tree_add_item(dtpt_tree, hf_dtpt_error, tvb, 32, 4, ENC_LITTLE_ENDIAN); } break; case ConnectResponseOK: { - dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, hf_dtpt_connect_addr, SOCKADDR_CONNECT); + dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, pinfo, hf_dtpt_connect_addr, SOCKADDR_CONNECT); proto_tree_add_item(dtpt_tree, hf_dtpt_error, tvb, 32, 4, ENC_LITTLE_ENDIAN); } break; case ConnectResponseERR: { - dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, hf_dtpt_connect_addr, SOCKADDR_CONNECT); + dissect_dtpt_sockaddr(tvb, 2, dtpt_tree, pinfo, hf_dtpt_connect_addr, SOCKADDR_CONNECT); proto_tree_add_item(dtpt_tree, hf_dtpt_error, tvb, 32, 4, ENC_LITTLE_ENDIAN); } @@ -1161,18 +1162,16 @@ proto_register_dtpt(void) "DTPT", "dtpt"); proto_register_field_array(proto_dtpt, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + + dtpt_handle = register_dissector("dtpt", dissect_dtpt, proto_dtpt); + dtpt_conversation_handle = register_dissector("dtpt_conversation", dissect_dtpt_conversation, proto_dtpt); +/** dtpt_data_handle = register_dissector("dtpt_data", dissect_dtpt_data, proto_dtpt); **/ } void proto_reg_handoff_dtpt(void) { - dissector_handle_t dtpt_handle; - - dtpt_handle = create_dissector_handle(dissect_dtpt, proto_dtpt); - dtpt_conversation_handle = create_dissector_handle(dissect_dtpt_conversation, proto_dtpt); -/** dtpt_data_handle = create_dissector_handle(dissect_dtpt_data, proto_dtpt); **/ - dissector_add_uint_with_preference("tcp.port", TCP_SERVER_PORT, dtpt_handle); } |