diff options
author | Bill Meier <wmeier@newsguy.com> | 2011-11-13 23:33:47 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2011-11-13 23:33:47 +0000 |
commit | a42a82ed1d0a1d9b53c59652066dde539d9ef3cd (patch) | |
tree | e5b568fbccd99fdba43a8e547755849bffe83e87 /epan | |
parent | a6ccc83e221ff4c5560ed031938a3f41df60d5ac (diff) |
Don't use generic shared function/typedef/struct names;
Remove unneeded #includes;
Cleanup trailing whitespace.
svn path=/trunk/; revision=39823
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-xmpp-conference.c | 140 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-conference.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-core.c | 300 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-core.h | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-gtalk.c | 311 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-gtalk.h | 20 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-jingle.c | 440 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-jingle.h | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-other.c | 554 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-other.h | 52 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-utils.c | 281 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-utils.h | 144 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp.c | 33 |
13 files changed, 1136 insertions, 1171 deletions
diff --git a/epan/dissectors/packet-xmpp-conference.c b/epan/dissectors/packet-xmpp-conference.c index 0d6ad51bfd..f9fc1c5c71 100644 --- a/epan/dissectors/packet-xmpp-conference.c +++ b/epan/dissectors/packet-xmpp-conference.c @@ -31,13 +31,9 @@ #endif #include <glib.h> -#include <stdio.h> -#include <epan/proto.h> #include <epan/packet.h> -#include <epan/packet_info.h> -#include <epan/epan.h> -#include <epan/expert.h> + #include <epan/dissectors/packet-xml.h> #include <packet-xmpp.h> @@ -45,50 +41,50 @@ #include <packet-xmpp-conference.h> -static void xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_conf_state(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_conf_users(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_conf_user(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_conf_media(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_conf_state(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_conf_users(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_conf_user(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_conf_media(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); void -xmpp_conferece_info_advert(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conferece_info_advert(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *cinfo_item; proto_tree *cinfo_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"isfocus", -1, TRUE, TRUE, NULL, NULL} }; - cinfo_item = proto_tree_add_item(tree, hf_xmpp_conf_info, tvb, element->offset, element->length, + cinfo_item = proto_tree_add_item(tree, hf_xmpp_conf_info, tvb, element->offset, element->length, ENC_BIG_ENDIAN); cinfo_tree = proto_item_add_subtree(cinfo_item, ett_xmpp_conf_info); - display_attrs(cinfo_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cinfo_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(cinfo_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cinfo_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_conference_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conference_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *cinfo_item; proto_tree *cinfo_tree; const gchar *state_enums[] = {"full", "partial", "deleted"}; - array_t *state_array = ep_init_array_t(state_enums, array_length(state_enums)); + xmpp_array_t *state_array = xmpp_ep_init_array_t(state_enums, array_length(state_enums)); - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"entity", -1, TRUE, TRUE, NULL, NULL}, - {"state", -1, FALSE, TRUE, val_enum_list, state_array}, + {"state", -1, FALSE, TRUE, xmpp_val_enum_list, state_array}, {"version", -1, FALSE, TRUE, NULL, NULL}, {"sid", hf_xmpp_conf_info_sid, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "conference-description", xmpp_conf_desc, ONE}, {NAME, "conference-state", xmpp_conf_state, ONE}, /*{NAME, "host-info", xmpp_conf_host_info, ONE},*/ @@ -99,21 +95,21 @@ xmpp_conference_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, elemen col_append_fstr(pinfo->cinfo, COL_INFO, "CONFERENC-INFO "); - cinfo_item = proto_tree_add_item(tree, hf_xmpp_conf_info, tvb, element->offset, element->length, + cinfo_item = proto_tree_add_item(tree, hf_xmpp_conf_info, tvb, element->offset, element->length, ENC_BIG_ENDIAN); cinfo_tree = proto_item_add_subtree(cinfo_item, ett_xmpp_conf_info); - display_attrs(cinfo_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cinfo_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(cinfo_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cinfo_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *desc_item; proto_tree *desc_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"subject", -1, FALSE, TRUE, NULL, NULL}, {"display-text", -1, FALSE, FALSE, NULL, NULL}, {"free-text", -1, FALSE, FALSE, NULL, NULL}, @@ -121,7 +117,7 @@ xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *e }; /* - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "keywords", xmpp_conf_desc_keywords, ONE}, {NAME, "conf-uris", xmpp_conf_desc_conf_uris, ONE}, {NAME, "service-uris", xmpp_conf_desc_serv_uris, ONE}, @@ -132,22 +128,22 @@ xmpp_conf_desc(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *e desc_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "CONFERENCE DESCRIPTION"); desc_tree = proto_item_add_subtree(desc_item, ett_xmpp_conf_desc); - change_elem_to_attrib("subject", "subject", element, transform_func_cdata); - change_elem_to_attrib("display-text", "display-text", element, transform_func_cdata); - change_elem_to_attrib("free-text", "free-text", element, transform_func_cdata); - change_elem_to_attrib("maximum-user-count", "max-user-count", element, transform_func_cdata); + xmpp_change_elem_to_attrib("subject", "subject", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("display-text", "display-text", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("free-text", "free-text", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("maximum-user-count", "max-user-count", element, xmpp_transform_func_cdata); - display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(desc_tree, element, pinfo, tvb, NULL,0); + xmpp_display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(desc_tree, element, pinfo, tvb, NULL,0); } static void -xmpp_conf_state(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_state(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *state_item; proto_tree *state_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"user-count", -1, FALSE, TRUE, NULL, NULL}, {"active", -1, FALSE, TRUE, NULL, NULL}, {"locked", -1, FALSE, TRUE, NULL, NULL} @@ -156,49 +152,49 @@ xmpp_conf_state(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t * state_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "CONFERENCE STATE"); state_tree = proto_item_add_subtree(state_item, ett_xmpp_conf_state); - change_elem_to_attrib("user-count", "user-count", element, transform_func_cdata); - change_elem_to_attrib("active", "active", element, transform_func_cdata); - change_elem_to_attrib("locked", "locked", element, transform_func_cdata); + xmpp_change_elem_to_attrib("user-count", "user-count", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("active", "active", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("locked", "locked", element, xmpp_transform_func_cdata); + + xmpp_display_attrs(state_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(state_tree, element, pinfo, tvb, NULL,0); - display_attrs(state_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(state_tree, element, pinfo, tvb, NULL,0); - } static void -xmpp_conf_users(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_users(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *users_item; proto_tree *users_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"state", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "user", xmpp_conf_user, MANY} }; users_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "USERS"); - users_tree = proto_item_add_subtree(users_item, ett_xmpp_conf_users); + users_tree = proto_item_add_subtree(users_item, ett_xmpp_conf_users); - display_attrs(users_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(users_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(users_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(users_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_conf_user(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_user(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *user_item; proto_tree *user_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"entity", -1, FALSE, TRUE, NULL, NULL}, {"state", -1, FALSE, TRUE, NULL, NULL}, {"display-text", -1, FALSE, TRUE, NULL, NULL}, {"cascaded-focus", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { /*{NAME, "associated-aors", xmpp_conf_assoc_aors, ONE},*/ /*{NAME, "roles", xmpp_conf_roles, ONE},*/ /*{NAME, "languages", xmpp_conf_langs, ONE},*/ @@ -208,20 +204,20 @@ xmpp_conf_user(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *e user_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "USERS"); user_tree = proto_item_add_subtree(user_item, ett_xmpp_conf_user); - change_elem_to_attrib("display-text", "display-text", element, transform_func_cdata); - change_elem_to_attrib("cascaded-focus", "cascaded-focus", element, transform_func_cdata); + xmpp_change_elem_to_attrib("display-text", "display-text", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("cascaded-focus", "cascaded-focus", element, xmpp_transform_func_cdata); - display_attrs(user_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(user_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(user_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(user_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *endpoint_item; proto_tree *endpoint_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"entity", -1, FALSE, TRUE, NULL, NULL}, {"state", -1, FALSE, TRUE, NULL, NULL}, {"display-text", -1, FALSE, TRUE, NULL, NULL}, @@ -230,7 +226,7 @@ xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_ {"disconnection-method", -1, FALSE, TRUE, NULL, NULL}, }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { /*{NAME,"referred",...,ONE},*/ /*{NAME,"joining-info",...,ONE},*/ /*{NAME,"disconnection-info",...,ONE},*/ @@ -242,23 +238,23 @@ xmpp_conf_endpoint(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_ endpoint_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "ENDPOINT"); endpoint_tree = proto_item_add_subtree(endpoint_item, ett_xmpp_conf_endpoint); - change_elem_to_attrib("display-text", "display-text", element, transform_func_cdata); - change_elem_to_attrib("status", "status", element, transform_func_cdata); - change_elem_to_attrib("joining-method", "joining-method", element, transform_func_cdata); - change_elem_to_attrib("disconnection-method", "disconnection-method", element, transform_func_cdata); + xmpp_change_elem_to_attrib("display-text", "display-text", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("status", "status", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("joining-method", "joining-method", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("disconnection-method", "disconnection-method", element, xmpp_transform_func_cdata); - display_attrs(endpoint_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(endpoint_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(endpoint_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(endpoint_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_conf_media(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_conf_media(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *media_item; proto_tree *media_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"id", -1, TRUE, TRUE, NULL, NULL}, {"display-text", -1, FALSE, TRUE, NULL, NULL}, {"type", -1, FALSE, TRUE, NULL, NULL}, @@ -270,14 +266,14 @@ xmpp_conf_media(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t * media_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "MEDIA"); media_tree = proto_item_add_subtree(media_item, ett_xmpp_conf_media); - change_elem_to_attrib("display-text", "display-text", element, transform_func_cdata); - change_elem_to_attrib("type", "type", element, transform_func_cdata); - change_elem_to_attrib("label", "label", element, transform_func_cdata); - change_elem_to_attrib("src-id", "src-id", element, transform_func_cdata); - change_elem_to_attrib("status", "status", element, transform_func_cdata); + xmpp_change_elem_to_attrib("display-text", "display-text", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("type", "type", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("label", "label", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("src-id", "src-id", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("status", "status", element, xmpp_transform_func_cdata); - display_attrs(media_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(media_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(media_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(media_tree, element, pinfo, tvb, NULL, 0); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-xmpp-conference.h b/epan/dissectors/packet-xmpp-conference.h index 9f8d48b169..9972f7f467 100644 --- a/epan/dissectors/packet-xmpp-conference.h +++ b/epan/dissectors/packet-xmpp-conference.h @@ -26,8 +26,8 @@ #ifndef XMPP_CONFERENCE_H #define XMPP_CONFERENCE_H -extern void xmpp_conferece_info_advert(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_conference_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_conferece_info_advert(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_conference_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); #endif /* XMPP_CONFERENCE_H */ diff --git a/epan/dissectors/packet-xmpp-core.c b/epan/dissectors/packet-xmpp-core.c index 3a1cf4c8b9..7640cc5f69 100644 --- a/epan/dissectors/packet-xmpp-core.c +++ b/epan/dissectors/packet-xmpp-core.c @@ -28,17 +28,11 @@ #include "config.h" #endif - -#include<stdio.h> -#include<string.h> #include <glib.h> #include <epan/packet.h> -#include <epan/proto.h> -#include <epan/tvbuff.h> #include <epan/emem.h> #include <epan/conversation.h> -#include <epan/strutil.h> #include <epan/expert.h> #include <epan/dissectors/packet-xml.h> @@ -56,37 +50,37 @@ #include "epan/tvbparse.h" -void xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); +void xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); void xmpp_challenge_response_success(proto_tree *tree, tvbuff_t *tvb, - packet_info *pinfo, element_t *packet, gint hf, gint ett, const char *col_info); + packet_info *pinfo, xmpp_element_t *packet, gint hf, gint ett, const char *col_info); -void xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); +void xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); -static void xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_error_text(proto_tree *tree, tvbuff_t *tvb, element_t *element); +static void xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_error_text(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element); -void xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -static void xmpp_presence_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +void xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +static void xmpp_presence_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -void xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -static void xmpp_message_thread(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_message_body(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_message_subject(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +void xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +static void xmpp_message_thread(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_message_body(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_message_subject(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -void xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -static void xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, element_t *element); +void xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +static void xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element); -static void xmpp_features_mechanisms(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); +static void xmpp_features_mechanisms(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); void -xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *xmpp_iq_item; proto_tree *xmpp_iq_tree; - attr_t *attr_id, *attr_type; + xmpp_attr_t *attr_id, *attr_type; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"id", hf_xmpp_id, TRUE, TRUE, NULL, NULL}, {"type", hf_xmpp_type, TRUE, TRUE, NULL, NULL}, @@ -99,40 +93,40 @@ xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) xmpp_conv_info_t *xmpp_info = NULL; xmpp_transaction_t *reqresp_trans = NULL; - elem_info elems_info [] = { - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","http://jabber.org/protocol/disco#items"), xmpp_disco_items_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns", "jabber:iq:roster"), xmpp_roster_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns", "http://jabber.org/protocol/disco#info"), xmpp_disco_info_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns", "http://jabber.org/protocol/bytestreams"), xmpp_bytestreams_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns", "http://jabber.org/protocol/muc#owner"), xmpp_muc_owner_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns", "http://jabber.org/protocol/muc#admin"), xmpp_muc_admin_query, ONE}, + xmpp_elem_info elems_info [] = { + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","http://jabber.org/protocol/disco#items"), xmpp_disco_items_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns", "jabber:iq:roster"), xmpp_roster_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns", "http://jabber.org/protocol/disco#info"), xmpp_disco_info_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns", "http://jabber.org/protocol/bytestreams"), xmpp_bytestreams_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns", "http://jabber.org/protocol/muc#owner"), xmpp_muc_owner_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns", "http://jabber.org/protocol/muc#admin"), xmpp_muc_admin_query, ONE}, {NAME, "bind", xmpp_iq_bind, ONE}, - {NAME_AND_ATTR, name_attr_struct("session", "xmlns", "urn:ietf:params:xml:ns:xmpp-session"), xmpp_session, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("session", "xmlns", "urn:ietf:params:xml:ns:xmpp-session"), xmpp_session, ONE}, {NAME, "vCard", xmpp_vcard, ONE}, {NAME, "jingle", xmpp_jingle, ONE}, - {NAME_AND_ATTR, name_attr_struct("services", "xmlns", "http://jabber.org/protocol/jinglenodes"), xmpp_jinglenodes_services, ONE}, - {NAME_AND_ATTR, name_attr_struct("channel", "xmlns", "http://jabber.org/protocol/jinglenodes#channel"), xmpp_jinglenodes_channel, ONE}, - {NAME_AND_ATTR, name_attr_struct("open", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_open, ONE}, - {NAME_AND_ATTR, name_attr_struct("close", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_close, ONE}, - {NAME_AND_ATTR, name_attr_struct("data", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_data, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("services", "xmlns", "http://jabber.org/protocol/jinglenodes"), xmpp_jinglenodes_services, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("channel", "xmlns", "http://jabber.org/protocol/jinglenodes#channel"), xmpp_jinglenodes_channel, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("open", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_open, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("close", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_close, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("data", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_data, ONE}, {NAME, "si", xmpp_si, ONE}, {NAME, "error", xmpp_error, ONE}, - {NAME_AND_ATTR, name_attr_struct("session", "xmlns", "http://www.google.com/session"), xmpp_gtalk_session, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","google:jingleinfo"), xmpp_gtalk_jingleinfo_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("usersetting", "xmlns","google:setting"), xmpp_gtalk_usersetting, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","jabber:iq:last"), xmpp_last_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","jabber:iq:version"), xmpp_version_query, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","google:mail:notify"), xmpp_gtalk_mail_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("session", "xmlns", "http://www.google.com/session"), xmpp_gtalk_session, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","google:jingleinfo"), xmpp_gtalk_jingleinfo_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("usersetting", "xmlns","google:setting"), xmpp_gtalk_usersetting, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","jabber:iq:last"), xmpp_last_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","jabber:iq:version"), xmpp_version_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","google:mail:notify"), xmpp_gtalk_mail_query, ONE}, {NAME, "mailbox", xmpp_gtalk_mail_mailbox, ONE}, {NAME, "new-mail", xmpp_gtalk_mail_new_mail, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","google:shared-status"), xmpp_gtalk_status_query, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","google:shared-status"), xmpp_gtalk_status_query, ONE}, {NAME, "conference-info", xmpp_conference_info, ONE}, - {NAME_AND_ATTR, name_attr_struct("ping", "xmlns","urn:xmpp:ping"), xmpp_ping, ONE}, - {NAME_AND_ATTR, name_attr_struct("inputevt", "xmlns","http://jitsi.org/protocol/inputevt"), xmpp_jitsi_inputevt, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("ping", "xmlns","urn:xmpp:ping"), xmpp_ping, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("inputevt", "xmlns","http://jitsi.org/protocol/inputevt"), xmpp_jitsi_inputevt, ONE}, }; - attr_id = get_attr(packet, "id"); - attr_type = get_attr(packet, "type"); + attr_id = xmpp_get_attr(packet, "id"); + attr_type = xmpp_get_attr(packet, "type"); conversation = find_or_create_conversation(pinfo); xmpp_info = conversation_get_proto_data(conversation, proto_xmpp); @@ -140,13 +134,13 @@ xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) xmpp_iq_item = proto_tree_add_item(tree, hf_xmpp_iq, tvb, packet->offset, packet->length, ENC_LITTLE_ENDIAN); xmpp_iq_tree = proto_item_add_subtree(xmpp_iq_item,ett_xmpp_iq); - display_attrs(xmpp_iq_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(xmpp_iq_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); col_clear(pinfo->cinfo, COL_INFO); col_add_fstr(pinfo->cinfo, COL_INFO, "IQ(%s) ", attr_type?attr_type->value:""); - display_elems(xmpp_iq_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(xmpp_iq_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); /*displays generated info such as req/resp tracking, jingle sid * in each packet related to specified jingle session and IBB sid in packet related to it*/ @@ -205,14 +199,14 @@ xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) static void -xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *error_item; proto_tree *error_tree; - element_t *text_element, *cond_element; + xmpp_element_t *text_element, *cond_element; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"type", hf_xmpp_error_type, TRUE, TRUE, NULL, NULL}, {"code", hf_xmpp_error_code, FALSE, TRUE, NULL, NULL}, {"condition", hf_xmpp_error_condition, TRUE, TRUE, NULL, NULL} /*TODO: validate list to the condition element*/ @@ -220,26 +214,26 @@ xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *eleme gchar *error_info; - attr_t *fake_condition = NULL; + xmpp_attr_t *fake_condition = NULL; error_info = ep_strdup("Stanza error"); error_item = proto_tree_add_item(tree, hf_xmpp_error, tvb, element->offset, element->length, ENC_BIG_ENDIAN); error_tree = proto_item_add_subtree(error_item, ett_xmpp_query_item); - cond_element = steal_element_by_attr(element, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas"); + cond_element = xmpp_steal_element_by_attr(element, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas"); if(cond_element) { - fake_condition = ep_init_attr_t(cond_element->name, cond_element->offset, cond_element->length); + fake_condition = xmpp_ep_init_attr_t(cond_element->name, cond_element->offset, cond_element->length); g_hash_table_insert(element->attrs,"condition", fake_condition); error_info = ep_strdup_printf("%s: %s;", error_info, cond_element->name); } - display_attrs(error_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(error_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((text_element = steal_element_by_name(element, "text")) != NULL) + while((text_element = xmpp_steal_element_by_name(element, "text")) != NULL) { xmpp_error_text(error_tree, tvb, text_element); @@ -252,49 +246,49 @@ xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *eleme } static void -xmpp_error_text(proto_tree *tree, tvbuff_t *tvb, element_t *element) +xmpp_error_text(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element) { proto_tree_add_string(tree, hf_xmpp_error_text, tvb, element->offset, element->length, element->data?element->data->value:""); } void -xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *presence_item; proto_tree *presence_tree; const gchar *type_enums[] = {"error", "probe", "subscribe", "subscribed", "unavailable", "unsubscribe", "unsubscribed"}; - array_t *type_array = ep_init_array_t(type_enums, array_length(type_enums)); + xmpp_array_t *type_array = xmpp_ep_init_array_t(type_enums, array_length(type_enums)); const gchar *show_enums[] = {"away", "chat", "dnd", "xa"}; - array_t *show_array = ep_init_array_t(show_enums, array_length(show_enums)); + xmpp_array_t *show_array = xmpp_ep_init_array_t(show_enums, array_length(show_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"from", hf_xmpp_from, FALSE, FALSE, NULL, NULL}, {"id", hf_xmpp_id, FALSE, TRUE, NULL, NULL}, {"to", hf_xmpp_to, FALSE, FALSE, NULL, NULL}, - {"type", hf_xmpp_type, FALSE, TRUE, val_enum_list, type_array}, + {"type", hf_xmpp_type, FALSE, TRUE, xmpp_val_enum_list, type_array}, {"xml:lang",-1, FALSE, FALSE, NULL,NULL}, - {"show", hf_xmpp_presence_show, FALSE, TRUE, val_enum_list, show_array}, + {"show", hf_xmpp_presence_show, FALSE, TRUE, xmpp_val_enum_list, show_array}, {"priority", -1, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "status", xmpp_presence_status, MANY}, - {NAME_AND_ATTR, name_attr_struct("c","xmlns","http://jabber.org/protocol/caps"), xmpp_presence_caps, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("c","xmlns","http://jabber.org/protocol/caps"), xmpp_presence_caps, ONE}, {NAME, "delay", xmpp_delay, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns", "jabber:x:delay"), xmpp_delay, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns", "vcard-temp:x:update"), xmpp_vcard_x_update, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns","http://jabber.org/protocol/muc"), xmpp_muc_x, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns","http://jabber.org/protocol/muc#user"), xmpp_muc_user_x, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns", "jabber:x:delay"), xmpp_delay, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns", "vcard-temp:x:update"), xmpp_vcard_x_update, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns","http://jabber.org/protocol/muc"), xmpp_muc_x, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns","http://jabber.org/protocol/muc#user"), xmpp_muc_user_x, ONE}, {NAME, "error", xmpp_error, ONE}, - {NAME_AND_ATTR, name_attr_struct("query", "xmlns","jabber:iq:last"), xmpp_last_query, ONE} + {NAME_AND_ATTR, xmpp_name_attr_struct("query", "xmlns","jabber:iq:last"), xmpp_last_query, ONE} }; - element_t *show, *priority; + xmpp_element_t *show, *priority; col_clear(pinfo->cinfo, COL_INFO); col_append_fstr(pinfo->cinfo, COL_INFO, "PRESENCE "); @@ -302,85 +296,85 @@ xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pa presence_item = proto_tree_add_item(tree, hf_xmpp_presence, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); presence_tree = proto_item_add_subtree(presence_item, ett_xmpp_presence); - if((show = steal_element_by_name(packet, "show"))!=NULL) + if((show = xmpp_steal_element_by_name(packet, "show"))!=NULL) { - attr_t *fake_show = ep_init_attr_t(show->data?show->data->value:"",show->offset, show->length); + xmpp_attr_t *fake_show = xmpp_ep_init_attr_t(show->data?show->data->value:"",show->offset, show->length); g_hash_table_insert(packet->attrs, "show", fake_show); } - if((priority = steal_element_by_name(packet, "priority"))!=NULL) + if((priority = xmpp_steal_element_by_name(packet, "priority"))!=NULL) { - attr_t *fake_priority = ep_init_attr_t(priority->data?priority->data->value:"",priority->offset, priority->length); + xmpp_attr_t *fake_priority = xmpp_ep_init_attr_t(priority->data?priority->data->value:"",priority->offset, priority->length); g_hash_table_insert(packet->attrs, "priority", fake_priority); } - display_attrs(presence_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(presence_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(presence_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(presence_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_presence_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_presence_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *status_item; proto_tree *status_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xml:lang", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; - attr_t *fake_value; + xmpp_attr_t *fake_value; status_item = proto_tree_add_item(tree, hf_xmpp_presence_status, tvb, element->offset, element->length, ENC_BIG_ENDIAN); status_tree = proto_item_add_subtree(status_item, ett_xmpp_presence_status); if(element->data) - fake_value = ep_init_attr_t(element->data->value, element->offset, element->length); + fake_value = xmpp_ep_init_attr_t(element->data->value, element->offset, element->length); else - fake_value = ep_init_attr_t("(empty)", element->offset, element->length); + fake_value = xmpp_ep_init_attr_t("(empty)", element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_value); - display_attrs(status_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(status_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(status_tree, tvb, pinfo, element); } void -xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *message_item; proto_tree *message_tree; const gchar *type_enums[] = {"chat", "error", "groupchat", "headline", "normal"}; - array_t *type_array = ep_init_array_t(type_enums, array_length(type_enums)); + xmpp_array_t *type_array = xmpp_ep_init_array_t(type_enums, array_length(type_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"from", hf_xmpp_from, FALSE, FALSE, NULL, NULL}, {"id", hf_xmpp_id, FALSE, TRUE, NULL, NULL}, {"to", hf_xmpp_to, FALSE, FALSE, NULL, NULL}, - {"type", hf_xmpp_type, FALSE, TRUE, val_enum_list, type_array}, + {"type", hf_xmpp_type, FALSE, TRUE, xmpp_val_enum_list, type_array}, {"xml:lang",-1, FALSE, FALSE, NULL,NULL}, {"chatstate", hf_xmpp_message_chatstate, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { - {NAME_AND_ATTR, name_attr_struct("data", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_data, ONE}, + xmpp_elem_info elems_info [] = { + {NAME_AND_ATTR, xmpp_name_attr_struct("data", "xmlns", "http://jabber.org/protocol/ibb"), xmpp_ibb_data, ONE}, {NAME, "thread", xmpp_message_thread, ONE}, {NAME, "body", xmpp_message_body, MANY}, {NAME, "subject", xmpp_message_subject, MANY}, {NAME, "delay", xmpp_delay, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns","jabber:x:event"), xmpp_x_event, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns","http://jabber.org/protocol/muc#user"), xmpp_muc_user_x, ONE}, - {NAME_AND_ATTR, name_attr_struct("x","xmlns","google:nosave"), xmpp_gtalk_nosave_x, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns","jabber:x:event"), xmpp_x_event, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns","http://jabber.org/protocol/muc#user"), xmpp_muc_user_x, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("x","xmlns","google:nosave"), xmpp_gtalk_nosave_x, ONE}, {NAME, "error", xmpp_error, ONE} }; - element_t *chatstate; + xmpp_element_t *chatstate; - attr_t *id = NULL; + xmpp_attr_t *id = NULL; conversation_t *conversation = NULL; xmpp_conv_info_t *xmpp_info = NULL; @@ -388,7 +382,7 @@ xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pac col_clear(pinfo->cinfo, COL_INFO); col_append_fstr(pinfo->cinfo, COL_INFO, "MESSAGE "); - id = get_attr(packet, "id"); + id = xmpp_get_attr(packet, "id"); conversation = find_or_create_conversation(pinfo); xmpp_info = conversation_get_proto_data(conversation, proto_xmpp); @@ -396,15 +390,15 @@ xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pac message_item = proto_tree_add_item(tree, hf_xmpp_message, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); message_tree = proto_item_add_subtree(message_item, ett_xmpp_message); - if((chatstate = steal_element_by_attr(packet, "xmlns", "http://jabber.org/protocol/chatstates"))!=NULL) + if((chatstate = xmpp_steal_element_by_attr(packet, "xmlns", "http://jabber.org/protocol/chatstates"))!=NULL) { - attr_t *fake_chatstate_attr = ep_init_attr_t(chatstate->name, chatstate->offset, chatstate->length); + xmpp_attr_t *fake_chatstate_attr = xmpp_ep_init_attr_t(chatstate->name, chatstate->offset, chatstate->length); g_hash_table_insert(packet->attrs, "chatstate", fake_chatstate_attr); } - display_attrs(message_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(message_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(message_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(message_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); /*Displays data about IBB session*/ if(xmpp_info && id) @@ -422,86 +416,86 @@ xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pac } static void -xmpp_message_body(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_message_body(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *body_item; proto_tree *body_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xml:lang", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; - attr_t *fake_data_attr; + xmpp_attr_t *fake_data_attr; body_item = proto_tree_add_item(tree, hf_xmpp_message_body, tvb, element->offset, element->length, ENC_BIG_ENDIAN); body_tree = proto_item_add_subtree(body_item, ett_xmpp_message_body); - fake_data_attr = ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); + fake_data_attr = xmpp_ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_data_attr); - display_attrs(body_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(body_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(body_tree, tvb, pinfo, element); } static void -xmpp_message_subject(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) { +xmpp_message_subject(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *subject_item; proto_tree *subject_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xml:lang", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, TRUE, FALSE, NULL, NULL} }; - attr_t *fake_data_attr; + xmpp_attr_t *fake_data_attr; subject_item = proto_tree_add_item(tree, hf_xmpp_message_subject, tvb, element->offset, element->length, ENC_BIG_ENDIAN); subject_tree = proto_item_add_subtree(subject_item, ett_xmpp_message_subject); - fake_data_attr = ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); + fake_data_attr = xmpp_ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_data_attr); - display_attrs(subject_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(subject_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(subject_tree, tvb, pinfo, element); } static void -xmpp_message_thread(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_message_thread(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *thread_item; proto_tree *thread_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"parent", hf_xmpp_message_thread_parent, FALSE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; - attr_t *fake_value; + xmpp_attr_t *fake_value; thread_item = proto_tree_add_item(tree, hf_xmpp_message_thread, tvb, element->offset, element->length, ENC_BIG_ENDIAN); thread_tree = proto_item_add_subtree(thread_item, ett_xmpp_message_thread); - fake_value = ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); + fake_value = xmpp_ep_init_attr_t(element->data?element->data->value:"", element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_value); - display_attrs(thread_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(thread_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(thread_tree, tvb, pinfo, element); } void -xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *auth_item; proto_tree *auth_tree; - attr_info_ext attrs_info[]={ + xmpp_attr_info_ext attrs_info[]={ {"urn:ietf:params:xml:ns:xmpp-sasl", {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}}, {"urn:ietf:params:xml:ns:xmpp-sasl", {"mechanism", -1, TRUE, TRUE, NULL, NULL}}, {"http://www.google.com/talk/protocol/auth", {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}}, @@ -514,7 +508,7 @@ xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet auth_item = proto_tree_add_item(tree, hf_xmpp_auth, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); auth_tree = proto_item_add_subtree(auth_item, ett_xmpp_auth); - display_attrs_ext(auth_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs_ext(auth_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_cdata(auth_tree, tvb, packet, -1); @@ -523,12 +517,12 @@ xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet void xmpp_challenge_response_success(proto_tree *tree, tvbuff_t *tvb, - packet_info *pinfo, element_t *packet, gint hf, gint ett, const char *col_info) + packet_info *pinfo, xmpp_element_t *packet, gint hf, gint ett, const char *col_info) { proto_item *item; proto_tree *subtree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; @@ -538,19 +532,19 @@ xmpp_challenge_response_success(proto_tree *tree, tvbuff_t *tvb, item = proto_tree_add_item(tree, hf, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); subtree = proto_item_add_subtree(item, ett); - display_attrs(subtree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(subtree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_cdata(subtree, tvb, packet, -1); xmpp_unknown(subtree, tvb, pinfo, packet); } void -xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *fail_item; proto_tree *fail_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"condition", -1, FALSE, TRUE, NULL, NULL} }; @@ -561,33 +555,33 @@ xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pac "transition-needed" }; - element_t *fail_condition, *text; + xmpp_element_t *fail_condition, *text; col_add_fstr(pinfo->cinfo, COL_INFO, "FAILURE "); fail_item = proto_tree_add_item(tree, hf_xmpp_failure, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); fail_tree = proto_item_add_subtree(fail_item, ett_xmpp_failure); - if((fail_condition = steal_element_by_names(packet, fail_names, array_length(fail_names)))!=NULL) + if((fail_condition = xmpp_steal_element_by_names(packet, fail_names, array_length(fail_names)))!=NULL) { - attr_t *fake_cond = ep_init_attr_t(fail_condition->name, fail_condition->offset, fail_condition->length); + xmpp_attr_t *fake_cond = xmpp_ep_init_attr_t(fail_condition->name, fail_condition->offset, fail_condition->length); g_hash_table_insert(packet->attrs, "condition", fake_cond); } - if((text = steal_element_by_name(packet, "text"))!=NULL) + if((text = xmpp_steal_element_by_name(packet, "text"))!=NULL) { xmpp_failure_text(fail_tree, tvb, text); } - display_attrs(fail_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(fail_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(fail_tree, tvb, pinfo, packet); } static void -xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, element_t *element) +xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element) { - attr_t *lang = get_attr(element,"xml:lang"); + xmpp_attr_t *lang = xmpp_get_attr(element,"xml:lang"); proto_tree_add_text(tree, tvb, element->offset, element->length, "TEXT%s: %s", lang?ep_strdup_printf("(%s)",lang->value):"", @@ -595,19 +589,19 @@ xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, element_t *element) } void -xmpp_xml_header(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, element_t *packet) +xmpp_xml_header(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, xmpp_element_t *packet) { col_add_fstr(pinfo->cinfo, COL_INFO, "XML "); proto_tree_add_text(tree, tvb, packet->offset, packet->length, "XML HEADER VER. %s","1.0"); } void -xmpp_stream(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_stream(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *stream_item; proto_tree *stream_tree; - attr_info_ext attrs_info [] = { + xmpp_attr_info_ext attrs_info [] = { {"http://etherx.jabber.org/streams",{"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}}, {"http://etherx.jabber.org/streams",{"version", -1, FALSE, TRUE, NULL, NULL}}, {"http://etherx.jabber.org/streams",{"from",-1, FALSE, TRUE, NULL, NULL}}, @@ -623,8 +617,8 @@ xmpp_stream(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pack stream_item = proto_tree_add_item(tree, hf_xmpp_stream, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); stream_tree = proto_item_add_subtree(stream_item, ett_xmpp_stream); - display_attrs_ext(stream_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(stream_tree, packet, pinfo, tvb, NULL, 0); + xmpp_display_attrs_ext(stream_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(stream_tree, packet, pinfo, tvb, NULL, 0); } /*returns TRUE if stream end occurs*/ @@ -664,53 +658,53 @@ xmpp_stream_close(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo) } void -xmpp_features(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_features(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *features_item; proto_tree *features_tree; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "mechanisms", xmpp_features_mechanisms, MANY} }; - features_item = proto_tree_add_item(tree, hf_xmpp_features, tvb, packet->offset, packet->length, + features_item = proto_tree_add_item(tree, hf_xmpp_features, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); features_tree = proto_item_add_subtree(features_item, ett_xmpp_features); col_add_fstr(pinfo->cinfo, COL_INFO, "FEATURES "); - display_attrs(features_tree, packet, pinfo, tvb, NULL, 0); - display_elems(features_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(features_tree, packet, pinfo, tvb, NULL, 0); + xmpp_display_elems(features_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_features_mechanisms(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_features_mechanisms(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *mechanisms_item; proto_tree *mechanisms_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "mechanism", xmpp_simple_cdata_elem, MANY}, }; mechanisms_item = proto_tree_add_text(tree, tvb, packet->offset, packet->length, "MECHANISMS"); mechanisms_tree = proto_item_add_subtree(mechanisms_item, ett_xmpp_features_mechanisms); - display_attrs(mechanisms_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(mechanisms_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(mechanisms_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(mechanisms_tree, packet, pinfo, tvb, elems_info, array_length(elems_info)); } void -xmpp_starttls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_starttls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *tls_item; proto_tree *tls_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, }; @@ -719,17 +713,17 @@ xmpp_starttls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pa tls_item = proto_tree_add_item(tree, hf_xmpp_starttls, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); tls_tree = proto_item_add_subtree(tls_item, ett_xmpp_starttls); - display_attrs(tls_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(tls_tree, packet, pinfo, tvb, NULL, 0); + xmpp_display_attrs(tls_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(tls_tree, packet, pinfo, tvb, NULL, 0); } void -xmpp_proceed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet) +xmpp_proceed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet) { proto_item *proceed_item; proto_tree *proceed_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, }; @@ -738,8 +732,8 @@ xmpp_proceed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *pac proceed_item = proto_tree_add_item(tree, hf_xmpp_proceed, tvb, packet->offset, packet->length, ENC_BIG_ENDIAN); proceed_tree = proto_item_add_subtree(proceed_item, ett_xmpp_proceed); - display_attrs(proceed_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(proceed_tree, packet, pinfo, tvb, NULL, 0); + xmpp_display_attrs(proceed_tree, packet, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(proceed_tree, packet, pinfo, tvb, NULL, 0); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-xmpp-core.h b/epan/dissectors/packet-xmpp-core.h index e3de62854e..ee81443fd7 100644 --- a/epan/dissectors/packet-xmpp-core.h +++ b/epan/dissectors/packet-xmpp-core.h @@ -26,18 +26,18 @@ #ifndef XMPP_CORE_H #define XMPP_CORE_H -extern void xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); +extern void xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_presence(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_auth(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); extern void xmpp_challenge_response_success(proto_tree *tree, tvbuff_t *tvb, - packet_info *pinfo, element_t *packet, gint hf, gint ett, const char *col_info); -extern void xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_xml_header(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_stream(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); + packet_info *pinfo, xmpp_element_t *packet, gint hf, gint ett, const char *col_info); +extern void xmpp_failure(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_xml_header(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_stream(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); extern gboolean xmpp_stream_close(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo); -extern void xmpp_features(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_starttls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); -extern void xmpp_proceed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *packet); +extern void xmpp_features(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_starttls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); +extern void xmpp_proceed(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *packet); #endif /* XMPP_CORE_H */ diff --git a/epan/dissectors/packet-xmpp-gtalk.c b/epan/dissectors/packet-xmpp-gtalk.c index 462c97261f..ab0248b999 100644 --- a/epan/dissectors/packet-xmpp-gtalk.c +++ b/epan/dissectors/packet-xmpp-gtalk.c @@ -30,17 +30,10 @@ #include "config.h" #endif -#include<stdio.h> -#include<string.h> #include <glib.h> #include <epan/packet.h> -#include <epan/proto.h> -#include <epan/tvbuff.h> -#include <epan/emem.h> -#include <epan/conversation.h> -#include <epan/strutil.h> -#include <epan/expert.h> + #include <epan/dissectors/packet-xml.h> #include <packet-xmpp.h> @@ -49,84 +42,84 @@ #include <packet-xmpp-conference.h> -static void xmpp_gtalk_session_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_session_desc_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_session_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_session_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_jingleinfo_stun(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_jingleinfo_server(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_jingleinfo_relay(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_jingleinfo_relay_serv(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_nosave_item(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_mail_mail_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_mail_senders(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_mail_sender(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_mail_snippet(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_status_status_list(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_gtalk_transport_p2p_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +static void xmpp_gtalk_session_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_session_desc_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_session_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_session_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_jingleinfo_stun(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_jingleinfo_server(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_jingleinfo_relay(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_jingleinfo_relay_serv(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_nosave_item(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_mail_mail_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_mail_senders(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_mail_sender(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_mail_snippet(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_status_status_list(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_gtalk_transport_p2p_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); void -xmpp_gtalk_session(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_session(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *session_item; proto_tree *session_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"type", hf_xmpp_gtalk_session_type, TRUE, TRUE, NULL, NULL}, {"initiator", -1, FALSE, TRUE, NULL, NULL}, {"id", -1, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME,"description", xmpp_gtalk_session_desc, ONE}, {NAME, "candidate", xmpp_gtalk_session_cand, MANY}, {NAME, "reason", xmpp_gtalk_session_reason, ONE}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "http://www.google.com/transport/p2p"), xmpp_gtalk_transport_p2p, ONE}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "http://www.google.com/transport/p2p"), xmpp_gtalk_transport_p2p, ONE}, {NAME, "conference-info", xmpp_conferece_info_advert, ONE} }; - attr_t *attr_type = get_attr(element, "type"); + xmpp_attr_t *attr_type = xmpp_get_attr(element, "type"); col_append_fstr(pinfo->cinfo, COL_INFO, "GTALK-SESSION(%s) ", attr_type?attr_type->value:""); session_item = proto_tree_add_item(tree, hf_xmpp_gtalk_session, tvb, element->offset, element->length, ENC_BIG_ENDIAN); session_tree = proto_item_add_subtree(session_item, ett_xmpp_gtalk_session); - display_attrs(session_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(session_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(session_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(session_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_session_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_session_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *desc_item; proto_tree *desc_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"xml:lang", -1, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "payload-type", xmpp_gtalk_session_desc_payload, MANY} }; desc_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "DESCRIPTION"); desc_tree = proto_item_add_subtree(desc_item, ett_xmpp_gtalk_session_desc); - display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_session_desc_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_session_desc_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *payload_item; proto_tree *payload_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}, {"id", -1, FALSE, TRUE, NULL, NULL}, {"name", -1, FALSE, TRUE, NULL, NULL}, @@ -141,17 +134,17 @@ xmpp_gtalk_session_desc_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pi payload_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "PAYLOAD-TYPE"); payload_tree = proto_item_add_subtree(payload_item, ett_xmpp_gtalk_session_desc_payload); - display_attrs(payload_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(payload_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(payload_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(payload_tree, element, pinfo, tvb, NULL, 0); } static void -xmpp_gtalk_session_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_session_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *cand_item; proto_tree *cand_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"name", -1, TRUE, TRUE, NULL, NULL}, {"address", -1, TRUE, FALSE, NULL, NULL}, {"port", -1, TRUE, FALSE, NULL, NULL}, @@ -169,24 +162,24 @@ xmpp_gtalk_session_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, ele cand_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "CANDIDATE"); cand_tree = proto_item_add_subtree(cand_item, ett_xmpp_gtalk_session_cand); - display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cand_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cand_tree, element, pinfo, tvb, NULL, 0); } static void -xmpp_gtalk_session_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_session_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *reason_item; proto_tree *reason_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"condition", -1, TRUE, TRUE, NULL, NULL}, {"text", -1, FALSE, FALSE, NULL, NULL} }; - element_t *condition; - element_t *text; - + xmpp_element_t *condition; + xmpp_element_t *text; + const gchar *reason_names[] = { "success", "busy", "cancel"}; reason_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "REASON"); @@ -194,74 +187,74 @@ xmpp_gtalk_session_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, e /*Looks for reason description.*/ - if((condition = steal_element_by_names(element, reason_names, array_length(reason_names)))!=NULL) + if((condition = xmpp_steal_element_by_names(element, reason_names, array_length(reason_names)))!=NULL) { - attr_t *fake_cond = ep_init_attr_t(condition->name, condition->offset, condition->length); + xmpp_attr_t *fake_cond = xmpp_ep_init_attr_t(condition->name, condition->offset, condition->length); g_hash_table_insert(element->attrs, "condition", fake_cond); - } + } - if((text = steal_element_by_name(element, "text"))!=NULL) + if((text = xmpp_steal_element_by_name(element, "text"))!=NULL) { - attr_t *fake_text = ep_init_attr_t(text->data?text->data->value:"", text->offset, text->length); + xmpp_attr_t *fake_text = xmpp_ep_init_attr_t(text->data?text->data->value:"", text->offset, text->length); g_hash_table_insert(element->attrs, "text", fake_text); } - display_attrs(reason_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(reason_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(reason_tree, tvb, pinfo, element); } void -xmpp_gtalk_jingleinfo_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_jingleinfo_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "stun", xmpp_gtalk_jingleinfo_stun, ONE}, {NAME, "relay", xmpp_gtalk_jingleinfo_relay, ONE} }; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(google:jingleinfo) "); - query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, + query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_jingleinfo_stun(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_jingleinfo_stun(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *stun_item; proto_tree *stun_tree; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "server", xmpp_gtalk_jingleinfo_server, MANY}, }; stun_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "STUN"); stun_tree = proto_item_add_subtree(stun_item, ett_xmpp_gtalk_jingleinfo_stun); - display_attrs(stun_tree, element, pinfo, tvb, NULL, 0); - display_elems(stun_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(stun_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(stun_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_jingleinfo_server(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_jingleinfo_server(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *serv_item; proto_tree *serv_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"host", -1, TRUE, TRUE, NULL, NULL}, {"udp", -1, TRUE, TRUE, NULL, NULL} }; @@ -269,46 +262,46 @@ xmpp_gtalk_jingleinfo_server(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo serv_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "SERVER"); serv_tree = proto_item_add_subtree(serv_item, ett_xmpp_gtalk_jingleinfo_server); - display_attrs(serv_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(serv_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(serv_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(serv_tree, element, pinfo, tvb, NULL, 0); } static void -xmpp_gtalk_jingleinfo_relay(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_jingleinfo_relay(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *relay_item; proto_tree *relay_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"token", -1, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "server", xmpp_gtalk_jingleinfo_relay_serv, ONE} }; - element_t *token; + xmpp_element_t *token; relay_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "RELAY"); relay_tree = proto_item_add_subtree(relay_item, ett_xmpp_gtalk_jingleinfo_relay); - if((token = steal_element_by_name(element, "token"))!=NULL) + if((token = xmpp_steal_element_by_name(element, "token"))!=NULL) { - attr_t *fake_token = ep_init_attr_t(token->data?token->data->value:"", token->offset, token->length); + xmpp_attr_t *fake_token = xmpp_ep_init_attr_t(token->data?token->data->value:"", token->offset, token->length); g_hash_table_insert(element->attrs, "token", fake_token); } - display_attrs(relay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(relay_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(relay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(relay_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_jingleinfo_relay_serv(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_jingleinfo_relay_serv(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *serv_item; proto_tree *serv_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"host", -1, TRUE, TRUE, NULL, NULL}, {"udp", -1, FALSE, TRUE, NULL, NULL}, {"tcp", -1, FALSE, TRUE, NULL, NULL}, @@ -318,17 +311,17 @@ xmpp_gtalk_jingleinfo_relay_serv(proto_tree* tree, tvbuff_t* tvb, packet_info* p serv_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "SERVER"); serv_tree = proto_item_add_subtree(serv_item, ett_xmpp_gtalk_jingleinfo_relay_serv); - display_attrs(serv_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(serv_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(serv_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(serv_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_gtalk_usersetting(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_usersetting(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *sett_item; proto_tree *sett_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; @@ -337,51 +330,51 @@ xmpp_gtalk_usersetting(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, elem sett_item = proto_tree_add_item(tree, hf_xmpp_gtalk_setting, tvb, element->offset, element->length, ENC_BIG_ENDIAN); sett_tree = proto_item_add_subtree(sett_item, ett_xmpp_gtalk_setting); - display_attrs(sett_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(sett_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); for(i = 0; i < g_list_length(element->elements); i++) { GList *elem_l = g_list_nth(element->elements,i); - element_t *elem = elem_l?elem_l->data:NULL; + xmpp_element_t *elem = elem_l?elem_l->data:NULL; if(elem) { - attr_t *val = get_attr(elem,"value"); + xmpp_attr_t *val = xmpp_get_attr(elem,"value"); proto_tree_add_text(sett_tree, tvb, elem->offset, elem->length, "%s [%s]",elem->name,val?val->value:""); } } } void -xmpp_gtalk_nosave_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) { +xmpp_gtalk_nosave_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "item", xmpp_gtalk_nosave_item, MANY}, }; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(google:nosave) "); - query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, + query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_nosave_item(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_nosave_item(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *item_item; proto_tree *item_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL,NULL}, {"jid", -1, TRUE, TRUE, NULL, NULL}, {"source", -1, FALSE, TRUE, NULL, NULL}, @@ -391,36 +384,36 @@ xmpp_gtalk_nosave_item(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, elem item_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "ITEM"); item_tree = proto_item_add_subtree(item_item, ett_xmpp_query_item); - display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(item_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(item_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_gtalk_nosave_x(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_nosave_x(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *x_item; proto_tree *x_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"value", -1, FALSE, TRUE, NULL, NULL} }; - x_item = proto_tree_add_item(tree, hf_xmpp_gtalk_nosave_x, tvb, element->offset, element->length, + x_item = proto_tree_add_item(tree, hf_xmpp_gtalk_nosave_x, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_gtalk_nosave_x); - display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(x_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(x_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_gtalk_mail_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"newer-than-time", -1, FALSE, TRUE, NULL, NULL}, {"newer-than-tid", -1, FALSE, TRUE, NULL, NULL}, @@ -433,17 +426,17 @@ xmpp_gtalk_mail_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, eleme ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *mail_item; proto_tree *mail_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}, {"result-time", -1, FALSE, TRUE, NULL, NULL}, {"total-matched", -1, FALSE, TRUE, NULL, NULL}, @@ -451,7 +444,7 @@ xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, ele {"url", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME,"mail-thread-info", xmpp_gtalk_mail_mail_info, MANY} }; @@ -460,17 +453,17 @@ xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, ele mail_item = proto_tree_add_item(tree, hf_xmpp_gtalk_mail_mailbox, tvb, element->offset, element->length, ENC_BIG_ENDIAN); mail_tree = proto_item_add_subtree(mail_item, ett_xmpp_gtalk_mail_mailbox); - display_attrs(mail_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(mail_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(mail_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(mail_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_mail_mail_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_mail_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *mail_info_item; proto_tree *mail_info_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"tid", -1, FALSE, FALSE, NULL, NULL}, {"participation", -1, FALSE, FALSE, NULL, NULL}, {"messages", -1, FALSE, TRUE, NULL, NULL}, @@ -480,56 +473,56 @@ xmpp_gtalk_mail_mail_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, e {"subject", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "senders", xmpp_gtalk_mail_senders, ONE}, {NAME, "snippet", xmpp_gtalk_mail_snippet, ONE}/*or MANY?*/ }; - element_t *labels, *subject; + xmpp_element_t *labels, *subject; mail_info_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "MAIL-THREAD-INFO"); mail_info_tree = proto_item_add_subtree(mail_info_item,ett_xmpp_gtalk_mail_mail_info); - if((labels = steal_element_by_name(element,"labels"))!=NULL) + if((labels = xmpp_steal_element_by_name(element,"labels"))!=NULL) { - attr_t *fake_labels = ep_init_attr_t(labels->data?labels->data->value:"",labels->offset, labels->length); + xmpp_attr_t *fake_labels = xmpp_ep_init_attr_t(labels->data?labels->data->value:"",labels->offset, labels->length); g_hash_table_insert(element->attrs, "labels", fake_labels); } - if((subject = steal_element_by_name(element,"subject"))!=NULL) + if((subject = xmpp_steal_element_by_name(element,"subject"))!=NULL) { - attr_t *fake_subject = ep_init_attr_t(subject->data?subject->data->value:"",subject->offset, subject->length); + xmpp_attr_t *fake_subject = xmpp_ep_init_attr_t(subject->data?subject->data->value:"",subject->offset, subject->length); g_hash_table_insert(element->attrs, "subject", fake_subject); } - display_attrs(mail_info_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(mail_info_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(mail_info_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(mail_info_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_mail_senders(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_senders(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *senders_item; proto_tree *senders_tree; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "sender", xmpp_gtalk_mail_sender, MANY} }; senders_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "SENDERS"); senders_tree = proto_item_add_subtree(senders_item, ett_xmpp_gtalk_mail_senders); - display_attrs(senders_tree, element, pinfo, tvb, NULL, 0); - display_elems(senders_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(senders_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(senders_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_mail_sender(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_sender(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *sender_item; proto_tree *sender_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"name", -1, FALSE, TRUE, NULL, NULL}, {"address", -1, FALSE, TRUE, NULL, NULL}, {"originator", -1, FALSE, TRUE, NULL, NULL}, @@ -539,34 +532,34 @@ xmpp_gtalk_mail_sender(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, elem sender_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "SENDER"); sender_tree = proto_item_add_subtree(sender_item, ett_xmpp_gtalk_mail_sender); - display_attrs(sender_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(sender_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(sender_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(sender_tree, element, pinfo, tvb, NULL, 0); } static void -xmpp_gtalk_mail_snippet(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_snippet(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_tree_add_text(tree, tvb, element->offset, element->length, "SNIPPET: %s",element->data?element->data->value:""); xmpp_unknown(tree, tvb, pinfo, element); } void -xmpp_gtalk_mail_new_mail(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_mail_new_mail(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { col_append_fstr(pinfo->cinfo, COL_INFO, "NEW-MAIL "); - proto_tree_add_item(tree, hf_xmpp_gtalk_mail_new_mail, tvb, element->offset, element->length, + proto_tree_add_item(tree, hf_xmpp_gtalk_mail_new_mail, tvb, element->offset, element->length, ENC_BIG_ENDIAN); xmpp_unknown(tree, tvb, pinfo, element); } void -xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"version", -1, FALSE, TRUE, NULL, NULL}, {"status-max", -1, FALSE, FALSE, NULL, NULL}, @@ -578,11 +571,11 @@ xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, ele {"invisible", -1, FALSE, TRUE, NULL, NULL}, }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "status-list", xmpp_gtalk_status_status_list, MANY} }; - element_t *status, *show, *invisible; + xmpp_element_t *status, *show, *invisible; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(google:shared-status) "); @@ -590,82 +583,82 @@ xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, ele ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - if((status = steal_element_by_name(element,"status"))!=NULL) + if((status = xmpp_steal_element_by_name(element,"status"))!=NULL) { - attr_t *fake_status = ep_init_attr_t(status->data?status->data->value:"",status->offset, status->length); + xmpp_attr_t *fake_status = xmpp_ep_init_attr_t(status->data?status->data->value:"",status->offset, status->length); g_hash_table_insert(element->attrs, "status", fake_status); } - if((show = steal_element_by_name(element,"show"))!=NULL) + if((show = xmpp_steal_element_by_name(element,"show"))!=NULL) { - attr_t *fake_show = ep_init_attr_t(show->data?show->data->value:"",show->offset, show->length); + xmpp_attr_t *fake_show = xmpp_ep_init_attr_t(show->data?show->data->value:"",show->offset, show->length); g_hash_table_insert(element->attrs, "show", fake_show); } - if((invisible = steal_element_by_name(element,"invisible"))!=NULL) + if((invisible = xmpp_steal_element_by_name(element,"invisible"))!=NULL) { - attr_t *value = get_attr(invisible, "value"); - attr_t *fake_invisible = ep_init_attr_t(value?value->value:"",invisible->offset, invisible->length); + xmpp_attr_t *value = xmpp_get_attr(invisible, "value"); + xmpp_attr_t *fake_invisible = xmpp_ep_init_attr_t(value?value->value:"",invisible->offset, invisible->length); g_hash_table_insert(element->attrs, "invisible", fake_invisible); } - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_status_status_list(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_status_status_list(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *list_item; proto_tree *list_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"show", -1, TRUE, TRUE, NULL, NULL} }; - element_t *status; + xmpp_element_t *status; list_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "STATUS LIST"); list_tree = proto_item_add_subtree(list_item, ett_xmpp_gtalk_status_status_list); - while((status = steal_element_by_name(element, "status"))!=NULL) + while((status = xmpp_steal_element_by_name(element, "status"))!=NULL) { proto_tree_add_text(list_tree, tvb, status->offset, status->length, "STATUS: %s",status->data?status->data->value:""); } - display_attrs(list_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(list_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(list_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(list_tree, element, pinfo, tvb, NULL, 0); } /*http://www.google.com/transport/p2p*/ void -xmpp_gtalk_transport_p2p(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_gtalk_transport_p2p(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *trans_item; proto_tree *trans_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "candidate", xmpp_gtalk_transport_p2p_cand, MANY} }; trans_item = proto_tree_add_item(tree, hf_xmpp_gtalk_transport_p2p, tvb, element->offset, element->length, ENC_BIG_ENDIAN); trans_tree = proto_item_add_subtree(trans_item, ett_xmpp_gtalk_transport_p2p); - display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_gtalk_transport_p2p_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) { +xmpp_gtalk_transport_p2p_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *cand_item; proto_tree *cand_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"name", -1, FALSE, TRUE, NULL, NULL}, {"generation", -1, FALSE, FALSE, NULL, NULL}, @@ -679,12 +672,12 @@ xmpp_gtalk_transport_p2p_cand(proto_tree* tree, tvbuff_t* tvb, packet_info* pinf {"port", -1, FALSE, TRUE, NULL, NULL}, {"address", -1, FALSE, TRUE, NULL, NULL} }; - + cand_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "CANDIDATE"); cand_tree = proto_item_add_subtree(cand_item, ett_xmpp_gtalk_transport_p2p_cand); - display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cand_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cand_tree, element, pinfo, tvb, NULL, 0); } /* diff --git a/epan/dissectors/packet-xmpp-gtalk.h b/epan/dissectors/packet-xmpp-gtalk.h index f699feb23f..cc708835b9 100644 --- a/epan/dissectors/packet-xmpp-gtalk.h +++ b/epan/dissectors/packet-xmpp-gtalk.h @@ -26,15 +26,15 @@ #ifndef XMPP_GTALK_H #define XMPP_GTALK_H -extern void xmpp_gtalk_session(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_jingleinfo_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_usersetting(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_nosave_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_nosave_x(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_mail_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_mail_new_mail(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_gtalk_transport_p2p(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +extern void xmpp_gtalk_session(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_jingleinfo_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_usersetting(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_nosave_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_nosave_x(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_mail_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_mail_mailbox(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_mail_new_mail(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_status_query(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_gtalk_transport_p2p(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); #endif /* XMPP_GTALK_H */ diff --git a/epan/dissectors/packet-xmpp-jingle.c b/epan/dissectors/packet-xmpp-jingle.c index d0c79997b4..8fec791c6e 100644 --- a/epan/dissectors/packet-xmpp-jingle.c +++ b/epan/dissectors/packet-xmpp-jingle.c @@ -44,13 +44,9 @@ #endif #include <glib.h> -#include <stdio.h> -#include <epan/proto.h> #include <epan/packet.h> -#include <epan/packet_info.h> -#include <epan/epan.h> -#include <epan/expert.h> + #include <epan/dissectors/packet-xml.h> #include <packet-xmpp.h> @@ -60,44 +56,44 @@ #include <packet-xmpp-gtalk.h> #include <packet-xmpp-other.h> -void xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); - -static void xmpp_jingle_content(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_content_description_rtp(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_payload_param(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_enc(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_enc_zrtp_hash(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_enc_crypto(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_bandwidth(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_desc_rtp_hdrext(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element); -static void xmpp_jingle_cont_trans_ice(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_ice_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_cont_trans_ice_remote_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_rtp_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jinglenodes_relay_stun_tracker(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_raw(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_raw_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_cont_trans_s5b(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_s5b_candidate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_s5b_activated(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_s5b_cand_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_s5b_cand_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_s5b_proxy_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_jingle_cont_trans_ibb(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); - -static void xmpp_jingle_file_transfer_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_offer(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_request(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_received(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_abort(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_jingle_file_transfer_checksum(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +void xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); + +static void xmpp_jingle_content(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_content_description_rtp(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_payload_param(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_enc(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_enc_zrtp_hash(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_enc_crypto(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_bandwidth(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_desc_rtp_hdrext(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_trans_ice(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_ice_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_trans_ice_remote_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_rtp_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jinglenodes_relay_stun_tracker(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_raw(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_raw_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_cont_trans_s5b(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_s5b_candidate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_s5b_activated(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_s5b_cand_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_s5b_cand_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_s5b_proxy_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_jingle_cont_trans_ibb(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); + +static void xmpp_jingle_file_transfer_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_offer(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_request(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_received(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_abort(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_jingle_file_transfer_checksum(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); /*XEP-0166: Jingle urn:xmpp:jingle:1*/ void -xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *jingle_item; proto_tree *jingle_tree; @@ -110,90 +106,90 @@ xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *elem "transport-accept", "transport-info", "transport-reject", "transport-replace" }; - array_t *action_array = ep_init_array_t(action_enums,array_length(action_enums)); - array_t *rtp_info_array = ep_init_array_t(rtp_info_msgs, array_length(rtp_info_msgs)); + xmpp_array_t *action_array = xmpp_ep_init_array_t(action_enums,array_length(action_enums)); + xmpp_array_t *rtp_info_array = xmpp_ep_init_array_t(rtp_info_msgs, array_length(rtp_info_msgs)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, - {"action", hf_xmpp_jingle_action, TRUE, TRUE, val_enum_list, action_array}, + {"action", hf_xmpp_jingle_action, TRUE, TRUE, xmpp_val_enum_list, action_array}, {"sid", hf_xmpp_jingle_sid, TRUE, FALSE, NULL, NULL}, {"initiator", hf_xmpp_jingle_initiator, FALSE, FALSE, NULL, NULL}, {"responder", hf_xmpp_jingle_responder, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "content", xmpp_jingle_content, MANY}, {NAME, "reason", xmpp_jingle_reason, MANY}, {NAMES, rtp_info_array, xmpp_jingle_rtp_info, ONE}, {NAME, "conference-info", xmpp_conferece_info_advert, ONE} }; - attr_t *action = get_attr(element,"action"); + xmpp_attr_t *action = xmpp_get_attr(element,"action"); col_append_fstr(pinfo->cinfo, COL_INFO, "JINGLE(%s) ", action?action->value:""); jingle_item = proto_tree_add_item(tree, hf_xmpp_jingle, tvb, element->offset, element->length, ENC_BIG_ENDIAN); jingle_tree = proto_item_add_subtree(jingle_item, ett_xmpp_jingle); - display_attrs(jingle_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(jingle_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(jingle_item, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(jingle_item, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_content(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_content(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *content_item; proto_tree *content_tree; const gchar *creator_enums[] = {"initiator","responder"}; - array_t *creator_enums_array = ep_init_array_t(creator_enums,array_length(creator_enums)); + xmpp_array_t *creator_enums_array = xmpp_ep_init_array_t(creator_enums,array_length(creator_enums)); - attr_info attrs_info[] = { - {"creator", hf_xmpp_jingle_content_creator, TRUE, FALSE, val_enum_list, creator_enums_array}, + xmpp_attr_info attrs_info[] = { + {"creator", hf_xmpp_jingle_content_creator, TRUE, FALSE, xmpp_val_enum_list, creator_enums_array}, {"name", hf_xmpp_jingle_content_name, TRUE, TRUE, NULL, NULL}, {"disposition", hf_xmpp_jingle_content_disposition, FALSE, FALSE, NULL, NULL}, {"senders", hf_xmpp_jingle_content_senders, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info [] = { - {NAME_AND_ATTR, name_attr_struct("description", "xmlns", "urn:xmpp:jingle:apps:rtp:1"), xmpp_jingle_content_description_rtp, MANY}, - {NAME_AND_ATTR, name_attr_struct("description", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_desc, MANY}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:ice-udp:1"), xmpp_jingle_cont_trans_ice, MANY}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:raw-udp:1"), xmpp_jingle_cont_trans_raw, MANY}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:s5b:1"), xmpp_jingle_cont_trans_s5b, MANY}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:ibb:1"), xmpp_jingle_cont_trans_ibb, MANY}, - {NAME_AND_ATTR, name_attr_struct("transport", "xmlns", "http://www.google.com/transport/p2p"), xmpp_gtalk_transport_p2p, MANY}, - {NAME_AND_ATTR, name_attr_struct("received", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_received, MANY}, - {NAME_AND_ATTR, name_attr_struct("abort", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_abort, MANY}, - {NAME_AND_ATTR, name_attr_struct("checksum", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_checksum, MANY}, - {NAME_AND_ATTR, name_attr_struct("inputevt", "xmlns","http://jitsi.org/protocol/inputevt"), xmpp_jitsi_inputevt, ONE}, + xmpp_elem_info elems_info [] = { + {NAME_AND_ATTR, xmpp_name_attr_struct("description", "xmlns", "urn:xmpp:jingle:apps:rtp:1"), xmpp_jingle_content_description_rtp, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("description", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_desc, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:ice-udp:1"), xmpp_jingle_cont_trans_ice, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:raw-udp:1"), xmpp_jingle_cont_trans_raw, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:s5b:1"), xmpp_jingle_cont_trans_s5b, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "urn:xmpp:jingle:transports:ibb:1"), xmpp_jingle_cont_trans_ibb, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("transport", "xmlns", "http://www.google.com/transport/p2p"), xmpp_gtalk_transport_p2p, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("received", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_received, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("abort", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_abort, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("checksum", "xmlns", "urn:xmpp:jingle:apps:file-transfer:3"), xmpp_jingle_file_transfer_checksum, MANY}, + {NAME_AND_ATTR, xmpp_name_attr_struct("inputevt", "xmlns","http://jitsi.org/protocol/inputevt"), xmpp_jitsi_inputevt, ONE}, }; content_item = proto_tree_add_item(tree, hf_xmpp_jingle_content, tvb, element->offset, element->length, ENC_BIG_ENDIAN); content_tree = proto_item_add_subtree(content_item, ett_xmpp_jingle_content); - display_attrs(content_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(content_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(content_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(content_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *reason_item; proto_tree *reason_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"condition", hf_xmpp_jingle_reason_condition, TRUE, TRUE, NULL, NULL}, {"sid", -1, FALSE, TRUE, NULL, NULL}, {"rtp-error", -1, FALSE, TRUE, NULL, NULL}, {"text", hf_xmpp_jingle_reason_text, FALSE, FALSE, NULL, NULL} }; - element_t *condition; /*1?*/ - element_t *text; /*0-1*/ - element_t *rtp_error; + xmpp_element_t *condition; /*1?*/ + xmpp_element_t *text; /*0-1*/ + xmpp_element_t *rtp_error; const gchar *reason_names[] = { "success", "busy", "failed-application", "cancel", "connectivity-error", "decline", "expired", "failed-transport", "general-error", "gone", "incompatible-parameters", @@ -207,81 +203,81 @@ xmpp_jingle_reason(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_ /*Looks for reason description. "alternative-session" may contain "sid" element Elements are changed into attribute*/ - if((condition = steal_element_by_names(element, reason_names, array_length(reason_names)))!=NULL) + if((condition = xmpp_steal_element_by_names(element, reason_names, array_length(reason_names)))!=NULL) { - attr_t *fake_cond = ep_init_attr_t(condition->name, condition->offset, condition->length); + xmpp_attr_t *fake_cond = xmpp_ep_init_attr_t(condition->name, condition->offset, condition->length); g_hash_table_insert(element->attrs, "condition", fake_cond); - } else if((condition = steal_element_by_name(element, "alternative-session"))!=NULL) + } else if((condition = xmpp_steal_element_by_name(element, "alternative-session"))!=NULL) { - attr_t *fake_cond,*fake_alter_sid; - element_t *sid; + xmpp_attr_t *fake_cond,*fake_alter_sid; + xmpp_element_t *sid; - fake_cond = ep_init_attr_t(condition->name, condition->offset, condition->length); + fake_cond = xmpp_ep_init_attr_t(condition->name, condition->offset, condition->length); g_hash_table_insert(element->attrs, "condition", fake_cond); - if((sid = steal_element_by_name(condition, "sid"))!=NULL) + if((sid = xmpp_steal_element_by_name(condition, "sid"))!=NULL) { - fake_alter_sid = ep_init_attr_t(sid->name, sid->offset, sid->length); + fake_alter_sid = xmpp_ep_init_attr_t(sid->name, sid->offset, sid->length); g_hash_table_insert(element->attrs, "sid", fake_alter_sid); } } - if((rtp_error = steal_element_by_names(element, rtp_error_names, array_length(rtp_error_names)))!=NULL) + if((rtp_error = xmpp_steal_element_by_names(element, rtp_error_names, array_length(rtp_error_names)))!=NULL) { - attr_t *fake_rtp_error = ep_init_attr_t(rtp_error->name, rtp_error->offset, rtp_error->length); + xmpp_attr_t *fake_rtp_error = xmpp_ep_init_attr_t(rtp_error->name, rtp_error->offset, rtp_error->length); g_hash_table_insert(element->attrs, "rtp-error", fake_rtp_error); } - if((text = steal_element_by_name(element, "text"))!=NULL) + if((text = xmpp_steal_element_by_name(element, "text"))!=NULL) { - attr_t *fake_text = ep_init_attr_t(text->data?text->data->value:"", text->offset, text->length); + xmpp_attr_t *fake_text = xmpp_ep_init_attr_t(text->data?text->data->value:"", text->offset, text->length); g_hash_table_insert(element->attrs, "text", fake_text); } - display_attrs(reason_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(reason_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(reason_tree, tvb, pinfo, element); } /*XEP-0167: Jingle RTP Sessions urn:xmpp:jingle:apps:rtp:1*/ static void -xmpp_jingle_content_description_rtp(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_content_description_rtp(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *desc_item; proto_tree *desc_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"media", hf_xmpp_jingle_content_description_media, TRUE, TRUE, NULL, NULL}, {"ssrc", hf_xmpp_jingle_content_description_ssrc , FALSE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "payload-type", xmpp_jingle_cont_desc_rtp_payload, MANY}, {NAME, "bandwidth", xmpp_jingle_cont_desc_rtp_bandwidth, ONE}, {NAME, "encryption", xmpp_jingle_cont_desc_rtp_enc, ONE}, {NAME, "rtp-hdrext", xmpp_jingle_cont_desc_rtp_hdrext, MANY}, {NAME, "zrtp-hash", xmpp_jingle_cont_desc_rtp_enc_zrtp_hash, MANY}/*IMHO it shouldn't appear in description*/ - + }; desc_item = proto_tree_add_item(tree, hf_xmpp_jingle_content_description, tvb, element->offset, element->length, ENC_BIG_ENDIAN); desc_tree = proto_item_add_subtree(desc_item, ett_xmpp_jingle_content_description); - display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *payload_item; proto_tree *payload_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"id", hf_xmpp_jingle_cont_desc_payload_id, TRUE, TRUE, NULL, NULL}, {"channels", hf_xmpp_jingle_cont_desc_payload_channels, FALSE, FALSE, NULL, NULL}, @@ -291,7 +287,7 @@ xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* {"ptime", hf_xmpp_jingle_cont_desc_payload_ptime, FALSE, FALSE, NULL, NULL} }; - elem_info elems_info [] = + xmpp_elem_info elems_info [] = { {NAME, "parameter", xmpp_jingle_cont_desc_rtp_payload_param, MANY} }; @@ -299,28 +295,28 @@ xmpp_jingle_cont_desc_rtp_payload(proto_tree* tree, tvbuff_t* tvb, packet_info* payload_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_desc_payload, tvb, element->offset, element->length, ENC_BIG_ENDIAN); payload_tree = proto_item_add_subtree(payload_item, ett_xmpp_jingle_cont_desc_payload); - display_attrs(payload_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(payload_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(payload_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(payload_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_cont_desc_rtp_payload_param(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_payload_param(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *param_item; proto_tree *param_tree; proto_item *parent_item; - attr_t *name, *value; + xmpp_attr_t *name, *value; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"name", hf_xmpp_jingle_cont_desc_payload_param_name, TRUE, TRUE, NULL, NULL}, {"value", hf_xmpp_jingle_cont_desc_payload_param_value, TRUE, TRUE, NULL, NULL} }; - name = get_attr(element, "name"); - value = get_attr(element, "value"); + name = xmpp_get_attr(element, "name"); + value = xmpp_get_attr(element, "value"); if(name && value) { @@ -340,19 +336,19 @@ xmpp_jingle_cont_desc_rtp_payload_param(proto_tree* tree, tvbuff_t* tvb, packet_ param_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_desc_payload_param, tvb, element->offset, element->length, ENC_BIG_ENDIAN); param_tree = proto_item_add_subtree(param_item, ett_xmpp_jingle_cont_desc_payload_param); - display_attrs(param_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(param_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(param_tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_desc_rtp_enc(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_enc(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *enc_item; proto_tree *enc_tree; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "zrtp-hash", xmpp_jingle_cont_desc_rtp_enc_zrtp_hash, MANY}, {NAME, "crypto", xmpp_jingle_cont_desc_rtp_enc_crypto, MANY} }; @@ -360,18 +356,18 @@ xmpp_jingle_cont_desc_rtp_enc(proto_tree* tree, tvbuff_t* tvb, packet_info *pinf enc_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_desc_enc, tvb, element->offset, element->length, ENC_BIG_ENDIAN); enc_tree = proto_item_add_subtree(enc_item, ett_xmpp_jingle_cont_desc_enc); - display_attrs(enc_tree, element, pinfo, tvb, NULL, 0); - display_elems(enc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(enc_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(enc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } /*urn:xmpp:jingle:apps:rtp:zrtp:1*/ static void -xmpp_jingle_cont_desc_rtp_enc_zrtp_hash(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_enc_zrtp_hash(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *zrtp_hash_item; proto_tree *zrtp_hash_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"version", -1, TRUE, TRUE,NULL,NULL}, {"hash", -1, TRUE, FALSE, NULL, NULL} @@ -382,22 +378,22 @@ xmpp_jingle_cont_desc_rtp_enc_zrtp_hash(proto_tree* tree, tvbuff_t* tvb, packet_ if(element->data) { - attr_t *fake_hash = ep_init_attr_t(element->data->value, element->offset, element->length); + xmpp_attr_t *fake_hash = xmpp_ep_init_attr_t(element->data->value, element->offset, element->length); g_hash_table_insert(element->attrs, "hash", fake_hash); } - display_attrs(zrtp_hash_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(zrtp_hash_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(zrtp_hash_tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_desc_rtp_enc_crypto(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_enc_crypto(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *crypto_item; proto_tree *crypto_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"crypto-suite", -1, TRUE, TRUE, NULL, NULL}, {"key-params", -1, TRUE, FALSE,NULL,NULL}, {"session-params", -1, FALSE, TRUE, NULL, NULL}, @@ -408,18 +404,18 @@ xmpp_jingle_cont_desc_rtp_enc_crypto(proto_tree* tree, tvbuff_t* tvb, packet_inf crypto_tree = proto_item_add_subtree(crypto_item, ett_xmpp_jingle_cont_desc_enc_crypto); - display_attrs(crypto_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(crypto_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(crypto_tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_desc_rtp_bandwidth(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_bandwidth(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *bandwidth_item; proto_tree *bandwidth_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"type", -1, TRUE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; @@ -429,61 +425,61 @@ xmpp_jingle_cont_desc_rtp_bandwidth(proto_tree* tree, tvbuff_t* tvb, packet_info if(element->data) { - attr_t *fake_value = ep_init_attr_t(element->data->value, element->offset, element->length); + xmpp_attr_t *fake_value = xmpp_ep_init_attr_t(element->data->value, element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_value); } - display_attrs(bandwidth_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(bandwidth_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(bandwidth_tree, tvb, pinfo, element); } /*urn:xmpp:jingle:apps:rtp:rtp-hdrext:0*/ static void -xmpp_jingle_cont_desc_rtp_hdrext(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, element_t* element) +xmpp_jingle_cont_desc_rtp_hdrext(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, xmpp_element_t* element) { proto_item *rtp_hdr_item; proto_tree *rtp_hdr_tree; const gchar *senders[] = {"both", "initiator", "responder"}; - array_t *senders_enums = ep_init_array_t(senders, 3); + xmpp_array_t *senders_enums = xmpp_ep_init_array_t(senders, 3); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"id", -1, TRUE, FALSE, NULL, NULL}, {"uri", -1, TRUE, TRUE, NULL, NULL}, - {"senders", -1, FALSE, TRUE, val_enum_list, senders_enums}, + {"senders", -1, FALSE, TRUE, xmpp_val_enum_list, senders_enums}, {"parameter", -1, FALSE, TRUE, NULL, NULL} }; - element_t *parameter; + xmpp_element_t *parameter; rtp_hdr_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_desc_rtp_hdr, tvb, element->offset, element->length, ENC_BIG_ENDIAN); rtp_hdr_tree = proto_item_add_subtree(rtp_hdr_item, ett_xmpp_jingle_cont_desc_rtp_hdr); - if((parameter = steal_element_by_name(element, "parameter"))!=NULL) + if((parameter = xmpp_steal_element_by_name(element, "parameter"))!=NULL) { - attr_t *name = get_attr(element, "name"); - attr_t *fake_attr = ep_init_attr_t(name?name->value:"", parameter->offset, parameter->length); + xmpp_attr_t *name = xmpp_get_attr(element, "name"); + xmpp_attr_t *fake_attr = xmpp_ep_init_attr_t(name?name->value:"", parameter->offset, parameter->length); g_hash_table_insert(element->attrs, "parameter", fake_attr); } - display_attrs(rtp_hdr_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(rtp_hdr_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(rtp_hdr_tree, tvb, pinfo, element); } /*urn:xmpp:jingle:apps:rtp:info:1*/ static void -xmpp_jingle_rtp_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_rtp_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *rtp_info_item; proto_tree *rtp_info_tree; const gchar *creator[] = {"initiator","responder"}; - array_t *creator_enums = ep_init_array_t(creator, array_length(creator)); + xmpp_array_t *creator_enums = xmpp_ep_init_array_t(creator, array_length(creator)); - attr_info mute_attrs_info[] = { - {"creator", -1, TRUE, TRUE, val_enum_list, creator_enums}, + xmpp_attr_info mute_attrs_info[] = { + {"creator", -1, TRUE, TRUE, xmpp_val_enum_list, creator_enums}, {"name", -1, TRUE, TRUE, NULL, NULL} }; @@ -491,25 +487,25 @@ xmpp_jingle_rtp_info(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, elemen rtp_info_tree = proto_item_add_subtree(rtp_info_item, ett_xmpp_jingle_rtp_info); if(strcmp("mute", element->name) == 0 || strcmp("unmute", element->name) == 0) - display_attrs(rtp_info_tree, element, pinfo, tvb, mute_attrs_info, array_length(mute_attrs_info)); + xmpp_display_attrs(rtp_info_tree, element, pinfo, tvb, mute_attrs_info, array_length(mute_attrs_info)); xmpp_unknown(rtp_info_tree, tvb, pinfo, element); } /*XEP-0176: Jingle ICE-UDP Transport Method urn:xmpp:jingle:transports:ice-udp:1*/ static void -xmpp_jingle_cont_trans_ice(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_ice(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *trans_item; proto_tree *trans_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}, {"pwd", hf_xmpp_jingle_cont_trans_pwd, FALSE, FALSE, NULL, NULL}, {"ufrag", hf_xmpp_jingle_cont_trans_ufrag, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "candidate", xmpp_jingle_cont_trans_ice_candidate, MANY}, {NAME, "remote-candidate", xmpp_jingle_cont_trans_ice_remote_candidate, ONE} }; @@ -517,21 +513,21 @@ xmpp_jingle_cont_trans_ice(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, trans_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans, tvb, element->offset, element->length, ENC_BIG_ENDIAN); trans_tree = proto_item_add_subtree(trans_item, ett_xmpp_jingle_cont_trans); - display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_cont_trans_ice_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_cont_trans_ice_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *cand_item; proto_tree *cand_tree; const gchar *type_enums[] = {"host", "prflx", "relay", "srflx"}; - array_t *type_enums_array = ep_init_array_t(type_enums,array_length(type_enums)); + xmpp_array_t *type_enums_array = xmpp_ep_init_array_t(type_enums,array_length(type_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"component", -1, TRUE, FALSE, NULL, NULL}, {"foundation", -1, TRUE, FALSE, NULL, NULL}, @@ -544,24 +540,24 @@ xmpp_jingle_cont_trans_ice_candidate(proto_tree* tree, tvbuff_t* tvb, packet_inf {"protocol", -1, TRUE, TRUE, NULL, NULL}, {"rel-addr", -1, FALSE, FALSE, NULL, NULL}, {"rel-port", -1, FALSE, FALSE, NULL, NULL}, - {"type", -1, TRUE, TRUE, val_enum_list, type_enums_array} + {"type", -1, TRUE, TRUE, xmpp_val_enum_list, type_enums_array} }; cand_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_cand, tvb, element->offset, element->length, ENC_BIG_ENDIAN); cand_tree = proto_item_add_subtree(cand_item, ett_xmpp_jingle_cont_trans_cand); - display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(cand_tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_trans_ice_remote_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_cont_trans_ice_remote_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *remote_cand_item; proto_tree *remote_cand_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"component", -1, TRUE, FALSE, NULL, NULL}, {"ip", -1, TRUE, FALSE, NULL, NULL}, {"port", -1, TRUE, FALSE, NULL, NULL} @@ -570,73 +566,73 @@ xmpp_jingle_cont_trans_ice_remote_candidate(proto_tree* tree, tvbuff_t* tvb, pac remote_cand_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_rem_cand, tvb, element->offset, element->length, ENC_BIG_ENDIAN); remote_cand_tree = proto_item_add_subtree(remote_cand_item, ett_xmpp_jingle_cont_trans_rem_cand); - display_attrs(remote_cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(remote_cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(remote_cand_tree, tvb, pinfo, element); } /*XEP-0177: Jingle Raw UDP Transport Method urn:xmpp:jingle:transports:raw-udp:1*/ static void -xmpp_jingle_cont_trans_raw(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_raw(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *trans_item; proto_tree *trans_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "candidate", xmpp_jingle_cont_trans_raw_candidate, MANY} }; trans_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans, tvb, element->offset, element->length, ENC_BIG_ENDIAN); trans_tree = proto_item_add_subtree(trans_item, ett_xmpp_jingle_cont_trans); - display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_cont_trans_raw_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_cont_trans_raw_candidate(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *cand_item; proto_tree *cand_tree; const gchar *type_enums[] = {"host", "prflx", "relay", "srflx"}; - array_t *type_enums_array = ep_init_array_t(type_enums,array_length(type_enums)); + xmpp_array_t *type_enums_array = xmpp_ep_init_array_t(type_enums,array_length(type_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"component", -1, TRUE, FALSE, NULL, NULL}, {"generation", -1, TRUE, FALSE, NULL, NULL}, {"id", -1, TRUE, FALSE, NULL, NULL}, {"ip", -1, TRUE, TRUE, NULL, NULL}, {"port", -1, TRUE, TRUE, NULL, NULL}, - {"type", -1, TRUE, TRUE, val_enum_list, type_enums_array} + {"type", -1, TRUE, TRUE, xmpp_val_enum_list, type_enums_array} }; cand_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_cand, tvb, element->offset, element->length, ENC_BIG_ENDIAN); cand_tree = proto_item_add_subtree(cand_item, ett_xmpp_jingle_cont_trans_cand); - display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cand_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cand_tree, element, pinfo, tvb, NULL, 0); } /*XEP-0260: Jingle SOCKS5 Bytestreams Transport Method urn:xmpp:jingle:transports:s5b:1*/ static void -xmpp_jingle_cont_trans_s5b(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *trans_item; proto_tree *trans_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}, {"mode", -1, FALSE, TRUE, NULL, NULL}, {"sid", -1, FALSE, TRUE, NULL, NULL}, }; - elem_info elems_info [] = { + xmpp_elem_info elems_info [] = { {NAME, "candidate", xmpp_jingle_cont_trans_s5b_candidate, MANY}, {NAME, "activated", xmpp_jingle_cont_trans_s5b_activated, ONE}, {NAME, "candidate-used", xmpp_jingle_cont_trans_s5b_cand_used, ONE}, @@ -647,52 +643,52 @@ xmpp_jingle_cont_trans_s5b(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, trans_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans, tvb, element->offset, element->length, ENC_BIG_ENDIAN); trans_tree = proto_item_add_subtree(trans_item, ett_xmpp_jingle_cont_trans); - display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(trans_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_cont_trans_s5b_candidate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b_candidate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *cand_item; proto_tree *cand_tree; const gchar * type_enums[] = {"assisted", "direct", "proxy", "tunnel"}; - array_t *type_enums_array = ep_init_array_t(type_enums, array_length(type_enums)); + xmpp_array_t *type_enums_array = xmpp_ep_init_array_t(type_enums, array_length(type_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"cid", -1, TRUE, TRUE, NULL, NULL}, {"jid", -1, TRUE, TRUE, NULL, NULL}, {"port", -1, FALSE, TRUE, NULL, NULL}, {"priority", -1, TRUE, TRUE, NULL, NULL}, - {"type", -1, TRUE, TRUE, val_enum_list, type_enums_array} + {"type", -1, TRUE, TRUE, xmpp_val_enum_list, type_enums_array} }; cand_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_cand, tvb, element->offset, element->length, ENC_BIG_ENDIAN); cand_tree = proto_item_add_subtree(cand_item, ett_xmpp_jingle_cont_trans_cand); - display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(cand_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(cand_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(cand_tree, element, pinfo, tvb, NULL, 0); } static void -xmpp_jingle_cont_trans_s5b_activated(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b_activated(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *activated_item; - attr_t *cid = get_attr(element, "cid"); + xmpp_attr_t *cid = xmpp_get_attr(element, "cid"); activated_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_activated, tvb, element->offset, element->length, ENC_BIG_ENDIAN); proto_item_append_text(activated_item, " [cid=\"%s\"]",cid?cid->value:""); - + xmpp_unknown(tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_trans_s5b_cand_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b_cand_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *cand_used_item; - attr_t *cid = get_attr(element, "cid"); + xmpp_attr_t *cid = xmpp_get_attr(element, "cid"); cand_used_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_candidate_used, tvb, element->offset, element->length, ENC_BIG_ENDIAN); proto_item_append_text(cand_used_item, " [cid=\"%s\"]",cid?cid->value:""); @@ -701,14 +697,14 @@ xmpp_jingle_cont_trans_s5b_cand_used(proto_tree *tree, tvbuff_t *tvb, packet_inf } static void -xmpp_jingle_cont_trans_s5b_cand_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b_cand_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_candidate_error, tvb, element->offset, element->length, ENC_BIG_ENDIAN); xmpp_unknown(tree, tvb, pinfo, element); } static void -xmpp_jingle_cont_trans_s5b_proxy_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jingle_cont_trans_s5b_proxy_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans_proxy_error, tvb, element->offset, element->length, ENC_BIG_ENDIAN); xmpp_unknown(tree, tvb, pinfo, element); @@ -716,11 +712,11 @@ xmpp_jingle_cont_trans_s5b_proxy_error(proto_tree *tree, tvbuff_t *tvb, packet_i /*XEP-0261: Jingle In-Band Bytestreams Transport Method urn:xmpp:jingle:transports:ibb:1*/ static void -xmpp_jingle_cont_trans_ibb(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) { +xmpp_jingle_cont_trans_ibb(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *trans_item; proto_tree *trans_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, TRUE, NULL, NULL}, {"block-size", -1, TRUE, TRUE, NULL, NULL}, {"sid", -1, TRUE, TRUE, NULL, NULL}, @@ -730,22 +726,22 @@ xmpp_jingle_cont_trans_ibb(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, trans_item = proto_tree_add_item(tree, hf_xmpp_jingle_cont_trans, tvb, element->offset, element->length, ENC_BIG_ENDIAN); trans_tree = proto_item_add_subtree(trans_item, ett_xmpp_jingle_cont_trans); - display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(trans_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(trans_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(trans_tree, element, pinfo, tvb, NULL, 0); } /*XEP-0234: Jingle File Transfer urn:xmpp:jingle:apps:file-transfer:3*/ static void -xmpp_jingle_file_transfer_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *desc_item; proto_tree *desc_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "offer", xmpp_jingle_file_transfer_offer, ONE}, {NAME, "request", xmpp_jingle_file_transfer_request, ONE} }; @@ -753,134 +749,134 @@ xmpp_jingle_file_transfer_desc(proto_tree* tree, tvbuff_t* tvb, packet_info* pin desc_item = proto_tree_add_item(tree, hf_xmpp_jingle_content_description, tvb, element->offset, element->length, ENC_BIG_ENDIAN); desc_tree = proto_item_add_subtree(desc_item, ett_xmpp_jingle_content_description); - display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(desc_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(desc_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_offer(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_offer(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *offer_item; proto_tree *offer_tree; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "file", xmpp_jingle_file_transfer_file, MANY}, }; offer_item = proto_tree_add_item(tree, hf_xmpp_jingle_file_transfer_offer, tvb, element->offset, element->length, ENC_BIG_ENDIAN); offer_tree = proto_item_add_subtree(offer_item, ett_xmpp_jingle_file_transfer_offer); - display_attrs(offer_tree, element, pinfo, tvb, NULL, 0); - display_elems(offer_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(offer_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(offer_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_request(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_request(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *request_item; proto_tree *request_tree; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "file", xmpp_jingle_file_transfer_file, MANY}, }; request_item = proto_tree_add_item(tree, hf_xmpp_jingle_file_transfer_request, tvb, element->offset, element->length, ENC_BIG_ENDIAN); request_tree = proto_item_add_subtree(request_item, ett_xmpp_jingle_file_transfer_request); - display_attrs(request_tree, element, pinfo, tvb, NULL, 0); - display_elems(request_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(request_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(request_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_received(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_received(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *received_item; proto_tree *received_tree; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "file", xmpp_jingle_file_transfer_file, MANY}, }; received_item = proto_tree_add_item(tree, hf_xmpp_jingle_file_transfer_received, tvb, element->offset, element->length, ENC_BIG_ENDIAN); received_tree = proto_item_add_subtree(received_item, ett_xmpp_jingle_file_transfer_received); - display_attrs(received_tree, element, pinfo, tvb, NULL, 0); - display_elems(received_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(received_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(received_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_abort(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_abort(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *abort_item; proto_tree *abort_tree; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "file", xmpp_jingle_file_transfer_file, MANY}, }; abort_item = proto_tree_add_item(tree, hf_xmpp_jingle_file_transfer_abort, tvb, element->offset, element->length, ENC_BIG_ENDIAN); abort_tree = proto_item_add_subtree(abort_item, ett_xmpp_jingle_file_transfer_abort); - display_attrs(abort_tree, element, pinfo, tvb, NULL, 0); - display_elems(abort_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(abort_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(abort_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_checksum(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_checksum(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *checksum_item; proto_tree *checksum_tree; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "file", xmpp_jingle_file_transfer_file, MANY}, }; checksum_item = proto_tree_add_item(tree, hf_xmpp_jingle_file_transfer_checksum, tvb, element->offset, element->length, ENC_BIG_ENDIAN); checksum_tree = proto_item_add_subtree(checksum_item, ett_xmpp_jingle_file_transfer_checksum); - display_attrs(checksum_tree, element, pinfo, tvb, NULL, 0); - display_elems(checksum_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(checksum_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_elems(checksum_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jingle_file_transfer_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_jingle_file_transfer_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *file_item; proto_tree *file_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"name", -1, FALSE, TRUE, NULL, NULL}, {"size", -1, FALSE, TRUE, NULL, NULL}, {"date", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "hashes", xmpp_hashes, ONE} }; file_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "FILE"); file_tree = proto_item_add_subtree(file_item, ett_xmpp_jingle_file_transfer_file); - change_elem_to_attrib("name", "name", element, transform_func_cdata); - change_elem_to_attrib("size", "size", element, transform_func_cdata); - change_elem_to_attrib("date", "date", element, transform_func_cdata); + xmpp_change_elem_to_attrib("name", "name", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("size", "size", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("date", "date", element, xmpp_transform_func_cdata); - display_attrs(file_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(file_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(file_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(file_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } /*XEP-0278: Jingle Relay Nodes http://jabber.org/protocol/jinglenodes*/ void -xmpp_jinglenodes_services(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jinglenodes_services(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *services_item; proto_tree *services_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "relay", xmpp_jinglenodes_relay_stun_tracker, ONE}, {NAME, "tracker", xmpp_jinglenodes_relay_stun_tracker, ONE}, {NAME, "stun", xmpp_jinglenodes_relay_stun_tracker, ONE}, @@ -891,17 +887,17 @@ xmpp_jinglenodes_services(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, e services_item = proto_tree_add_item(tree, hf_xmpp_services, tvb, element->offset, element->length, ENC_BIG_ENDIAN); services_tree = proto_item_add_subtree(services_item, ett_xmpp_services); - display_attrs(services_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(services_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(services_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(services_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jinglenodes_relay_stun_tracker(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jinglenodes_relay_stun_tracker(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *relay_item; proto_tree *relay_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"address", -1, TRUE, TRUE, NULL, NULL}, {"port", -1, FALSE, TRUE, NULL, NULL}, {"policy", -1, TRUE, TRUE, NULL, NULL}, @@ -911,17 +907,17 @@ xmpp_jinglenodes_relay_stun_tracker(proto_tree *tree, tvbuff_t *tvb, packet_info relay_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "%s", element->name); relay_tree = proto_item_add_subtree(relay_item, ett_xmpp_services_relay); - display_attrs(relay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(relay_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(relay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(relay_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_jinglenodes_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jinglenodes_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *channel_item; proto_tree *channel_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"id", -1, FALSE, FALSE, NULL, NULL}, {"host", -1, FALSE, TRUE, NULL, NULL}, @@ -935,8 +931,8 @@ xmpp_jinglenodes_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, el channel_item = proto_tree_add_item(tree, hf_xmpp_channel, tvb, element->offset, element->length, ENC_BIG_ENDIAN); channel_tree = proto_item_add_subtree(channel_item, ett_xmpp_channel); - display_attrs(channel_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(channel_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(channel_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(channel_tree, element, pinfo, tvb, NULL, 0); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-xmpp-jingle.h b/epan/dissectors/packet-xmpp-jingle.h index e2ef77b806..3edc872b25 100644 --- a/epan/dissectors/packet-xmpp-jingle.h +++ b/epan/dissectors/packet-xmpp-jingle.h @@ -26,9 +26,9 @@ #ifndef XMPP_JINGLE_H #define XMPP_JINGLE_H -extern void xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_jinglenodes_services(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_jinglenodes_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_jingle(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_jinglenodes_services(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_jinglenodes_channel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); #endif /* XMPP_JINGLE_H */ diff --git a/epan/dissectors/packet-xmpp-other.c b/epan/dissectors/packet-xmpp-other.c index 9e1a24d012..110bf91c8b 100644 --- a/epan/dissectors/packet-xmpp-other.c +++ b/epan/dissectors/packet-xmpp-other.c @@ -28,62 +28,56 @@ #include "config.h" #endif -#include<stdio.h> -#include<string.h> +#include <string.h> + #include <glib.h> #include <epan/packet.h> -#include <epan/proto.h> -#include <epan/tvbuff.h> #include <epan/emem.h> -#include <epan/conversation.h> -#include <epan/strutil.h> -#include <epan/expert.h> #include <epan/dissectors/packet-xml.h> #include <packet-xmpp-utils.h> #include <packet-xmpp.h> -#include <packet-xmpp-jingle.h> #include <packet-xmpp-other.h> -static void xmpp_disco_items_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element); +static void xmpp_disco_items_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element); -static void xmpp_roster_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element); +static void xmpp_roster_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element); -static void xmpp_disco_info_identity(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element); -static void xmpp_disco_info_feature(proto_tree *tree, tvbuff_t *tvb, element_t *element); +static void xmpp_disco_info_identity(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element); +static void xmpp_disco_info_feature(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element); -static void xmpp_bytestreams_streamhost(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_bytestreams_streamhost_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_bytestreams_activate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_bytestreams_udpsuccess(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_bytestreams_streamhost(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_bytestreams_streamhost_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_bytestreams_activate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_bytestreams_udpsuccess(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -static void xmpp_si_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +static void xmpp_si_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); -static void xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_x_data_field_option(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_x_data_field_value(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -static void xmpp_x_data_instr(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +static void xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_x_data_field_option(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_x_data_field_value(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +static void xmpp_x_data_instr(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); -static void xmpp_muc_history(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_muc_history(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -static void xmpp_muc_user_item(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_muc_user_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -static void xmpp_muc_user_invite(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_muc_user_item(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_muc_user_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +static void xmpp_muc_user_invite(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -static void xmpp_hashes_hash(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_hashes_hash(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -static void xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +static void xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); void -xmpp_iq_bind(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_iq_bind(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *bind_item; proto_tree *bind_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"resource", hf_xmpp_iq_bind_resource, FALSE, TRUE, NULL, NULL}, {"jid", hf_xmpp_iq_bind_jid, FALSE, TRUE, NULL, NULL} @@ -94,21 +88,21 @@ xmpp_iq_bind(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele bind_item = proto_tree_add_item(tree, hf_xmpp_iq_bind, tvb, element->offset, element->length, ENC_BIG_ENDIAN); bind_tree = proto_item_add_subtree(bind_item, ett_xmpp_iq_bind); - change_elem_to_attrib("resource", "resource", element, transform_func_cdata); - change_elem_to_attrib("jid", "jid", element, transform_func_cdata); + xmpp_change_elem_to_attrib("resource", "resource", element, xmpp_transform_func_cdata); + xmpp_change_elem_to_attrib("jid", "jid", element, xmpp_transform_func_cdata); - display_attrs(bind_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(bind_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(bind_tree, tvb, pinfo, element); } void -xmpp_session(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_session(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *session_item; proto_tree *session_tree; - attr_info attrs_info [] = { + xmpp_attr_info attrs_info [] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; @@ -117,89 +111,89 @@ xmpp_session(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele col_append_fstr(pinfo->cinfo, COL_INFO, "SESSION "); - display_attrs(session_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(session_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(session_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(session_tree, element, pinfo, tvb, NULL, 0); } void -xmpp_vcard(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_vcard(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *vcard_item; proto_tree *vcard_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"value", -1, FALSE, FALSE, NULL, NULL} }; - element_t *cdata; + xmpp_element_t *cdata; col_append_fstr(pinfo->cinfo, COL_INFO, "VCARD "); vcard_item = proto_tree_add_item(tree, hf_xmpp_vcard, tvb, element->offset, element->length, ENC_BIG_ENDIAN); vcard_tree = proto_item_add_subtree(vcard_item, ett_xmpp_vcard); - cdata = get_first_element(element); + cdata = xmpp_get_first_element(element); if(cdata) { - attr_t *fake_cdata; - fake_cdata = ep_init_attr_t(element_to_string(tvb, cdata), cdata->offset, cdata->length); + xmpp_attr_t *fake_cdata; + fake_cdata = xmpp_ep_init_attr_t(xmpp_element_to_string(tvb, cdata), cdata->offset, cdata->length); g_hash_table_insert(element->attrs,"value", fake_cdata); } - display_attrs(vcard_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(vcard_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); } void -xmpp_vcard_x_update(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_vcard_x_update(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *x_item; proto_tree *x_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"photo", -1, FALSE, FALSE, NULL, NULL} }; - element_t *photo; + xmpp_element_t *photo; x_item = proto_tree_add_item(tree, hf_xmpp_vcard_x_update, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_vcard_x_update); - if((photo = steal_element_by_name(element, "photo"))!=NULL) + if((photo = xmpp_steal_element_by_name(element, "photo"))!=NULL) { - attr_t *fake_photo = ep_init_attr_t(photo->data?photo->data->value:"", photo->offset, photo->length); + xmpp_attr_t *fake_photo = xmpp_ep_init_attr_t(photo->data?photo->data->value:"", photo->offset, photo->length); g_hash_table_insert(element->attrs, "photo", fake_photo); } - display_attrs(x_tree, element,pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(x_tree, element,pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(x_tree, tvb, pinfo, element); } void -xmpp_disco_items_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element) +xmpp_disco_items_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"node", hf_xmpp_query_node, FALSE, TRUE, NULL, NULL} }; - element_t *item; + xmpp_element_t *item; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(disco#items) "); query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((item = steal_element_by_name(element, "item")) != NULL) + while((item = xmpp_steal_element_by_name(element, "item")) != NULL) { xmpp_disco_items_item(query_tree, tvb, pinfo, item); } @@ -208,12 +202,12 @@ xmpp_disco_items_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, elem } static void -xmpp_disco_items_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element) +xmpp_disco_items_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element) { proto_item *item_item; proto_tree *item_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"jid", hf_xmpp_query_item_jid, TRUE, TRUE, NULL, NULL}, {"name", hf_xmpp_query_item_name, FALSE, TRUE, NULL, NULL}, {"node", hf_xmpp_query_item_node, FALSE, TRUE, NULL, NULL} @@ -222,23 +216,23 @@ xmpp_disco_items_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, eleme item_item = proto_tree_add_item(tree, hf_xmpp_query_item, tvb, element->offset, element->length, ENC_BIG_ENDIAN); item_tree = proto_item_add_subtree(item_item, ett_xmpp_query_item); - display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(item_tree, tvb, pinfo, element); } void -xmpp_roster_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element) +xmpp_roster_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"ver", -1, FALSE, TRUE, NULL, NULL}, }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "item", xmpp_roster_item, MANY}, }; @@ -247,12 +241,12 @@ xmpp_roster_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_roster_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element) +xmpp_roster_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element) { proto_item *item_item; proto_tree *item_tree; @@ -260,64 +254,64 @@ xmpp_roster_item(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t const gchar *ask_enums[] = {"subscribe"}; const gchar *subscription_enums[] = {"both","from","none","remove","to"}; - array_t *ask_enums_array = ep_init_array_t(ask_enums,array_length(ask_enums)); - array_t *subscription_array = ep_init_array_t(subscription_enums,array_length(subscription_enums)); + xmpp_array_t *ask_enums_array = xmpp_ep_init_array_t(ask_enums,array_length(ask_enums)); + xmpp_array_t *subscription_array = xmpp_ep_init_array_t(subscription_enums,array_length(subscription_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"jid", hf_xmpp_query_item_jid, TRUE, TRUE, NULL, NULL}, {"name", hf_xmpp_query_item_name, FALSE, TRUE, NULL, NULL}, - {"ask", hf_xmpp_query_item_ask, FALSE, TRUE, val_enum_list, ask_enums_array}, + {"ask", hf_xmpp_query_item_ask, FALSE, TRUE, xmpp_val_enum_list, ask_enums_array}, {"approved", hf_xmpp_query_item_approved, FALSE, TRUE, NULL, NULL}, - {"subscription", hf_xmpp_query_item_subscription, FALSE, TRUE, val_enum_list, subscription_array}, + {"subscription", hf_xmpp_query_item_subscription, FALSE, TRUE, xmpp_val_enum_list, subscription_array}, }; - element_t *group; + xmpp_element_t *group; item_item = proto_tree_add_item(tree, hf_xmpp_query_item, tvb, element->offset, element->length, ENC_BIG_ENDIAN); item_tree = proto_item_add_subtree(item_item, ett_xmpp_query_item); - display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((group = steal_element_by_name(element,"group"))!=NULL) + while((group = xmpp_steal_element_by_name(element,"group"))!=NULL) { - proto_tree_add_string(item_tree, hf_xmpp_query_item_group, tvb, group->offset, group->length, elem_cdata(group)); + proto_tree_add_string(item_tree, hf_xmpp_query_item_group, tvb, group->offset, group->length, xmpp_elem_cdata(group)); } xmpp_unknown(item_tree, tvb, pinfo, element); } void -xmpp_disco_info_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_disco_info_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"node", hf_xmpp_query_node, FALSE, TRUE, NULL, NULL} }; - element_t *identity, *feature, *x_data; + xmpp_element_t *identity, *feature, *x_data; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(disco#info) "); query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((identity = steal_element_by_name(element, "identity")) != NULL) + while((identity = xmpp_steal_element_by_name(element, "identity")) != NULL) { xmpp_disco_info_identity(query_tree, tvb, pinfo, identity); } - while((feature = steal_element_by_name(element, "feature")) != NULL) + while((feature = xmpp_steal_element_by_name(element, "feature")) != NULL) { xmpp_disco_info_feature(query_tree, tvb, feature); } - if((x_data = steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data")) != NULL) + if((x_data = xmpp_steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data")) != NULL) { xmpp_x_data(query_tree, tvb, pinfo, x_data); } @@ -326,12 +320,12 @@ xmpp_disco_info_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, elem } static void -xmpp_disco_info_identity(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element) +xmpp_disco_info_identity(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element) { proto_item *identity_item; proto_tree *identity_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"category", hf_xmpp_query_identity_category, TRUE, TRUE, NULL, NULL}, {"name", hf_xmpp_query_identity_name, FALSE, TRUE, NULL, NULL}, {"type", hf_xmpp_query_identity_type, TRUE, TRUE, NULL, NULL} @@ -340,17 +334,17 @@ xmpp_disco_info_identity(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, el identity_item = proto_tree_add_item(tree, hf_xmpp_query_identity, tvb, element->offset, element->length, ENC_BIG_ENDIAN); identity_tree = proto_item_add_subtree(identity_item, ett_xmpp_query_identity); - display_attrs(identity_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(identity_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(identity_tree, tvb, pinfo, element); } static void -xmpp_disco_info_feature(proto_tree *tree, tvbuff_t *tvb, element_t *element) +xmpp_disco_info_feature(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element) { - attr_t *var = get_attr(element, "var"); + xmpp_attr_t *var = xmpp_get_attr(element, "var"); if(var) { @@ -359,47 +353,47 @@ xmpp_disco_info_feature(proto_tree *tree, tvbuff_t *tvb, element_t *element) } void -xmpp_bytestreams_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_bytestreams_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; const gchar *mode_enums[] = {"tcp", "udp"}; - array_t *mode_array = ep_init_array_t(mode_enums, array_length(mode_enums)); + xmpp_array_t *mode_array = xmpp_ep_init_array_t(mode_enums, array_length(mode_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"sid", -1, FALSE, TRUE, NULL, NULL}, - {"mode", -1, FALSE, TRUE, val_enum_list, mode_array}, + {"mode", -1, FALSE, TRUE, xmpp_val_enum_list, mode_array}, {"dstaddr", -1, FALSE, TRUE, NULL, NULL} }; - element_t *streamhost, *streamhost_used, *activate, *udpsuccess; + xmpp_element_t *streamhost, *streamhost_used, *activate, *udpsuccess; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(bytestreams) "); query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((streamhost = steal_element_by_name(element, "streamhost")) != NULL) + while((streamhost = xmpp_steal_element_by_name(element, "streamhost")) != NULL) { xmpp_bytestreams_streamhost(query_tree, tvb, pinfo, streamhost); } - if((streamhost_used = steal_element_by_name(element, "streamhost-used")) != NULL) + if((streamhost_used = xmpp_steal_element_by_name(element, "streamhost-used")) != NULL) { xmpp_bytestreams_streamhost_used(query_tree, tvb, pinfo, streamhost_used); } - if((activate = steal_element_by_name(element, "activate")) != NULL) + if((activate = xmpp_steal_element_by_name(element, "activate")) != NULL) { xmpp_bytestreams_activate(query_tree, tvb, pinfo, activate); } - if((udpsuccess = steal_element_by_name(element, "udpsuccess")) != NULL) + if((udpsuccess = xmpp_steal_element_by_name(element, "udpsuccess")) != NULL) { xmpp_bytestreams_udpsuccess(query_tree, tvb, pinfo, udpsuccess); } @@ -408,12 +402,12 @@ xmpp_bytestreams_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, ele } static void -xmpp_bytestreams_streamhost(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_bytestreams_streamhost(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *sh_item; proto_tree *sh_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"jid", -1, TRUE, TRUE, NULL, NULL}, {"host", -1, TRUE, TRUE, NULL, NULL}, {"port", -1, FALSE, TRUE, NULL, NULL} @@ -422,50 +416,50 @@ xmpp_bytestreams_streamhost(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, sh_item = proto_tree_add_item(tree, hf_xmpp_query_streamhost, tvb, element->offset, element->length, ENC_BIG_ENDIAN); sh_tree = proto_item_add_subtree(sh_item, ett_xmpp_query_streamhost); - display_attrs(sh_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(sh_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(sh_tree, tvb, pinfo, element); } static void -xmpp_bytestreams_streamhost_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_bytestreams_streamhost_used(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *shu_item; proto_tree *shu_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"jid", -1, TRUE, TRUE, NULL, NULL} }; shu_item = proto_tree_add_item(tree, hf_xmpp_query_streamhost_used, tvb, element->offset, element->length, ENC_BIG_ENDIAN); shu_tree = proto_item_add_subtree(shu_item, ett_xmpp_query_streamhost_used); - display_attrs(shu_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(shu_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(shu_tree, tvb, pinfo, element); } static void -xmpp_bytestreams_activate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_bytestreams_activate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { - proto_tree_add_string(tree, hf_xmpp_query_activate, tvb, element->offset, element->length, elem_cdata(element)); + proto_tree_add_string(tree, hf_xmpp_query_activate, tvb, element->offset, element->length, xmpp_elem_cdata(element)); xmpp_unknown(tree, tvb, pinfo, element); } static void -xmpp_bytestreams_udpsuccess(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_bytestreams_udpsuccess(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *udps_item; proto_tree *udps_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"dstaddr", -1, TRUE, TRUE, NULL, NULL} }; udps_item = proto_tree_add_item(tree, hf_xmpp_query_udpsuccess, tvb, element->offset, element->length, ENC_BIG_ENDIAN); udps_tree =proto_item_add_subtree(udps_item, ett_xmpp_query_udpsuccess); - display_attrs(udps_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(udps_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(udps_tree, tvb, pinfo, element); } @@ -474,33 +468,33 @@ xmpp_bytestreams_udpsuccess(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, /*SI File Transfer*/ void -xmpp_si(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_si(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *si_item; proto_tree *si_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"id", -1, FALSE, FALSE, NULL, NULL}, {"mime-type", -1, FALSE, TRUE, NULL, NULL}, {"profile", -1, FALSE, TRUE, NULL, NULL} }; - element_t *file, *feature_neg; + xmpp_element_t *file, *feature_neg; col_append_fstr(pinfo->cinfo, COL_INFO, "SI "); si_item = proto_tree_add_item(tree, hf_xmpp_si, tvb, element->offset, element->length, ENC_BIG_ENDIAN); si_tree = proto_item_add_subtree(si_item, ett_xmpp_si); - display_attrs(si_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(si_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((file = steal_element_by_name(element, "file"))!=NULL) + while((file = xmpp_steal_element_by_name(element, "file"))!=NULL) { xmpp_si_file(si_tree, tvb, pinfo, file); } - while((feature_neg = steal_element_by_name(element, "feature"))!=NULL) + while((feature_neg = xmpp_steal_element_by_name(element, "feature"))!=NULL) { xmpp_feature_neg(si_tree, tvb, pinfo, feature_neg); } @@ -511,12 +505,12 @@ xmpp_si(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) } static void -xmpp_si_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_si_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *file_item; proto_tree *file_tree; - attr_info attrs_info[] ={ + xmpp_attr_info attrs_info[] ={ {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"name", -1, TRUE, TRUE, NULL, NULL}, {"size", -1, TRUE, TRUE, NULL, NULL}, @@ -525,34 +519,34 @@ xmpp_si_file(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* ele {"desc", -1, FALSE, FALSE, NULL, NULL} }; - element_t *desc, *range; + xmpp_element_t *desc, *range; file_item = proto_tree_add_item(tree, hf_xmpp_si_file, tvb, element->offset, element->length, ENC_BIG_ENDIAN); file_tree = proto_item_add_subtree(file_item, ett_xmpp_si_file); - if((desc = steal_element_by_name(element, "desc"))!=NULL) + if((desc = xmpp_steal_element_by_name(element, "desc"))!=NULL) { - attr_t *fake_desc = ep_init_attr_t(desc->data?desc->data->value:"", desc->offset, desc->length); + xmpp_attr_t *fake_desc = xmpp_ep_init_attr_t(desc->data?desc->data->value:"", desc->offset, desc->length); g_hash_table_insert(element->attrs, "desc", fake_desc); } - if((range = steal_element_by_name(element, "range"))!=NULL) + if((range = xmpp_steal_element_by_name(element, "range"))!=NULL) { xmpp_si_file_range(file_tree, tvb, pinfo, range); } - display_attrs(file_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(file_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(file_tree, tvb, pinfo, element); } static void -xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *range_item; proto_tree *range_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"offset", -1, FALSE, TRUE, NULL, NULL}, {"length", -1, FALSE, TRUE, NULL, NULL} }; @@ -560,7 +554,7 @@ xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_ range_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "RANGE: "); range_tree = proto_item_add_subtree(range_item, ett_xmpp_si_file_range); - display_attrs(range_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(range_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(range_tree, tvb, pinfo, element); @@ -568,23 +562,23 @@ xmpp_si_file_range(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_ /*Feature Negotiation*/ void -xmpp_feature_neg(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_feature_neg(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *feature_item; proto_tree *feature_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - element_t *x_data; + xmpp_element_t *x_data; feature_item = proto_tree_add_item(tree, hf_xmpp_iq_feature_neg, tvb, element->offset, element->length, ENC_BIG_ENDIAN); feature_tree = proto_item_add_subtree(feature_item, ett_xmpp_iq_feature_neg); - display_attrs(feature_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(feature_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((x_data = steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data"))!=NULL) + while((x_data = xmpp_steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data"))!=NULL) { xmpp_x_data(feature_tree, tvb, pinfo, x_data); } @@ -595,21 +589,21 @@ xmpp_feature_neg(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* /*jabber:x:data*/ void -xmpp_x_data(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_x_data(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *x_item; proto_tree *x_tree; const gchar *type_enums[] = {"cancel", "form", "result", "submit"}; - array_t *type_array = ep_init_array_t(type_enums, array_length(type_enums)); + xmpp_array_t *type_array = xmpp_ep_init_array_t(type_enums, array_length(type_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, - {"type", -1, TRUE, TRUE, val_enum_list, type_array}, + {"type", -1, TRUE, TRUE, xmpp_val_enum_list, type_array}, {"TITLE", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "instructions", xmpp_x_data_instr, MANY}, {NAME, "field", xmpp_x_data_field, MANY}, }; @@ -618,14 +612,14 @@ xmpp_x_data(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* elem x_item = proto_tree_add_item(tree, hf_xmpp_x_data, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_x_data); - change_elem_to_attrib("title", "TITLE", element, transform_func_cdata); + xmpp_change_elem_to_attrib("title", "TITLE", element, xmpp_transform_func_cdata); - display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(x_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(x_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *field_item; proto_tree *field_tree; @@ -634,28 +628,28 @@ xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t "jid-single", "list-multi", "list-single", "text-multi", "text-single", "text-private" }; - array_t *type_array = ep_init_array_t(type_enums, array_length(type_enums)); + xmpp_array_t *type_array = xmpp_ep_init_array_t(type_enums, array_length(type_enums)); - attr_info attrs_info[] = + xmpp_attr_info attrs_info[] = { {"label", -1, FALSE, TRUE, NULL, NULL}, - {"type", -1, FALSE, TRUE, val_enum_list, type_array}, + {"type", -1, FALSE, TRUE, xmpp_val_enum_list, type_array}, {"var", -1, FALSE, TRUE, NULL, NULL} }; - element_t /**desc, *required,*/ *value, *option; + xmpp_element_t /**desc, *required,*/ *value, *option; field_item = proto_tree_add_item(tree, hf_xmpp_x_data_field, tvb, element->offset, element->length, ENC_BIG_ENDIAN); field_tree = proto_item_add_subtree(field_item, ett_xmpp_x_data_field); - display_attrs(field_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(field_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((option = steal_element_by_name(element, "option"))!=NULL) + while((option = xmpp_steal_element_by_name(element, "option"))!=NULL) { xmpp_x_data_field_option(field_tree, tvb, pinfo, option); } - while((value = steal_element_by_name(element, "value"))!=NULL) + while((value = xmpp_steal_element_by_name(element, "value"))!=NULL) { xmpp_x_data_field_value(field_tree, tvb, pinfo, value); } @@ -665,79 +659,79 @@ xmpp_x_data_field(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t } static void -xmpp_x_data_field_option(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_x_data_field_option(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *option_item; proto_tree *option_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"label", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, FALSE, TRUE, NULL, NULL} }; - element_t *value; + xmpp_element_t *value; option_item = proto_tree_add_item(tree, hf_xmpp_x_data_field_value, tvb, element->offset, element->length, ENC_BIG_ENDIAN); option_tree = proto_item_add_subtree(option_item, ett_xmpp_x_data_field_value); - if((value = steal_element_by_name(element, "value"))!=NULL) + if((value = xmpp_steal_element_by_name(element, "value"))!=NULL) { - attr_t *fake_value = ep_init_attr_t(value->data?value->data->value:"",value->offset, value->length); + xmpp_attr_t *fake_value = xmpp_ep_init_attr_t(value->data?value->data->value:"",value->offset, value->length); g_hash_table_insert(element->attrs, "value", fake_value); } - display_attrs(option_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(option_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(option_tree, tvb, pinfo, element); } static void -xmpp_x_data_field_value(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element) +xmpp_x_data_field_value(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element) { proto_item *value_item; proto_tree *value_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"label", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; - attr_t *fake_value; + xmpp_attr_t *fake_value; value_item = proto_tree_add_item(tree, hf_xmpp_x_data_field_value, tvb, element->offset, element->length, ENC_BIG_ENDIAN); value_tree = proto_item_add_subtree(value_item, ett_xmpp_x_data_field_value); - fake_value = ep_init_attr_t(element->data?element->data->value:"",element->offset, element->length); + fake_value = xmpp_ep_init_attr_t(element->data?element->data->value:"",element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_value); - display_attrs(value_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(value_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(value_tree, tvb, pinfo, element); } static void -xmpp_x_data_instr(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo _U_, element_t* element) +xmpp_x_data_instr(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo _U_, xmpp_element_t* element) { - proto_tree_add_text(tree, tvb, element->offset, element->length, "INSTRUCTIONS: %s",elem_cdata(element)); + proto_tree_add_text(tree, tvb, element->offset, element->length, "INSTRUCTIONS: %s",xmpp_elem_cdata(element)); } /*In-Band Bytestreams*/ void -xmpp_ibb_open(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_ibb_open(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *open_item; proto_tree *open_tree; const gchar *stanza_enums[] = {"iq","message"}; - array_t *stanza_array = ep_init_array_t(stanza_enums, array_length(stanza_enums)); + xmpp_array_t *stanza_array = xmpp_ep_init_array_t(stanza_enums, array_length(stanza_enums)); - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"sid", -1, TRUE, TRUE, NULL, NULL}, {"block-size", -1, TRUE, TRUE, NULL, NULL}, - {"stanza", -1, FALSE, TRUE, val_enum_list, stanza_array} + {"stanza", -1, FALSE, TRUE, xmpp_val_enum_list, stanza_array} }; col_append_fstr(pinfo->cinfo, COL_INFO, "IBB-OPEN "); @@ -745,17 +739,17 @@ xmpp_ibb_open(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *el open_item = proto_tree_add_item(tree, hf_xmpp_ibb_open, tvb, element->offset, element->length, ENC_BIG_ENDIAN); open_tree = proto_item_add_subtree(open_item, ett_xmpp_ibb_open); - display_attrs(open_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(open_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(open_tree, tvb, pinfo, element); } void -xmpp_ibb_close(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_ibb_close(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *close_item; proto_tree *close_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"sid", -1, TRUE, TRUE, NULL, NULL} }; @@ -765,17 +759,17 @@ xmpp_ibb_close(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *e close_item = proto_tree_add_item(tree, hf_xmpp_ibb_close, tvb, element->offset, element->length, ENC_BIG_ENDIAN); close_tree = proto_item_add_subtree(close_item, ett_xmpp_ibb_close); - display_attrs(close_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(close_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(close_tree, tvb, pinfo, element); } void -xmpp_ibb_data(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_ibb_data(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *data_item; proto_tree *data_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"sid", -1, TRUE, TRUE, NULL, NULL}, {"seq", -1, TRUE, TRUE, NULL, NULL}, @@ -789,23 +783,23 @@ xmpp_ibb_data(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *el if(element->data) { - attr_t *fake_data = ep_init_attr_t(element->data->value, element->offset, element->length); + xmpp_attr_t *fake_data = xmpp_ep_init_attr_t(element->data->value, element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_data); } - display_attrs(data_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(data_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(data_tree, tvb, pinfo, element); } /*Delayed Delivery urn:xmpp:delay and jabber:x:delay*/ void -xmpp_delay(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_delay(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *delay_item; proto_tree *delay_tree; - attr_info attrs_info[]={ + xmpp_attr_info attrs_info[]={ {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"from", -1, FALSE, TRUE, NULL, NULL}, {"stamp", -1, TRUE, TRUE, NULL, NULL}, @@ -817,23 +811,23 @@ xmpp_delay(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *eleme if(element->data) { - attr_t *fake_value = ep_init_attr_t(element->data->value, element->offset, element->length); + xmpp_attr_t *fake_value = xmpp_ep_init_attr_t(element->data->value, element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_value); } - display_attrs(delay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(delay_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(delay_tree, tvb, pinfo, element); } /*Entity Capabilities http://jabber.org/protocol/caps*/ void -xmpp_presence_caps(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_presence_caps(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *caps_item; proto_tree *caps_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"ext", -1, FALSE, FALSE, NULL, NULL}, {"hash", -1, TRUE, TRUE, NULL, NULL}, @@ -844,19 +838,19 @@ xmpp_presence_caps(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_ caps_item = proto_tree_add_item(tree, hf_xmpp_presence_caps, tvb, element->offset, element->length, ENC_BIG_ENDIAN); caps_tree = proto_item_add_subtree(caps_item, ett_xmpp_presence_caps); - display_attrs(caps_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(caps_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(caps_tree, tvb, pinfo, element); } /*Message Events jabber:x:event*/ void -xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *x_item; proto_tree *x_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"condition", hf_xmpp_x_event_condition, TRUE, TRUE, NULL, NULL}, {"id", -1, FALSE, TRUE, NULL, NULL} @@ -864,22 +858,22 @@ xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele const gchar *cond_names[] = {"offline", "delivered", "displayed", "composing"}; - attr_t *fake_cond; + xmpp_attr_t *fake_cond; - element_t *cond, *id; + xmpp_element_t *cond, *id; gchar *cond_value = ep_strdup(""); x_item = proto_tree_add_item(tree, hf_xmpp_x_event, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_x_event); - if((id = steal_element_by_name(element, "id"))!=NULL) + if((id = xmpp_steal_element_by_name(element, "id"))!=NULL) { - attr_t *fake_id = ep_init_attr_t(id->data?id->data->value:"", id->offset, id->length); + xmpp_attr_t *fake_id = xmpp_ep_init_attr_t(id->data?id->data->value:"", id->offset, id->length); g_hash_table_insert(element->attrs, "id", fake_id); } - while((cond = steal_element_by_names(element, cond_names, array_length(cond_names))) != NULL) + while((cond = xmpp_steal_element_by_names(element, cond_names, array_length(cond_names))) != NULL) { if(strcmp(cond_value,"") != 0) cond_value = ep_strdup_printf("%s/%s",cond_value, cond->name); @@ -887,41 +881,41 @@ xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele cond_value = ep_strdup(cond->name); } - fake_cond = ep_init_attr_t(cond_value, element->offset, element->length); + fake_cond = xmpp_ep_init_attr_t(cond_value, element->offset, element->length); g_hash_table_insert(element->attrs, "condition", fake_cond); - display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(x_tree, tvb, pinfo, element); } /*Multi-User Chat http://jabber.org/protocol/muc*/ void -xmpp_muc_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *x_item; proto_tree *x_tree; - attr_info attrs_info [] ={ + xmpp_attr_info attrs_info [] ={ {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"password", -1, FALSE, TRUE, NULL, NULL} }; - element_t *pass, *hist; + xmpp_element_t *pass, *hist; x_item = proto_tree_add_item(tree, hf_xmpp_muc_x, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_muc_x); - if((pass = steal_element_by_name(element, "password"))!=NULL) + if((pass = xmpp_steal_element_by_name(element, "password"))!=NULL) { - attr_t *fake_pass = ep_init_attr_t(pass->data?pass->data->value:"",pass->offset, pass->length); + xmpp_attr_t *fake_pass = xmpp_ep_init_attr_t(pass->data?pass->data->value:"",pass->offset, pass->length); g_hash_table_insert(element->attrs, "password", fake_pass); } - display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - if((hist = steal_element_by_name(element, "history"))!=NULL) + if((hist = xmpp_steal_element_by_name(element, "history"))!=NULL) { xmpp_muc_history(x_tree, tvb, pinfo, hist); } @@ -930,12 +924,12 @@ xmpp_muc_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *eleme } static void -xmpp_muc_history(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_history(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *hist_item; proto_tree *hist_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"maxchars", -1, FALSE, TRUE, NULL, NULL}, {"maxstanzas", -1, FALSE, TRUE, NULL, NULL}, {"seconds", -1, FALSE, TRUE, NULL, NULL}, @@ -945,48 +939,48 @@ xmpp_muc_history(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t hist_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "HISTORY: "); hist_tree = proto_item_add_subtree(hist_item, ett_xmpp_muc_hist); - display_attrs(hist_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(hist_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(hist_tree, tvb, pinfo, element); } /*Multi-User Chat http://jabber.org/protocol/muc#user*/ void -xmpp_muc_user_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_user_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *x_item; proto_tree *x_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, FALSE, NULL, NULL}, {"password", -1, FALSE, TRUE, NULL, NULL} }; - element_t *item, *status, *invite, *password; + xmpp_element_t *item, *status, *invite, *password; /*TODO decline destroy*/ x_item = proto_tree_add_item(tree, hf_xmpp_muc_user_x, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_muc_user_x); - if((password = steal_element_by_name(element, "password"))!=NULL) + if((password = xmpp_steal_element_by_name(element, "password"))!=NULL) { - attr_t *fake_pass = ep_init_attr_t(password->data?password->data->value:"",password->offset, password->length); + xmpp_attr_t *fake_pass = xmpp_ep_init_attr_t(password->data?password->data->value:"",password->offset, password->length); g_hash_table_insert(element->attrs, "password", fake_pass); } - display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(x_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((item = steal_element_by_name(element, "item"))!=NULL) + while((item = xmpp_steal_element_by_name(element, "item"))!=NULL) { xmpp_muc_user_item(x_tree, tvb, pinfo, item); } - while((status = steal_element_by_name(element, "status"))!=NULL) + while((status = xmpp_steal_element_by_name(element, "status"))!=NULL) { xmpp_muc_user_status(x_tree, tvb, pinfo, status); } - while((invite = steal_element_by_name(element, "invite"))!=NULL) + while((invite = xmpp_steal_element_by_name(element, "invite"))!=NULL) { xmpp_muc_user_invite(x_tree, tvb, pinfo, invite); } @@ -995,99 +989,99 @@ xmpp_muc_user_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t * } static void -xmpp_muc_user_item(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_user_item(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *item_item; proto_tree *item_tree; const gchar *affiliation_enums[] = {"admin", "member", "none", "outcast", "owner"}; - array_t *affil_array = ep_init_array_t(affiliation_enums, array_length(affiliation_enums)); + xmpp_array_t *affil_array = xmpp_ep_init_array_t(affiliation_enums, array_length(affiliation_enums)); const gchar *role_enums[] = {"none", "moderator", "participant", "visitor"}; - array_t *role_array = ep_init_array_t(role_enums, array_length(role_enums)); + xmpp_array_t *role_array = xmpp_ep_init_array_t(role_enums, array_length(role_enums)); - attr_info attrs_info [] ={ - {"affiliation", -1, FALSE, TRUE, val_enum_list, affil_array}, + xmpp_attr_info attrs_info [] ={ + {"affiliation", -1, FALSE, TRUE, xmpp_val_enum_list, affil_array}, {"jid", -1, FALSE, TRUE, NULL, NULL}, {"nick", -1, FALSE, TRUE, NULL, NULL}, - {"role", -1, FALSE, TRUE, val_enum_list, role_array}, + {"role", -1, FALSE, TRUE, xmpp_val_enum_list, role_array}, {"reason", -1, FALSE, TRUE, NULL, NULL}, {"actor_jid", -1, FALSE, TRUE, NULL, NULL} }; - element_t *reason, *actor; + xmpp_element_t *reason, *actor; /*TODO continue - it's not clear to me, in schema it's marked as empty, but in examples it has CDATA*/ item_item = proto_tree_add_item(tree, hf_xmpp_muc_user_item, tvb, element->offset, element->length, ENC_BIG_ENDIAN); item_tree = proto_item_add_subtree(item_item, ett_xmpp_muc_user_item); - if((reason = steal_element_by_name(element, "reason"))!=NULL) + if((reason = xmpp_steal_element_by_name(element, "reason"))!=NULL) { - attr_t *fake_reason = ep_init_attr_t(reason->data?reason->data->value:"",reason->offset, reason->length); + xmpp_attr_t *fake_reason = xmpp_ep_init_attr_t(reason->data?reason->data->value:"",reason->offset, reason->length); g_hash_table_insert(element->attrs,"reason",fake_reason); } - if((actor = steal_element_by_name(element, "actor"))!=NULL) + if((actor = xmpp_steal_element_by_name(element, "actor"))!=NULL) { - attr_t *jid = get_attr(actor, "jid"); - attr_t *fake_actor_jid = ep_init_attr_t(jid?jid->value:"",actor->offset, actor->length); + xmpp_attr_t *jid = xmpp_get_attr(actor, "jid"); + xmpp_attr_t *fake_actor_jid = xmpp_ep_init_attr_t(jid?jid->value:"",actor->offset, actor->length); g_hash_table_insert(element->attrs, "actor_jid", fake_actor_jid); } - display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(item_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(item_tree, tvb, pinfo, element); } static void -xmpp_muc_user_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_user_status(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { - attr_t *code = get_attr(element, "code"); + xmpp_attr_t *code = xmpp_get_attr(element, "code"); proto_tree_add_text(tree, tvb, element->offset, element->length, "STATUS [code=\"%s\"]",code?code->value:""); xmpp_unknown(tree, tvb, pinfo, element); } static void -xmpp_muc_user_invite(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_user_invite(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *invite_item; proto_tree *invite_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"from", -1, FALSE, TRUE, NULL, NULL}, {"to", -1, FALSE, TRUE, NULL, NULL}, {"reason", -1, FALSE, TRUE, NULL, NULL} }; - element_t *reason; + xmpp_element_t *reason; invite_item = proto_tree_add_item(tree, hf_xmpp_muc_user_invite, tvb, element->offset, element->length, ENC_BIG_ENDIAN); invite_tree = proto_item_add_subtree(invite_item, ett_xmpp_muc_user_invite); - if((reason = steal_element_by_name(element, "reason"))!=NULL) + if((reason = xmpp_steal_element_by_name(element, "reason"))!=NULL) { - attr_t *fake_reason = ep_init_attr_t(reason->data?reason->data->value:"",reason->offset, reason->length); + xmpp_attr_t *fake_reason = xmpp_ep_init_attr_t(reason->data?reason->data->value:"",reason->offset, reason->length); g_hash_table_insert(element->attrs, "reason", fake_reason); } - display_attrs(invite_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(invite_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); xmpp_unknown(invite_tree, tvb, pinfo, element); } /*Multi-User Chat http://jabber.org/protocol/muc#owner*/ void -xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - element_t *x_data; + xmpp_element_t *x_data; /*TODO destroy*/ col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(muc#owner) "); @@ -1095,9 +1089,9 @@ xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, elemen query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - if((x_data = steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data"))!=NULL) + if((x_data = xmpp_steal_element_by_name_and_attr(element, "x", "xmlns", "jabber:x:data"))!=NULL) { xmpp_x_data(query_tree, tvb, pinfo, x_data); } @@ -1108,25 +1102,25 @@ xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, elemen /*Multi-User Chat http://jabber.org/protocol/muc#admin*/ void -xmpp_muc_admin_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_muc_admin_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL} }; - element_t *item; + xmpp_element_t *item; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(muc#admin) "); query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - while((item = steal_element_by_name(element, "item"))!=NULL) + while((item = xmpp_steal_element_by_name(element, "item"))!=NULL) { /*from muc#user, because it is the same except continue element*/ xmpp_muc_user_item(query_tree, tvb, pinfo, item); @@ -1137,12 +1131,12 @@ xmpp_muc_admin_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, elemen /*Last Activity jabber:iq:last*/ void -xmpp_last_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_last_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"seconds", -1, FALSE, TRUE, NULL, NULL}, {"value", -1, FALSE, TRUE, NULL, NULL} @@ -1155,64 +1149,64 @@ xmpp_last_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t * if(element->data) { - attr_t *fake_data = ep_init_attr_t(element->data->value, element->data->offset, element->data->length); + xmpp_attr_t *fake_data = xmpp_ep_init_attr_t(element->data->value, element->data->offset, element->data->length); g_hash_table_insert(element->attrs, "value", fake_data); } - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, NULL, 0); } /*XEP-0092: Software Version jabber:iq:version*/ void -xmpp_version_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_version_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *query_item; proto_tree *query_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"name", -1, FALSE, TRUE, NULL, NULL}, {"version", -1, FALSE, TRUE, NULL, NULL}, {"os", -1, FALSE, TRUE, NULL, NULL} }; - element_t *name, *version, *os; + xmpp_element_t *name, *version, *os; col_append_fstr(pinfo->cinfo, COL_INFO, "QUERY(jabber:iq:version) "); query_item = proto_tree_add_item(tree, hf_xmpp_query, tvb, element->offset, element->length, ENC_BIG_ENDIAN); query_tree = proto_item_add_subtree(query_item, ett_xmpp_query); - if((name = steal_element_by_name(element,"name"))!=NULL) + if((name = xmpp_steal_element_by_name(element,"name"))!=NULL) { - attr_t *fake_name = ep_init_attr_t(name->data?name->data->value:"", name->offset, name->length); + xmpp_attr_t *fake_name = xmpp_ep_init_attr_t(name->data?name->data->value:"", name->offset, name->length); g_hash_table_insert(element->attrs, "name", fake_name); } - if((version = steal_element_by_name(element,"version"))!=NULL) + if((version = xmpp_steal_element_by_name(element,"version"))!=NULL) { - attr_t *fake_version = ep_init_attr_t(version->data?version->data->value:"", version->offset, version->length); + xmpp_attr_t *fake_version = xmpp_ep_init_attr_t(version->data?version->data->value:"", version->offset, version->length); g_hash_table_insert(element->attrs, "version", fake_version); } - if((os = steal_element_by_name(element,"os"))!=NULL) + if((os = xmpp_steal_element_by_name(element,"os"))!=NULL) { - attr_t *fake_os = ep_init_attr_t(os->data?os->data->value:"", os->offset, os->length); + xmpp_attr_t *fake_os = xmpp_ep_init_attr_t(os->data?os->data->value:"", os->offset, os->length); g_hash_table_insert(element->attrs, "os", fake_os); } - display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(query_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(query_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(query_tree, element, pinfo, tvb, NULL, 0); } /*XEP-0199: XMPP Ping*/ void -xmpp_ping(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_ping(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *ping_item; proto_tree *ping_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, }; @@ -1221,81 +1215,81 @@ xmpp_ping(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *elemen ping_item = proto_tree_add_item(tree, hf_xmpp_ping, tvb, element->offset, element->length, ENC_BIG_ENDIAN); ping_tree = proto_item_add_subtree(ping_item, ett_xmpp_ping); - display_attrs(ping_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(ping_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(ping_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(ping_tree, element, pinfo, tvb, NULL, 0); } /*XEP-0300: Use of Cryptographic Hash Functions in XMPP urn:xmpp:hashes:0*/ void -xmpp_hashes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) { +xmpp_hashes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *hashes_item; proto_tree *hashes_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "hash", xmpp_hashes_hash, MANY} }; hashes_item = proto_tree_add_item(tree, hf_xmpp_hashes, tvb, element->offset, element->length, ENC_BIG_ENDIAN); hashes_tree = proto_item_add_subtree(hashes_item, ett_xmpp_hashes); - display_attrs(hashes_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(hashes_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(hashes_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(hashes_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_hashes_hash(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_hashes_hash(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *hash_item; proto_tree *hash_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"algo", -1, TRUE, TRUE, NULL, NULL}, {"value", -1, TRUE, TRUE, NULL, NULL} }; - attr_t *fake_cdata = ep_init_attr_t(elem_cdata(element), element->offset, element->length); + xmpp_attr_t *fake_cdata = xmpp_ep_init_attr_t(xmpp_elem_cdata(element), element->offset, element->length); g_hash_table_insert(element->attrs, "value", fake_cdata); hash_item = proto_tree_add_text(tree, tvb, element->offset, element->length, "HASH"); hash_tree = proto_item_add_subtree(hash_item, ett_xmpp_hashes_hash); - display_attrs(hash_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(hash_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(hash_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(hash_tree, element, pinfo, tvb, NULL, 0); } /*http://jitsi.org/protocol/inputevt*/ void -xmpp_jitsi_inputevt(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jitsi_inputevt(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *inputevt_item; proto_tree *inputevt_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, TRUE, TRUE, NULL, NULL}, {"action", -1, FALSE, TRUE, NULL, NULL} }; - elem_info elems_info[] = { + xmpp_elem_info elems_info[] = { {NAME, "remote-control", xmpp_jitsi_inputevt_rmt_ctrl, MANY} }; inputevt_item = proto_tree_add_item(tree, hf_xmpp_jitsi_inputevt, tvb, element->offset, element->length, ENC_BIG_ENDIAN); inputevt_tree = proto_item_add_subtree(inputevt_item, ett_xmpp_jitsi_inputevt); - display_attrs(inputevt_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(inputevt_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); + xmpp_display_attrs(inputevt_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(inputevt_tree, element, pinfo, tvb, elems_info, array_length(elems_info)); } static void -xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { proto_item *rmt_ctrl_item; proto_tree *rmt_ctrl_tree; - attr_info attrs_info[] = { + xmpp_attr_info attrs_info[] = { {"xmlns", hf_xmpp_xmlns, FALSE, FALSE, NULL, NULL}, {"action", -1, TRUE, TRUE, NULL, NULL}, {"x", -1, FALSE, TRUE, NULL, NULL}, @@ -1304,18 +1298,18 @@ xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo {"keycode", -1, FALSE, TRUE, NULL, NULL}, }; - element_t *action; + xmpp_element_t *action; const gchar *action_names[] = {"mouse-move","mouse-press", "mouse-release", "key-press", "key-release"}; - if((action = steal_element_by_names(element, action_names, array_length(action_names)))!=NULL) + if((action = xmpp_steal_element_by_names(element, action_names, array_length(action_names)))!=NULL) { - attr_t *fake_action = ep_init_attr_t(action->name, action->offset, action->length); + xmpp_attr_t *fake_action = xmpp_ep_init_attr_t(action->name, action->offset, action->length); g_hash_table_insert(element->attrs,"action", fake_action); if(strcmp(action->name,"mouse-move") == 0) { - attr_t *x = get_attr(action,"x"); - attr_t *y = get_attr(action,"y"); + xmpp_attr_t *x = xmpp_get_attr(action,"x"); + xmpp_attr_t *y = xmpp_get_attr(action,"y"); if(x) g_hash_table_insert(element->attrs,"x",x); @@ -1323,13 +1317,13 @@ xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo g_hash_table_insert(element->attrs,"y",y); } else if(strcmp(action->name,"mouse-press") == 0 || strcmp(action->name,"mouse-release") == 0) { - attr_t *btns = get_attr(action,"btns"); + xmpp_attr_t *btns = xmpp_get_attr(action,"btns"); if(btns) g_hash_table_insert(element->attrs,"btns",btns); } else if(strcmp(action->name,"key-press") == 0 || strcmp(action->name,"key-release") == 0) { - attr_t *keycode = get_attr(action,"keycode"); + xmpp_attr_t *keycode = xmpp_get_attr(action,"keycode"); if(keycode) g_hash_table_insert(element->attrs,"keycode",keycode); @@ -1340,8 +1334,8 @@ xmpp_jitsi_inputevt_rmt_ctrl(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo rmt_ctrl_item = proto_tree_add_item(tree, hf_xmpp_jitsi_inputevt_rmt_ctrl, tvb, element->offset, element->length, ENC_BIG_ENDIAN); rmt_ctrl_tree = proto_item_add_subtree(rmt_ctrl_item, ett_xmpp_jitsi_inputevt_rmt_ctrl); - display_attrs(rmt_ctrl_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); - display_elems(rmt_ctrl_tree, element, pinfo, tvb, NULL, 0); + xmpp_display_attrs(rmt_ctrl_tree, element, pinfo, tvb, attrs_info, array_length(attrs_info)); + xmpp_display_elems(rmt_ctrl_tree, element, pinfo, tvb, NULL, 0); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-xmpp-other.h b/epan/dissectors/packet-xmpp-other.h index 8b13d47e48..0dbe96c3e1 100644 --- a/epan/dissectors/packet-xmpp-other.h +++ b/epan/dissectors/packet-xmpp-other.h @@ -26,43 +26,43 @@ #ifndef XMPP_OTHER_H #define XMPP_OTHER_H -extern void xmpp_iq_bind(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_session(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_vcard(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_iq_bind(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_session(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_vcard(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_disco_items_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element); -extern void xmpp_roster_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, element_t *element); -extern void xmpp_disco_info_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_bytestreams_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_disco_items_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element); +extern void xmpp_roster_query(proto_tree *tree, tvbuff_t *tvb, packet_info* pinfo, xmpp_element_t *element); +extern void xmpp_disco_info_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_bytestreams_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_si(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +extern void xmpp_si(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); -extern void xmpp_feature_neg(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); -extern void xmpp_x_data(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +extern void xmpp_feature_neg(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); +extern void xmpp_x_data(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); -extern void xmpp_ibb_open(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_ibb_close(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_ibb_data(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_ibb_open(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_ibb_close(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_ibb_data(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_delay(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_delay(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_presence_caps(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_presence_caps(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_vcard_x_update(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); +extern void xmpp_vcard_x_update(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); -extern void xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_muc_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_muc_user_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_muc_admin_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_muc_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_muc_user_x(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_muc_owner_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_muc_admin_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_last_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_version_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_last_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_version_query(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_ping(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); -extern void xmpp_hashes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_ping(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); +extern void xmpp_hashes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_jitsi_inputevt(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_jitsi_inputevt(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); #endif /* XMPP_OTHER_H */ diff --git a/epan/dissectors/packet-xmpp-utils.c b/epan/dissectors/packet-xmpp-utils.c index 5c5a324dc9..5208f919c9 100644 --- a/epan/dissectors/packet-xmpp-utils.c +++ b/epan/dissectors/packet-xmpp-utils.c @@ -28,34 +28,28 @@ #include "config.h" #endif - #include <glib.h> -#include <stdio.h> -#include <epan/conversation.h> -#include <epan/proto.h> -#include <epan/packet_info.h> -#include <epan/epan.h> +#include <epan/packet.h> #include <epan/expert.h> -#include <epan/tvbuff.h> #include <epan/tvbparse.h> +#include <epan/strutil.h> #include <epan/dissectors/packet-xml.h> #include <packet-xmpp.h> #include <packet-xmpp-utils.h> -#include <epan/strutil.h> void -xmpp_iq_reqresp_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info) +xmpp_iq_reqresp_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info) { xmpp_transaction_t *xmpp_trans = NULL; - attr_t *attr_id; + xmpp_attr_t *attr_id; char *id; - attr_id = get_attr(packet, "id"); + attr_id = xmpp_get_attr(packet, "id"); DISSECTOR_ASSERT(attr_id); id = ep_strdup(attr_id->value); @@ -81,30 +75,30 @@ xmpp_iq_reqresp_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *x } void -xmpp_jingle_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info) +xmpp_jingle_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info) { - element_t *jingle_packet; + xmpp_element_t *jingle_packet; GList *jingle_packet_l; - jingle_packet_l = find_element_by_name(packet,"jingle"); + jingle_packet_l = xmpp_find_element_by_name(packet,"jingle"); jingle_packet = jingle_packet_l?jingle_packet_l->data:NULL; if (jingle_packet && !pinfo->fd->flags.visited) { - attr_t *attr_id; - attr_t *attr_sid; + xmpp_attr_t *attr_id; + xmpp_attr_t *attr_sid; char *se_id; char *se_sid; - attr_id = get_attr(packet, "id"); + attr_id = xmpp_get_attr(packet, "id"); DISSECTOR_ASSERT(attr_id); - + se_id = se_strdup(attr_id->value); - attr_sid = get_attr(jingle_packet, "sid"); + attr_sid = xmpp_get_attr(jingle_packet, "sid"); DISSECTOR_ASSERT(attr_sid); - + se_sid = se_strdup(attr_sid->value); se_tree_insert_string(xmpp_info->jingle_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); @@ -112,33 +106,33 @@ xmpp_jingle_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_ } void -xmpp_gtalk_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info) +xmpp_gtalk_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info) { - element_t *gtalk_packet; + xmpp_element_t *gtalk_packet; GList *gtalk_packet_l; - gtalk_packet_l = find_element_by_name(packet,"session"); + gtalk_packet_l = xmpp_find_element_by_name(packet,"session"); gtalk_packet = gtalk_packet_l?gtalk_packet_l->data:NULL; if (gtalk_packet && !pinfo->fd->flags.visited) { - attr_t *attr_id; - attr_t *attr_sid; + xmpp_attr_t *attr_id; + xmpp_attr_t *attr_sid; char *se_id; char *se_sid; - attr_t *xmlns = get_attr(gtalk_packet, "xmlns"); + xmpp_attr_t *xmlns = xmpp_get_attr(gtalk_packet, "xmlns"); if(xmlns && strcmp(xmlns->value,"http://www.google.com/session") != 0) return; - attr_id = get_attr(packet, "id"); + attr_id = xmpp_get_attr(packet, "id"); DISSECTOR_ASSERT(attr_id); se_id = se_strdup(attr_id->value); - attr_sid = get_attr(gtalk_packet, "id"); + attr_sid = xmpp_get_attr(gtalk_packet, "id"); DISSECTOR_ASSERT(attr_sid); se_sid = se_strdup(attr_sid->value); @@ -147,38 +141,38 @@ xmpp_gtalk_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t } void -xmpp_ibb_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info) +xmpp_ibb_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info) { - element_t *ibb_packet = NULL; + xmpp_element_t *ibb_packet = NULL; GList *ibb_packet_l; if(strcmp(packet->name, "message") == 0) { - ibb_packet_l = find_element_by_name(packet,"data"); + ibb_packet_l = xmpp_find_element_by_name(packet,"data"); ibb_packet = ibb_packet_l?ibb_packet_l->data:NULL; } else if(strcmp(packet->name, "iq") == 0) { - ibb_packet_l = find_element_by_name(packet,"open"); + ibb_packet_l = xmpp_find_element_by_name(packet,"open"); if(!ibb_packet_l) - ibb_packet_l = find_element_by_name(packet,"close"); + ibb_packet_l = xmpp_find_element_by_name(packet,"close"); if(!ibb_packet_l) - ibb_packet_l = find_element_by_name(packet,"data"); + ibb_packet_l = xmpp_find_element_by_name(packet,"data"); ibb_packet = ibb_packet_l?ibb_packet_l->data:NULL; } if (ibb_packet && !pinfo->fd->flags.visited) { - attr_t *attr_id; - attr_t *attr_sid; + xmpp_attr_t *attr_id; + xmpp_attr_t *attr_sid; char *se_id; char *se_sid; - attr_id = get_attr(packet, "id"); - attr_sid = get_attr(ibb_packet, "sid"); + attr_id = xmpp_get_attr(packet, "id"); + attr_sid = xmpp_get_attr(ibb_packet, "sid"); if(attr_id && attr_sid) { se_id = se_strdup(attr_id->value); @@ -189,7 +183,7 @@ xmpp_ibb_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t * } static void -xmpp_unknown_items(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element, guint level) +xmpp_unknown_items(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element, guint level) { GList *childs = element->elements; @@ -204,8 +198,8 @@ xmpp_unknown_items(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_ while(childs) { - element_t *child = childs->data; - proto_item *child_item = proto_tree_add_text(tree, tvb, child->offset, child->length, "%s", ep_string_upcase(child->name)); + xmpp_element_t *child = childs->data; + proto_item *child_item = proto_tree_add_text(tree, tvb, child->offset, child->length, "%s", xmpp_ep_string_upcase(child->name)); proto_tree *child_tree = proto_item_add_subtree(child_item, ett_unknown[level]); if(child->default_ns_abbrev) @@ -218,14 +212,14 @@ xmpp_unknown_items(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_ } void -xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element) +xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element) { GList *childs = element->elements; /*element has unrecognized elements*/ while(childs) { - element_t *child = childs->data; + xmpp_element_t *child = childs->data; if(!child->was_read) { proto_item *unknown_item; @@ -234,16 +228,16 @@ xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele #ifdef XMPP_DEBUG unknown_item = proto_tree_add_string_format(tree, hf_xmpp_unknown, tvb, child->offset, child->length, child->name, - "%s", ep_string_upcase(child->name)); + "%s", xmpp_ep_string_upcase(child->name)); #else unknown_item = proto_tree_add_text(tree, tvb, child->offset, child->length, - "%s", ep_string_upcase(child->name)); + "%s", xmpp_ep_string_upcase(child->name)); #endif unknown_tree = proto_item_add_subtree(unknown_item, ett_unknown[0]); /*Add COL_INFO only if root element is IQ*/ if(strcmp(element->name,"iq")==0) - col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", ep_string_upcase(child->name)); + col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", xmpp_ep_string_upcase(child->name)); if(child->default_ns_abbrev) proto_item_append_text(unknown_item,"(%s)",child->default_ns_abbrev); @@ -260,7 +254,7 @@ xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *ele } void -xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, element_t *element, gboolean displ_short_list) +xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, xmpp_element_t *element, gboolean displ_short_list) { proto_item *item = proto_tree_get_parent(tree); @@ -273,7 +267,7 @@ xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, elem while(keys && values) { - attr_t *attr = (attr_t*) values->data; + xmpp_attr_t *attr = (xmpp_attr_t*) values->data; if (!attr->was_read) { if (displ_short_list) { if (!short_list_started) @@ -322,7 +316,7 @@ xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, elem } void -xmpp_cdata(proto_tree *tree, tvbuff_t *tvb, element_t *element, gint hf) +xmpp_cdata(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element, gint hf) { if(element->data) { @@ -345,28 +339,28 @@ xmpp_cdata(proto_tree *tree, tvbuff_t *tvb, element_t *element, gint hf) * ELEMENT_NAME: element_value as TEXT(proto_tree_add_text) int PROTO_TREE */ void -xmpp_simple_cdata_elem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, element_t *element) +xmpp_simple_cdata_elem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, xmpp_element_t *element) { - proto_tree_add_text(tree, tvb, element->offset, element->length, "%s: %s", ep_string_upcase(element->name), elem_cdata(element)); + proto_tree_add_text(tree, tvb, element->offset, element->length, "%s: %s", xmpp_ep_string_upcase(element->name), xmpp_elem_cdata(element)); } -array_t* -ep_init_array_t(const gchar** array, gint len) +xmpp_array_t* +xmpp_ep_init_array_t(const gchar** array, gint len) { - array_t *result; + xmpp_array_t *result; - result = ep_alloc(sizeof(array_t)); + result = ep_alloc(sizeof(xmpp_array_t)); result->data = (gpointer) array; result->length = len; return result; } -attr_t* -ep_init_attr_t(gchar *value, gint offset, gint length) +xmpp_attr_t* +xmpp_ep_init_attr_t(gchar *value, gint offset, gint length) { - attr_t *result; - result = ep_alloc(sizeof(attr_t)); + xmpp_attr_t *result; + result = ep_alloc(sizeof(xmpp_attr_t)); result->value = value; result->offset = offset; result->length = length; @@ -376,7 +370,7 @@ ep_init_attr_t(gchar *value, gint offset, gint length) } gchar* -ep_string_upcase(const gchar* string) +xmpp_ep_string_upcase(const gchar* string) { gint len = (int)strlen(string); gint i; @@ -393,27 +387,27 @@ ep_string_upcase(const gchar* string) } gint -element_t_cmp(gconstpointer a, gconstpointer b) +xmpp_element_t_cmp(gconstpointer a, gconstpointer b) { - gint result = strcmp(((element_t*)a)->name,((element_t*)b)->name); + gint result = strcmp(((xmpp_element_t*)a)->name,((xmpp_element_t*)b)->name); - if(result == 0 && ((element_t*)a)->was_read) + if(result == 0 && ((xmpp_element_t*)a)->was_read) result = -1; return result; } GList* -find_element_by_name(element_t *packet,const gchar *name) +xmpp_find_element_by_name(xmpp_element_t *packet,const gchar *name) { GList *found_elements; - element_t *search_element; + xmpp_element_t *search_element; /*create fake element only with name*/ - search_element = ep_alloc(sizeof(element_t)); + search_element = ep_alloc(sizeof(xmpp_element_t)); search_element->name = ep_strdup(name); - found_elements = g_list_find_custom(packet->elements, search_element, element_t_cmp); + found_elements = g_list_find_custom(packet->elements, search_element, xmpp_element_t_cmp); if(found_elements) return found_elements; @@ -426,13 +420,13 @@ find_element_by_name(element_t *packet,const gchar *name) * function searches element in packet and sets it as read. * if element doesn't exist, NULL is returned. * If element is set as read, it is invisible for these functions.*/ -element_t* -steal_element_by_name(element_t *packet,const gchar *name) +xmpp_element_t* +xmpp_steal_element_by_name(xmpp_element_t *packet,const gchar *name) { GList *element_l; - element_t *element = NULL; + xmpp_element_t *element = NULL; - element_l = find_element_by_name(packet, name); + element_l = xmpp_find_element_by_name(packet, name); if(element_l) { @@ -444,30 +438,30 @@ steal_element_by_name(element_t *packet,const gchar *name) } -element_t* -steal_element_by_names(element_t *packet, const gchar **names, gint names_len) +xmpp_element_t* +xmpp_steal_element_by_names(xmpp_element_t *packet, const gchar **names, gint names_len) { gint i; - element_t *el = NULL; + xmpp_element_t *el = NULL; for(i = 0; i<names_len; i++) { - if((el = steal_element_by_name(packet, names[i]))) + if((el = xmpp_steal_element_by_name(packet, names[i]))) break; } return el; } -element_t* -steal_element_by_attr(element_t *packet, const gchar *attr_name, const gchar *attr_value) +xmpp_element_t* +xmpp_steal_element_by_attr(xmpp_element_t *packet, const gchar *attr_name, const gchar *attr_value) { GList *childs = packet->elements; - element_t *result = NULL; + xmpp_element_t *result = NULL; while (childs) { - element_t *child_elem = childs->data; - attr_t *attr = get_attr(child_elem, attr_name); + xmpp_element_t *child_elem = childs->data; + xmpp_attr_t *attr = xmpp_get_attr(child_elem, attr_name); if(attr) attr->was_read = FALSE; @@ -486,15 +480,15 @@ steal_element_by_attr(element_t *packet, const gchar *attr_name, const gchar *at return result; } -element_t* -steal_element_by_name_and_attr(element_t *packet, const gchar *name, const gchar *attr_name, const gchar *attr_value) +xmpp_element_t* +xmpp_steal_element_by_name_and_attr(xmpp_element_t *packet, const gchar *name, const gchar *attr_name, const gchar *attr_value) { GList *childs = packet->elements; - element_t *result = NULL; + xmpp_element_t *result = NULL; while (childs) { - element_t *child_elem = childs->data; - attr_t *attr = get_attr(child_elem, attr_name); + xmpp_element_t *child_elem = childs->data; + xmpp_attr_t *attr = xmpp_get_attr(child_elem, attr_name); if(attr) attr->was_read = FALSE; @@ -512,8 +506,8 @@ steal_element_by_name_and_attr(element_t *packet, const gchar *name, const gchar return result; } -element_t* -get_first_element(element_t *packet) +xmpp_element_t* +xmpp_get_first_element(xmpp_element_t *packet) { if(packet->elements && packet->elements->data) return packet->elements->data; @@ -522,13 +516,13 @@ get_first_element(element_t *packet) } /* -Function converts xml_frame_t structure to element_t (simpler representation) +Function converts xml_frame_t structure to xmpp_element_t (simpler representation) */ -element_t* -xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) +xmpp_element_t* +xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb) { xml_frame_t *child; - element_t *node = ep_alloc0(sizeof(element_t)); + xmpp_element_t *node = ep_alloc0(sizeof(xmpp_element_t)); tvbparse_wanted_t *want_ignore, *want_name, *want_scoped_name; tvbparse_t* tt; @@ -547,7 +541,7 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) node->namespaces = g_hash_table_new(g_str_hash, g_str_equal); if(parent) { - copy_hash_table(parent->namespaces, node->namespaces); + xmpp_copy_hash_table(parent->namespaces, node->namespaces); } else { g_hash_table_insert(node->namespaces, "", "jabber:client"); @@ -584,11 +578,11 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) gchar *value = NULL; gchar *xmlns_needle = NULL; - attr_t *attr = ep_alloc(sizeof(attr_t)); + xmpp_attr_t *attr = ep_alloc(sizeof(xmpp_attr_t)); attr->length = 0; attr->offset = 0; attr->was_read = FALSE; - + if (child->value != NULL) { l = tvb_reported_length(child->value); value = ep_alloc0(l + 1); @@ -599,7 +593,7 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) { attr->length = child->item->finfo->length; } - + attr->offset = child->start_offset; attr->value = value; attr->name = ep_strdup(child->name_orig_case); @@ -624,11 +618,11 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) } else if( child->type == XML_FRAME_CDATA) { - data_t *data = NULL; + xmpp_data_t *data = NULL; gint l; gchar* value = NULL; - data = ep_alloc(sizeof(data_t)); + data = ep_alloc(sizeof(xmpp_data_t)); data->length = 0; data->offset = 0; @@ -649,7 +643,7 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) } } else { - node->elements = g_list_append(node->elements,(gpointer)xml_frame_to_element_t(child, node,tvb)); + node->elements = g_list_append(node->elements,(gpointer)xmpp_xml_frame_to_element_t(child, node,tvb)); } child = child->next_sibling; @@ -658,7 +652,7 @@ xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb) } void -element_t_tree_free(element_t *root) +xmpp_element_t_tree_free(xmpp_element_t *root) { GList *childs = root->elements; @@ -667,9 +661,9 @@ element_t_tree_free(element_t *root) while(childs) { - element_t *child = childs->data; + xmpp_element_t *child = childs->data; - element_t_tree_free(child); + xmpp_element_t_tree_free(child); childs = childs->next; } g_list_free(root->elements); @@ -693,10 +687,10 @@ attr_find_pred(gpointer key, gpointer value _U_, gpointer user_data) } /*Functions returns element's attibute by name and set as read*/ -attr_t* -get_attr(element_t *element, const gchar* attr_name) +xmpp_attr_t* +xmpp_get_attr(xmpp_element_t *element, const gchar* attr_name) { - attr_t *result = g_hash_table_lookup(element->attrs, attr_name); + xmpp_attr_t *result = g_hash_table_lookup(element->attrs, attr_name); if(!result) { @@ -710,11 +704,11 @@ get_attr(element_t *element, const gchar* attr_name) } /*Functions returns element's attibute by name and namespace abbrev*/ -static attr_t* -get_attr_ext(element_t *element, const gchar* attr_name, const gchar* ns_abbrev) +static xmpp_attr_t* +xmpp_get_attr_ext(xmpp_element_t *element, const gchar* attr_name, const gchar* ns_abbrev) { gchar* search_phrase; - attr_t *result; + xmpp_attr_t *result; if(strcmp(ns_abbrev,"")==0) search_phrase = ep_strdup(attr_name); @@ -739,7 +733,7 @@ get_attr_ext(element_t *element, const gchar* attr_name, const gchar* ns_abbrev) gchar* -element_to_string(tvbuff_t *tvb, element_t *element) +xmpp_element_to_string(tvbuff_t *tvb, xmpp_element_t *element) { gchar *buff = NULL; @@ -751,7 +745,7 @@ element_to_string(tvbuff_t *tvb, element_t *element) } gchar* -attr_to_string(tvbuff_t *tvb, attr_t *attr) +xmpp_attr_to_string(tvbuff_t *tvb, xmpp_attr_t *attr) { gchar *buff = NULL; @@ -781,14 +775,14 @@ children_foreach_show_func(proto_node *node, gpointer data) } void -proto_tree_hide_first_child(proto_tree *tree) +xmpp_proto_tree_hide_first_child(proto_tree *tree) { int i = 0; proto_tree_children_foreach(tree, children_foreach_hide_func, &i); } void -proto_tree_show_first_child(proto_tree *tree) +xmpp_proto_tree_show_first_child(proto_tree *tree) { int i = 0; proto_tree_children_foreach(tree, children_foreach_show_func, &i); @@ -818,10 +812,10 @@ proto_item_get_text(proto_item *item) void -display_attrs(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t *tvb, attr_info *attrs, guint n) +xmpp_display_attrs(proto_tree *tree, xmpp_element_t *element, packet_info *pinfo, tvbuff_t *tvb, xmpp_attr_info *attrs, guint n) { proto_item *item = proto_tree_get_parent(tree); - attr_t *attr; + xmpp_attr_t *attr; guint i; gboolean short_list_started = FALSE; @@ -831,7 +825,7 @@ display_attrs(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t proto_item_append_text(item," ["); for(i = 0; i < n && attrs!=NULL; i++) { - attr = get_attr(element, attrs[i].name); + attr = xmpp_get_attr(element, attrs[i].name); if(attr) { if(attrs[i].hf != -1) @@ -878,10 +872,10 @@ display_attrs(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t } void -display_attrs_ext(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t *tvb, attr_info_ext *attrs, guint n) +xmpp_display_attrs_ext(proto_tree *tree, xmpp_element_t *element, packet_info *pinfo, tvbuff_t *tvb, xmpp_attr_info_ext *attrs, guint n) { proto_item *item = proto_tree_get_parent(tree); - attr_t *attr; + xmpp_attr_t *attr; guint i; gboolean short_list_started = FALSE; @@ -899,9 +893,9 @@ display_attrs_ext(proto_tree *tree, element_t *element, packet_info *pinfo, tvbu for (i = 0; i < n && attrs != NULL; i++) { if(strcmp(ns_fullnames->data, attrs[i].ns) == 0) { - attr = get_attr_ext(element, attrs[i].info.name, ns_abbrevs->data); + attr = xmpp_get_attr_ext(element, attrs[i].info.name, ns_abbrevs->data); if(!attr && element->default_ns_abbrev && strcmp(ns_abbrevs->data, element->default_ns_abbrev)==0) - attr = get_attr_ext(element, attrs[i].info.name, ""); + attr = xmpp_get_attr_ext(element, attrs[i].info.name, ""); if (attr) { if (attrs[i].info.hf != -1) { @@ -958,7 +952,7 @@ struct name_attr_t returns pointer to the struct that contains 3 strings(element name, attribute name, attribute value) */ gpointer -name_attr_struct(gchar *name, gchar *attr_name, gchar *attr_value) +xmpp_name_attr_struct(gchar *name, gchar *attr_name, gchar *attr_value) { struct name_attr_t *result; @@ -970,13 +964,13 @@ name_attr_struct(gchar *name, gchar *attr_name, gchar *attr_value) } void -display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t *tvb, elem_info *elems, guint n) +xmpp_display_elems(proto_tree *tree, xmpp_element_t *parent, packet_info *pinfo, tvbuff_t *tvb, xmpp_elem_info *elems, guint n) { guint i; for(i = 0; i < n && elems!=NULL; i++) { - element_t *elem = NULL; + xmpp_element_t *elem = NULL; if(elems[i].type == NAME_AND_ATTR) { @@ -991,7 +985,7 @@ display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t a = elems[i].data; - while(loop && (elem = steal_element_by_name_and_attr(parent, a->name, a->attr_name, a->attr_value))!=NULL) + while(loop && (elem = xmpp_steal_element_by_name_and_attr(parent, a->name, a->attr_name, a->attr_value))!=NULL) { elems[i].elem_func(tree, tvb, pinfo, elem); if(elems[i].occurrence == ONE) @@ -1002,7 +996,7 @@ display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t gboolean loop = TRUE; gchar *name = elems[i].data; - while(loop && (elem = steal_element_by_name(parent, name))!=NULL) + while(loop && (elem = xmpp_steal_element_by_name(parent, name))!=NULL) { elems[i].elem_func(tree, tvb, pinfo, elem); if(elems[i].occurrence == ONE) @@ -1017,8 +1011,8 @@ display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t gchar *attr_name; gchar *attr_value; } *attr = elems[i].data; - - while(loop && (elem = steal_element_by_attr(parent, attr->attr_name, attr->attr_value))!=NULL) + + while(loop && (elem = xmpp_steal_element_by_attr(parent, attr->attr_name, attr->attr_value))!=NULL) { elems[i].elem_func(tree, tvb, pinfo, elem); if(elems[i].occurrence == ONE) @@ -1028,9 +1022,9 @@ display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t } else if(elems[i].type == NAMES) { gboolean loop = TRUE; - array_t *names = elems[i].data; + xmpp_array_t *names = elems[i].data; - while(loop && (elem = steal_element_by_names(parent, (const gchar**)names->data, names->length))!=NULL) + while(loop && (elem = xmpp_steal_element_by_names(parent, (const gchar**)names->data, names->length))!=NULL) { elems[i].elem_func(tree, tvb, pinfo, elem); if(elems[i].occurrence == ONE) @@ -1043,12 +1037,12 @@ display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t } /* -function checks that variable value is in array ((array_t)data)->data +function checks that variable value is in array ((xmpp_array_t)data)->data */ void -val_enum_list(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, gpointer data) +xmpp_val_enum_list(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, gpointer data) { - array_t *enums_array = data; + xmpp_array_t *enums_array = data; gint i; gboolean value_in_enums = FALSE; @@ -1072,12 +1066,12 @@ val_enum_list(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, g void -change_elem_to_attrib(const gchar *elem_name, const gchar *attr_name, element_t *parent, attr_t* (*transform_func)(element_t *element)) +xmpp_change_elem_to_attrib(const gchar *elem_name, const gchar *attr_name, xmpp_element_t *parent, xmpp_attr_t* (*transform_func)(xmpp_element_t *element)) { - element_t *element = NULL; - attr_t *fake_attr = NULL; + xmpp_element_t *element = NULL; + xmpp_attr_t *fake_attr = NULL; - element = steal_element_by_name(parent, elem_name); + element = xmpp_steal_element_by_name(parent, elem_name); if(element) fake_attr = transform_func(element); @@ -1085,26 +1079,26 @@ change_elem_to_attrib(const gchar *elem_name, const gchar *attr_name, element_t g_hash_table_insert(parent->attrs, (gpointer)attr_name, fake_attr); } -attr_t* -transform_func_cdata(element_t *elem) +xmpp_attr_t* +xmpp_transform_func_cdata(xmpp_element_t *elem) { - attr_t *result = ep_init_attr_t(elem->data?elem->data->value:"", elem->offset, elem->length); + xmpp_attr_t *result = xmpp_ep_init_attr_t(elem->data?elem->data->value:"", elem->offset, elem->length); return result; } static void -copy_hash_table_func(gpointer key, gpointer value, gpointer user_data) +xmpp_copy_hash_table_func(gpointer key, gpointer value, gpointer user_data) { GHashTable *dst = user_data; g_hash_table_insert(dst, key, value); } -void copy_hash_table(GHashTable *src, GHashTable *dst) +void xmpp_copy_hash_table(GHashTable *src, GHashTable *dst) { - g_hash_table_foreach(src, copy_hash_table_func, dst); + g_hash_table_foreach(src, xmpp_copy_hash_table_func, dst); } -/* +#if 0 static void printf_hash_table_func(gpointer key, gpointer value, gpointer user_data _U_) { @@ -1112,7 +1106,7 @@ printf_hash_table_func(gpointer key, gpointer value, gpointer user_data _U_) } void -printf_elements(element_t *root) +printf_elements(xmpp_element_t *root) { GList *elems = root->elements; @@ -1124,7 +1118,8 @@ printf_elements(element_t *root) elems = elems->next; } } -*/ +#endif + /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * diff --git a/epan/dissectors/packet-xmpp-utils.h b/epan/dissectors/packet-xmpp-utils.h index b6e18ebd53..c9c3979bf0 100644 --- a/epan/dissectors/packet-xmpp-utils.h +++ b/epan/dissectors/packet-xmpp-utils.h @@ -38,34 +38,34 @@ FI_RESET_FLAG(PITEM_FINFO(proto_item), FI_HIDDEN); \ } while(0) -#define elem_cdata(elem) \ +#define xmpp_elem_cdata(elem) \ elem->data?elem->data->value:"" -typedef struct _array_t +typedef struct _xmpp_array_t { gpointer data; gint length; -} array_t; +} xmpp_array_t; -typedef struct _attr_t{ +typedef struct _xmpp_attr_t{ gchar *value; gchar *name; gint offset; gint length; gboolean was_read; -} attr_t; +} xmpp_attr_t; -typedef struct _data_t{ +typedef struct _xmpp_data_t{ gchar *value; gint offset; gint length; -} data_t; +} xmpp_data_t; -typedef struct _element_t{ +typedef struct _xmpp_element_t{ gchar* name; - + /*abbreviation that apprears before tag name (<nos:x .../>) if abbrev doesn't appear then NULL*/ gchar* default_ns_abbrev; @@ -74,16 +74,16 @@ typedef struct _element_t{ GHashTable *attrs; GList *elements; - data_t *data; + xmpp_data_t *data; gint offset; gint length; gboolean was_read; -} element_t; +} xmpp_element_t; /*informations about attributes that are displayed in proto tree*/ -typedef struct _attr_info{ +typedef struct _xmpp_attr_info{ gchar *name; gint hf; gboolean is_required; @@ -93,33 +93,33 @@ typedef struct _attr_info{ it may impose other restrictions (e.g. validating atribut's name, ...)*/ void (*val_func)(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, gpointer data); gpointer data; -} attr_info; +} xmpp_attr_info; -typedef struct _attr_info_ext{ +typedef struct _xmpp_attr_info_ext{ gchar* ns; - attr_info info; -} attr_info_ext; + xmpp_attr_info info; +} xmpp_attr_info_ext; -typedef enum _elem_info_type{ +typedef enum _xmpp_elem_info_type{ NAME, ATTR, NAME_AND_ATTR, NAMES -} elem_info_type; +} xmpp_elem_info_type; -typedef enum _elem_info_occurrence +typedef enum _xmpp_elem_info_occurrence { ONE,MANY -} elem_info_occurrence; +} xmpp_elem_info_occurrence; /*informations about elements that are displayed in proto tree*/ -typedef struct _elem_info{ - elem_info_type type; +typedef struct _xmpp_elem_info{ + xmpp_elem_info_type type; gpointer data; /*function that displays element in tree*/ - void (*elem_func)(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, element_t* element); - elem_info_occurrence occurrence; -} elem_info; + void (*elem_func)(proto_tree* tree, tvbuff_t* tvb, packet_info* pinfo, xmpp_element_t* element); + xmpp_elem_info_occurrence occurrence; +} xmpp_elem_info; typedef struct _xmpp_conv_info_t { emem_tree_t *req_resp; @@ -141,113 +141,113 @@ typedef struct _xmpp_reqresp_transaction_t { * Both packet should have the same id attribute. Function saves in emem_tree pairs of * packet id and struct xmpp_transaction_t. */ -extern void xmpp_iq_reqresp_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info); +extern void xmpp_iq_reqresp_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for jingle session tracking in IQ packets. * Function saves in emem_tree pairs of packet's id and Jingle session's id. */ -extern void xmpp_jingle_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info); +extern void xmpp_jingle_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for ibb(in band bytestreams) session tracking in IQ packets. * Function saves in emem_tree pairs of packet's id and In-Band Bytestreams session's id. */ -extern void xmpp_ibb_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info); +extern void xmpp_ibb_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for GTalk session(voice/video) tracking in IQ packets. * Function saves in emem_tree pairs of packet's id and GTalk session's id. */ -extern void xmpp_gtalk_session_track(packet_info *pinfo, element_t *packet, xmpp_conv_info_t *xmpp_info); +extern void xmpp_gtalk_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function detects unrecognized elements and displays them in tree. * It uses ett_unknown to display packets. ett_unknown has const size described by - * ETT_UNKNOWN_LEN in packet-xmpp.h + * ETT_UNKNOWN_LEN in packet-xmpp.h */ -extern void xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_unknown(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -extern void xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element, gboolean displ_short_list); +extern void xmpp_unknown_attrs(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element, gboolean displ_short_list); /** Displays CDATA from element in tree. You can use your own header field hf or * pass -1. If you pass -1 then CDATA will be display as text(proto_tree_add_text): * ELEMENT_NAME: CDATA * ELEMENT_NAME = element->name, if element is empty CDATA = "(empty)" */ -extern void xmpp_cdata(proto_tree *tree, tvbuff_t *tvb, element_t *element, gint hf); +extern void xmpp_cdata(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element, gint hf); /** Function is similar to xmpp_cdata. But it display items only as a text and it is * compatibile with function display_elems */ -extern void xmpp_simple_cdata_elem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, element_t *element); +extern void xmpp_simple_cdata_elem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *element); -/** Converts xml_frame_t struct to element_t. Should be call with parent==NULL. +/** Converts xml_frame_t struct to xmpp_element_t. Should be call with parent==NULL. */ -extern element_t* xml_frame_to_element_t(xml_frame_t *xml_frame, element_t *parent, tvbuff_t *tvb); +extern xmpp_element_t* xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb); -/** Frees all GLib structs in element_t struct. Should be call only for root element. +/** Frees all GLib structs in xmpp_element_t struct. Should be call only for root element. * It works recursively. */ -extern void element_t_tree_free(element_t *root); +extern void xmpp_element_t_tree_free(xmpp_element_t *root); -/** Allocs ephemeral memory for array_t struct.*/ -extern array_t* ep_init_array_t(const gchar** array, gint len); +/** Allocs ephemeral memory for xmpp_array_t struct.*/ +extern xmpp_array_t* xmpp_ep_init_array_t(const gchar** array, gint len); -/*Allocs ephemeral memory for attr_t struct*/ -extern attr_t* ep_init_attr_t(gchar *value, gint offset, gint length); +/*Allocs ephemeral memory for xmpp_attr_t struct*/ +extern xmpp_attr_t* xmpp_ep_init_attr_t(gchar *value, gint offset, gint length); /*Allocs ephemeral memory for upcased string*/ -extern gchar* ep_string_upcase(const gchar* string); +extern gchar* xmpp_ep_string_upcase(const gchar* string); -/*Compares 2 element_t struct by names. Returns value is similar to the returned by strcmp*/ -extern gint element_t_cmp(gconstpointer a, gconstpointer b); +/*Compares 2 xmpp_element_t struct by names. Returns value is similar to the returned by strcmp*/ +extern gint xmpp_element_t_cmp(gconstpointer a, gconstpointer b); /*Searches child element in parent element by name. GList element is returned.*/ -extern GList* find_element_by_name(element_t *packet,const gchar *name); +extern GList* xmpp_find_element_by_name(xmpp_element_t *packet,const gchar *name); /** steal_* * Functions searches and marks as read found elements. * If element is set as read, it is invisible for these functions.*/ - -extern element_t* steal_element_by_name(element_t *packet, const gchar *name); -extern element_t* steal_element_by_names(element_t *packet, const gchar **names, gint names_len); -extern element_t* steal_element_by_attr(element_t *packet, const gchar *attr_name, const gchar *attr_value); -extern element_t* steal_element_by_name_and_attr(element_t *packet, const gchar *name, const gchar *attr_name, const gchar *attr_value); + +extern xmpp_element_t* xmpp_steal_element_by_name(xmpp_element_t *packet, const gchar *name); +extern xmpp_element_t* xmpp_steal_element_by_names(xmpp_element_t *packet, const gchar **names, gint names_len); +extern xmpp_element_t* xmpp_steal_element_by_attr(xmpp_element_t *packet, const gchar *attr_name, const gchar *attr_value); +extern xmpp_element_t* xmpp_steal_element_by_name_and_attr(xmpp_element_t *packet, const gchar *name, const gchar *attr_name, const gchar *attr_value); /*Returns first child in element*/ -extern element_t* get_first_element(element_t *packet); +extern xmpp_element_t* xmpp_get_first_element(xmpp_element_t *packet); /*Converts element to string. Returns memory allocated as ephemeral.*/ -extern gchar* element_to_string(tvbuff_t *tvb, element_t *element); +extern gchar* xmpp_element_to_string(tvbuff_t *tvb, xmpp_element_t *element); /*Converts attribute to string. Returns memory allocated as ephemeral.*/ -extern gchar* attr_to_string(tvbuff_t *tvb, attr_t *attr); +extern gchar* xmpp_attr_to_string(tvbuff_t *tvb, xmpp_attr_t *attr); /* Returns attribute by name and set as read. If attrib is set as read, it may be found * one more time, but it is invisible for function xmpp_unknown_attrib*/ -extern attr_t* get_attr(element_t *element, const gchar* attr_name); +extern xmpp_attr_t* xmpp_get_attr(xmpp_element_t *element, const gchar* attr_name); /*Function hides first element in tree.*/ -extern void proto_tree_hide_first_child(proto_tree *tree); +extern void xmpp_proto_tree_hide_first_child(proto_tree *tree); /*Function shows first element in tree.*/ -extern void proto_tree_show_first_child(proto_tree *tree); +extern void xmpp_proto_tree_show_first_child(proto_tree *tree); /*Function returns item as text. Memory is allocated as ephemeral.*/ extern gchar* proto_item_get_text(proto_item *item); -/*Function returns struct that contains 3 strings. It is used to build attr_info struct.*/ -extern gpointer name_attr_struct(gchar *name, gchar *attr_name, gchar *attr_value); +/*Function returns struct that contains 3 strings. It is used to build xmpp_attr_info struct.*/ +extern gpointer xmpp_name_attr_struct(gchar *name, gchar *attr_name, gchar *attr_value); /** Function displays attributes from element in way described in attrs. * Elements that doesn't exist in attrs are displayed as text. - * In ATTR_INFO struct you can define several things: + * In XMPP_ATTR_INFO struct you can define several things: * - is_in_short_list - attribute should be displayed in short list e.g. ELEMENT_NAME [ATTR1='value' ATTR2='value'] * - is_required - attribute is required. If attribute doesn't appear then EXPERT INFO will be displayed * - val_func - validate function * - data - data passes to the val_func */ -extern void display_attrs(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t *tvb, attr_info *attrs, guint n); +extern void xmpp_display_attrs(proto_tree *tree, xmpp_element_t *element, packet_info *pinfo, tvbuff_t *tvb, xmpp_attr_info *attrs, guint n); -/** Function does the same as shown above. It takes attrs(ATTR_INFO_EXT) argument - * that contains ATTR_INFO struct and string with namespace. It is used when packet +/** Function does the same as shown above. It takes attrs(XMPP_ATTR_INFO_EXT) argument + * that contains XMPP_ATTR_INFO struct and string with namespace. It is used when packet * contains several namespaces and each attribute belongs to particular namespace. * E.g. * <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' @@ -256,32 +256,32 @@ extern void display_attrs(proto_tree *tree, element_t *element, packet_info *pin * ga:client-uses-full-bind-result='true'> * </auth> */ -extern void display_attrs_ext(proto_tree *tree, element_t *element, packet_info *pinfo, tvbuff_t *tvb, attr_info_ext *attrs, guint n); +extern void xmpp_display_attrs_ext(proto_tree *tree, xmpp_element_t *element, packet_info *pinfo, tvbuff_t *tvb, xmpp_attr_info_ext *attrs, guint n); -/** Displays elements from parent element in a way described in elems(ELEM_INFO). - * ELEM_INFO describes how to find particular element and what action should be done +/** Displays elements from parent element in a way described in elems(XMPP_ELEM_INFO). + * XMPP_ELEM_INFO describes how to find particular element and what action should be done * for this element. * Function calls xmpp_unknown. */ -extern void display_elems(proto_tree *tree, element_t *parent, packet_info *pinfo, tvbuff_t *tvb, elem_info *elems, guint n); +extern void xmpp_display_elems(proto_tree *tree, xmpp_element_t *parent, packet_info *pinfo, tvbuff_t *tvb, xmpp_elem_info *elems, guint n); /* Validates attribute value. Takes string array(gchar**) in parameter data. - * Is used in ATTR_INFO struct. + * Is used in XMPP_ATTR_INFO struct. */ -extern void val_enum_list(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, gpointer data); +extern void xmpp_val_enum_list(packet_info *pinfo, proto_item *item, gchar *name, gchar *value, gpointer data); /** Function changes element to attribute. It searches element by name in parent element, * next it create attribute using transform_func and inserts it to parent attributes hash table * using attr_name as key. */ -extern void change_elem_to_attrib(const gchar *elem_name, const gchar *attr_name, element_t *parent, attr_t* (*transform_func)(element_t *element)); +extern void xmpp_change_elem_to_attrib(const gchar *elem_name, const gchar *attr_name, xmpp_element_t *parent, xmpp_attr_t* (*transform_func)(xmpp_element_t *element)); /** transform_func that creates attribute with element's cdata as value */ -extern attr_t* transform_func_cdata(element_t *elem); +extern xmpp_attr_t* xmpp_transform_func_cdata(xmpp_element_t *elem); /*Copys keys and values from one hash table to another. Hash tables must be initialized.*/ -extern void copy_hash_table(GHashTable *src, GHashTable *dst); +extern void xmpp_copy_hash_table(GHashTable *src, GHashTable *dst); #endif /* XMPP_UTILS_H */ diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c index 7edd166454..627e9f765b 100644 --- a/epan/dissectors/packet-xmpp.c +++ b/epan/dissectors/packet-xmpp.c @@ -1,6 +1,6 @@ /* packet-xmpp.c * Wireshark's XMPP dissector. - * + * * Copyright 2011, Mariusz Okroj <okrojmariusz[]gmail.com> * * $Id$ @@ -28,15 +28,13 @@ #include "config.h" #endif -#include<stdio.h> -#include<string.h> +#include <string.h> + #include <glib.h> #include <epan/packet.h> -#include <epan/proto.h> #include <epan/emem.h> #include <epan/conversation.h> -#include <epan/strutil.h> #include <epan/expert.h> #include <epan/prefs.h> @@ -375,7 +373,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *xmpp_tree = NULL; proto_item *xmpp_item = NULL; - element_t *packet = NULL; + xmpp_element_t *packet = NULL; /*check if desegment * now it checks that last char is '>', @@ -413,14 +411,14 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { /*if tree == NULL then xmpp_item and xmpp_tree will also NULL*/ xmpp_item = proto_tree_add_item(tree, proto_xmpp, tvb, 0, -1, ENC_NA); xmpp_tree = proto_item_add_subtree(xmpp_item, ett_xmpp); - + call_dissector(xml_handle,tvb,pinfo,xmpp_tree); /*if stream end occurs then return*/ if(xmpp_stream_close(xmpp_tree,tvb, pinfo)) { if(xmpp_tree) - proto_tree_hide_first_child(xmpp_tree); + xmpp_proto_tree_hide_first_child(xmpp_tree); return; } @@ -429,7 +427,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { /*data from XML dissector*/ xml_frame = ((xml_frame_t*)pinfo->private_data)->first_child; - + if(!xml_frame) return; @@ -445,7 +443,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { conversation_add_proto_data(conversation, proto_xmpp, (void *) xmpp_info); } - + if (pinfo->match_uint == pinfo->destport) out_packet = TRUE; else @@ -453,7 +451,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { while(xml_frame) { - packet = xml_frame_to_element_t(xml_frame, NULL, tvb); + packet = xmpp_xml_frame_to_element_t(xml_frame, NULL, tvb); DISSECTOR_ASSERT(packet); if (strcmp(packet->name, "iq") == 0) { @@ -478,7 +476,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { /*it hides tree generated by XML dissector*/ - proto_tree_hide_first_child(xmpp_tree); + xmpp_proto_tree_hide_first_child(xmpp_tree); if (strcmp(packet->name, "iq") == 0) { xmpp_iq(xmpp_tree, tvb, pinfo, packet); @@ -507,7 +505,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { }else if (strcmp(packet->name, "proceed") == 0) { xmpp_proceed(xmpp_tree, tvb, pinfo, packet); }else { - proto_tree_show_first_child(xmpp_tree); + xmpp_proto_tree_show_first_child(xmpp_tree); expert_add_info_format(pinfo, xmpp_tree, PI_UNDECODED, PI_NOTE, "Unknown packet: %s", packet->name); col_clear(pinfo->cinfo, COL_INFO); col_append_fstr(pinfo->cinfo, COL_INFO, "UNKNOWN PACKET "); @@ -515,17 +513,17 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { /*appends to COL_INFO information about src or dst*/ if (pinfo->match_uint == pinfo->destport) { - attr_t *to = get_attr(packet, "to"); + xmpp_attr_t *to = xmpp_get_attr(packet, "to"); if (to) col_append_fstr(pinfo->cinfo, COL_INFO, "> %s ", to->value); } else { - attr_t *from = get_attr(packet, "from"); + xmpp_attr_t *from = xmpp_get_attr(packet, "from"); if (from) col_append_fstr(pinfo->cinfo, COL_INFO, "< %s ", from->value); } } - element_t_tree_free(packet); + xmpp_element_t_tree_free(packet); xml_frame = xml_frame->next_sibling; } } @@ -1383,7 +1381,7 @@ proto_register_xmpp(void) { ett_unknown_ptr[i] = &ett_unknown[i]; } - + proto_xmpp = proto_register_protocol( "XMPP Protocol", /* name */ @@ -1411,7 +1409,6 @@ proto_reg_handoff_xmpp(void) { xml_handle = find_dissector("xml"); - /*xmpp_handle = create_dissector_handle(dissect_xmpp, proto_xmpp);*/ xmpp_handle = find_dissector("xmpp"); dissector_add_uint("tcp.port", XMPP_PORT, xmpp_handle); |