aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>2011-08-04 16:42:32 +0000
committerwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>2011-08-04 16:42:32 +0000
commitca77b7ae564bc6f65d3e46f31e4f340f9d77e779 (patch)
tree7d8649acac460a74906643f1449bc9ebd9ed22e8 /epan
parentf16d4b36d4b22d2f19c6929bdbdd17f9d9a56c3c (diff)
Whitespace cleanup: convert mixture of "4 space" and "8 space" tabs to spaces.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@38337 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-wsp.c12732
1 files changed, 6371 insertions, 6361 deletions
diff --git a/epan/dissectors/packet-wsp.c b/epan/dissectors/packet-wsp.c
index 9c584a94db..c5eeaa8467 100644
--- a/epan/dissectors/packet-wsp.c
+++ b/epan/dissectors/packet-wsp.c
@@ -42,8 +42,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/* Edit with a 4-space tabulation */
-
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
@@ -66,8 +64,8 @@
*/
#ifdef DEBUG_wsp
#define DebugLog(x) \
- g_print("%s:%u: ", __FILE__, __LINE__); \
- g_print x
+ g_print("%s:%u: ", __FILE__, __LINE__); \
+ g_print x
#else
#define DebugLog(x) ;
#endif
@@ -78,266 +76,266 @@ static int wsp_tap = -1;
/* File scoped variables for the protocol and registered fields */
-static int proto_wsp = HF_EMPTY;
-static int proto_sir = HF_EMPTY;
+static int proto_wsp = HF_EMPTY;
+static int proto_sir = HF_EMPTY;
/*
* Initialize the header field pointers
*/
/* WSP header fields and their subfields if available */
-static int hf_hdr_name = HF_EMPTY;
-static int hf_hdr_accept = HF_EMPTY;
-static int hf_hdr_accept_charset = HF_EMPTY;
-static int hf_hdr_accept_encoding = HF_EMPTY;
-static int hf_hdr_accept_language = HF_EMPTY;
-static int hf_hdr_accept_ranges = HF_EMPTY;
-static int hf_hdr_age = HF_EMPTY;
-static int hf_hdr_allow = HF_EMPTY;
-static int hf_hdr_authorization = HF_EMPTY;
-static int hf_hdr_authorization_scheme = HF_EMPTY; /* Subfield */
-static int hf_hdr_authorization_user_id = HF_EMPTY; /* Subfield */
-static int hf_hdr_authorization_password = HF_EMPTY; /* Subfield */
-static int hf_hdr_cache_control = HF_EMPTY;
-static int hf_hdr_connection = HF_EMPTY;
-static int hf_hdr_content_base = HF_EMPTY;
-static int hf_hdr_content_encoding = HF_EMPTY;
-static int hf_hdr_content_language = HF_EMPTY;
-static int hf_hdr_content_length = HF_EMPTY;
-static int hf_hdr_content_location = HF_EMPTY;
-static int hf_hdr_content_md5 = HF_EMPTY;
-static int hf_hdr_content_range = HF_EMPTY;
-static int hf_hdr_content_range_first_byte_pos = HF_EMPTY; /* Subfield */
-static int hf_hdr_content_range_entity_length = HF_EMPTY; /* Subfield */
-static int hf_hdr_content_type = HF_EMPTY;
-static int hf_hdr_date = HF_EMPTY;
-static int hf_hdr_etag = HF_EMPTY;
-static int hf_hdr_expires = HF_EMPTY;
-static int hf_hdr_from = HF_EMPTY;
-static int hf_hdr_host = HF_EMPTY;
-static int hf_hdr_if_modified_since = HF_EMPTY;
-static int hf_hdr_if_match = HF_EMPTY;
-static int hf_hdr_if_none_match = HF_EMPTY;
-static int hf_hdr_if_range = HF_EMPTY;
-static int hf_hdr_if_unmodified_since = HF_EMPTY;
-static int hf_hdr_last_modified = HF_EMPTY;
-static int hf_hdr_location = HF_EMPTY;
-static int hf_hdr_max_forwards = HF_EMPTY;
-static int hf_hdr_pragma = HF_EMPTY;
-static int hf_hdr_proxy_authenticate = HF_EMPTY;
-static int hf_hdr_proxy_authenticate_scheme = HF_EMPTY; /* Subfield */
-static int hf_hdr_proxy_authenticate_realm = HF_EMPTY; /* Subfield */
-static int hf_hdr_proxy_authorization = HF_EMPTY;
-static int hf_hdr_proxy_authorization_scheme = HF_EMPTY; /* Subfield */
-static int hf_hdr_proxy_authorization_user_id = HF_EMPTY; /* Subfield */
-static int hf_hdr_proxy_authorization_password = HF_EMPTY; /* Subfield */
-static int hf_hdr_public = HF_EMPTY;
-static int hf_hdr_range = HF_EMPTY;
-static int hf_hdr_range_first_byte_pos = HF_EMPTY; /* Subfield */
-static int hf_hdr_range_last_byte_pos = HF_EMPTY; /* Subfield */
-static int hf_hdr_range_suffix_length = HF_EMPTY; /* Subfield */
-static int hf_hdr_referer = HF_EMPTY;
-static int hf_hdr_retry_after = HF_EMPTY;
-static int hf_hdr_server = HF_EMPTY;
-static int hf_hdr_transfer_encoding = HF_EMPTY;
-static int hf_hdr_upgrade = HF_EMPTY;
-static int hf_hdr_user_agent = HF_EMPTY;
-static int hf_hdr_vary = HF_EMPTY;
-static int hf_hdr_via = HF_EMPTY;
-static int hf_hdr_warning = HF_EMPTY;
-static int hf_hdr_warning_code = HF_EMPTY; /* Subfield */
-static int hf_hdr_warning_agent = HF_EMPTY; /* Subfield */
-static int hf_hdr_warning_text = HF_EMPTY; /* Subfield */
-static int hf_hdr_www_authenticate = HF_EMPTY;
-static int hf_hdr_www_authenticate_scheme = HF_EMPTY; /* Subfield */
-static int hf_hdr_www_authenticate_realm = HF_EMPTY; /* Subfield */
-static int hf_hdr_content_disposition = HF_EMPTY;
-static int hf_hdr_application_id = HF_EMPTY;
-static int hf_hdr_content_uri = HF_EMPTY;
-static int hf_hdr_initiator_uri = HF_EMPTY;
-static int hf_hdr_bearer_indication = HF_EMPTY;
-static int hf_hdr_push_flag = HF_EMPTY;
-static int hf_hdr_push_flag_auth = HF_EMPTY; /* Subfield */
-static int hf_hdr_push_flag_trust = HF_EMPTY; /* Subfield */
-static int hf_hdr_push_flag_last = HF_EMPTY; /* Subfield */
-static int hf_hdr_profile = HF_EMPTY;
-static int hf_hdr_profile_diff = HF_EMPTY;
-static int hf_hdr_profile_warning = HF_EMPTY;
-static int hf_hdr_expect = HF_EMPTY;
-static int hf_hdr_te = HF_EMPTY;
-static int hf_hdr_trailer = HF_EMPTY;
-static int hf_hdr_x_wap_tod = HF_EMPTY;
-static int hf_hdr_content_id = HF_EMPTY;
-static int hf_hdr_set_cookie = HF_EMPTY;
-static int hf_hdr_cookie = HF_EMPTY;
-static int hf_hdr_encoding_version = HF_EMPTY;
-static int hf_hdr_x_wap_security = HF_EMPTY;
-static int hf_hdr_x_wap_application_id = HF_EMPTY;
-static int hf_hdr_accept_application = HF_EMPTY;
+static int hf_hdr_name = HF_EMPTY;
+static int hf_hdr_accept = HF_EMPTY;
+static int hf_hdr_accept_charset = HF_EMPTY;
+static int hf_hdr_accept_encoding = HF_EMPTY;
+static int hf_hdr_accept_language = HF_EMPTY;
+static int hf_hdr_accept_ranges = HF_EMPTY;
+static int hf_hdr_age = HF_EMPTY;
+static int hf_hdr_allow = HF_EMPTY;
+static int hf_hdr_authorization = HF_EMPTY;
+static int hf_hdr_authorization_scheme = HF_EMPTY; /* Subfield */
+static int hf_hdr_authorization_user_id = HF_EMPTY; /* Subfield */
+static int hf_hdr_authorization_password = HF_EMPTY; /* Subfield */
+static int hf_hdr_cache_control = HF_EMPTY;
+static int hf_hdr_connection = HF_EMPTY;
+static int hf_hdr_content_base = HF_EMPTY;
+static int hf_hdr_content_encoding = HF_EMPTY;
+static int hf_hdr_content_language = HF_EMPTY;
+static int hf_hdr_content_length = HF_EMPTY;
+static int hf_hdr_content_location = HF_EMPTY;
+static int hf_hdr_content_md5 = HF_EMPTY;
+static int hf_hdr_content_range = HF_EMPTY;
+static int hf_hdr_content_range_first_byte_pos = HF_EMPTY; /* Subfield */
+static int hf_hdr_content_range_entity_length = HF_EMPTY; /* Subfield */
+static int hf_hdr_content_type = HF_EMPTY;
+static int hf_hdr_date = HF_EMPTY;
+static int hf_hdr_etag = HF_EMPTY;
+static int hf_hdr_expires = HF_EMPTY;
+static int hf_hdr_from = HF_EMPTY;
+static int hf_hdr_host = HF_EMPTY;
+static int hf_hdr_if_modified_since = HF_EMPTY;
+static int hf_hdr_if_match = HF_EMPTY;
+static int hf_hdr_if_none_match = HF_EMPTY;
+static int hf_hdr_if_range = HF_EMPTY;
+static int hf_hdr_if_unmodified_since = HF_EMPTY;
+static int hf_hdr_last_modified = HF_EMPTY;
+static int hf_hdr_location = HF_EMPTY;
+static int hf_hdr_max_forwards = HF_EMPTY;
+static int hf_hdr_pragma = HF_EMPTY;
+static int hf_hdr_proxy_authenticate = HF_EMPTY;
+static int hf_hdr_proxy_authenticate_scheme = HF_EMPTY; /* Subfield */
+static int hf_hdr_proxy_authenticate_realm = HF_EMPTY; /* Subfield */
+static int hf_hdr_proxy_authorization = HF_EMPTY;
+static int hf_hdr_proxy_authorization_scheme = HF_EMPTY; /* Subfield */
+static int hf_hdr_proxy_authorization_user_id = HF_EMPTY; /* Subfield */
+static int hf_hdr_proxy_authorization_password = HF_EMPTY; /* Subfield */
+static int hf_hdr_public = HF_EMPTY;
+static int hf_hdr_range = HF_EMPTY;
+static int hf_hdr_range_first_byte_pos = HF_EMPTY; /* Subfield */
+static int hf_hdr_range_last_byte_pos = HF_EMPTY; /* Subfield */
+static int hf_hdr_range_suffix_length = HF_EMPTY; /* Subfield */
+static int hf_hdr_referer = HF_EMPTY;
+static int hf_hdr_retry_after = HF_EMPTY;
+static int hf_hdr_server = HF_EMPTY;
+static int hf_hdr_transfer_encoding = HF_EMPTY;
+static int hf_hdr_upgrade = HF_EMPTY;
+static int hf_hdr_user_agent = HF_EMPTY;
+static int hf_hdr_vary = HF_EMPTY;
+static int hf_hdr_via = HF_EMPTY;
+static int hf_hdr_warning = HF_EMPTY;
+static int hf_hdr_warning_code = HF_EMPTY; /* Subfield */
+static int hf_hdr_warning_agent = HF_EMPTY; /* Subfield */
+static int hf_hdr_warning_text = HF_EMPTY; /* Subfield */
+static int hf_hdr_www_authenticate = HF_EMPTY;
+static int hf_hdr_www_authenticate_scheme = HF_EMPTY; /* Subfield */
+static int hf_hdr_www_authenticate_realm = HF_EMPTY; /* Subfield */
+static int hf_hdr_content_disposition = HF_EMPTY;
+static int hf_hdr_application_id = HF_EMPTY;
+static int hf_hdr_content_uri = HF_EMPTY;
+static int hf_hdr_initiator_uri = HF_EMPTY;
+static int hf_hdr_bearer_indication = HF_EMPTY;
+static int hf_hdr_push_flag = HF_EMPTY;
+static int hf_hdr_push_flag_auth = HF_EMPTY; /* Subfield */
+static int hf_hdr_push_flag_trust = HF_EMPTY; /* Subfield */
+static int hf_hdr_push_flag_last = HF_EMPTY; /* Subfield */
+static int hf_hdr_profile = HF_EMPTY;
+static int hf_hdr_profile_diff = HF_EMPTY;
+static int hf_hdr_profile_warning = HF_EMPTY;
+static int hf_hdr_expect = HF_EMPTY;
+static int hf_hdr_te = HF_EMPTY;
+static int hf_hdr_trailer = HF_EMPTY;
+static int hf_hdr_x_wap_tod = HF_EMPTY;
+static int hf_hdr_content_id = HF_EMPTY;
+static int hf_hdr_set_cookie = HF_EMPTY;
+static int hf_hdr_cookie = HF_EMPTY;
+static int hf_hdr_encoding_version = HF_EMPTY;
+static int hf_hdr_x_wap_security = HF_EMPTY;
+static int hf_hdr_x_wap_application_id = HF_EMPTY;
+static int hf_hdr_accept_application = HF_EMPTY;
/* Openwave headers */
-static int hf_hdr_openwave_x_up_proxy_operator_domain = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_home_page = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_uplink_version = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_ba_realm = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_request_uri = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_operator_domain = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_home_page = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_uplink_version = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_ba_realm = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_request_uri = HF_EMPTY;
#if 0
-static int hf_hdr_openwave_x_up_proxy_client_id = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_client_id = HF_EMPTY;
#endif
-static int hf_hdr_openwave_x_up_proxy_bookmark = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_push_seq = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_notify = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_net_ask = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_tod = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_ba_enable = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_redirect_enable = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_redirect_status = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_linger = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_enable_trust = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_trust = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_has_color = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_num_softkeys = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_softkey_size = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_screen_chars = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_screen_pixels = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_em_size = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_screen_depth = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_immed_alert = HF_EMPTY;
-static int hf_hdr_openwave_x_up_devcap_gui = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_trans_charset = HF_EMPTY;
-static int hf_hdr_openwave_x_up_proxy_push_accept = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_bookmark = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_push_seq = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_notify = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_net_ask = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_tod = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_ba_enable = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_redirect_enable = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_redirect_status = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_linger = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_enable_trust = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_trust = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_has_color = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_num_softkeys = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_softkey_size = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_screen_chars = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_screen_pixels = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_em_size = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_screen_depth = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_immed_alert = HF_EMPTY;
+static int hf_hdr_openwave_x_up_devcap_gui = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_trans_charset = HF_EMPTY;
+static int hf_hdr_openwave_x_up_proxy_push_accept = HF_EMPTY;
/* WSP parameter fields */
-static int hf_parameter_q = HF_EMPTY;
-static int hf_parameter_charset = HF_EMPTY;
+static int hf_parameter_q = HF_EMPTY;
+static int hf_parameter_charset = HF_EMPTY;
#if 0
-static int hf_parameter_textual = HF_EMPTY;
-static int hf_parameter_type = HF_EMPTY;
-static int hf_parameter_name = HF_EMPTY;
-static int hf_parameter_filename = HF_EMPTY;
-static int hf_parameter_start = HF_EMPTY;
-static int hf_parameter_start_info = HF_EMPTY;
-static int hf_parameter_comment = HF_EMPTY;
-static int hf_parameter_domain = HF_EMPTY;
-static int hf_parameter_path = HF_EMPTY;
-static int hf_parameter_sec = HF_EMPTY;
-static int hf_parameter_mac = HF_EMPTY;
-static int hf_parameter_upart_type = HF_EMPTY;
-static int hf_parameter_upart_type_value = HF_EMPTY;
-static int hf_parameter_level = HF_EMPTY;
+static int hf_parameter_textual = HF_EMPTY;
+static int hf_parameter_type = HF_EMPTY;
+static int hf_parameter_name = HF_EMPTY;
+static int hf_parameter_filename = HF_EMPTY;
+static int hf_parameter_start = HF_EMPTY;
+static int hf_parameter_start_info = HF_EMPTY;
+static int hf_parameter_comment = HF_EMPTY;
+static int hf_parameter_domain = HF_EMPTY;
+static int hf_parameter_path = HF_EMPTY;
+static int hf_parameter_sec = HF_EMPTY;
+static int hf_parameter_mac = HF_EMPTY;
+static int hf_parameter_upart_type = HF_EMPTY;
+static int hf_parameter_upart_type_value = HF_EMPTY;
+static int hf_parameter_level = HF_EMPTY;
#endif
/* Old header fields */
-static int hf_wsp_header_tid = HF_EMPTY;
-static int hf_wsp_header_pdu_type = HF_EMPTY;
-static int hf_wsp_version_major = HF_EMPTY;
-static int hf_wsp_version_minor = HF_EMPTY;
+static int hf_wsp_header_tid = HF_EMPTY;
+static int hf_wsp_header_pdu_type = HF_EMPTY;
+static int hf_wsp_version_major = HF_EMPTY;
+static int hf_wsp_version_minor = HF_EMPTY;
/* Session capabilities (CO-WSP) */
-static int hf_capabilities_length = HF_EMPTY;
-static int hf_capabilities_section = HF_EMPTY;
-static int hf_capa_client_sdu_size = HF_EMPTY;
-static int hf_capa_server_sdu_size = HF_EMPTY;
-static int hf_capa_protocol_options = HF_EMPTY;
-static int hf_capa_protocol_option_confirmed_push = HF_EMPTY; /* Subfield */
-static int hf_capa_protocol_option_push = HF_EMPTY; /* Subfield */
-static int hf_capa_protocol_option_session_resume = HF_EMPTY; /* Subfield */
-static int hf_capa_protocol_option_ack_headers = HF_EMPTY; /* Subfield */
-static int hf_capa_protocol_option_large_data_transfer = HF_EMPTY; /* Subfield */
-static int hf_capa_method_mor = HF_EMPTY;
-static int hf_capa_push_mor = HF_EMPTY;
-static int hf_capa_extended_methods = HF_EMPTY;
-static int hf_capa_header_code_pages = HF_EMPTY;
-static int hf_capa_aliases = HF_EMPTY;
-static int hf_capa_client_message_size = HF_EMPTY;
-static int hf_capa_server_message_size = HF_EMPTY;
-
-static int hf_wsp_header_uri_len = HF_EMPTY;
-static int hf_wsp_header_uri = HF_EMPTY;
-static int hf_wsp_server_session_id = HF_EMPTY;
-static int hf_wsp_header_status = HF_EMPTY;
-static int hf_wsp_header_length = HF_EMPTY;
-static int hf_wsp_headers_section = HF_EMPTY;
-static int hf_wsp_parameter_type = HF_EMPTY;
-static int hf_wsp_parameter_name = HF_EMPTY;
-static int hf_wsp_parameter_filename = HF_EMPTY;
-static int hf_wsp_parameter_start = HF_EMPTY;
-static int hf_wsp_parameter_start_info = HF_EMPTY;
-static int hf_wsp_parameter_comment = HF_EMPTY;
-static int hf_wsp_parameter_domain = HF_EMPTY;
-static int hf_wsp_parameter_path = HF_EMPTY;
-static int hf_wsp_parameter_sec = HF_EMPTY;
-static int hf_wsp_parameter_mac = HF_EMPTY;
-static int hf_wsp_parameter_upart_type = HF_EMPTY;
-static int hf_wsp_parameter_level = HF_EMPTY;
-static int hf_wsp_parameter_size = HF_EMPTY;
-static int hf_wsp_reply_data = HF_EMPTY;
-static int hf_wsp_post_data = HF_EMPTY;
-static int hf_wsp_push_data = HF_EMPTY;
-static int hf_wsp_multipart_data = HF_EMPTY;
-static int hf_wsp_mpart = HF_EMPTY;
+static int hf_capabilities_length = HF_EMPTY;
+static int hf_capabilities_section = HF_EMPTY;
+static int hf_capa_client_sdu_size = HF_EMPTY;
+static int hf_capa_server_sdu_size = HF_EMPTY;
+static int hf_capa_protocol_options = HF_EMPTY;
+static int hf_capa_protocol_option_confirmed_push = HF_EMPTY; /* Subfield */
+static int hf_capa_protocol_option_push = HF_EMPTY; /* Subfield */
+static int hf_capa_protocol_option_session_resume = HF_EMPTY; /* Subfield */
+static int hf_capa_protocol_option_ack_headers = HF_EMPTY; /* Subfield */
+static int hf_capa_protocol_option_large_data_transfer = HF_EMPTY; /* Subfield */
+static int hf_capa_method_mor = HF_EMPTY;
+static int hf_capa_push_mor = HF_EMPTY;
+static int hf_capa_extended_methods = HF_EMPTY;
+static int hf_capa_header_code_pages = HF_EMPTY;
+static int hf_capa_aliases = HF_EMPTY;
+static int hf_capa_client_message_size = HF_EMPTY;
+static int hf_capa_server_message_size = HF_EMPTY;
+
+static int hf_wsp_header_uri_len = HF_EMPTY;
+static int hf_wsp_header_uri = HF_EMPTY;
+static int hf_wsp_server_session_id = HF_EMPTY;
+static int hf_wsp_header_status = HF_EMPTY;
+static int hf_wsp_header_length = HF_EMPTY;
+static int hf_wsp_headers_section = HF_EMPTY;
+static int hf_wsp_parameter_type = HF_EMPTY;
+static int hf_wsp_parameter_name = HF_EMPTY;
+static int hf_wsp_parameter_filename = HF_EMPTY;
+static int hf_wsp_parameter_start = HF_EMPTY;
+static int hf_wsp_parameter_start_info = HF_EMPTY;
+static int hf_wsp_parameter_comment = HF_EMPTY;
+static int hf_wsp_parameter_domain = HF_EMPTY;
+static int hf_wsp_parameter_path = HF_EMPTY;
+static int hf_wsp_parameter_sec = HF_EMPTY;
+static int hf_wsp_parameter_mac = HF_EMPTY;
+static int hf_wsp_parameter_upart_type = HF_EMPTY;
+static int hf_wsp_parameter_level = HF_EMPTY;
+static int hf_wsp_parameter_size = HF_EMPTY;
+static int hf_wsp_reply_data = HF_EMPTY;
+static int hf_wsp_post_data = HF_EMPTY;
+static int hf_wsp_push_data = HF_EMPTY;
+static int hf_wsp_multipart_data = HF_EMPTY;
+static int hf_wsp_mpart = HF_EMPTY;
/* Header code page shift sequence */
-static int hf_wsp_header_shift_code = HF_EMPTY;
+static int hf_wsp_header_shift_code = HF_EMPTY;
/* WSP Redirect fields */
-static int hf_wsp_redirect_flags = HF_EMPTY;
-static int hf_wsp_redirect_permanent = HF_EMPTY;
-static int hf_wsp_redirect_reuse_security_session = HF_EMPTY;
-static int hf_redirect_addresses = HF_EMPTY;
+static int hf_wsp_redirect_flags = HF_EMPTY;
+static int hf_wsp_redirect_permanent = HF_EMPTY;
+static int hf_wsp_redirect_reuse_security_session = HF_EMPTY;
+static int hf_redirect_addresses = HF_EMPTY;
/* Address fields */
-static int hf_address_entry = HF_EMPTY;
-static int hf_address_flags_length = HF_EMPTY;
-static int hf_address_flags_length_bearer_type_included = HF_EMPTY; /* Subfield */
-static int hf_address_flags_length_port_number_included = HF_EMPTY; /* Subfield */
-static int hf_address_flags_length_address_len = HF_EMPTY; /* Subfield */
-static int hf_address_bearer_type = HF_EMPTY;
-static int hf_address_port_num = HF_EMPTY;
-static int hf_address_ipv4_addr = HF_EMPTY;
-static int hf_address_ipv6_addr = HF_EMPTY;
-static int hf_address_addr = HF_EMPTY;
+static int hf_address_entry = HF_EMPTY;
+static int hf_address_flags_length = HF_EMPTY;
+static int hf_address_flags_length_bearer_type_included = HF_EMPTY; /* Subfield */
+static int hf_address_flags_length_port_number_included = HF_EMPTY; /* Subfield */
+static int hf_address_flags_length_address_len = HF_EMPTY; /* Subfield */
+static int hf_address_bearer_type = HF_EMPTY;
+static int hf_address_port_num = HF_EMPTY;
+static int hf_address_ipv4_addr = HF_EMPTY;
+static int hf_address_ipv6_addr = HF_EMPTY;
+static int hf_address_addr = HF_EMPTY;
/* Session Initiation Request fields */
-static int hf_sir_section = HF_EMPTY;
-static int hf_sir_version = HF_EMPTY;
-static int hf_sir_app_id_list_len = HF_EMPTY;
-static int hf_sir_app_id_list = HF_EMPTY;
-static int hf_sir_wsp_contact_points_len = HF_EMPTY;
-static int hf_sir_wsp_contact_points = HF_EMPTY;
-static int hf_sir_contact_points_len = HF_EMPTY;
-static int hf_sir_contact_points = HF_EMPTY;
-static int hf_sir_protocol_options_len = HF_EMPTY;
-static int hf_sir_protocol_options = HF_EMPTY;
-static int hf_sir_prov_url_len = HF_EMPTY;
-static int hf_sir_prov_url = HF_EMPTY;
-static int hf_sir_cpi_tag_len = HF_EMPTY;
-static int hf_sir_cpi_tag = HF_EMPTY;
+static int hf_sir_section = HF_EMPTY;
+static int hf_sir_version = HF_EMPTY;
+static int hf_sir_app_id_list_len = HF_EMPTY;
+static int hf_sir_app_id_list = HF_EMPTY;
+static int hf_sir_wsp_contact_points_len = HF_EMPTY;
+static int hf_sir_wsp_contact_points = HF_EMPTY;
+static int hf_sir_contact_points_len = HF_EMPTY;
+static int hf_sir_contact_points = HF_EMPTY;
+static int hf_sir_protocol_options_len = HF_EMPTY;
+static int hf_sir_protocol_options = HF_EMPTY;
+static int hf_sir_prov_url_len = HF_EMPTY;
+static int hf_sir_prov_url = HF_EMPTY;
+static int hf_sir_cpi_tag_len = HF_EMPTY;
+static int hf_sir_cpi_tag = HF_EMPTY;
/*
* Initialize the subtree pointers
*/
/* WSP tree */
-static int ett_wsp = ETT_EMPTY;
+static int ett_wsp = ETT_EMPTY;
/* WSP headers tree */
-static int ett_header = ETT_EMPTY;
+static int ett_header = ETT_EMPTY;
/* WSP header subtree */
-static int ett_headers = ETT_EMPTY;
+static int ett_headers = ETT_EMPTY;
/* CO-WSP session capabilities */
-static int ett_capabilities = ETT_EMPTY;
-static int ett_capability = ETT_EMPTY;
-static int ett_post = ETT_EMPTY;
-static int ett_redirect_flags = ETT_EMPTY;
-static int ett_address_flags = ETT_EMPTY;
-static int ett_multiparts = ETT_EMPTY;
-static int ett_mpartlist = ETT_EMPTY;
+static int ett_capabilities = ETT_EMPTY;
+static int ett_capability = ETT_EMPTY;
+static int ett_post = ETT_EMPTY;
+static int ett_redirect_flags = ETT_EMPTY;
+static int ett_address_flags = ETT_EMPTY;
+static int ett_multiparts = ETT_EMPTY;
+static int ett_mpartlist = ETT_EMPTY;
/* Session Initiation Request tree */
-static int ett_sir = ETT_EMPTY;
-static int ett_addresses = ETT_EMPTY;
-static int ett_address = ETT_EMPTY;
+static int ett_sir = ETT_EMPTY;
+static int ett_addresses = ETT_EMPTY;
+static int ett_address = ETT_EMPTY;
@@ -354,820 +352,820 @@ static dissector_handle_t media_handle;
static dissector_handle_t wbxml_uaprof_handle;
static const value_string wsp_vals_pdu_type[] = {
- { 0x00, "Reserved" },
- { 0x01, "Connect" },
- { 0x02, "ConnectReply" },
- { 0x03, "Redirect" },
- { 0x04, "Reply" },
- { 0x05, "Disconnect" },
- { 0x06, "Push" },
- { 0x07, "ConfirmedPush" },
- { 0x08, "Suspend" },
- { 0x09, "Resume" },
-
- /* 0x10 - 0x3F Unassigned */
-
- { 0x40, "Get" },
- { 0x41, "Options" },
- { 0x42, "Head" },
- { 0x43, "Delete" },
- { 0x44, "Trace" },
-
- /* 0x45 - 0x4F Unassigned (Get PDU) */
- /* 0x50 - 0x5F Extended method (Get PDU) */
- { 0x50, "Extended Get Method 0"},
- { 0x51, "Extended Get Method 1"},
- { 0x52, "Extended Get Method 2"},
- { 0x53, "Extended Get Method 3"},
- { 0x54, "Extended Get Method 4"},
- { 0x55, "Extended Get Method 5"},
- { 0x56, "Extended Get Method 6"},
- { 0x57, "Extended Get Method 7"},
- { 0x58, "Extended Get Method 8"},
- { 0x59, "Extended Get Method 9"},
- { 0x5A, "Extended Get Method 10"},
- { 0x5B, "Extended Get Method 11"},
- { 0x5C, "Extended Get Method 12"},
- { 0x5D, "Extended Get Method 13"},
- { 0x5E, "Extended Get Method 14"},
- { 0x5F, "Extended Get Method 15"},
-
- { 0x60, "Post" },
- { 0x61, "Put" },
-
- /* 0x62 - 0x6F Unassigned (Post PDU) */
- /* 0x70 - 0x7F Extended method (Post PDU) */
- { 0x70, "Extended Post Method 0"},
- { 0x71, "Extended Post Method 1"},
- { 0x72, "Extended Post Method 2"},
- { 0x73, "Extended Post Method 3"},
- { 0x74, "Extended Post Method 4"},
- { 0x75, "Extended Post Method 5"},
- { 0x76, "Extended Post Method 6"},
- { 0x77, "Extended Post Method 7"},
- { 0x78, "Extended Post Method 8"},
- { 0x79, "Extended Post Method 9"},
- { 0x7A, "Extended Post Method 10"},
- { 0x7B, "Extended Post Method 11"},
- { 0x7C, "Extended Post Method 12"},
- { 0x7D, "Extended Post Method 13"},
- { 0x7E, "Extended Post Method 14"},
- { 0x7F, "Extended Post Method 15"},
-
- /* 0x80 - 0xFF Reserved */
-
- { 0x00, NULL }
+ { 0x00, "Reserved" },
+ { 0x01, "Connect" },
+ { 0x02, "ConnectReply" },
+ { 0x03, "Redirect" },
+ { 0x04, "Reply" },
+ { 0x05, "Disconnect" },
+ { 0x06, "Push" },
+ { 0x07, "ConfirmedPush" },
+ { 0x08, "Suspend" },
+ { 0x09, "Resume" },
+
+ /* 0x10 - 0x3F Unassigned */
+
+ { 0x40, "Get" },
+ { 0x41, "Options" },
+ { 0x42, "Head" },
+ { 0x43, "Delete" },
+ { 0x44, "Trace" },
+
+ /* 0x45 - 0x4F Unassigned (Get PDU) */
+ /* 0x50 - 0x5F Extended method (Get PDU) */
+ { 0x50, "Extended Get Method 0"},
+ { 0x51, "Extended Get Method 1"},
+ { 0x52, "Extended Get Method 2"},
+ { 0x53, "Extended Get Method 3"},
+ { 0x54, "Extended Get Method 4"},
+ { 0x55, "Extended Get Method 5"},
+ { 0x56, "Extended Get Method 6"},
+ { 0x57, "Extended Get Method 7"},
+ { 0x58, "Extended Get Method 8"},
+ { 0x59, "Extended Get Method 9"},
+ { 0x5A, "Extended Get Method 10"},
+ { 0x5B, "Extended Get Method 11"},
+ { 0x5C, "Extended Get Method 12"},
+ { 0x5D, "Extended Get Method 13"},
+ { 0x5E, "Extended Get Method 14"},
+ { 0x5F, "Extended Get Method 15"},
+
+ { 0x60, "Post" },
+ { 0x61, "Put" },
+
+ /* 0x62 - 0x6F Unassigned (Post PDU) */
+ /* 0x70 - 0x7F Extended method (Post PDU) */
+ { 0x70, "Extended Post Method 0"},
+ { 0x71, "Extended Post Method 1"},
+ { 0x72, "Extended Post Method 2"},
+ { 0x73, "Extended Post Method 3"},
+ { 0x74, "Extended Post Method 4"},
+ { 0x75, "Extended Post Method 5"},
+ { 0x76, "Extended Post Method 6"},
+ { 0x77, "Extended Post Method 7"},
+ { 0x78, "Extended Post Method 8"},
+ { 0x79, "Extended Post Method 9"},
+ { 0x7A, "Extended Post Method 10"},
+ { 0x7B, "Extended Post Method 11"},
+ { 0x7C, "Extended Post Method 12"},
+ { 0x7D, "Extended Post Method 13"},
+ { 0x7E, "Extended Post Method 14"},
+ { 0x7F, "Extended Post Method 15"},
+
+ /* 0x80 - 0xFF Reserved */
+
+ { 0x00, NULL }
};
value_string_ext wsp_vals_pdu_type_ext = VALUE_STRING_EXT_INIT(wsp_vals_pdu_type);
/* The WSP status codes are inherited from the HTTP status codes */
static const value_string wsp_vals_status[] = {
- /* 0x00 - 0x0F Reserved */
-
- { 0x10, "100 Continue" },
- { 0x11, "101 Switching Protocols" },
-
- { 0x20, "200 OK" },
- { 0x21, "201 Created" },
- { 0x22, "202 Accepted" },
- { 0x23, "203 Non-Authoritative Information" },
- { 0x24, "204 No Content" },
- { 0x25, "205 Reset Content" },
- { 0x26, "206 Partial Content" },
-
- { 0x30, "300 Multiple Choices" },
- { 0x31, "301 Moved Permanently" },
- { 0x32, "302 Moved Temporarily" },
- { 0x33, "303 See Other" },
- { 0x34, "304 Not Modified" },
- { 0x35, "305 Use Proxy" },
- { 0x37, "307 Temporary Redirect" },
-
- { 0x40, "400 Bad Request" },
- { 0x41, "401 Unauthorised" },
- { 0x42, "402 Payment Required" },
- { 0x43, "403 Forbidden" },
- { 0x44, "404 Not Found" },
- { 0x45, "405 Method Not Allowed" },
- { 0x46, "406 Not Acceptable" },
- { 0x47, "407 Proxy Authentication Required" },
- { 0x48, "408 Request Timeout" },
- { 0x49, "409 Conflict" },
- { 0x4A, "410 Gone" },
- { 0x4B, "411 Length Required" },
- { 0x4C, "412 Precondition Failed" },
- { 0x4D, "413 Request Entity Too Large" },
- { 0x4E, "414 Request-URI Too Large" },
- { 0x4F, "415 Unsupported Media Type" },
- { 0x50, "416 Requested Range Not Satisfiable" },
- { 0x51, "417 Expectation Failed" },
-
- { 0x60, "500 Internal Server Error" },
- { 0x61, "501 Not Implemented" },
- { 0x62, "502 Bad Gateway" },
- { 0x63, "503 Service Unavailable" },
- { 0x64, "504 Gateway Timeout" },
- { 0x65, "505 WSP/HTTP Version Not Supported" },
-
- { 0x00, NULL }
+ /* 0x00 - 0x0F Reserved */
+
+ { 0x10, "100 Continue" },
+ { 0x11, "101 Switching Protocols" },
+
+ { 0x20, "200 OK" },
+ { 0x21, "201 Created" },
+ { 0x22, "202 Accepted" },
+ { 0x23, "203 Non-Authoritative Information" },
+ { 0x24, "204 No Content" },
+ { 0x25, "205 Reset Content" },
+ { 0x26, "206 Partial Content" },
+
+ { 0x30, "300 Multiple Choices" },
+ { 0x31, "301 Moved Permanently" },
+ { 0x32, "302 Moved Temporarily" },
+ { 0x33, "303 See Other" },
+ { 0x34, "304 Not Modified" },
+ { 0x35, "305 Use Proxy" },
+ { 0x37, "307 Temporary Redirect" },
+
+ { 0x40, "400 Bad Request" },
+ { 0x41, "401 Unauthorised" },
+ { 0x42, "402 Payment Required" },
+ { 0x43, "403 Forbidden" },
+ { 0x44, "404 Not Found" },
+ { 0x45, "405 Method Not Allowed" },
+ { 0x46, "406 Not Acceptable" },
+ { 0x47, "407 Proxy Authentication Required" },
+ { 0x48, "408 Request Timeout" },
+ { 0x49, "409 Conflict" },
+ { 0x4A, "410 Gone" },
+ { 0x4B, "411 Length Required" },
+ { 0x4C, "412 Precondition Failed" },
+ { 0x4D, "413 Request Entity Too Large" },
+ { 0x4E, "414 Request-URI Too Large" },
+ { 0x4F, "415 Unsupported Media Type" },
+ { 0x50, "416 Requested Range Not Satisfiable" },
+ { 0x51, "417 Expectation Failed" },
+
+ { 0x60, "500 Internal Server Error" },
+ { 0x61, "501 Not Implemented" },
+ { 0x62, "502 Bad Gateway" },
+ { 0x63, "503 Service Unavailable" },
+ { 0x64, "504 Gateway Timeout" },
+ { 0x65, "505 WSP/HTTP Version Not Supported" },
+
+ { 0x00, NULL }
};
value_string_ext wsp_vals_status_ext = VALUE_STRING_EXT_INIT(wsp_vals_status);
static const value_string vals_wsp_reason_codes[] = {
- { 0xE0, "Protocol Error (Illegal PDU)" },
- { 0xE1, "Session disconnected" },
- { 0xE2, "Session suspended" },
- { 0xE3, "Session resumed" },
- { 0xE4, "Peer congested" },
- { 0xE5, "Session connect failed" },
- { 0xE6, "Maximum receive unit size exceeded" },
- { 0xE7, "Maximum outstanding requests exceeded" },
- { 0xE8, "Peer request" },
- { 0xE9, "Network error" },
- { 0xEA, "User request" },
- { 0xEB, "No specific cause, no retries" },
- { 0xEC, "Push message cannot be delivered" },
- { 0xED, "Push message discarded" },
- { 0xEE, "Content type cannot be processed" },
-
- { 0x00, NULL }
+ { 0xE0, "Protocol Error (Illegal PDU)" },
+ { 0xE1, "Session disconnected" },
+ { 0xE2, "Session suspended" },
+ { 0xE3, "Session resumed" },
+ { 0xE4, "Peer congested" },
+ { 0xE5, "Session connect failed" },
+ { 0xE6, "Maximum receive unit size exceeded" },
+ { 0xE7, "Maximum outstanding requests exceeded" },
+ { 0xE8, "Peer request" },
+ { 0xE9, "Network error" },
+ { 0xEA, "User request" },
+ { 0xEB, "No specific cause, no retries" },
+ { 0xEC, "Push message cannot be delivered" },
+ { 0xED, "Push message discarded" },
+ { 0xEE, "Content type cannot be processed" },
+
+ { 0x00, NULL }
};
value_string_ext vals_wsp_reason_codes_ext = VALUE_STRING_EXT_INIT(vals_wsp_reason_codes);
/*
* Field names.
*/
-#define FN_ACCEPT 0x00
-#define FN_ACCEPT_CHARSET_DEP 0x01 /* encoding version 1.1, deprecated */
-#define FN_ACCEPT_ENCODING_DEP 0x02 /* encoding version 1.1, deprecated */
-#define FN_ACCEPT_LANGUAGE 0x03
-#define FN_ACCEPT_RANGES 0x04
-#define FN_AGE 0x05
-#define FN_ALLOW 0x06
-#define FN_AUTHORIZATION 0x07
-#define FN_CACHE_CONTROL_DEP 0x08 /* encoding version 1.1, deprecated */
-#define FN_CONNECTION 0x09
-#define FN_CONTENT_BASE 0x0A
-#define FN_CONTENT_ENCODING 0x0B
-#define FN_CONTENT_LANGUAGE 0x0C
-#define FN_CONTENT_LENGTH 0x0D
-#define FN_CONTENT_LOCATION 0x0E
-#define FN_CONTENT_MD5 0x0F
-#define FN_CONTENT_RANGE_DEP 0x10 /* encoding version 1.1, deprecated */
-#define FN_CONTENT_TYPE 0x11
-#define FN_DATE 0x12
-#define FN_ETAG 0x13
-#define FN_EXPIRES 0x14
-#define FN_FROM 0x15
-#define FN_HOST 0x16
-#define FN_IF_MODIFIED_SINCE 0x17
-#define FN_IF_MATCH 0x18
-#define FN_IF_NONE_MATCH 0x19
-#define FN_IF_RANGE 0x1A
-#define FN_IF_UNMODIFIED_SINCE 0x1B
-#define FN_LOCATION 0x1C
-#define FN_LAST_MODIFIED 0x1D
-#define FN_MAX_FORWARDS 0x1E
-#define FN_PRAGMA 0x1F
-#define FN_PROXY_AUTHENTICATE 0x20
-#define FN_PROXY_AUTHORIZATION 0x21
-#define FN_PUBLIC 0x22
-#define FN_RANGE 0x23
-#define FN_REFERER 0x24
-#define FN_RETRY_AFTER 0x25
-#define FN_SERVER 0x26
-#define FN_TRANSFER_ENCODING 0x27
-#define FN_UPGRADE 0x28
-#define FN_USER_AGENT 0x29
-#define FN_VARY 0x2A
-#define FN_VIA 0x2B
-#define FN_WARNING 0x2C
-#define FN_WWW_AUTHENTICATE 0x2D
-#define FN_CONTENT_DISPOSITION 0x2E
-#define FN_X_WAP_APPLICATION_ID 0x2F
-#define FN_X_WAP_CONTENT_URI 0x30
-#define FN_X_WAP_INITIATOR_URI 0x31
-#define FN_ACCEPT_APPLICATION 0x32
-#define FN_BEARER_INDICATION 0x33
-#define FN_PUSH_FLAG 0x34
-#define FN_PROFILE 0x35
-#define FN_PROFILE_DIFF 0x36
-#define FN_PROFILE_WARNING 0x37
-#define FN_EXPECT 0x38
-#define FN_TE 0x39
-#define FN_TRAILER 0x3A
-#define FN_ACCEPT_CHARSET 0x3B /* encoding version 1.3 */
-#define FN_ACCEPT_ENCODING 0x3C /* encoding version 1.3 */
-#define FN_CACHE_CONTROL 0x3D /* encoding version 1.3 */
-#define FN_CONTENT_RANGE 0x3E /* encoding version 1.3 */
-#define FN_X_WAP_TOD 0x3F
-#define FN_CONTENT_ID 0x40
-#define FN_SET_COOKIE 0x41
-#define FN_COOKIE 0x42
-#define FN_ENCODING_VERSION 0x43
-#define FN_PROFILE_WARNING14 0x44 /* encoding version 1.4 */
-#define FN_CONTENT_DISPOSITION14 0x45 /* encoding version 1.4 */
-#define FN_X_WAP_SECURITY 0x46
-#define FN_CACHE_CONTROL14 0x47 /* encoding version 1.4 */
-#define FN_EXPECT15 0x48 /* encoding version 1.5 */
-#define FN_X_WAP_LOC_INVOCATION 0x49
-#define FN_X_WAP_LOC_DELIVERY 0x4A
+#define FN_ACCEPT 0x00
+#define FN_ACCEPT_CHARSET_DEP 0x01 /* encoding version 1.1, deprecated */
+#define FN_ACCEPT_ENCODING_DEP 0x02 /* encoding version 1.1, deprecated */
+#define FN_ACCEPT_LANGUAGE 0x03
+#define FN_ACCEPT_RANGES 0x04
+#define FN_AGE 0x05
+#define FN_ALLOW 0x06
+#define FN_AUTHORIZATION 0x07
+#define FN_CACHE_CONTROL_DEP 0x08 /* encoding version 1.1, deprecated */
+#define FN_CONNECTION 0x09
+#define FN_CONTENT_BASE 0x0A
+#define FN_CONTENT_ENCODING 0x0B
+#define FN_CONTENT_LANGUAGE 0x0C
+#define FN_CONTENT_LENGTH 0x0D
+#define FN_CONTENT_LOCATION 0x0E
+#define FN_CONTENT_MD5 0x0F
+#define FN_CONTENT_RANGE_DEP 0x10 /* encoding version 1.1, deprecated */
+#define FN_CONTENT_TYPE 0x11
+#define FN_DATE 0x12
+#define FN_ETAG 0x13
+#define FN_EXPIRES 0x14
+#define FN_FROM 0x15
+#define FN_HOST 0x16
+#define FN_IF_MODIFIED_SINCE 0x17
+#define FN_IF_MATCH 0x18
+#define FN_IF_NONE_MATCH 0x19
+#define FN_IF_RANGE 0x1A
+#define FN_IF_UNMODIFIED_SINCE 0x1B
+#define FN_LOCATION 0x1C
+#define FN_LAST_MODIFIED 0x1D
+#define FN_MAX_FORWARDS 0x1E
+#define FN_PRAGMA 0x1F
+#define FN_PROXY_AUTHENTICATE 0x20
+#define FN_PROXY_AUTHORIZATION 0x21
+#define FN_PUBLIC 0x22
+#define FN_RANGE 0x23
+#define FN_REFERER 0x24
+#define FN_RETRY_AFTER 0x25
+#define FN_SERVER 0x26
+#define FN_TRANSFER_ENCODING 0x27
+#define FN_UPGRADE 0x28
+#define FN_USER_AGENT 0x29
+#define FN_VARY 0x2A
+#define FN_VIA 0x2B
+#define FN_WARNING 0x2C
+#define FN_WWW_AUTHENTICATE 0x2D
+#define FN_CONTENT_DISPOSITION 0x2E
+#define FN_X_WAP_APPLICATION_ID 0x2F
+#define FN_X_WAP_CONTENT_URI 0x30
+#define FN_X_WAP_INITIATOR_URI 0x31
+#define FN_ACCEPT_APPLICATION 0x32
+#define FN_BEARER_INDICATION 0x33
+#define FN_PUSH_FLAG 0x34
+#define FN_PROFILE 0x35
+#define FN_PROFILE_DIFF 0x36
+#define FN_PROFILE_WARNING 0x37
+#define FN_EXPECT 0x38
+#define FN_TE 0x39
+#define FN_TRAILER 0x3A
+#define FN_ACCEPT_CHARSET 0x3B /* encoding version 1.3 */
+#define FN_ACCEPT_ENCODING 0x3C /* encoding version 1.3 */
+#define FN_CACHE_CONTROL 0x3D /* encoding version 1.3 */
+#define FN_CONTENT_RANGE 0x3E /* encoding version 1.3 */
+#define FN_X_WAP_TOD 0x3F
+#define FN_CONTENT_ID 0x40
+#define FN_SET_COOKIE 0x41
+#define FN_COOKIE 0x42
+#define FN_ENCODING_VERSION 0x43
+#define FN_PROFILE_WARNING14 0x44 /* encoding version 1.4 */
+#define FN_CONTENT_DISPOSITION14 0x45 /* encoding version 1.4 */
+#define FN_X_WAP_SECURITY 0x46
+#define FN_CACHE_CONTROL14 0x47 /* encoding version 1.4 */
+#define FN_EXPECT15 0x48 /* encoding version 1.5 */
+#define FN_X_WAP_LOC_INVOCATION 0x49
+#define FN_X_WAP_LOC_DELIVERY 0x4A
/*
* Openwave field names.
*/
-#define FN_OPENWAVE_PROXY_PUSH_ADDR 0x00
-#define FN_OPENWAVE_PROXY_PUSH_ACCEPT 0x01
-#define FN_OPENWAVE_PROXY_PUSH_SEQ 0x02
-#define FN_OPENWAVE_PROXY_NOTIFY 0x03
-#define FN_OPENWAVE_PROXY_OPERATOR_DOMAIN 0x04
-#define FN_OPENWAVE_PROXY_HOME_PAGE 0x05
-#define FN_OPENWAVE_DEVCAP_HAS_COLOR 0x06
-#define FN_OPENWAVE_DEVCAP_NUM_SOFTKEYS 0x07
-#define FN_OPENWAVE_DEVCAP_SOFTKEY_SIZE 0x08
-#define FN_OPENWAVE_DEVCAP_SCREEN_CHARS 0x09
-#define FN_OPENWAVE_DEVCAP_SCREEN_PIXELS 0x0A
-#define FN_OPENWAVE_DEVCAP_EM_SIZE 0x0B
-#define FN_OPENWAVE_DEVCAP_SCREEN_DEPTH 0x0C
-#define FN_OPENWAVE_DEVCAP_IMMED_ALERT 0x0D
-#define FN_OPENWAVE_PROXY_NET_ASK 0x0E
-#define FN_OPENWAVE_PROXY_UPLINK_VERSION 0x0F
-#define FN_OPENWAVE_PROXY_TOD 0x10
-#define FN_OPENWAVE_PROXY_BA_ENABLE 0x11
-#define FN_OPENWAVE_PROXY_BA_REALM 0x12
-#define FN_OPENWAVE_PROXY_REDIRECT_ENABLE 0x13
-#define FN_OPENWAVE_PROXY_REQUEST_URI 0x14
-#define FN_OPENWAVE_PROXY_REDIRECT_STATUS 0x15
-#define FN_OPENWAVE_PROXY_TRANS_CHARSET 0x16
-#define FN_OPENWAVE_PROXY_LINGER 0x17
-#define FN_OPENWAVE_PROXY_CLIENT_ID 0x18
-#define FN_OPENWAVE_PROXY_ENABLE_TRUST 0x19
-#define FN_OPENWAVE_PROXY_TRUST_OLD 0x1A
-#define FN_OPENWAVE_PROXY_TRUST 0x20
-#define FN_OPENWAVE_PROXY_BOOKMARK 0x21
-#define FN_OPENWAVE_DEVCAP_GUI 0x22
+#define FN_OPENWAVE_PROXY_PUSH_ADDR 0x00
+#define FN_OPENWAVE_PROXY_PUSH_ACCEPT 0x01
+#define FN_OPENWAVE_PROXY_PUSH_SEQ 0x02
+#define FN_OPENWAVE_PROXY_NOTIFY 0x03
+#define FN_OPENWAVE_PROXY_OPERATOR_DOMAIN 0x04
+#define FN_OPENWAVE_PROXY_HOME_PAGE 0x05
+#define FN_OPENWAVE_DEVCAP_HAS_COLOR 0x06
+#define FN_OPENWAVE_DEVCAP_NUM_SOFTKEYS 0x07
+#define FN_OPENWAVE_DEVCAP_SOFTKEY_SIZE 0x08
+#define FN_OPENWAVE_DEVCAP_SCREEN_CHARS 0x09
+#define FN_OPENWAVE_DEVCAP_SCREEN_PIXELS 0x0A
+#define FN_OPENWAVE_DEVCAP_EM_SIZE 0x0B
+#define FN_OPENWAVE_DEVCAP_SCREEN_DEPTH 0x0C
+#define FN_OPENWAVE_DEVCAP_IMMED_ALERT 0x0D
+#define FN_OPENWAVE_PROXY_NET_ASK 0x0E
+#define FN_OPENWAVE_PROXY_UPLINK_VERSION 0x0F
+#define FN_OPENWAVE_PROXY_TOD 0x10
+#define FN_OPENWAVE_PROXY_BA_ENABLE 0x11
+#define FN_OPENWAVE_PROXY_BA_REALM 0x12
+#define FN_OPENWAVE_PROXY_REDIRECT_ENABLE 0x13
+#define FN_OPENWAVE_PROXY_REQUEST_URI 0x14
+#define FN_OPENWAVE_PROXY_REDIRECT_STATUS 0x15
+#define FN_OPENWAVE_PROXY_TRANS_CHARSET 0x16
+#define FN_OPENWAVE_PROXY_LINGER 0x17
+#define FN_OPENWAVE_PROXY_CLIENT_ID 0x18
+#define FN_OPENWAVE_PROXY_ENABLE_TRUST 0x19
+#define FN_OPENWAVE_PROXY_TRUST_OLD 0x1A
+#define FN_OPENWAVE_PROXY_TRUST 0x20
+#define FN_OPENWAVE_PROXY_BOOKMARK 0x21
+#define FN_OPENWAVE_DEVCAP_GUI 0x22
static const value_string vals_openwave_field_names[] = {
- { FN_OPENWAVE_PROXY_PUSH_ADDR, "x-up-proxy-push-addr" },
- { FN_OPENWAVE_PROXY_PUSH_ACCEPT, "x-up-proxy-push-accept" },
- { FN_OPENWAVE_PROXY_PUSH_SEQ, "x-up-proxy-seq" },
- { FN_OPENWAVE_PROXY_NOTIFY, "x-up-proxy-notify" },
- { FN_OPENWAVE_PROXY_OPERATOR_DOMAIN, "x-up-proxy-operator-domain" },
- { FN_OPENWAVE_PROXY_HOME_PAGE, "x-up-proxy-home-page" },
- { FN_OPENWAVE_DEVCAP_HAS_COLOR, "x-up-devcap-has-color" },
- { FN_OPENWAVE_DEVCAP_NUM_SOFTKEYS, "x-up-devcap-num-softkeys" },
- { FN_OPENWAVE_DEVCAP_SOFTKEY_SIZE, "x-up-devcap-softkey-size" },
- { FN_OPENWAVE_DEVCAP_SCREEN_CHARS, "x-up-devcap-screen-chars" },
- { FN_OPENWAVE_DEVCAP_SCREEN_PIXELS, "x-up-devcap-screen-pixels" },
- { FN_OPENWAVE_DEVCAP_EM_SIZE, "x-up-devcap-em-size" },
- { FN_OPENWAVE_DEVCAP_SCREEN_DEPTH, "x-up-devcap-screen-depth" },
- { FN_OPENWAVE_DEVCAP_IMMED_ALERT, "x-up-devcap-immed-alert" },
- { FN_OPENWAVE_PROXY_NET_ASK, "x-up-proxy-net-ask" },
- { FN_OPENWAVE_PROXY_UPLINK_VERSION, "x-up-proxy-uplink-version" },
- { FN_OPENWAVE_PROXY_TOD, "x-up-proxy-tod" },
- { FN_OPENWAVE_PROXY_BA_ENABLE, "x-up-proxy-ba-enable" },
- { FN_OPENWAVE_PROXY_BA_REALM, "x-up-proxy-ba-realm" },
- { FN_OPENWAVE_PROXY_REDIRECT_ENABLE, "x-up-proxy-redirect-enable" },
- { FN_OPENWAVE_PROXY_REQUEST_URI, "x-up-proxy-request-uri" },
- { FN_OPENWAVE_PROXY_REDIRECT_STATUS, "x-up-proxy-redirect-status" },
- { FN_OPENWAVE_PROXY_TRANS_CHARSET, "x-up-proxy-trans-charset" },
- { FN_OPENWAVE_PROXY_LINGER, "x-up-proxy-linger" },
- { FN_OPENWAVE_PROXY_CLIENT_ID, "x-up-proxy-client-id" },
- { FN_OPENWAVE_PROXY_ENABLE_TRUST, "x-up-proxy-enable-trust" },
- { FN_OPENWAVE_PROXY_TRUST_OLD, "x-up-proxy-trust-old" },
- { FN_OPENWAVE_PROXY_TRUST, "x-up-proxy-trust" },
- { FN_OPENWAVE_PROXY_BOOKMARK, "x-up-proxy-bookmark" },
- { FN_OPENWAVE_DEVCAP_GUI, "x-up-devcap-gui" },
- { 0, NULL }
+ { FN_OPENWAVE_PROXY_PUSH_ADDR, "x-up-proxy-push-addr" },
+ { FN_OPENWAVE_PROXY_PUSH_ACCEPT, "x-up-proxy-push-accept" },
+ { FN_OPENWAVE_PROXY_PUSH_SEQ, "x-up-proxy-seq" },
+ { FN_OPENWAVE_PROXY_NOTIFY, "x-up-proxy-notify" },
+ { FN_OPENWAVE_PROXY_OPERATOR_DOMAIN, "x-up-proxy-operator-domain" },
+ { FN_OPENWAVE_PROXY_HOME_PAGE, "x-up-proxy-home-page" },
+ { FN_OPENWAVE_DEVCAP_HAS_COLOR, "x-up-devcap-has-color" },
+ { FN_OPENWAVE_DEVCAP_NUM_SOFTKEYS, "x-up-devcap-num-softkeys" },
+ { FN_OPENWAVE_DEVCAP_SOFTKEY_SIZE, "x-up-devcap-softkey-size" },
+ { FN_OPENWAVE_DEVCAP_SCREEN_CHARS, "x-up-devcap-screen-chars" },
+ { FN_OPENWAVE_DEVCAP_SCREEN_PIXELS, "x-up-devcap-screen-pixels" },
+ { FN_OPENWAVE_DEVCAP_EM_SIZE, "x-up-devcap-em-size" },
+ { FN_OPENWAVE_DEVCAP_SCREEN_DEPTH, "x-up-devcap-screen-depth" },
+ { FN_OPENWAVE_DEVCAP_IMMED_ALERT, "x-up-devcap-immed-alert" },
+ { FN_OPENWAVE_PROXY_NET_ASK, "x-up-proxy-net-ask" },
+ { FN_OPENWAVE_PROXY_UPLINK_VERSION, "x-up-proxy-uplink-version" },
+ { FN_OPENWAVE_PROXY_TOD, "x-up-proxy-tod" },
+ { FN_OPENWAVE_PROXY_BA_ENABLE, "x-up-proxy-ba-enable" },
+ { FN_OPENWAVE_PROXY_BA_REALM, "x-up-proxy-ba-realm" },
+ { FN_OPENWAVE_PROXY_REDIRECT_ENABLE, "x-up-proxy-redirect-enable" },
+ { FN_OPENWAVE_PROXY_REQUEST_URI, "x-up-proxy-request-uri" },
+ { FN_OPENWAVE_PROXY_REDIRECT_STATUS, "x-up-proxy-redirect-status" },
+ { FN_OPENWAVE_PROXY_TRANS_CHARSET, "x-up-proxy-trans-charset" },
+ { FN_OPENWAVE_PROXY_LINGER, "x-up-proxy-linger" },
+ { FN_OPENWAVE_PROXY_CLIENT_ID, "x-up-proxy-client-id" },
+ { FN_OPENWAVE_PROXY_ENABLE_TRUST, "x-up-proxy-enable-trust" },
+ { FN_OPENWAVE_PROXY_TRUST_OLD, "x-up-proxy-trust-old" },
+ { FN_OPENWAVE_PROXY_TRUST, "x-up-proxy-trust" },
+ { FN_OPENWAVE_PROXY_BOOKMARK, "x-up-proxy-bookmark" },
+ { FN_OPENWAVE_DEVCAP_GUI, "x-up-devcap-gui" },
+ { 0, NULL }
};
static value_string_ext vals_openwave_field_names_ext = VALUE_STRING_EXT_INIT(vals_openwave_field_names);
static const value_string vals_field_names[] = {
- { FN_ACCEPT, "Accept" },
- { FN_ACCEPT_CHARSET_DEP, "Accept-Charset (encoding 1.1)" },
- { FN_ACCEPT_ENCODING_DEP, "Accept-Encoding (encoding 1.1)" },
- { FN_ACCEPT_LANGUAGE, "Accept-Language" },
- { FN_ACCEPT_RANGES, "Accept-Ranges" },
- { FN_AGE, "Age" },
- { FN_ALLOW, "Allow" },
- { FN_AUTHORIZATION, "Authorization" },
- { FN_CACHE_CONTROL_DEP, "Cache-Control (encoding 1.1)" },
- { FN_CONNECTION, "Connection" },
- { FN_CONTENT_BASE, "Content-Base" },
- { FN_CONTENT_ENCODING, "Content-Encoding" },
- { FN_CONTENT_LANGUAGE, "Content-Language" },
- { FN_CONTENT_LENGTH, "Content-Length" },
- { FN_CONTENT_LOCATION, "Content-Location" },
- { FN_CONTENT_MD5, "Content-MD5" },
- { FN_CONTENT_RANGE_DEP, "Content-Range (encoding 1.1)" },
- { FN_CONTENT_TYPE, "Content-Type" },
- { FN_DATE, "Date" },
- { FN_ETAG, "ETag" },
- { FN_EXPIRES, "Expires" },
- { FN_FROM, "From" },
- { FN_HOST, "Host" },
- { FN_IF_MODIFIED_SINCE, "If-Modified-Since" },
- { FN_IF_MATCH, "If-Match" },
- { FN_IF_NONE_MATCH, "If-None-Match" },
- { FN_IF_RANGE, "If-Range" },
- { FN_IF_UNMODIFIED_SINCE, "If-Unmodified-Since" },
- { FN_LOCATION, "Location" },
- { FN_LAST_MODIFIED, "Last-Modified" },
- { FN_MAX_FORWARDS, "Max-Forwards" },
- { FN_PRAGMA, "Pragma" },
- { FN_PROXY_AUTHENTICATE, "Proxy-Authenticate" },
- { FN_PROXY_AUTHORIZATION, "Proxy-Authorization" },
- { FN_PUBLIC, "Public" },
- { FN_RANGE, "Range" },
- { FN_REFERER, "Referer" },
- { FN_RETRY_AFTER, "Retry-After" },
- { FN_SERVER, "Server" },
- { FN_TRANSFER_ENCODING, "Transfer-Encoding" },
- { FN_UPGRADE, "Upgrade" },
- { FN_USER_AGENT, "User-Agent" },
- { FN_VARY, "Vary" },
- { FN_VIA, "Via" },
- { FN_WARNING, "Warning" },
- { FN_WWW_AUTHENTICATE, "WWW-Authenticate" },
- { FN_CONTENT_DISPOSITION, "Content-Disposition" },
- { FN_X_WAP_APPLICATION_ID, "X-Wap-Application-ID" },
- { FN_X_WAP_CONTENT_URI, "X-Wap-Content-URI" },
- { FN_X_WAP_INITIATOR_URI, "X-Wap-Initiator-URI" },
- { FN_ACCEPT_APPLICATION, "Accept-Application" },
- { FN_BEARER_INDICATION, "Bearer-Indication" },
- { FN_PUSH_FLAG, "Push-Flag" },
- { FN_PROFILE, "Profile" },
- { FN_PROFILE_DIFF, "Profile-Diff" },
- { FN_PROFILE_WARNING, "Profile-Warning" },
- { FN_EXPECT, "Expect" },
- { FN_TE, "TE" },
- { FN_TRAILER, "Trailer" },
- { FN_ACCEPT_CHARSET, "Accept-Charset" },
- { FN_ACCEPT_ENCODING, "Accept-Encoding" },
- { FN_CACHE_CONTROL, "Cache-Control" },
- { FN_CONTENT_RANGE, "Content-Range" },
- { FN_X_WAP_TOD, "X-Wap-Tod" },
- { FN_CONTENT_ID, "Content-ID" },
- { FN_SET_COOKIE, "Set-Cookie" },
- { FN_COOKIE, "Cookie" },
- { FN_ENCODING_VERSION, "Encoding-Version" },
- { FN_PROFILE_WARNING14, "Profile-Warning (encoding 1.4)" },
- { FN_CONTENT_DISPOSITION14,"Content-Disposition (encoding 1.4)" },
- { FN_X_WAP_SECURITY, "X-WAP-Security" },
- { FN_CACHE_CONTROL14, "Cache-Control (encoding 1.4)" },
- /* encoding-version 1.5 */
- { FN_EXPECT15, "Expect (encoding 1.5)" },
- { FN_X_WAP_LOC_INVOCATION, "X-Wap-Loc-Invocation" },
- { FN_X_WAP_LOC_DELIVERY, "X-Wap-Loc-Delivery" },
- { 0, NULL }
+ { FN_ACCEPT, "Accept" },
+ { FN_ACCEPT_CHARSET_DEP, "Accept-Charset (encoding 1.1)" },
+ { FN_ACCEPT_ENCODING_DEP, "Accept-Encoding (encoding 1.1)" },
+ { FN_ACCEPT_LANGUAGE, "Accept-Language" },
+ { FN_ACCEPT_RANGES, "Accept-Ranges" },
+ { FN_AGE, "Age" },
+ { FN_ALLOW, "Allow" },
+ { FN_AUTHORIZATION, "Authorization" },
+ { FN_CACHE_CONTROL_DEP, "Cache-Control (encoding 1.1)" },
+ { FN_CONNECTION, "Connection" },
+ { FN_CONTENT_BASE, "Content-Base" },
+ { FN_CONTENT_ENCODING, "Content-Encoding" },
+ { FN_CONTENT_LANGUAGE, "Content-Language" },
+ { FN_CONTENT_LENGTH, "Content-Length" },
+ { FN_CONTENT_LOCATION, "Content-Location" },
+ { FN_CONTENT_MD5, "Content-MD5" },
+ { FN_CONTENT_RANGE_DEP, "Content-Range (encoding 1.1)" },
+ { FN_CONTENT_TYPE, "Content-Type" },
+ { FN_DATE, "Date" },
+ { FN_ETAG, "ETag" },
+ { FN_EXPIRES, "Expires" },
+ { FN_FROM, "From" },
+ { FN_HOST, "Host" },
+ { FN_IF_MODIFIED_SINCE, "If-Modified-Since" },
+ { FN_IF_MATCH, "If-Match" },
+ { FN_IF_NONE_MATCH, "If-None-Match" },
+ { FN_IF_RANGE, "If-Range" },
+ { FN_IF_UNMODIFIED_SINCE, "If-Unmodified-Since" },
+ { FN_LOCATION, "Location" },
+ { FN_LAST_MODIFIED, "Last-Modified" },
+ { FN_MAX_FORWARDS, "Max-Forwards" },
+ { FN_PRAGMA, "Pragma" },
+ { FN_PROXY_AUTHENTICATE, "Proxy-Authenticate" },
+ { FN_PROXY_AUTHORIZATION, "Proxy-Authorization" },
+ { FN_PUBLIC, "Public" },
+ { FN_RANGE, "Range" },
+ { FN_REFERER, "Referer" },
+ { FN_RETRY_AFTER, "Retry-After" },
+ { FN_SERVER, "Server" },
+ { FN_TRANSFER_ENCODING, "Transfer-Encoding" },
+ { FN_UPGRADE, "Upgrade" },
+ { FN_USER_AGENT, "User-Agent" },
+ { FN_VARY, "Vary" },
+ { FN_VIA, "Via" },
+ { FN_WARNING, "Warning" },
+ { FN_WWW_AUTHENTICATE, "WWW-Authenticate" },
+ { FN_CONTENT_DISPOSITION, "Content-Disposition" },
+ { FN_X_WAP_APPLICATION_ID, "X-Wap-Application-ID" },
+ { FN_X_WAP_CONTENT_URI, "X-Wap-Content-URI" },
+ { FN_X_WAP_INITIATOR_URI, "X-Wap-Initiator-URI" },
+ { FN_ACCEPT_APPLICATION, "Accept-Application" },
+ { FN_BEARER_INDICATION, "Bearer-Indication" },
+ { FN_PUSH_FLAG, "Push-Flag" },
+ { FN_PROFILE, "Profile" },
+ { FN_PROFILE_DIFF, "Profile-Diff" },
+ { FN_PROFILE_WARNING, "Profile-Warning" },
+ { FN_EXPECT, "Expect" },
+ { FN_TE, "TE" },
+ { FN_TRAILER, "Trailer" },
+ { FN_ACCEPT_CHARSET, "Accept-Charset" },
+ { FN_ACCEPT_ENCODING, "Accept-Encoding" },
+ { FN_CACHE_CONTROL, "Cache-Control" },
+ { FN_CONTENT_RANGE, "Content-Range" },
+ { FN_X_WAP_TOD, "X-Wap-Tod" },
+ { FN_CONTENT_ID, "Content-ID" },
+ { FN_SET_COOKIE, "Set-Cookie" },
+ { FN_COOKIE, "Cookie" },
+ { FN_ENCODING_VERSION, "Encoding-Version" },
+ { FN_PROFILE_WARNING14, "Profile-Warning (encoding 1.4)" },
+ { FN_CONTENT_DISPOSITION14,"Content-Disposition (encoding 1.4)" },
+ { FN_X_WAP_SECURITY, "X-WAP-Security" },
+ { FN_CACHE_CONTROL14, "Cache-Control (encoding 1.4)" },
+ /* encoding-version 1.5 */
+ { FN_EXPECT15, "Expect (encoding 1.5)" },
+ { FN_X_WAP_LOC_INVOCATION, "X-Wap-Loc-Invocation" },
+ { FN_X_WAP_LOC_DELIVERY, "X-Wap-Loc-Delivery" },
+ { 0, NULL }
};
static value_string_ext vals_field_names_ext = VALUE_STRING_EXT_INIT(vals_field_names);
/*
* Bearer types (from the WDP specification).
*/
-#define BT_IPv4 0x00
-#define BT_IPv6 0x01
-#define BT_GSM_USSD 0x02
-#define BT_GSM_SMS 0x03
-#define BT_ANSI_136_GUTS 0x04
-#define BT_IS_95_SMS 0x05
-#define BT_IS_95_CSD 0x06
-#define BT_IS_95_PACKET_DATA 0x07
-#define BT_ANSI_136_CSD 0x08
-#define BT_ANSI_136_PACKET_DATA 0x09
-#define BT_GSM_CSD 0x0A
-#define BT_GSM_GPRS 0x0B
-#define BT_GSM_USSD_IPv4 0x0C
-#define BT_AMPS_CDPD 0x0D
-#define BT_PDC_CSD 0x0E
-#define BT_PDC_PACKET_DATA 0x0F
-#define BT_IDEN_SMS 0x10
-#define BT_IDEN_CSD 0x11
-#define BT_IDEN_PACKET_DATA 0x12
-#define BT_PAGING_FLEX 0x13
-#define BT_PHS_SMS 0x14
-#define BT_PHS_CSD 0x15
-#define BT_GSM_USSD_GSM_SC 0x16
-#define BT_TETRA_SDS_ITSI 0x17
-#define BT_TETRA_SDS_MSISDN 0x18
-#define BT_TETRA_PACKET_DATA 0x19
-#define BT_PAGING_REFLEX 0x1A
-#define BT_GSM_USSD_MSISDN 0x1B
-#define BT_MOBITEX_MPAK 0x1C
-#define BT_ANSI_136_GHOST 0x1D
+#define BT_IPv4 0x00
+#define BT_IPv6 0x01
+#define BT_GSM_USSD 0x02
+#define BT_GSM_SMS 0x03
+#define BT_ANSI_136_GUTS 0x04
+#define BT_IS_95_SMS 0x05
+#define BT_IS_95_CSD 0x06
+#define BT_IS_95_PACKET_DATA 0x07
+#define BT_ANSI_136_CSD 0x08
+#define BT_ANSI_136_PACKET_DATA 0x09
+#define BT_GSM_CSD 0x0A
+#define BT_GSM_GPRS 0x0B
+#define BT_GSM_USSD_IPv4 0x0C
+#define BT_AMPS_CDPD 0x0D
+#define BT_PDC_CSD 0x0E
+#define BT_PDC_PACKET_DATA 0x0F
+#define BT_IDEN_SMS 0x10
+#define BT_IDEN_CSD 0x11
+#define BT_IDEN_PACKET_DATA 0x12
+#define BT_PAGING_FLEX 0x13
+#define BT_PHS_SMS 0x14
+#define BT_PHS_CSD 0x15
+#define BT_GSM_USSD_GSM_SC 0x16
+#define BT_TETRA_SDS_ITSI 0x17
+#define BT_TETRA_SDS_MSISDN 0x18
+#define BT_TETRA_PACKET_DATA 0x19
+#define BT_PAGING_REFLEX 0x1A
+#define BT_GSM_USSD_MSISDN 0x1B
+#define BT_MOBITEX_MPAK 0x1C
+#define BT_ANSI_136_GHOST 0x1D
static const value_string vals_bearer_types[] = {
- { BT_IPv4, "IPv4" },
- { BT_IPv6, "IPv6" },
- { BT_GSM_USSD, "GSM USSD" },
- { BT_GSM_SMS, "GSM SMS" },
- { BT_ANSI_136_GUTS, "ANSI-136 GUTS/R-Data" },
- { BT_IS_95_SMS, "IS-95 CDMA SMS" },
- { BT_IS_95_CSD, "IS-95 CDMA CSD" },
- { BT_IS_95_PACKET_DATA, "IS-95 CDMA Packet data" },
- { BT_ANSI_136_CSD, "ANSI-136 CSD" },
- { BT_ANSI_136_PACKET_DATA, "ANSI-136 Packet data" },
- { BT_GSM_CSD, "GSM CSD" },
- { BT_GSM_GPRS, "GSM GPRS" },
- { BT_GSM_USSD_IPv4, "GSM USSD (IPv4 addresses)" },
- { BT_AMPS_CDPD, "AMPS CDPD" },
- { BT_PDC_CSD, "PDC CSD" },
- { BT_PDC_PACKET_DATA, "PDC Packet data" },
- { BT_IDEN_SMS, "IDEN SMS" },
- { BT_IDEN_CSD, "IDEN CSD" },
- { BT_IDEN_PACKET_DATA, "IDEN Packet data" },
- { BT_PAGING_FLEX, "Paging network FLEX(TM)" },
- { BT_PHS_SMS, "PHS SMS" },
- { BT_PHS_CSD, "PHS CSD" },
- { BT_GSM_USSD_GSM_SC, "GSM USSD (GSM Service Code addresses)" },
- { BT_TETRA_SDS_ITSI, "TETRA SDS (ITSI addresses)" },
- { BT_TETRA_SDS_MSISDN, "TETRA SDS (MSISDN addresses)" },
- { BT_TETRA_PACKET_DATA, "TETRA Packet data" },
- { BT_PAGING_REFLEX, "Paging network ReFLEX(TM)" },
- { BT_GSM_USSD_MSISDN, "GSM USSD (MSISDN addresses)" },
- { BT_MOBITEX_MPAK, "Mobitex MPAK" },
- { BT_ANSI_136_GHOST, "ANSI-136 GHOST/R-Data" },
- { 0, NULL }
+ { BT_IPv4, "IPv4" },
+ { BT_IPv6, "IPv6" },
+ { BT_GSM_USSD, "GSM USSD" },
+ { BT_GSM_SMS, "GSM SMS" },
+ { BT_ANSI_136_GUTS, "ANSI-136 GUTS/R-Data" },
+ { BT_IS_95_SMS, "IS-95 CDMA SMS" },
+ { BT_IS_95_CSD, "IS-95 CDMA CSD" },
+ { BT_IS_95_PACKET_DATA, "IS-95 CDMA Packet data" },
+ { BT_ANSI_136_CSD, "ANSI-136 CSD" },
+ { BT_ANSI_136_PACKET_DATA, "ANSI-136 Packet data" },
+ { BT_GSM_CSD, "GSM CSD" },
+ { BT_GSM_GPRS, "GSM GPRS" },
+ { BT_GSM_USSD_IPv4, "GSM USSD (IPv4 addresses)" },
+ { BT_AMPS_CDPD, "AMPS CDPD" },
+ { BT_PDC_CSD, "PDC CSD" },
+ { BT_PDC_PACKET_DATA, "PDC Packet data" },
+ { BT_IDEN_SMS, "IDEN SMS" },
+ { BT_IDEN_CSD, "IDEN CSD" },
+ { BT_IDEN_PACKET_DATA, "IDEN Packet data" },
+ { BT_PAGING_FLEX, "Paging network FLEX(TM)" },
+ { BT_PHS_SMS, "PHS SMS" },
+ { BT_PHS_CSD, "PHS CSD" },
+ { BT_GSM_USSD_GSM_SC, "GSM USSD (GSM Service Code addresses)" },
+ { BT_TETRA_SDS_ITSI, "TETRA SDS (ITSI addresses)" },
+ { BT_TETRA_SDS_MSISDN, "TETRA SDS (MSISDN addresses)" },
+ { BT_TETRA_PACKET_DATA, "TETRA Packet data" },
+ { BT_PAGING_REFLEX, "Paging network ReFLEX(TM)" },
+ { BT_GSM_USSD_MSISDN, "GSM USSD (MSISDN addresses)" },
+ { BT_MOBITEX_MPAK, "Mobitex MPAK" },
+ { BT_ANSI_136_GHOST, "ANSI-136 GHOST/R-Data" },
+ { 0, NULL }
};
static value_string_ext vals_bearer_types_ext = VALUE_STRING_EXT_INIT(vals_bearer_types);
static const value_string vals_content_types[] = {
- /* Well-known media types */
- { 0x00, "*/*" },
- { 0x01, "text/*" },
- { 0x02, "text/html" },
- { 0x03, "text/plain" },
- { 0x04, "text/x-hdml" },
- { 0x05, "text/x-ttml" },
- { 0x06, "text/x-vCalendar" },
- { 0x07, "text/x-vCard" },
- { 0x08, "text/vnd.wap.wml" },
- { 0x09, "text/vnd.wap.wmlscript" },
- { 0x0A, "text/vnd.wap.channel" },
- { 0x0B, "multipart/*" },
- { 0x0C, "multipart/mixed" },
- { 0x0D, "multipart/form-data" },
- { 0x0E, "multipart/byteranges" },
- { 0x0F, "multipart/alternative" },
- { 0x10, "application/*" },
- { 0x11, "application/java-vm" },
- { 0x12, "application/x-www-form-urlencoded" },
- { 0x13, "application/x-hdmlc" },
- { 0x14, "application/vnd.wap.wmlc" },
- { 0x15, "application/vnd.wap.wmlscriptc" },
- { 0x16, "application/vnd.wap.channelc" },
- { 0x17, "application/vnd.wap.uaprof" },
- { 0x18, "application/vnd.wap.wtls-ca-certificate" },
- { 0x19, "application/vnd.wap.wtls-user-certificate" },
- { 0x1A, "application/x-x509-ca-cert" },
- { 0x1B, "application/x-x509-user-cert" },
- { 0x1C, "image/*" },
- { 0x1D, "image/gif" },
- { 0x1E, "image/jpeg" },
- { 0x1F, "image/tiff" },
- { 0x20, "image/png" },
- { 0x21, "image/vnd.wap.wbmp" },
- { 0x22, "application/vnd.wap.multipart.*" },
- { 0x23, "application/vnd.wap.multipart.mixed" },
- { 0x24, "application/vnd.wap.multipart.form-data" },
- { 0x25, "application/vnd.wap.multipart.byteranges" },
- { 0x26, "application/vnd.wap.multipart.alternative" },
- { 0x27, "application/xml" },
- { 0x28, "text/xml" },
- { 0x29, "application/vnd.wap.wbxml" },
- { 0x2A, "application/x-x968-cross-cert" },
- { 0x2B, "application/x-x968-ca-cert" },
- { 0x2C, "application/x-x968-user-cert" },
- { 0x2D, "text/vnd.wap.si" },
- { 0x2E, "application/vnd.wap.sic" },
- { 0x2F, "text/vnd.wap.sl" },
- { 0x30, "application/vnd.wap.slc" },
- { 0x31, "text/vnd.wap.co" },
- { 0x32, "application/vnd.wap.coc" },
- { 0x33, "application/vnd.wap.multipart.related" },
- { 0x34, "application/vnd.wap.sia" },
- { 0x35, "text/vnd.wap.connectivity-xml" },
- { 0x36, "application/vnd.wap.connectivity-wbxml" },
- { 0x37, "application/pkcs7-mime" },
- { 0x38, "application/vnd.wap.hashed-certificate" },
- { 0x39, "application/vnd.wap.signed-certificate" },
- { 0x3A, "application/vnd.wap.cert-response" },
- { 0x3B, "application/xhtml+xml" },
- { 0x3C, "application/wml+xml" },
- { 0x3D, "text/css" },
- { 0x3E, "application/vnd.wap.mms-message" },
- { 0x3F, "application/vnd.wap.rollover-certificate" },
- { 0x40, "application/vnd.wap.locc+wbxml"},
- { 0x41, "application/vnd.wap.loc+xml"},
- { 0x42, "application/vnd.syncml.dm+wbxml"},
- { 0x43, "application/vnd.syncml.dm+xml"},
- { 0x44, "application/vnd.syncml.notification"},
- { 0x45, "application/vnd.wap.xhtml+xml"},
- { 0x46, "application/vnd.wv.csp.cir"},
- { 0x47, "application/vnd.oma.dd+xml"},
- { 0x48, "application/vnd.oma.drm.message"},
- { 0x49, "application/vnd.oma.drm.content"},
- { 0x4A, "application/vnd.oma.drm.rights+xml"},
- { 0x4B, "application/vnd.oma.drm.rights+wbxml"},
- { 0x4C, "application/vnd.wv.csp+xml"},
- { 0x4D, "application/vnd.wv.csp+wbxml"},
- /* The following media types are registered by 3rd parties */
- { 0x0201, "application/vnd.uplanet.cachop-wbxml" },
- { 0x0202, "application/vnd.uplanet.signal" },
- { 0x0203, "application/vnd.uplanet.alert-wbxml" },
- { 0x0204, "application/vnd.uplanet.list-wbxml" },
- { 0x0205, "application/vnd.uplanet.listcmd-wbxml" },
- { 0x0206, "application/vnd.uplanet.channel-wbxml" },
- { 0x0207, "application/vnd.uplanet.provisioning-status-uri" },
- { 0x0208, "x-wap.multipart/vnd.uplanet.header-set" },
- { 0x0209, "application/vnd.uplanet.bearer-choice-wbxml" },
- { 0x020A, "application/vnd.phonecom.mmc-wbxml" },
- { 0x020B, "application/vnd.nokia.syncset+wbxml" },
- { 0x020C, "image/x-up-wpng"},
- { 0x0300, "application/iota.mmc-wbxml"},
- { 0x0301, "application/iota.mmc-xml"},
- { 0x00, NULL }
+ /* Well-known media types */
+ { 0x00, "*/*" },
+ { 0x01, "text/*" },
+ { 0x02, "text/html" },
+ { 0x03, "text/plain" },
+ { 0x04, "text/x-hdml" },
+ { 0x05, "text/x-ttml" },
+ { 0x06, "text/x-vCalendar" },
+ { 0x07, "text/x-vCard" },
+ { 0x08, "text/vnd.wap.wml" },
+ { 0x09, "text/vnd.wap.wmlscript" },
+ { 0x0A, "text/vnd.wap.channel" },
+ { 0x0B, "multipart/*" },
+ { 0x0C, "multipart/mixed" },
+ { 0x0D, "multipart/form-data" },
+ { 0x0E, "multipart/byteranges" },
+ { 0x0F, "multipart/alternative" },
+ { 0x10, "application/*" },
+ { 0x11, "application/java-vm" },
+ { 0x12, "application/x-www-form-urlencoded" },
+ { 0x13, "application/x-hdmlc" },
+ { 0x14, "application/vnd.wap.wmlc" },
+ { 0x15, "application/vnd.wap.wmlscriptc" },
+ { 0x16, "application/vnd.wap.channelc" },
+ { 0x17, "application/vnd.wap.uaprof" },
+ { 0x18, "application/vnd.wap.wtls-ca-certificate" },
+ { 0x19, "application/vnd.wap.wtls-user-certificate" },
+ { 0x1A, "application/x-x509-ca-cert" },
+ { 0x1B, "application/x-x509-user-cert" },
+ { 0x1C, "image/*" },
+ { 0x1D, "image/gif" },
+ { 0x1E, "image/jpeg" },
+ { 0x1F, "image/tiff" },
+ { 0x20, "image/png" },
+ { 0x21, "image/vnd.wap.wbmp" },
+ { 0x22, "application/vnd.wap.multipart.*" },
+ { 0x23, "application/vnd.wap.multipart.mixed" },
+ { 0x24, "application/vnd.wap.multipart.form-data" },
+ { 0x25, "application/vnd.wap.multipart.byteranges" },
+ { 0x26, "application/vnd.wap.multipart.alternative" },
+ { 0x27, "application/xml" },
+ { 0x28, "text/xml" },
+ { 0x29, "application/vnd.wap.wbxml" },
+ { 0x2A, "application/x-x968-cross-cert" },
+ { 0x2B, "application/x-x968-ca-cert" },
+ { 0x2C, "application/x-x968-user-cert" },
+ { 0x2D, "text/vnd.wap.si" },
+ { 0x2E, "application/vnd.wap.sic" },
+ { 0x2F, "text/vnd.wap.sl" },
+ { 0x30, "application/vnd.wap.slc" },
+ { 0x31, "text/vnd.wap.co" },
+ { 0x32, "application/vnd.wap.coc" },
+ { 0x33, "application/vnd.wap.multipart.related" },
+ { 0x34, "application/vnd.wap.sia" },
+ { 0x35, "text/vnd.wap.connectivity-xml" },
+ { 0x36, "application/vnd.wap.connectivity-wbxml" },
+ { 0x37, "application/pkcs7-mime" },
+ { 0x38, "application/vnd.wap.hashed-certificate" },
+ { 0x39, "application/vnd.wap.signed-certificate" },
+ { 0x3A, "application/vnd.wap.cert-response" },
+ { 0x3B, "application/xhtml+xml" },
+ { 0x3C, "application/wml+xml" },
+ { 0x3D, "text/css" },
+ { 0x3E, "application/vnd.wap.mms-message" },
+ { 0x3F, "application/vnd.wap.rollover-certificate" },
+ { 0x40, "application/vnd.wap.locc+wbxml"},
+ { 0x41, "application/vnd.wap.loc+xml"},
+ { 0x42, "application/vnd.syncml.dm+wbxml"},
+ { 0x43, "application/vnd.syncml.dm+xml"},
+ { 0x44, "application/vnd.syncml.notification"},
+ { 0x45, "application/vnd.wap.xhtml+xml"},
+ { 0x46, "application/vnd.wv.csp.cir"},
+ { 0x47, "application/vnd.oma.dd+xml"},
+ { 0x48, "application/vnd.oma.drm.message"},
+ { 0x49, "application/vnd.oma.drm.content"},
+ { 0x4A, "application/vnd.oma.drm.rights+xml"},
+ { 0x4B, "application/vnd.oma.drm.rights+wbxml"},
+ { 0x4C, "application/vnd.wv.csp+xml"},
+ { 0x4D, "application/vnd.wv.csp+wbxml"},
+ /* The following media types are registered by 3rd parties */
+ { 0x0201, "application/vnd.uplanet.cachop-wbxml" },
+ { 0x0202, "application/vnd.uplanet.signal" },
+ { 0x0203, "application/vnd.uplanet.alert-wbxml" },
+ { 0x0204, "application/vnd.uplanet.list-wbxml" },
+ { 0x0205, "application/vnd.uplanet.listcmd-wbxml" },
+ { 0x0206, "application/vnd.uplanet.channel-wbxml" },
+ { 0x0207, "application/vnd.uplanet.provisioning-status-uri" },
+ { 0x0208, "x-wap.multipart/vnd.uplanet.header-set" },
+ { 0x0209, "application/vnd.uplanet.bearer-choice-wbxml" },
+ { 0x020A, "application/vnd.phonecom.mmc-wbxml" },
+ { 0x020B, "application/vnd.nokia.syncset+wbxml" },
+ { 0x020C, "image/x-up-wpng"},
+ { 0x0300, "application/iota.mmc-wbxml"},
+ { 0x0301, "application/iota.mmc-xml"},
+ { 0x00, NULL }
};
static value_string_ext vals_content_types_ext = VALUE_STRING_EXT_INIT(vals_content_types);
static const value_string vals_languages[] = {
- { 0x00, "*" },
- { 0x01, "Afar (aa)" },
- { 0x02, "Abkhazian (ab)" },
- { 0x03, "Afrikaans (af)" },
- { 0x04, "Amharic (am)" },
- { 0x05, "Arabic (ar)" },
- { 0x06, "Assamese (as)" },
- { 0x07, "Aymara (ay)" },
- { 0x08, "Azerbaijani (az)" },
- { 0x09, "Bashkir (ba)" },
- { 0x0A, "Byelorussian (be)" },
- { 0x0B, "Bulgarian (bg)" },
- { 0x0C, "Bihari (bh)" },
- { 0x0D, "Bislama (bi)" },
- { 0x0E, "Bengali; Bangla (bn)" },
- { 0x0F, "Tibetan (bo)" },
- { 0x10, "Breton (br)" },
- { 0x11, "Catalan (ca)" },
- { 0x12, "Corsican (co)" },
- { 0x13, "Czech (cs)" },
- { 0x14, "Welsh (cy)" },
- { 0x15, "Danish (da)" },
- { 0x16, "German (de)" },
- { 0x17, "Bhutani (dz)" },
- { 0x18, "Greek (el)" },
- { 0x19, "English (en)" },
- { 0x1A, "Esperanto (eo)" },
- { 0x1B, "Spanish (es)" },
- { 0x1C, "Estonian (et)" },
- { 0x1D, "Basque (eu)" },
- { 0x1E, "Persian (fa)" },
- { 0x1F, "Finnish (fi)" },
- { 0x20, "Fiji (fj)" },
- { 0x21, "Urdu (ur)" },
- { 0x22, "French (fr)" },
- { 0x23, "Uzbek (uz)" },
- { 0x24, "Irish (ga)" },
- { 0x25, "Scots Gaelic (gd)" },
- { 0x26, "Galician (gl)" },
- { 0x27, "Guarani (gn)" },
- { 0x28, "Gujarati (gu)" },
- { 0x29, "Hausa (ha)" },
- { 0x2A, "Hebrew (formerly iw) (he)" },
- { 0x2B, "Hindi (hi)" },
- { 0x2C, "Croatian (hr)" },
- { 0x2D, "Hungarian (hu)" },
- { 0x2E, "Armenian (hy)" },
- { 0x2F, "Vietnamese (vi)" },
- { 0x30, "Indonesian (formerly in) (id)" },
- { 0x31, "Wolof (wo)" },
- { 0x32, "Xhosa (xh)" },
- { 0x33, "Icelandic (is)" },
- { 0x34, "Italian (it)" },
- { 0x35, "Yoruba (yo)" },
- { 0x36, "Japanese (ja)" },
- { 0x37, "Javanese (jw)" },
- { 0x38, "Georgian (ka)" },
- { 0x39, "Kazakh (kk)" },
- { 0x3A, "Zhuang (za)" },
- { 0x3B, "Cambodian (km)" },
- { 0x3C, "Kannada (kn)" },
- { 0x3D, "Korean (ko)" },
- { 0x3E, "Kashmiri (ks)" },
- { 0x3F, "Kurdish (ku)" },
- { 0x40, "Kirghiz (ky)" },
- { 0x41, "Chinese (zh)" },
- { 0x42, "Lingala (ln)" },
- { 0x43, "Laothian (lo)" },
- { 0x44, "Lithuanian (lt)" },
- { 0x45, "Latvian, Lettish (lv)" },
- { 0x46, "Malagasy (mg)" },
- { 0x47, "Maori (mi)" },
- { 0x48, "Macedonian (mk)" },
- { 0x49, "Malayalam (ml)" },
- { 0x4A, "Mongolian (mn)" },
- { 0x4B, "Moldavian (mo)" },
- { 0x4C, "Marathi (mr)" },
- { 0x4D, "Malay (ms)" },
- { 0x4E, "Maltese (mt)" },
- { 0x4F, "Burmese (my)" },
- { 0x50, "Ukrainian (uk)" },
- { 0x51, "Nepali (ne)" },
- { 0x52, "Dutch (nl)" },
- { 0x53, "Norwegian (no)" },
- { 0x54, "Occitan (oc)" },
- { 0x55, "(Afan) Oromo (om)" },
- { 0x56, "Oriya (or)" },
- { 0x57, "Punjabi (pa)" },
- { 0x58, "Polish (po)" },
- { 0x59, "Pashto, Pushto (ps)" },
- { 0x5A, "Portuguese (pt)" },
- { 0x5B, "Quechua (qu)" },
- { 0x5C, "Zulu (zu)" },
- { 0x5D, "Kirundi (rn)" },
- { 0x5E, "Romanian (ro)" },
- { 0x5F, "Russian (ru)" },
- { 0x60, "Kinyarwanda (rw)" },
- { 0x61, "Sanskrit (sa)" },
- { 0x62, "Sindhi (sd)" },
- { 0x63, "Sangho (sg)" },
- { 0x64, "Serbo-Croatian (sh)" },
- { 0x65, "Sinhalese (si)" },
- { 0x66, "Slovak (sk)" },
- { 0x67, "Slovenian (sl)" },
- { 0x68, "Samoan (sm)" },
- { 0x69, "Shona (sn)" },
- { 0x6A, "Somali (so)" },
- { 0x6B, "Albanian (sq)" },
- { 0x6C, "Serbian (sr)" },
- { 0x6D, "Siswati (ss)" },
- { 0x6E, "Sesotho (st)" },
- { 0x6F, "Sundanese (su)" },
- { 0x70, "Swedish (sv)" },
- { 0x71, "Swahili (sw)" },
- { 0x72, "Tamil (ta)" },
- { 0x73, "Telugu (te)" },
- { 0x74, "Tajik (tg)" },
- { 0x75, "Thai (th)" },
- { 0x76, "Tigrinya (ti)" },
- { 0x77, "Turkmen (tk)" },
- { 0x78, "Tagalog (tl)" },
- { 0x79, "Setswana (tn)" },
- { 0x7A, "Tonga (to)" },
- { 0x7B, "Turkish (tr)" },
- { 0x7C, "Tsonga (ts)" },
- { 0x7D, "Tatar (tt)" },
- { 0x7E, "Twi (tw)" },
- { 0x7F, "Uighur (ug)" },
- { 0x81, "Nauru (na)" },
- { 0x82, "Faeroese (fo)" },
- { 0x83, "Frisian (fy)" },
- { 0x84, "Interlingua (ia)" },
- { 0x85, "Volapuk (vo)" },
- { 0x86, "Interlingue (ie)" },
- { 0x87, "Inupiak (ik)" },
- { 0x88, "Yiddish (formerly ji) (yi)" },
- { 0x89, "Inuktitut (iu)" },
- { 0x8A, "Greenlandic (kl)" },
- { 0x8B, "Latin (la)" },
- { 0x8C, "Rhaeto-Romance (rm)" },
- { 0x00, NULL }
+ { 0x00, "*" },
+ { 0x01, "Afar (aa)" },
+ { 0x02, "Abkhazian (ab)" },
+ { 0x03, "Afrikaans (af)" },
+ { 0x04, "Amharic (am)" },
+ { 0x05, "Arabic (ar)" },
+ { 0x06, "Assamese (as)" },
+ { 0x07, "Aymara (ay)" },
+ { 0x08, "Azerbaijani (az)" },
+ { 0x09, "Bashkir (ba)" },
+ { 0x0A, "Byelorussian (be)" },
+ { 0x0B, "Bulgarian (bg)" },
+ { 0x0C, "Bihari (bh)" },
+ { 0x0D, "Bislama (bi)" },
+ { 0x0E, "Bengali; Bangla (bn)" },
+ { 0x0F, "Tibetan (bo)" },
+ { 0x10, "Breton (br)" },
+ { 0x11, "Catalan (ca)" },
+ { 0x12, "Corsican (co)" },
+ { 0x13, "Czech (cs)" },
+ { 0x14, "Welsh (cy)" },
+ { 0x15, "Danish (da)" },
+ { 0x16, "German (de)" },
+ { 0x17, "Bhutani (dz)" },
+ { 0x18, "Greek (el)" },
+ { 0x19, "English (en)" },
+ { 0x1A, "Esperanto (eo)" },
+ { 0x1B, "Spanish (es)" },
+ { 0x1C, "Estonian (et)" },
+ { 0x1D, "Basque (eu)" },
+ { 0x1E, "Persian (fa)" },
+ { 0x1F, "Finnish (fi)" },
+ { 0x20, "Fiji (fj)" },
+ { 0x21, "Urdu (ur)" },
+ { 0x22, "French (fr)" },
+ { 0x23, "Uzbek (uz)" },
+ { 0x24, "Irish (ga)" },
+ { 0x25, "Scots Gaelic (gd)" },
+ { 0x26, "Galician (gl)" },
+ { 0x27, "Guarani (gn)" },
+ { 0x28, "Gujarati (gu)" },
+ { 0x29, "Hausa (ha)" },
+ { 0x2A, "Hebrew (formerly iw) (he)" },
+ { 0x2B, "Hindi (hi)" },
+ { 0x2C, "Croatian (hr)" },
+ { 0x2D, "Hungarian (hu)" },
+ { 0x2E, "Armenian (hy)" },
+ { 0x2F, "Vietnamese (vi)" },
+ { 0x30, "Indonesian (formerly in) (id)" },
+ { 0x31, "Wolof (wo)" },
+ { 0x32, "Xhosa (xh)" },
+ { 0x33, "Icelandic (is)" },
+ { 0x34, "Italian (it)" },
+ { 0x35, "Yoruba (yo)" },
+ { 0x36, "Japanese (ja)" },
+ { 0x37, "Javanese (jw)" },
+ { 0x38, "Georgian (ka)" },
+ { 0x39, "Kazakh (kk)" },
+ { 0x3A, "Zhuang (za)" },
+ { 0x3B, "Cambodian (km)" },
+ { 0x3C, "Kannada (kn)" },
+ { 0x3D, "Korean (ko)" },
+ { 0x3E, "Kashmiri (ks)" },
+ { 0x3F, "Kurdish (ku)" },
+ { 0x40, "Kirghiz (ky)" },
+ { 0x41, "Chinese (zh)" },
+ { 0x42, "Lingala (ln)" },
+ { 0x43, "Laothian (lo)" },
+ { 0x44, "Lithuanian (lt)" },
+ { 0x45, "Latvian, Lettish (lv)" },
+ { 0x46, "Malagasy (mg)" },
+ { 0x47, "Maori (mi)" },
+ { 0x48, "Macedonian (mk)" },
+ { 0x49, "Malayalam (ml)" },
+ { 0x4A, "Mongolian (mn)" },
+ { 0x4B, "Moldavian (mo)" },
+ { 0x4C, "Marathi (mr)" },
+ { 0x4D, "Malay (ms)" },
+ { 0x4E, "Maltese (mt)" },
+ { 0x4F, "Burmese (my)" },
+ { 0x50, "Ukrainian (uk)" },
+ { 0x51, "Nepali (ne)" },
+ { 0x52, "Dutch (nl)" },
+ { 0x53, "Norwegian (no)" },
+ { 0x54, "Occitan (oc)" },
+ { 0x55, "(Afan) Oromo (om)" },
+ { 0x56, "Oriya (or)" },
+ { 0x57, "Punjabi (pa)" },
+ { 0x58, "Polish (po)" },
+ { 0x59, "Pashto, Pushto (ps)" },
+ { 0x5A, "Portuguese (pt)" },
+ { 0x5B, "Quechua (qu)" },
+ { 0x5C, "Zulu (zu)" },
+ { 0x5D, "Kirundi (rn)" },
+ { 0x5E, "Romanian (ro)" },
+ { 0x5F, "Russian (ru)" },
+ { 0x60, "Kinyarwanda (rw)" },
+ { 0x61, "Sanskrit (sa)" },
+ { 0x62, "Sindhi (sd)" },
+ { 0x63, "Sangho (sg)" },
+ { 0x64, "Serbo-Croatian (sh)" },
+ { 0x65, "Sinhalese (si)" },
+ { 0x66, "Slovak (sk)" },
+ { 0x67, "Slovenian (sl)" },
+ { 0x68, "Samoan (sm)" },
+ { 0x69, "Shona (sn)" },
+ { 0x6A, "Somali (so)" },
+ { 0x6B, "Albanian (sq)" },
+ { 0x6C, "Serbian (sr)" },
+ { 0x6D, "Siswati (ss)" },
+ { 0x6E, "Sesotho (st)" },
+ { 0x6F, "Sundanese (su)" },
+ { 0x70, "Swedish (sv)" },
+ { 0x71, "Swahili (sw)" },
+ { 0x72, "Tamil (ta)" },
+ { 0x73, "Telugu (te)" },
+ { 0x74, "Tajik (tg)" },
+ { 0x75, "Thai (th)" },
+ { 0x76, "Tigrinya (ti)" },
+ { 0x77, "Turkmen (tk)" },
+ { 0x78, "Tagalog (tl)" },
+ { 0x79, "Setswana (tn)" },
+ { 0x7A, "Tonga (to)" },
+ { 0x7B, "Turkish (tr)" },
+ { 0x7C, "Tsonga (ts)" },
+ { 0x7D, "Tatar (tt)" },
+ { 0x7E, "Twi (tw)" },
+ { 0x7F, "Uighur (ug)" },
+ { 0x81, "Nauru (na)" },
+ { 0x82, "Faeroese (fo)" },
+ { 0x83, "Frisian (fy)" },
+ { 0x84, "Interlingua (ia)" },
+ { 0x85, "Volapuk (vo)" },
+ { 0x86, "Interlingue (ie)" },
+ { 0x87, "Inupiak (ik)" },
+ { 0x88, "Yiddish (formerly ji) (yi)" },
+ { 0x89, "Inuktitut (iu)" },
+ { 0x8A, "Greenlandic (kl)" },
+ { 0x8B, "Latin (la)" },
+ { 0x8C, "Rhaeto-Romance (rm)" },
+ { 0x00, NULL }
};
static value_string_ext vals_languages_ext = VALUE_STRING_EXT_INIT(vals_languages);
-#define CACHE_CONTROL_NO_CACHE 0x00
-#define CACHE_CONTROL_NO_STORE 0x01
-#define CACHE_CONTROL_MAX_AGE 0x02
-#define CACHE_CONTROL_MAX_STALE 0x03
-#define CACHE_CONTROL_MIN_FRESH 0x04
-#define CACHE_CONTROL_ONLY_IF_CACHED 0x05
-#define CACHE_CONTROL_PUBLIC 0x06
-#define CACHE_CONTROL_PRIVATE 0x07
-#define CACHE_CONTROL_NO_TRANSFORM 0x08
-#define CACHE_CONTROL_MUST_REVALIDATE 0x09
-#define CACHE_CONTROL_PROXY_REVALIDATE 0x0A
-#define CACHE_CONTROL_S_MAXAGE 0x0B
+#define CACHE_CONTROL_NO_CACHE 0x00
+#define CACHE_CONTROL_NO_STORE 0x01
+#define CACHE_CONTROL_MAX_AGE 0x02
+#define CACHE_CONTROL_MAX_STALE 0x03
+#define CACHE_CONTROL_MIN_FRESH 0x04
+#define CACHE_CONTROL_ONLY_IF_CACHED 0x05
+#define CACHE_CONTROL_PUBLIC 0x06
+#define CACHE_CONTROL_PRIVATE 0x07
+#define CACHE_CONTROL_NO_TRANSFORM 0x08
+#define CACHE_CONTROL_MUST_REVALIDATE 0x09
+#define CACHE_CONTROL_PROXY_REVALIDATE 0x0A
+#define CACHE_CONTROL_S_MAXAGE 0x0B
static const value_string vals_cache_control[] = {
- { CACHE_CONTROL_NO_CACHE, "no-cache" },
- { CACHE_CONTROL_NO_STORE, "no-store" },
- { CACHE_CONTROL_MAX_AGE, "max-age" },
- { CACHE_CONTROL_MAX_STALE, "max-stale" },
- { CACHE_CONTROL_MIN_FRESH, "min-fresh" },
- { CACHE_CONTROL_ONLY_IF_CACHED, "only-if-cached" },
- { CACHE_CONTROL_PUBLIC, "public" },
- { CACHE_CONTROL_PRIVATE, "private" },
- { CACHE_CONTROL_NO_TRANSFORM, "no-transform" },
- { CACHE_CONTROL_MUST_REVALIDATE, "must-revalidate" },
- { CACHE_CONTROL_PROXY_REVALIDATE, "proxy-revalidate" },
- { CACHE_CONTROL_S_MAXAGE, "s-max-age" },
-
- { 0x00, NULL }
+ { CACHE_CONTROL_NO_CACHE, "no-cache" },
+ { CACHE_CONTROL_NO_STORE, "no-store" },
+ { CACHE_CONTROL_MAX_AGE, "max-age" },
+ { CACHE_CONTROL_MAX_STALE, "max-stale" },
+ { CACHE_CONTROL_MIN_FRESH, "min-fresh" },
+ { CACHE_CONTROL_ONLY_IF_CACHED, "only-if-cached" },
+ { CACHE_CONTROL_PUBLIC, "public" },
+ { CACHE_CONTROL_PRIVATE, "private" },
+ { CACHE_CONTROL_NO_TRANSFORM, "no-transform" },
+ { CACHE_CONTROL_MUST_REVALIDATE, "must-revalidate" },
+ { CACHE_CONTROL_PROXY_REVALIDATE, "proxy-revalidate" },
+ { CACHE_CONTROL_S_MAXAGE, "s-max-age" },
+
+ { 0x00, NULL }
};
static value_string_ext vals_cache_control_ext = VALUE_STRING_EXT_INIT(vals_cache_control);
static const value_string vals_wap_application_ids[] = {
- /* Well-known WAP applications */
- { 0x00, "x-wap-application:*"},
- { 0x01, "x-wap-application:push.sia"},
- { 0x02, "x-wap-application:wml.ua"},
- { 0x03, "x-wap-application:wta.ua"},
- { 0x04, "x-wap-application:mms.ua"},
- { 0x05, "x-wap-application:push.syncml"},
- { 0x06, "x-wap-application:loc.ua"},
- { 0x07, "x-wap-application:syncml.dm"},
- { 0x08, "x-wap-application:drm.ua"},
- { 0x09, "x-wap-application:emn.ua"},
- { 0x0A, "x-wap-application:wv.ua"},
- /* Registered by 3rd parties */
- { 0x8000, "x-wap-microsoft:localcontent.ua"},
- { 0x8001, "x-wap-microsoft:IMclient.ua"},
- { 0x8002, "x-wap-docomo:imode.mail.ua"},
- { 0x8003, "x-wap-docomo:imode.mr.ua"},
- { 0x8004, "x-wap-docomo:imode.mf.ua"},
- { 0x8005, "x-motorola:location.ua"},
- { 0x8006, "x-motorola:now.ua"},
- { 0x8007, "x-motorola:otaprov.ua"},
- { 0x8008, "x-motorola:browser.ua"},
- { 0x8009, "x-motorola:splash.ua"},
- /* 0x800A: unassigned */
- { 0x800B, "x-wap-nai:mvsw.command"},
- /* 0x800C -- 0x800F: unassigned */
- { 0x8010, "x-wap-openwave:iota.ua"},
- /* 0x8011 -- 0x8FFF: unassigned */
- { 0x9000, "x-wap-docomo:imode.mail2.ua"},
- { 0x9001, "x-oma-nec:otaprov.ua"},
- { 0x9002, "x-oma-nokia:call.ua"},
- { 0x9003, "x-oma-coremobility:sqa.ua"},
-
- { 0x00, NULL }
+ /* Well-known WAP applications */
+ { 0x00, "x-wap-application:*"},
+ { 0x01, "x-wap-application:push.sia"},
+ { 0x02, "x-wap-application:wml.ua"},
+ { 0x03, "x-wap-application:wta.ua"},
+ { 0x04, "x-wap-application:mms.ua"},
+ { 0x05, "x-wap-application:push.syncml"},
+ { 0x06, "x-wap-application:loc.ua"},
+ { 0x07, "x-wap-application:syncml.dm"},
+ { 0x08, "x-wap-application:drm.ua"},
+ { 0x09, "x-wap-application:emn.ua"},
+ { 0x0A, "x-wap-application:wv.ua"},
+ /* Registered by 3rd parties */
+ { 0x8000, "x-wap-microsoft:localcontent.ua"},
+ { 0x8001, "x-wap-microsoft:IMclient.ua"},
+ { 0x8002, "x-wap-docomo:imode.mail.ua"},
+ { 0x8003, "x-wap-docomo:imode.mr.ua"},
+ { 0x8004, "x-wap-docomo:imode.mf.ua"},
+ { 0x8005, "x-motorola:location.ua"},
+ { 0x8006, "x-motorola:now.ua"},
+ { 0x8007, "x-motorola:otaprov.ua"},
+ { 0x8008, "x-motorola:browser.ua"},
+ { 0x8009, "x-motorola:splash.ua"},
+ /* 0x800A: unassigned */
+ { 0x800B, "x-wap-nai:mvsw.command"},
+ /* 0x800C -- 0x800F: unassigned */
+ { 0x8010, "x-wap-openwave:iota.ua"},
+ /* 0x8011 -- 0x8FFF: unassigned */
+ { 0x9000, "x-wap-docomo:imode.mail2.ua"},
+ { 0x9001, "x-oma-nec:otaprov.ua"},
+ { 0x9002, "x-oma-nokia:call.ua"},
+ { 0x9003, "x-oma-coremobility:sqa.ua"},
+
+ { 0x00, NULL }
};
static value_string_ext vals_wap_application_ids_ext = VALUE_STRING_EXT_INIT(vals_wap_application_ids);
/* Parameters and well-known encodings */
static const value_string vals_wsp_parameter_sec[] = {
- { 0x00, "NETWPIN" },
- { 0x01, "USERPIN" },
- { 0x02, "USERNETWPIN" },
- { 0x03, "USERPINMAC" },
+ { 0x00, "NETWPIN" },
+ { 0x01, "USERPIN" },
+ { 0x02, "USERNETWPIN" },
+ { 0x03, "USERPINMAC" },
- { 0x00, NULL }
+ { 0x00, NULL }
};
static value_string_ext vals_wsp_parameter_sec_ext = VALUE_STRING_EXT_INIT(vals_wsp_parameter_sec);
/* Warning codes and mappings */
static const value_string vals_wsp_warning_code[] = {
- { 10, "110 Response is stale" },
- { 11, "111 Revalidation failed" },
- { 12, "112 Disconnected operation" },
- { 13, "113 Heuristic expiration" },
- { 14, "214 Transformation applied" },
- { 99, "199/299 Miscellaneous warning" },
-
- { 0, NULL }
+ { 10, "110 Response is stale" },
+ { 11, "111 Revalidation failed" },
+ { 12, "112 Disconnected operation" },
+ { 13, "113 Heuristic expiration" },
+ { 14, "214 Transformation applied" },
+ { 99, "199/299 Miscellaneous warning" },
+
+ { 0, NULL }
};
static value_string_ext vals_wsp_warning_code_ext = VALUE_STRING_EXT_INIT(vals_wsp_warning_code);
static const value_string vals_wsp_warning_code_short[] = {
- { 10, "110" },
- { 11, "111" },
- { 12, "112" },
- { 13, "113" },
- { 14, "214" },
- { 99, "199/299" },
-
- { 0, NULL }
+ { 10, "110" },
+ { 11, "111" },
+ { 12, "112" },
+ { 13, "113" },
+ { 14, "214" },
+ { 99, "199/299" },
+
+ { 0, NULL }
};
static value_string_ext vals_wsp_warning_code_short_ext = VALUE_STRING_EXT_INIT(vals_wsp_warning_code_short);
/* Profile-Warning codes - see http://www.w3.org/TR/NOTE-CCPPexchange */
static const value_string vals_wsp_profile_warning_code[] = {
- { 0x10, "100 OK" },
- { 0x11, "101 Used stale profile" },
- { 0x12, "102 Not used profile" },
- { 0x20, "200 Not applied" },
- { 0x21, "101 Content selection applied" },
- { 0x22, "202 Content generation applied" },
- { 0x23, "203 Transformation applied" },
-
- { 0x00, NULL }
+ { 0x10, "100 OK" },
+ { 0x11, "101 Used stale profile" },
+ { 0x12, "102 Not used profile" },
+ { 0x20, "200 Not applied" },
+ { 0x21, "101 Content selection applied" },
+ { 0x22, "202 Content generation applied" },
+ { 0x23, "203 Transformation applied" },
+
+ { 0x00, NULL }
};
static value_string_ext vals_wsp_profile_warning_code_ext = VALUE_STRING_EXT_INIT(vals_wsp_profile_warning_code);
/* Well-known TE values */
static const value_string vals_well_known_te[] = {
- { 0x82, "chunked" },
- { 0x83, "identity" },
- { 0x84, "gzip" },
- { 0x85, "compress" },
- { 0x86, "deflate" },
+ { 0x82, "chunked" },
+ { 0x83, "identity" },
+ { 0x84, "gzip" },
+ { 0x85, "compress" },
+ { 0x86, "deflate" },
- { 0x00, NULL }
+ { 0x00, NULL }
};
static value_string_ext vals_well_known_te_ext = VALUE_STRING_EXT_INIT(vals_well_known_te);
@@ -1175,42 +1173,42 @@ static value_string_ext vals_well_known_te_ext = VALUE_STRING_EXT_INIT(vals_well
/*
* Redirect flags.
*/
-#define PERMANENT_REDIRECT 0x80
-#define REUSE_SECURITY_SESSION 0x40
+#define PERMANENT_REDIRECT 0x80
+#define REUSE_SECURITY_SESSION 0x40
/*
* Redirect address flags and length.
*/
-#define BEARER_TYPE_INCLUDED 0x80
-#define PORT_NUMBER_INCLUDED 0x40
-#define ADDRESS_LEN 0x3f
+#define BEARER_TYPE_INCLUDED 0x80
+#define PORT_NUMBER_INCLUDED 0x40
+#define ADDRESS_LEN 0x3f
static const value_string vals_false_true[] = {
- { 0, "False" },
- { 1, "True" },
- { 0, NULL }
+ { 0, "False" },
+ { 1, "True" },
+ { 0, NULL }
};
enum {
- WSP_PDU_RESERVED = 0x00,
- WSP_PDU_CONNECT = 0x01,
- WSP_PDU_CONNECTREPLY = 0x02,
- WSP_PDU_REDIRECT = 0x03, /* No sample data */
- WSP_PDU_REPLY = 0x04,
- WSP_PDU_DISCONNECT = 0x05,
- WSP_PDU_PUSH = 0x06, /* No sample data */
- WSP_PDU_CONFIRMEDPUSH = 0x07, /* No sample data */
- WSP_PDU_SUSPEND = 0x08, /* No sample data */
- WSP_PDU_RESUME = 0x09, /* No sample data */
-
- WSP_PDU_GET = 0x40,
- WSP_PDU_OPTIONS = 0x41, /* No sample data */
- WSP_PDU_HEAD = 0x42, /* No sample data */
- WSP_PDU_DELETE = 0x43, /* No sample data */
- WSP_PDU_TRACE = 0x44, /* No sample data */
-
- WSP_PDU_POST = 0x60,
- WSP_PDU_PUT = 0x61 /* No sample data */
+ WSP_PDU_RESERVED = 0x00,
+ WSP_PDU_CONNECT = 0x01,
+ WSP_PDU_CONNECTREPLY = 0x02,
+ WSP_PDU_REDIRECT = 0x03, /* No sample data */
+ WSP_PDU_REPLY = 0x04,
+ WSP_PDU_DISCONNECT = 0x05,
+ WSP_PDU_PUSH = 0x06, /* No sample data */
+ WSP_PDU_CONFIRMEDPUSH = 0x07, /* No sample data */
+ WSP_PDU_SUSPEND = 0x08, /* No sample data */
+ WSP_PDU_RESUME = 0x09, /* No sample data */
+
+ WSP_PDU_GET = 0x40,
+ WSP_PDU_OPTIONS = 0x41, /* No sample data */
+ WSP_PDU_HEAD = 0x42, /* No sample data */
+ WSP_PDU_DELETE = 0x43, /* No sample data */
+ WSP_PDU_TRACE = 0x44, /* No sample data */
+
+ WSP_PDU_POST = 0x60,
+ WSP_PDU_PUT = 0x61 /* No sample data */
};
@@ -1236,75 +1234,75 @@ static void add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *p
* in the ABNF notation of WSP headers.
* Currently all text data types are mapped to text_string.
*/
-#define is_short_integer(x) ( (x) & 0x80 )
-#define is_long_integer(x) ( (x) <= 30 )
-#define is_date_value(x) is_long_integer(x)
-#define is_integer_value(x) (is_short_integer(x) || is_long_integer(x))
-#define is_delta_seconds_value(x) is_integer_value(x)
+#define is_short_integer(x) ( (x) & 0x80 )
+#define is_long_integer(x) ( (x) <= 30 )
+#define is_date_value(x) is_long_integer(x)
+#define is_integer_value(x) (is_short_integer(x) || is_long_integer(x))
+#define is_delta_seconds_value(x) is_integer_value(x)
/* Text string == *TEXT 0x00, thus also an empty string matches the rule! */
-#define is_text_string(x) ( ((x) == 0) || ( ((x) >= 32) && ((x) <= 127)) )
-#define is_quoted_string(x) ( (x) == 0x22 ) /* " */
-#define is_token_text(x) is_text_string(x)
-#define is_text_value(x) is_text_string(x)
-#define is_uri_value(x) is_text_string(x)
+#define is_text_string(x) ( ((x) == 0) || ( ((x) >= 32) && ((x) <= 127)) )
+#define is_quoted_string(x) ( (x) == 0x22 ) /* " */
+#define is_token_text(x) is_text_string(x)
+#define is_text_value(x) is_text_string(x)
+#define is_uri_value(x) is_text_string(x)
#define get_uintvar_integer(val,tvb,start,len,ok) \
- val = tvb_get_guintvar(tvb,start,&len); \
- if (len>5) ok = FALSE; else ok = TRUE;
+ val = tvb_get_guintvar(tvb,start,&len); \
+ if (len>5) ok = FALSE; else ok = TRUE;
#define get_short_integer(val,tvb,start,len,ok) \
- val = tvb_get_guint8(tvb,start); \
- if (val & 0x80) ok = TRUE; else ok=FALSE; \
- val &= 0x7F; len = 1;
+ val = tvb_get_guint8(tvb,start); \
+ if (val & 0x80) ok = TRUE; else ok=FALSE; \
+ val &= 0x7F; len = 1;
#define get_long_integer(val,tvb,start,len,ok) \
- len = tvb_get_guint8(tvb,start); \
- ok = TRUE; /* Valid lengths for us are 1-4 */ \
- if (len==1) { val = tvb_get_guint8(tvb,start+1); } \
- else if (len==2) { val = tvb_get_ntohs(tvb,start+1); } \
- else if (len==3) { val = tvb_get_ntoh24(tvb,start+1); } \
- else if (len==4) { val = tvb_get_ntohl(tvb,start+1); } \
- else ok = FALSE; \
- len++; /* Add the 1st octet to the length */
+ len = tvb_get_guint8(tvb,start); \
+ ok = TRUE; /* Valid lengths for us are 1-4 */ \
+ if (len==1) { val = tvb_get_guint8(tvb,start+1); } \
+ else if (len==2) { val = tvb_get_ntohs(tvb,start+1); } \
+ else if (len==3) { val = tvb_get_ntoh24(tvb,start+1); } \
+ else if (len==4) { val = tvb_get_ntohl(tvb,start+1); } \
+ else ok = FALSE; \
+ len++; /* Add the 1st octet to the length */
#define get_integer_value(val,tvb,start,len,ok) \
- len = tvb_get_guint8(tvb,start); \
- ok = TRUE; \
- if (len & 0x80) { val = len & 0x7F; len = 0; } \
- else if (len==1) { val = tvb_get_guint8(tvb,start+1); } \
- else if (len==2) { val = tvb_get_ntohs(tvb,start+1); } \
- else if (len==3) { val = tvb_get_ntoh24(tvb,start+1); } \
- else if (len==4) { val = tvb_get_ntohl(tvb,start+1); } \
- else ok = FALSE; \
- len++; /* Add the 1st octet to the length */
+ len = tvb_get_guint8(tvb,start); \
+ ok = TRUE; \
+ if (len & 0x80) { val = len & 0x7F; len = 0; } \
+ else if (len==1) { val = tvb_get_guint8(tvb,start+1); } \
+ else if (len==2) { val = tvb_get_ntohs(tvb,start+1); } \
+ else if (len==3) { val = tvb_get_ntoh24(tvb,start+1); } \
+ else if (len==4) { val = tvb_get_ntohl(tvb,start+1); } \
+ else ok = FALSE; \
+ len++; /* Add the 1st octet to the length */
#define get_date_value(val,tvb,start,len,ok) \
- get_long_integer(val,tvb,start,len,ok)
+ get_long_integer(val,tvb,start,len,ok)
#define get_delta_seconds_value(val,tvb,start,len,ok) \
- get_integer_value(val,tvb,start,len,ok)
+ get_integer_value(val,tvb,start,len,ok)
/* NOTE - Don't forget to g_free() the str value after its usage as the
* tvb_get_stringz() functions return g_malloc()ed memory! */
#define get_text_string(str,tvb,start,len,ok) \
- if (is_text_string(tvb_get_guint8(tvb,start))) { \
- str = (gchar *)tvb_get_stringz(tvb,start,(gint *)&len); \
- ok = TRUE; \
- } else { len = 0; str = NULL; ok = FALSE; }
+ if (is_text_string(tvb_get_guint8(tvb,start))) { \
+ str = (gchar *)tvb_get_stringz(tvb,start,(gint *)&len); \
+ ok = TRUE; \
+ } else { len = 0; str = NULL; ok = FALSE; }
#define get_token_text(str,tvb,start,len,ok) \
- get_text_string(str,tvb,start,len,ok)
+ get_text_string(str,tvb,start,len,ok)
#define get_extension_media(str,tvb,start,len,ok) \
- get_text_string(str,tvb,start,len,ok)
+ get_text_string(str,tvb,start,len,ok)
#define get_text_value(str,tvb,start,len,ok) \
- get_text_string(str,tvb,start,len,ok)
+ get_text_string(str,tvb,start,len,ok)
#define get_quoted_string(str,tvb,start,len,ok) \
- get_text_string(str,tvb,start,len,ok)
+ get_text_string(str,tvb,start,len,ok)
#define get_uri_value(str,tvb,start,len,ok) \
- get_text_string(str,tvb,start,len,ok)
+ get_text_string(str,tvb,start,len,ok)
#define get_version_value(val,str,tvb,start,len,ok) \
- val = tvb_get_guint8(tvb,start); \
- ok = TRUE; \
- if (val & 0x80) { /* High nibble "." Low nibble */ \
- len = 1; \
- val &= 0x7F; \
- str = g_strdup_printf("%u.%u", val >> 4, val & 0x0F); \
- } else { get_text_string(str,tvb,start,len,ok); }
+ val = tvb_get_guint8(tvb,start); \
+ ok = TRUE; \
+ if (val & 0x80) { /* High nibble "." Low nibble */ \
+ len = 1; \
+ val &= 0x7F; \
+ str = g_strdup_printf("%u.%u", val >> 4, val & 0x0F); \
+ } else { get_text_string(str,tvb,start,len,ok); }
/* Parameter parser */
static int
@@ -1313,130 +1311,130 @@ static int
parameter_value_q (proto_tree *tree, proto_item *ti, tvbuff_t *tvb, int start);
#define InvalidValueForHeader(hdr) \
- "<Error: Invalid value for the '" hdr "' header>"
+ "<Error: Invalid value for the '" hdr "' header>"
#define InvalidTextualHeader \
- "<Error: Invalid zero-length textual header>"
+ "<Error: Invalid zero-length textual header>"
#define TrailingQuoteWarning \
- " <Warning: Quoted-string value has been encoded with a trailing quote>"
+ " <Warning: Quoted-string value has been encoded with a trailing quote>"
/* WSP well-known header parsing function prototypes;
* will be listed in the function lookup table WellKnownHeaders[] */
static guint32 wkh_default (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_type (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept_charset (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept_language (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_connection (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_push_flag (proto_tree *tree, tvbuff_t *tvb,
- guint32 header_start, packet_info *pinfo _U_);
+ guint32 header_start, packet_info *pinfo _U_);
static guint32 wkh_vary (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept_ranges (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_disposition (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept_encoding (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_encoding (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_transfer_encoding (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_pragma (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Single short-integer value */
static guint32 wkh_x_wap_security (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Text */
static guint32 wkh_content_base (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_location (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_etag (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_from (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_host (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_if_match (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_if_none_match (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_location (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_referer (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_server (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_user_agent (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_upgrade (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_via (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_uri (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_initiator_uri (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_profile (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_id (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Date-value or text */
static guint32 wkh_if_range (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Date-value */
static guint32 wkh_date (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_expires (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_if_modified_since (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_if_unmodified_since (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_last_modified (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Date-value with special meaning */
static guint32 wkh_x_wap_tod (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Delta-seconds-value */
static guint32 wkh_age (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Challenge */
static guint32 wkh_proxy_authenticate (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_www_authenticate (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Credentials */
static guint32 wkh_authorization (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_proxy_authorization (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Pragma */
static guint32 wkh_pragma (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Integer-value */
static guint32 wkh_content_length (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_max_forwards (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Integer lookup value */
static guint32 wkh_bearer_indication (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* WAP application ID value */
static guint32 wkh_x_wap_application_id (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_accept_application (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_content_language (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Allow and Public */
static guint32 wkh_allow(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
@@ -1444,113 +1442,113 @@ static guint32 wkh_public(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, pa
/* Cache-control */
static guint32 wkh_cache_control (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Warning */
static guint32 wkh_warning (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Profile-warning */
static guint32 wkh_profile_warning (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Content-MD5 */
static guint32 wkh_content_md5 (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* WSP encoding version */
static guint32 wkh_encoding_version (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Content-Range and Range */
static guint32 wkh_content_range (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_range (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* TE */
static guint32 wkh_te (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Header value */
static guint32 wkh_trailer (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Profile-Diff with WBXML UAPROF document */
static guint32 wkh_profile_diff_wbxml (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo);
+ guint32 hdr_start, packet_info *pinfo);
/* TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
static guint32 wkh_retry_after (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_expect (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_set_cookie (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_cookie (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
*/
/* WSP well-known Openwave header parsing function prototypes;
* will be listed in the function lookup table WellKnownOpenwaveHeaders[] */
static guint32 wkh_openwave_default (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_);
+ guint32 hdr_start, packet_info *pinfo _U_);
/* Textual headers */
static guint32 wkh_openwave_x_up_proxy_operator_domain(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_home_page(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_uplink_version(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_ba_realm(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_request_uri(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_bookmark(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
/* Integer headers */
static guint32 wkh_openwave_x_up_proxy_push_seq(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_notify(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_net_ask(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_tod (proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_ba_enable(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_redirect_enable(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_redirect_status(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_linger(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_enable_trust(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_trust(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_has_color(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_num_softkeys(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_softkey_size(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_screen_chars(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_screen_pixels(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_em_size(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_screen_depth(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_immed_alert(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_devcap_gui(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_trans_charset(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
static guint32 wkh_openwave_x_up_proxy_push_accept(proto_tree *tree,
- tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
+ tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_);
/* Define a pointer to function data type for the well-known header
@@ -1559,169 +1557,166 @@ typedef guint32 (*hdr_parse_func_ptr) (proto_tree *, tvbuff_t *, guint32, packet
/* Lookup table for well-known header parsing functions */
static const hdr_parse_func_ptr WellKnownHeader[128] = {
- /* 0x00 */ wkh_accept, /* 0x01 */ wkh_accept_charset,
- /* 0x02 */ wkh_accept_encoding, /* 0x03 */ wkh_accept_language,
- /* 0x04 */ wkh_accept_ranges, /* 0x05 */ wkh_age,
- /* 0x06 */ wkh_allow, /* 0x07 */ wkh_authorization,
- /* 0x08 */ wkh_cache_control, /* 0x09 */ wkh_connection,
- /* 0x0A */ wkh_content_base, /* 0x0B */ wkh_content_encoding,
- /* 0x0C */ wkh_content_language, /* 0x0D */ wkh_content_length,
- /* 0x0E */ wkh_content_location, /* 0x0F */ wkh_content_md5,
- /* 0x10 */ wkh_content_range, /* 0x11 */ wkh_content_type,
- /* 0x12 */ wkh_date, /* 0x13 */ wkh_etag,
- /* 0x14 */ wkh_expires, /* 0x15 */ wkh_from,
- /* 0x16 */ wkh_host, /* 0x17 */ wkh_if_modified_since,
- /* 0x18 */ wkh_if_match, /* 0x19 */ wkh_if_none_match,
- /* 0x1A */ wkh_if_range, /* 0x1B */ wkh_if_unmodified_since,
- /* 0x1C */ wkh_location, /* 0x1D */ wkh_last_modified,
- /* 0x1E */ wkh_max_forwards, /* 0x1F */ wkh_pragma,
- /* 0x20 */ wkh_proxy_authenticate, /* 0x21 */ wkh_proxy_authorization,
- /* 0x22 */ wkh_public, /* 0x23 */ wkh_range,
- /* 0x24 */ wkh_referer, /* 0x25 */ wkh_default,
- /* 0x26 */ wkh_server, /* 0x27 */ wkh_transfer_encoding,
- /* 0x28 */ wkh_upgrade, /* 0x29 */ wkh_user_agent,
- /* 0x2A */ wkh_vary, /* 0x2B */ wkh_via,
- /* 0x2C */ wkh_warning, /* 0x2D */ wkh_www_authenticate,
- /* 0x2E */ wkh_content_disposition,/* 0x2F */ wkh_x_wap_application_id,
- /* 0x30 */ wkh_content_uri, /* 0x31 */ wkh_initiator_uri,
- /* 0x32 */ wkh_accept_application, /* 0x33 */ wkh_bearer_indication,
- /* 0x34 */ wkh_push_flag, /* 0x35 */ wkh_profile,
- /* 0x36 */ wkh_profile_diff_wbxml, /* 0x37 */ wkh_profile_warning,
- /* 0x38 */ wkh_default, /* 0x39 */ wkh_te,
- /* 0x3A */ wkh_trailer, /* 0x3B */ wkh_accept_charset,
- /* 0x3C */ wkh_accept_encoding, /* 0x3D */ wkh_cache_control,
- /* 0x3E */ wkh_content_range, /* 0x3F */ wkh_x_wap_tod,
- /* 0x40 */ wkh_content_id, /* 0x41 */ wkh_default,
- /* 0x42 */ wkh_default, /* 0x43 */ wkh_encoding_version,
- /* 0x44 */ wkh_profile_warning, /* 0x45 */ wkh_content_disposition,
- /* 0x46 */ wkh_x_wap_security, /* 0x47 */ wkh_cache_control,
- /*******************************************************
- *** The following headers are not (yet) registered. ***
- *******************************************************/
- /* 0x48 */ wkh_default, /* 0x49 */ wkh_default,
- /* 0x4A */ wkh_default, /* 0x4B */ wkh_default,
- /* 0x4C */ wkh_default, /* 0x4D */ wkh_default,
- /* 0x4E */ wkh_default, /* 0x4F */ wkh_default,
- /* 0x50 */ wkh_default, /* 0x51 */ wkh_default,
- /* 0x52 */ wkh_default, /* 0x53 */ wkh_default,
- /* 0x54 */ wkh_default, /* 0x55 */ wkh_default,
- /* 0x56 */ wkh_default, /* 0x57 */ wkh_default,
- /* 0x58 */ wkh_default, /* 0x59 */ wkh_default,
- /* 0x5A */ wkh_default, /* 0x5B */ wkh_default,
- /* 0x5C */ wkh_default, /* 0x5D */ wkh_default,
- /* 0x5E */ wkh_default, /* 0x5F */ wkh_default,
- /* 0x60 */ wkh_default, /* 0x61 */ wkh_default,
- /* 0x62 */ wkh_default, /* 0x63 */ wkh_default,
- /* 0x64 */ wkh_default, /* 0x65 */ wkh_default,
- /* 0x66 */ wkh_default, /* 0x67 */ wkh_default,
- /* 0x68 */ wkh_default, /* 0x69 */ wkh_default,
- /* 0x6A */ wkh_default, /* 0x6B */ wkh_default,
- /* 0x6C */ wkh_default, /* 0x6D */ wkh_default,
- /* 0x6E */ wkh_default, /* 0x6F */ wkh_default,
- /* 0x70 */ wkh_default, /* 0x71 */ wkh_default,
- /* 0x72 */ wkh_default, /* 0x73 */ wkh_default,
- /* 0x74 */ wkh_default, /* 0x75 */ wkh_default,
- /* 0x76 */ wkh_default, /* 0x77 */ wkh_default,
- /* 0x78 */ wkh_default, /* 0x79 */ wkh_default,
- /* 0x7A */ wkh_default, /* 0x7B */ wkh_default,
- /* 0x7C */ wkh_default, /* 0x7D */ wkh_default,
- /* 0x7E */ wkh_default, /* 0x7F */ wkh_default,
+ /* 0x00 */ wkh_accept, /* 0x01 */ wkh_accept_charset,
+ /* 0x02 */ wkh_accept_encoding, /* 0x03 */ wkh_accept_language,
+ /* 0x04 */ wkh_accept_ranges, /* 0x05 */ wkh_age,
+ /* 0x06 */ wkh_allow, /* 0x07 */ wkh_authorization,
+ /* 0x08 */ wkh_cache_control, /* 0x09 */ wkh_connection,
+ /* 0x0A */ wkh_content_base, /* 0x0B */ wkh_content_encoding,
+ /* 0x0C */ wkh_content_language, /* 0x0D */ wkh_content_length,
+ /* 0x0E */ wkh_content_location, /* 0x0F */ wkh_content_md5,
+ /* 0x10 */ wkh_content_range, /* 0x11 */ wkh_content_type,
+ /* 0x12 */ wkh_date, /* 0x13 */ wkh_etag,
+ /* 0x14 */ wkh_expires, /* 0x15 */ wkh_from,
+ /* 0x16 */ wkh_host, /* 0x17 */ wkh_if_modified_since,
+ /* 0x18 */ wkh_if_match, /* 0x19 */ wkh_if_none_match,
+ /* 0x1A */ wkh_if_range, /* 0x1B */ wkh_if_unmodified_since,
+ /* 0x1C */ wkh_location, /* 0x1D */ wkh_last_modified,
+ /* 0x1E */ wkh_max_forwards, /* 0x1F */ wkh_pragma,
+ /* 0x20 */ wkh_proxy_authenticate, /* 0x21 */ wkh_proxy_authorization,
+ /* 0x22 */ wkh_public, /* 0x23 */ wkh_range,
+ /* 0x24 */ wkh_referer, /* 0x25 */ wkh_default,
+ /* 0x26 */ wkh_server, /* 0x27 */ wkh_transfer_encoding,
+ /* 0x28 */ wkh_upgrade, /* 0x29 */ wkh_user_agent,
+ /* 0x2A */ wkh_vary, /* 0x2B */ wkh_via,
+ /* 0x2C */ wkh_warning, /* 0x2D */ wkh_www_authenticate,
+ /* 0x2E */ wkh_content_disposition,/* 0x2F */ wkh_x_wap_application_id,
+ /* 0x30 */ wkh_content_uri, /* 0x31 */ wkh_initiator_uri,
+ /* 0x32 */ wkh_accept_application, /* 0x33 */ wkh_bearer_indication,
+ /* 0x34 */ wkh_push_flag, /* 0x35 */ wkh_profile,
+ /* 0x36 */ wkh_profile_diff_wbxml, /* 0x37 */ wkh_profile_warning,
+ /* 0x38 */ wkh_default, /* 0x39 */ wkh_te,
+ /* 0x3A */ wkh_trailer, /* 0x3B */ wkh_accept_charset,
+ /* 0x3C */ wkh_accept_encoding, /* 0x3D */ wkh_cache_control,
+ /* 0x3E */ wkh_content_range, /* 0x3F */ wkh_x_wap_tod,
+ /* 0x40 */ wkh_content_id, /* 0x41 */ wkh_default,
+ /* 0x42 */ wkh_default, /* 0x43 */ wkh_encoding_version,
+ /* 0x44 */ wkh_profile_warning, /* 0x45 */ wkh_content_disposition,
+ /* 0x46 */ wkh_x_wap_security, /* 0x47 */ wkh_cache_control,
+ /*******************************************************
+ *** The following headers are not (yet) registered. ***
+ *******************************************************/
+ /* 0x48 */ wkh_default, /* 0x49 */ wkh_default,
+ /* 0x4A */ wkh_default, /* 0x4B */ wkh_default,
+ /* 0x4C */ wkh_default, /* 0x4D */ wkh_default,
+ /* 0x4E */ wkh_default, /* 0x4F */ wkh_default,
+ /* 0x50 */ wkh_default, /* 0x51 */ wkh_default,
+ /* 0x52 */ wkh_default, /* 0x53 */ wkh_default,
+ /* 0x54 */ wkh_default, /* 0x55 */ wkh_default,
+ /* 0x56 */ wkh_default, /* 0x57 */ wkh_default,
+ /* 0x58 */ wkh_default, /* 0x59 */ wkh_default,
+ /* 0x5A */ wkh_default, /* 0x5B */ wkh_default,
+ /* 0x5C */ wkh_default, /* 0x5D */ wkh_default,
+ /* 0x5E */ wkh_default, /* 0x5F */ wkh_default,
+ /* 0x60 */ wkh_default, /* 0x61 */ wkh_default,
+ /* 0x62 */ wkh_default, /* 0x63 */ wkh_default,
+ /* 0x64 */ wkh_default, /* 0x65 */ wkh_default,
+ /* 0x66 */ wkh_default, /* 0x67 */ wkh_default,
+ /* 0x68 */ wkh_default, /* 0x69 */ wkh_default,
+ /* 0x6A */ wkh_default, /* 0x6B */ wkh_default,
+ /* 0x6C */ wkh_default, /* 0x6D */ wkh_default,
+ /* 0x6E */ wkh_default, /* 0x6F */ wkh_default,
+ /* 0x70 */ wkh_default, /* 0x71 */ wkh_default,
+ /* 0x72 */ wkh_default, /* 0x73 */ wkh_default,
+ /* 0x74 */ wkh_default, /* 0x75 */ wkh_default,
+ /* 0x76 */ wkh_default, /* 0x77 */ wkh_default,
+ /* 0x78 */ wkh_default, /* 0x79 */ wkh_default,
+ /* 0x7A */ wkh_default, /* 0x7B */ wkh_default,
+ /* 0x7C */ wkh_default, /* 0x7D */ wkh_default,
+ /* 0x7E */ wkh_default, /* 0x7F */ wkh_default,
};
/* Lookup table for well-known header parsing functions */
static const hdr_parse_func_ptr WellKnownOpenwaveHeader[128] = {
- /* 0x00 */ wkh_openwave_default,
- /* 0x01 */ wkh_openwave_x_up_proxy_push_accept,
- /* 0x02 */ wkh_openwave_x_up_proxy_push_seq,
- /* 0x03 */ wkh_openwave_x_up_proxy_notify,
- /* 0x04 */ wkh_openwave_x_up_proxy_operator_domain,
- /* 0x05 */ wkh_openwave_x_up_proxy_home_page,
- /* 0x06 */ wkh_openwave_x_up_devcap_has_color,
- /* 0x07 */ wkh_openwave_x_up_devcap_num_softkeys,
- /* 0x08 */ wkh_openwave_x_up_devcap_softkey_size,
- /* 0x09 */ wkh_openwave_x_up_devcap_screen_chars,
- /* 0x0A */ wkh_openwave_x_up_devcap_screen_pixels,
- /* 0x0B */ wkh_openwave_x_up_devcap_em_size,
- /* 0x0C */ wkh_openwave_x_up_devcap_screen_depth,
- /* 0x0D */ wkh_openwave_x_up_devcap_immed_alert,
- /* 0x0E */ wkh_openwave_x_up_proxy_net_ask,
- /* 0x0F */ wkh_openwave_x_up_proxy_uplink_version,
- /* 0x10 */ wkh_openwave_x_up_proxy_tod,
- /* 0x11 */ wkh_openwave_x_up_proxy_ba_enable,
- /* 0x12 */ wkh_openwave_x_up_proxy_ba_realm,
- /* 0x13 */ wkh_openwave_x_up_proxy_redirect_enable,
- /* 0x14 */ wkh_openwave_x_up_proxy_request_uri,
- /* 0x15 */ wkh_openwave_x_up_proxy_redirect_status,
- /* 0x16 */ wkh_openwave_x_up_proxy_trans_charset,
- /* 0x17 */ wkh_openwave_x_up_proxy_linger,
- /* 0x18 */ wkh_openwave_default,
- /* 0x19 */ wkh_openwave_x_up_proxy_enable_trust,
- /* 0x1A */ wkh_openwave_x_up_proxy_trust,
- /* 0x1B */ wkh_openwave_default,
- /* 0x1C */ wkh_openwave_default,
- /* 0x1D */ wkh_openwave_default,
- /* 0x1E */ wkh_openwave_default,
- /* 0x1F */ wkh_openwave_default,
- /* 0x20 */ wkh_openwave_x_up_proxy_trust,
- /* 0x21 */ wkh_openwave_x_up_proxy_bookmark,
- /* 0x22 */ wkh_openwave_x_up_devcap_gui,
- /*******************************************************
- *** The following headers are not (yet) registered. ***
- *******************************************************/
- /* 0x23 */ wkh_openwave_default,
- /* 0x24 */ wkh_openwave_default, /* 0x25 */ wkh_openwave_default,
- /* 0x26 */ wkh_openwave_default, /* 0x27 */ wkh_openwave_default,
- /* 0x28 */ wkh_openwave_default, /* 0x29 */ wkh_openwave_default,
- /* 0x2A */ wkh_openwave_default, /* 0x2B */ wkh_openwave_default,
- /* 0x2C */ wkh_openwave_default, /* 0x2D */ wkh_openwave_default,
- /* 0x2E */ wkh_openwave_default, /* 0x2F */ wkh_openwave_default,
- /* 0x30 */ wkh_openwave_default, /* 0x31 */ wkh_openwave_default,
- /* 0x32 */ wkh_openwave_default, /* 0x33 */ wkh_openwave_default,
- /* 0x34 */ wkh_openwave_default, /* 0x35 */ wkh_openwave_default,
- /* 0x36 */ wkh_openwave_default, /* 0x37 */ wkh_openwave_default,
- /* 0x38 */ wkh_openwave_default, /* 0x39 */ wkh_openwave_default,
- /* 0x3A */ wkh_openwave_default, /* 0x3B */ wkh_openwave_default,
- /* 0x3C */ wkh_openwave_default, /* 0x3D */ wkh_openwave_default,
- /* 0x3E */ wkh_openwave_default, /* 0x3F */ wkh_openwave_default,
- /* 0x40 */ wkh_openwave_default, /* 0x41 */ wkh_openwave_default,
- /* 0x42 */ wkh_openwave_default, /* 0x43 */ wkh_openwave_default,
- /* 0x44 */ wkh_openwave_default, /* 0x45 */ wkh_openwave_default,
- /* 0x46 */ wkh_openwave_default, /* 0x47 */ wkh_openwave_default,
- /* 0x48 */ wkh_openwave_default, /* 0x49 */ wkh_openwave_default,
- /* 0x4A */ wkh_openwave_default, /* 0x4B */ wkh_openwave_default,
- /* 0x4C */ wkh_openwave_default, /* 0x4D */ wkh_openwave_default,
- /* 0x4E */ wkh_openwave_default, /* 0x4F */ wkh_openwave_default,
- /* 0x50 */ wkh_openwave_default, /* 0x51 */ wkh_openwave_default,
- /* 0x52 */ wkh_openwave_default, /* 0x53 */ wkh_openwave_default,
- /* 0x54 */ wkh_openwave_default, /* 0x55 */ wkh_openwave_default,
- /* 0x56 */ wkh_openwave_default, /* 0x57 */ wkh_openwave_default,
- /* 0x58 */ wkh_openwave_default, /* 0x59 */ wkh_openwave_default,
- /* 0x5A */ wkh_openwave_default, /* 0x5B */ wkh_openwave_default,
- /* 0x5C */ wkh_openwave_default, /* 0x5D */ wkh_openwave_default,
- /* 0x5E */ wkh_openwave_default, /* 0x5F */ wkh_openwave_default,
- /* 0x60 */ wkh_openwave_default, /* 0x61 */ wkh_openwave_default,
- /* 0x62 */ wkh_openwave_default, /* 0x63 */ wkh_openwave_default,
- /* 0x64 */ wkh_openwave_default, /* 0x65 */ wkh_openwave_default,
- /* 0x66 */ wkh_openwave_default, /* 0x67 */ wkh_openwave_default,
- /* 0x68 */ wkh_openwave_default, /* 0x69 */ wkh_openwave_default,
- /* 0x6A */ wkh_openwave_default, /* 0x6B */ wkh_openwave_default,
- /* 0x6C */ wkh_openwave_default, /* 0x6D */ wkh_openwave_default,
- /* 0x6E */ wkh_openwave_default, /* 0x6F */ wkh_openwave_default,
- /* 0x70 */ wkh_openwave_default, /* 0x71 */ wkh_openwave_default,
- /* 0x72 */ wkh_openwave_default, /* 0x73 */ wkh_openwave_default,
- /* 0x74 */ wkh_openwave_default, /* 0x75 */ wkh_openwave_default,
- /* 0x76 */ wkh_openwave_default, /* 0x77 */ wkh_openwave_default,
- /* 0x78 */ wkh_openwave_default, /* 0x79 */ wkh_openwave_default,
- /* 0x7A */ wkh_openwave_default, /* 0x7B */ wkh_openwave_default,
- /* 0x7C */ wkh_openwave_default, /* 0x7D */ wkh_openwave_default,
- /* 0x7E */ wkh_openwave_default, /* 0x7F */ wkh_openwave_default
+ /* 0x00 */ wkh_openwave_default,
+ /* 0x01 */ wkh_openwave_x_up_proxy_push_accept,
+ /* 0x02 */ wkh_openwave_x_up_proxy_push_seq,
+ /* 0x03 */ wkh_openwave_x_up_proxy_notify,
+ /* 0x04 */ wkh_openwave_x_up_proxy_operator_domain,
+ /* 0x05 */ wkh_openwave_x_up_proxy_home_page,
+ /* 0x06 */ wkh_openwave_x_up_devcap_has_color,
+ /* 0x07 */ wkh_openwave_x_up_devcap_num_softkeys,
+ /* 0x08 */ wkh_openwave_x_up_devcap_softkey_size,
+ /* 0x09 */ wkh_openwave_x_up_devcap_screen_chars,
+ /* 0x0A */ wkh_openwave_x_up_devcap_screen_pixels,
+ /* 0x0B */ wkh_openwave_x_up_devcap_em_size,
+ /* 0x0C */ wkh_openwave_x_up_devcap_screen_depth,
+ /* 0x0D */ wkh_openwave_x_up_devcap_immed_alert,
+ /* 0x0E */ wkh_openwave_x_up_proxy_net_ask,
+ /* 0x0F */ wkh_openwave_x_up_proxy_uplink_version,
+ /* 0x10 */ wkh_openwave_x_up_proxy_tod,
+ /* 0x11 */ wkh_openwave_x_up_proxy_ba_enable,
+ /* 0x12 */ wkh_openwave_x_up_proxy_ba_realm,
+ /* 0x13 */ wkh_openwave_x_up_proxy_redirect_enable,
+ /* 0x14 */ wkh_openwave_x_up_proxy_request_uri,
+ /* 0x15 */ wkh_openwave_x_up_proxy_redirect_status,
+ /* 0x16 */ wkh_openwave_x_up_proxy_trans_charset,
+ /* 0x17 */ wkh_openwave_x_up_proxy_linger,
+ /* 0x18 */ wkh_openwave_default,
+ /* 0x19 */ wkh_openwave_x_up_proxy_enable_trust,
+ /* 0x1A */ wkh_openwave_x_up_proxy_trust,
+ /* 0x1B */ wkh_openwave_default,
+ /* 0x1C */ wkh_openwave_default,
+ /* 0x1D */ wkh_openwave_default,
+ /* 0x1E */ wkh_openwave_default,
+ /* 0x1F */ wkh_openwave_default,
+ /* 0x20 */ wkh_openwave_x_up_proxy_trust,
+ /* 0x21 */ wkh_openwave_x_up_proxy_bookmark,
+ /* 0x22 */ wkh_openwave_x_up_devcap_gui,
+ /*******************************************************
+ *** The following headers are not (yet) registered. ***
+ *******************************************************/
+ /* 0x23 */ wkh_openwave_default,
+ /* 0x24 */ wkh_openwave_default, /* 0x25 */ wkh_openwave_default,
+ /* 0x26 */ wkh_openwave_default, /* 0x27 */ wkh_openwave_default,
+ /* 0x28 */ wkh_openwave_default, /* 0x29 */ wkh_openwave_default,
+ /* 0x2A */ wkh_openwave_default, /* 0x2B */ wkh_openwave_default,
+ /* 0x2C */ wkh_openwave_default, /* 0x2D */ wkh_openwave_default,
+ /* 0x2E */ wkh_openwave_default, /* 0x2F */ wkh_openwave_default,
+ /* 0x30 */ wkh_openwave_default, /* 0x31 */ wkh_openwave_default,
+ /* 0x32 */ wkh_openwave_default, /* 0x33 */ wkh_openwave_default,
+ /* 0x34 */ wkh_openwave_default, /* 0x35 */ wkh_openwave_default,
+ /* 0x36 */ wkh_openwave_default, /* 0x37 */ wkh_openwave_default,
+ /* 0x38 */ wkh_openwave_default, /* 0x39 */ wkh_openwave_default,
+ /* 0x3A */ wkh_openwave_default, /* 0x3B */ wkh_openwave_default,
+ /* 0x3C */ wkh_openwave_default, /* 0x3D */ wkh_openwave_default,
+ /* 0x3E */ wkh_openwave_default, /* 0x3F */ wkh_openwave_default,
+ /* 0x40 */ wkh_openwave_default, /* 0x41 */ wkh_openwave_default,
+ /* 0x42 */ wkh_openwave_default, /* 0x43 */ wkh_openwave_default,
+ /* 0x44 */ wkh_openwave_default, /* 0x45 */ wkh_openwave_default,
+ /* 0x46 */ wkh_openwave_default, /* 0x47 */ wkh_openwave_default,
+ /* 0x48 */ wkh_openwave_default, /* 0x49 */ wkh_openwave_default,
+ /* 0x4A */ wkh_openwave_default, /* 0x4B */ wkh_openwave_default,
+ /* 0x4C */ wkh_openwave_default, /* 0x4D */ wkh_openwave_default,
+ /* 0x4E */ wkh_openwave_default, /* 0x4F */ wkh_openwave_default,
+ /* 0x50 */ wkh_openwave_default, /* 0x51 */ wkh_openwave_default,
+ /* 0x52 */ wkh_openwave_default, /* 0x53 */ wkh_openwave_default,
+ /* 0x54 */ wkh_openwave_default, /* 0x55 */ wkh_openwave_default,
+ /* 0x56 */ wkh_openwave_default, /* 0x57 */ wkh_openwave_default,
+ /* 0x58 */ wkh_openwave_default, /* 0x59 */ wkh_openwave_default,
+ /* 0x5A */ wkh_openwave_default, /* 0x5B */ wkh_openwave_default,
+ /* 0x5C */ wkh_openwave_default, /* 0x5D */ wkh_openwave_default,
+ /* 0x5E */ wkh_openwave_default, /* 0x5F */ wkh_openwave_default,
+ /* 0x60 */ wkh_openwave_default, /* 0x61 */ wkh_openwave_default,
+ /* 0x62 */ wkh_openwave_default, /* 0x63 */ wkh_openwave_default,
+ /* 0x64 */ wkh_openwave_default, /* 0x65 */ wkh_openwave_default,
+ /* 0x66 */ wkh_openwave_default, /* 0x67 */ wkh_openwave_default,
+ /* 0x68 */ wkh_openwave_default, /* 0x69 */ wkh_openwave_default,
+ /* 0x6A */ wkh_openwave_default, /* 0x6B */ wkh_openwave_default,
+ /* 0x6C */ wkh_openwave_default, /* 0x6D */ wkh_openwave_default,
+ /* 0x6E */ wkh_openwave_default, /* 0x6F */ wkh_openwave_default,
+ /* 0x70 */ wkh_openwave_default, /* 0x71 */ wkh_openwave_default,
+ /* 0x72 */ wkh_openwave_default, /* 0x73 */ wkh_openwave_default,
+ /* 0x74 */ wkh_openwave_default, /* 0x75 */ wkh_openwave_default,
+ /* 0x76 */ wkh_openwave_default, /* 0x77 */ wkh_openwave_default,
+ /* 0x78 */ wkh_openwave_default, /* 0x79 */ wkh_openwave_default,
+ /* 0x7A */ wkh_openwave_default, /* 0x7B */ wkh_openwave_default,
+ /* 0x7C */ wkh_openwave_default, /* 0x7D */ wkh_openwave_default,
+ /* 0x7E */ wkh_openwave_default, /* 0x7F */ wkh_openwave_default
};
-
-
-
/* WSP header format
* 1st byte: 0x00 : <Not allowed>
* 1st byte: 0x01 -- 0x1F: <Shorthand Header Code Page switch>
@@ -1742,111 +1737,111 @@ static const hdr_parse_func_ptr WellKnownOpenwaveHeader[128] = {
static void
add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
{
- guint8 hdr_id, val_id, codepage = 1;
- gint32 tvb_len = tvb_length(tvb);
- gint32 offset = 0, hdr_len, hdr_start;
- gint32 val_len, val_start;
- gchar *hdr_str, *val_str;
- proto_tree *wsp_headers;
- proto_item *ti, *hidden_item;
- guint8 ok;
- guint32 val = 0;
-
- if (! tree)
- return;
- if (offset >= tvb_len)
- return; /* No headers! */
-
- ti = proto_tree_add_item(tree, hf,
- tvb, offset, tvb_len, bo_little_endian);
- wsp_headers = proto_item_add_subtree(ti, ett_headers);
-
- while (offset < tvb_len) {
- hdr_start = offset;
- hdr_id = tvb_get_guint8(tvb, offset);
- if (hdr_id & 0x80) { /* Well-known header */
- hdr_len = 1;
- val_start = ++offset;
- val_id = tvb_get_guint8(tvb, val_start);
- /* Call header value dissector for given header */
- if (codepage == 1) { /* Default header code page */
- DebugLog(("add_headers(code page 0): %s\n",
- val_to_str_ext_const (hdr_id & 0x7f, &vals_field_names_ext, "Undefined")));
- offset = WellKnownHeader[hdr_id & 0x7F](wsp_headers, tvb,
- hdr_start, pinfo);
- } else { /* Openwave header code page */
- /* Here I'm delibarately assuming that Openwave is the only
- * company that defines a WSP header code page. */
- DebugLog(("add_headers(code page 0x%02x - assumed to be x-up-1): %s\n",
- codepage, val_to_str_ext_const (hdr_id & 0x7f, &vals_openwave_field_names_ext, "Undefined")));
- offset = WellKnownOpenwaveHeader[hdr_id & 0x7F](wsp_headers,
- tvb, hdr_start, pinfo);
- }
- } else if (hdr_id == 0x7F) { /* HCP shift sequence */
- codepage = tvb_get_guint8(tvb, offset+1);
- proto_tree_add_uint(wsp_headers, hf_wsp_header_shift_code,
- tvb, offset, 2, codepage);
- offset += 2;
- } else if (hdr_id >= 0x20) { /* Textual header */
- /* Header name MUST be NUL-ended string ==> tvb_get_stringz() */
- hdr_str = (gchar *)tvb_get_ephemeral_stringz(tvb, hdr_start, (gint *)&hdr_len);
- val_start = hdr_start + hdr_len;
- val_id = tvb_get_guint8(tvb, val_start);
- /* Call header value dissector for given header */
- if (val_id >= 0x20 && val_id <=0x7E) { /* OK! */
- val_str = (gchar *)tvb_get_ephemeral_stringz(tvb, val_start, (gint *)&val_len);
- offset = val_start + val_len;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset-hdr_start);
- proto_tree_add_text(wsp_headers,tvb,hdr_start,offset-hdr_start,
- "%s: %s", hdr_str, val_str);
- } else {
- /* Old-style X-WAP-TOD uses a non-textual value
- * after a textual header. */
- if (g_ascii_strcasecmp(hdr_str, "x-wap.tod") == 0) {
- get_delta_seconds_value(val, tvb, val_start, val_len, ok);
- if (ok) {
- if (val == 0) {
- ti = proto_tree_add_string (wsp_headers,
- hf_hdr_x_wap_tod,
- tvb, hdr_start, hdr_len + val_len,
- "Requesting Time Of Day");
- } else {
- val_str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE);
- ti = proto_tree_add_string (wsp_headers,
- hf_hdr_x_wap_tod,
- tvb, hdr_start, hdr_len + val_len, val_str);
- }
- proto_item_append_text(ti, " <Warning: "
- "should be encoded as a textual value>");
- } else {
- /* I prefer using X-Wap-Tod to the real hdr_str */
- proto_tree_add_string (wsp_headers, hf_hdr_x_wap_tod,
- tvb, hdr_start, hdr_len + val_len,
- InvalidValueForHeader("X-Wap-Tod"));
- }
- } else {
- proto_tree_add_text (wsp_headers, tvb, hdr_start, hdr_len,
- "<Error: Invalid value for the textual '%s' header"
- " (should be a textual value)>",
- hdr_str);
- }
- offset = tvb_len;
- }
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- hidden_item = proto_tree_add_string(wsp_headers, hf_hdr_name,
- tvb, hdr_start, offset - hdr_start, hdr_str);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- } else if (hdr_id > 0) { /* Shorthand HCP switch */
- codepage = hdr_id;
- proto_tree_add_uint (wsp_headers, hf_wsp_header_shift_code,
- tvb, offset, 1, codepage);
- offset++;
- } else {
- proto_tree_add_text (wsp_headers, tvb, hdr_start, 1,
- InvalidTextualHeader);
- offset = tvb_len;
- }
- }
+ guint8 hdr_id, val_id, codepage = 1;
+ gint32 tvb_len = tvb_length(tvb);
+ gint32 offset = 0, hdr_len, hdr_start;
+ gint32 val_len, val_start;
+ gchar *hdr_str, *val_str;
+ proto_tree *wsp_headers;
+ proto_item *ti, *hidden_item;
+ guint8 ok;
+ guint32 val = 0;
+
+ if (! tree)
+ return;
+ if (offset >= tvb_len)
+ return; /* No headers! */
+
+ ti = proto_tree_add_item(tree, hf,
+ tvb, offset, tvb_len, bo_little_endian);
+ wsp_headers = proto_item_add_subtree(ti, ett_headers);
+
+ while (offset < tvb_len) {
+ hdr_start = offset;
+ hdr_id = tvb_get_guint8(tvb, offset);
+ if (hdr_id & 0x80) { /* Well-known header */
+ hdr_len = 1;
+ val_start = ++offset;
+ val_id = tvb_get_guint8(tvb, val_start);
+ /* Call header value dissector for given header */
+ if (codepage == 1) { /* Default header code page */
+ DebugLog(("add_headers(code page 0): %s\n",
+ val_to_str_ext_const (hdr_id & 0x7f, &vals_field_names_ext, "Undefined")));
+ offset = WellKnownHeader[hdr_id & 0x7F](wsp_headers, tvb,
+ hdr_start, pinfo);
+ } else { /* Openwave header code page */
+ /* Here I'm delibarately assuming that Openwave is the only
+ * company that defines a WSP header code page. */
+ DebugLog(("add_headers(code page 0x%02x - assumed to be x-up-1): %s\n",
+ codepage, val_to_str_ext_const (hdr_id & 0x7f, &vals_openwave_field_names_ext, "Undefined")));
+ offset = WellKnownOpenwaveHeader[hdr_id & 0x7F](wsp_headers,
+ tvb, hdr_start, pinfo);
+ }
+ } else if (hdr_id == 0x7F) { /* HCP shift sequence */
+ codepage = tvb_get_guint8(tvb, offset+1);
+ proto_tree_add_uint(wsp_headers, hf_wsp_header_shift_code,
+ tvb, offset, 2, codepage);
+ offset += 2;
+ } else if (hdr_id >= 0x20) { /* Textual header */
+ /* Header name MUST be NUL-ended string ==> tvb_get_stringz() */
+ hdr_str = (gchar *)tvb_get_ephemeral_stringz(tvb, hdr_start, (gint *)&hdr_len);
+ val_start = hdr_start + hdr_len;
+ val_id = tvb_get_guint8(tvb, val_start);
+ /* Call header value dissector for given header */
+ if (val_id >= 0x20 && val_id <=0x7E) { /* OK! */
+ val_str = (gchar *)tvb_get_ephemeral_stringz(tvb, val_start, (gint *)&val_len);
+ offset = val_start + val_len;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset-hdr_start);
+ proto_tree_add_text(wsp_headers,tvb,hdr_start,offset-hdr_start,
+ "%s: %s", hdr_str, val_str);
+ } else {
+ /* Old-style X-WAP-TOD uses a non-textual value
+ * after a textual header. */
+ if (g_ascii_strcasecmp(hdr_str, "x-wap.tod") == 0) {
+ get_delta_seconds_value(val, tvb, val_start, val_len, ok);
+ if (ok) {
+ if (val == 0) {
+ ti = proto_tree_add_string (wsp_headers,
+ hf_hdr_x_wap_tod,
+ tvb, hdr_start, hdr_len + val_len,
+ "Requesting Time Of Day");
+ } else {
+ val_str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE);
+ ti = proto_tree_add_string (wsp_headers,
+ hf_hdr_x_wap_tod,
+ tvb, hdr_start, hdr_len + val_len, val_str);
+ }
+ proto_item_append_text(ti, " <Warning: "
+ "should be encoded as a textual value>");
+ } else {
+ /* I prefer using X-Wap-Tod to the real hdr_str */
+ proto_tree_add_string (wsp_headers, hf_hdr_x_wap_tod,
+ tvb, hdr_start, hdr_len + val_len,
+ InvalidValueForHeader("X-Wap-Tod"));
+ }
+ } else {
+ proto_tree_add_text (wsp_headers, tvb, hdr_start, hdr_len,
+ "<Error: Invalid value for the textual '%s' header"
+ " (should be a textual value)>",
+ hdr_str);
+ }
+ offset = tvb_len;
+ }
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ hidden_item = proto_tree_add_string(wsp_headers, hf_hdr_name,
+ tvb, hdr_start, offset - hdr_start, hdr_str);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ } else if (hdr_id > 0) { /* Shorthand HCP switch */
+ codepage = hdr_id;
+ proto_tree_add_uint (wsp_headers, hf_wsp_header_shift_code,
+ tvb, offset, 1, codepage);
+ offset++;
+ } else {
+ proto_tree_add_text (wsp_headers, tvb, hdr_start, 1,
+ InvalidTextualHeader);
+ offset = tvb_len;
+ }
+ }
}
@@ -1859,27 +1854,27 @@ add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
* static guint32
* wkh_XXX (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
* {
- * wkh_0_Declarations;
- * << add other required declarations here >>
+ * wkh_0_Declarations;
+ * << add other required declarations here >>
*
- * wkh_1_WellKnownValue;
- * << add well-known value proto item here; don't forget to set the
- * ok variable to TRUE if parsing was correct >>
- * wkh_2_TextualValue;
- * << add textual value proto item here; don't forget to set the
- * ok variable to TRUE if parsing was correct >>
- * wkh_3_ValueWithLength;
- * << add custom code for value processing and value proto item here >>
+ * wkh_1_WellKnownValue;
+ * << add well-known value proto item here; don't forget to set the
+ * ok variable to TRUE if parsing was correct >>
+ * wkh_2_TextualValue;
+ * << add textual value proto item here; don't forget to set the
+ * ok variable to TRUE if parsing was correct >>
+ * wkh_3_ValueWithLength;
+ * << add custom code for value processing and value proto item here >>
*
- * wkh_4_End(hf);
- * << This macro takes care of parse errors within the header value;
- * it requires the header field index if the header has not yet been
- * written to the protocol tree (ti == NULL). >>
+ * wkh_4_End(hf);
+ * << This macro takes care of parse errors within the header value;
+ * it requires the header field index if the header has not yet been
+ * written to the protocol tree (ti == NULL). >>
* }
*
- * NOTE: You only need to write parsing code for the successful case,
- * Errors are automatically reported through the wkh_4_End() macro
- * when ok <> TRUE.
+ * NOTE: You only need to write parsing code for the successful case,
+ * Errors are automatically reported through the wkh_4_End() macro
+ * when ok <> TRUE.
*/
/* The following code is the generic template with which the value of a
@@ -1888,93 +1883,93 @@ add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
*/
-#define wkh_0a_Declarations /* Declarations for Parsing */ \
- gboolean ok = FALSE; /* Triggers error notification code at end */ \
- proto_item *ti = NULL; /* Needed for error notification at end */ \
- proto_item *hidden_item = NULL; \
- guint32 val_start = hdr_start + 1; \
- guint8 hdr_id = tvb_get_guint8 (tvb, hdr_start) & 0x7F; \
- guint8 val_id = tvb_get_guint8 (tvb, val_start); \
- guint32 offset = val_start; /* Offset to one past this header */ \
- guint32 val_len; /* length for value with length field */ \
- guint32 val_len_len /* length of length field */
+#define wkh_0a_Declarations /* Declarations for Parsing */ \
+ gboolean ok = FALSE; /* Triggers error notification code at end */ \
+ proto_item *ti = NULL; /* Needed for error notification at end */ \
+ proto_item *hidden_item = NULL; \
+ guint32 val_start = hdr_start + 1; \
+ guint8 hdr_id = tvb_get_guint8 (tvb, hdr_start) & 0x7F; \
+ guint8 val_id = tvb_get_guint8 (tvb, val_start); \
+ guint32 offset = val_start; /* Offset to one past this header */ \
+ guint32 val_len; /* length for value with length field */ \
+ guint32 val_len_len /* length of length field */
#define wkh_0_Declarations \
- wkh_0a_Declarations; \
+ wkh_0a_Declarations; \
const gchar *val_str = NULL
-#define wkh_1_WellKnownValue /* Parse Well Known Value */ \
- hidden_item = proto_tree_add_string(tree, hf_hdr_name, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext (hdr_id, &vals_field_names_ext, \
- "<Unknown WSP header field 0x%02X>")); \
- PROTO_ITEM_SET_HIDDEN(hidden_item); \
- if (val_id & 0x80) { /* Well-known value */ \
- offset++; \
- /* Well-known value processing starts HERE \
- * \
- * BEGIN */
-
-#define wkh_2_TextualValue /* Parse Textual Value */ \
- /* END */ \
- } else if ((val_id == 0) || (val_id >= 0x20)) { /* Textual value */ \
- val_str = (gchar *)tvb_get_ephemeral_stringz (tvb, val_start, (gint *)&val_len); \
- offset = val_start + val_len; \
- /* Textual value processing starts HERE \
- * \
- * BEGIN */
-
-#define wkh_2_TextualValueInv /* Parse Textual Value */ \
- /* END */ \
- } else if ((val_id == 0) || (val_id >= 0x20)) { /* Textual value */ \
- /*val_str = (gchar *)*/tvb_get_ephemeral_stringz (tvb, val_start, (gint *)&val_len); \
- offset = val_start + val_len; \
- /* Textual value processing starts HERE \
- * \
- * BEGIN */
-
-#define wkh_3_ValueWithLength /* Parse Value With Length */ \
- /* END */ \
- } else { /* val_start points to 1st byte of length field */ \
- if (val_id == 0x1F) { /* Value Length = guintvar */ \
- val_len = tvb_get_guintvar(tvb, val_start + 1, &val_len_len); \
- val_len_len++; /* 0x1F length indicator byte */ \
- } else { /* Short length followed by Len data octets */ \
- val_len = tvb_get_guint8(tvb, offset); \
- val_len_len = 1; \
- } \
- offset += val_len_len + val_len; \
- /* Value with length processing starts HERE \
- * The value lies between val_start and offset: \
- * - Value Length: Start = val_start \
- * Length = val_len_len \
- * - Value Data : Start = val_start + val_len_len \
- * Length = val_len \
- * End = offset - 1 \
- * BEGIN */
-
-#define wkh_4_End(hf) /* End of value parsing */ \
- /* END */ \
- } \
- /* Check for errors */ \
- if (! ok) { \
- if (ti) { /* Append to protocol tree item label */ \
- proto_item_append_text(ti, \
- " <Error: Invalid header value>"); \
- } else if (hf > 0) { /* Create protocol tree item */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- proto_tree_add_string(tree, hf, \
- tvb, hdr_start, offset - hdr_start, \
- " <Error: Invalid header value>"); \
- } else { /* Create anonymous header field entry */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start, \
- "%s: <Error: Invalid header value>", \
- val_to_str_ext (hdr_id, &vals_field_names_ext, \
- "<Unknown WSP header field 0x%02X>")); \
- } \
- } \
- return offset;
+#define wkh_1_WellKnownValue /* Parse Well Known Value */ \
+ hidden_item = proto_tree_add_string(tree, hf_hdr_name, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext (hdr_id, &vals_field_names_ext, \
+ "<Unknown WSP header field 0x%02X>")); \
+ PROTO_ITEM_SET_HIDDEN(hidden_item); \
+ if (val_id & 0x80) { /* Well-known value */ \
+ offset++; \
+ /* Well-known value processing starts HERE \
+ * \
+ * BEGIN */
+
+#define wkh_2_TextualValue /* Parse Textual Value */ \
+ /* END */ \
+ } else if ((val_id == 0) || (val_id >= 0x20)) { /* Textual value */ \
+ val_str = (gchar *)tvb_get_ephemeral_stringz (tvb, val_start, (gint *)&val_len); \
+ offset = val_start + val_len; \
+ /* Textual value processing starts HERE \
+ * \
+ * BEGIN */
+
+#define wkh_2_TextualValueInv /* Parse Textual Value */ \
+ /* END */ \
+ } else if ((val_id == 0) || (val_id >= 0x20)) { /* Textual value */ \
+ /*val_str = (gchar *)*/tvb_get_ephemeral_stringz (tvb, val_start, (gint *)&val_len); \
+ offset = val_start + val_len; \
+ /* Textual value processing starts HERE \
+ * \
+ * BEGIN */
+
+#define wkh_3_ValueWithLength /* Parse Value With Length */ \
+ /* END */ \
+ } else { /* val_start points to 1st byte of length field */ \
+ if (val_id == 0x1F) { /* Value Length = guintvar */ \
+ val_len = tvb_get_guintvar(tvb, val_start + 1, &val_len_len); \
+ val_len_len++; /* 0x1F length indicator byte */ \
+ } else { /* Short length followed by Len data octets */ \
+ val_len = tvb_get_guint8(tvb, offset); \
+ val_len_len = 1; \
+ } \
+ offset += val_len_len + val_len; \
+ /* Value with length processing starts HERE \
+ * The value lies between val_start and offset: \
+ * - Value Length: Start = val_start \
+ * Length = val_len_len \
+ * - Value Data : Start = val_start + val_len_len \
+ * Length = val_len \
+ * End = offset - 1 \
+ * BEGIN */
+
+#define wkh_4_End(hf) /* End of value parsing */ \
+ /* END */ \
+ } \
+ /* Check for errors */ \
+ if (! ok) { \
+ if (ti) { /* Append to protocol tree item label */ \
+ proto_item_append_text(ti, \
+ " <Error: Invalid header value>"); \
+ } else if (hf > 0) { /* Create protocol tree item */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ proto_tree_add_string(tree, hf, \
+ tvb, hdr_start, offset - hdr_start, \
+ " <Error: Invalid header value>"); \
+ } else { /* Create anonymous header field entry */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start, \
+ "%s: <Error: Invalid header value>", \
+ val_to_str_ext (hdr_id, &vals_field_names_ext, \
+ "<Unknown WSP header field 0x%02X>")); \
+ } \
+ } \
+ return offset;
/*
@@ -1982,33 +1977,33 @@ add_headers (proto_tree *tree, tvbuff_t *tvb, int hf, packet_info *pinfo)
*/
static guint32
wkh_default(proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_)
+ guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- ok = TRUE; /* Bypass error checking as we don't parse the values! */
-
- wkh_1_WellKnownValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text (tree, tvb, hdr_start, offset - hdr_start,
- "%s: (Undecoded well-known value 0x%02x)",
- val_to_str_ext (hdr_id, &vals_field_names_ext,
- "<Unknown WSP header field 0x%02X>"), val_id & 0x7F);
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
- "%s: %s",
- val_to_str_ext (hdr_id, &vals_field_names_ext,
- "<Unknown WSP header field 0x%02X>"), val_str);
- wkh_3_ValueWithLength;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text (tree, tvb, hdr_start, offset - hdr_start,
- "%s: (Undecoded value in general form with length indicator)",
- val_to_str_ext (hdr_id, &vals_field_names_ext,
- "<Unknown WSP header field 0x%02X>"));
-
- wkh_4_End(HF_EMPTY); /* The default parser has no associated hf_index;
- additionally the error code is always bypassed */
+ wkh_0_Declarations;
+
+ ok = TRUE; /* Bypass error checking as we don't parse the values! */
+
+ wkh_1_WellKnownValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text (tree, tvb, hdr_start, offset - hdr_start,
+ "%s: (Undecoded well-known value 0x%02x)",
+ val_to_str_ext (hdr_id, &vals_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"), val_id & 0x7F);
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
+ "%s: %s",
+ val_to_str_ext (hdr_id, &vals_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"), val_str);
+ wkh_3_ValueWithLength;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text (tree, tvb, hdr_start, offset - hdr_start,
+ "%s: (Undecoded value in general form with length indicator)",
+ val_to_str_ext (hdr_id, &vals_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"));
+
+ wkh_4_End(HF_EMPTY); /* The default parser has no associated hf_index;
+ additionally the error code is always bypassed */
}
@@ -2017,80 +2012,80 @@ wkh_default(proto_tree *tree, tvbuff_t *tvb,
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint32 off, val = 0, len; \
- guint8 peek; \
- proto_tree *parameter_tree = NULL; \
- \
- wkh_1_WellKnownValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val_id & 0x7F, &vals_content_types_ext, \
- "(Unknown content type identifier 0x%X)")); \
- ok = TRUE; \
- wkh_2_TextualValue; \
- /* Sometimes with a No-Content response, a NULL content type \
- * is reported. Process this correctly! */ \
- if (*val_str) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_str); \
- } else { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- "<no content type has been specified>"); \
- } \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- off = val_start + val_len_len; \
- peek = tvb_get_guint8(tvb, off); \
- if (is_text_string(peek)) { \
- get_extension_media(val_str, tvb, off, len, ok); \
- /* As we're using val_str, it is automatically g_free()d */ \
- off += len; /* off now points to 1st byte after string */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string (tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- } else if (is_integer_value(peek)) { \
- get_integer_value(val, tvb, off, len, ok); \
- if (ok) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val, &vals_content_types_ext, \
- "(Unknown content type identifier 0x%X)")); \
- } \
- off += len; \
- } \
- /* Remember: offset == val_start + val_len + val_len_len */ \
- if (ok && (off < offset)) { /* Add parameters if any */ \
- parameter_tree = proto_item_add_subtree (ti, ett_header); \
- while (off < offset) { \
- off = parameter (parameter_tree, ti, tvb, off, offset - off); \
- } \
- } \
- \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint32 off, val = 0, len; \
+ guint8 peek; \
+ proto_tree *parameter_tree = NULL; \
+ \
+ wkh_1_WellKnownValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val_id & 0x7F, &vals_content_types_ext, \
+ "(Unknown content type identifier 0x%X)")); \
+ ok = TRUE; \
+ wkh_2_TextualValue; \
+ /* Sometimes with a No-Content response, a NULL content type \
+ * is reported. Process this correctly! */ \
+ if (*val_str) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_str); \
+ } else { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ "<no content type has been specified>"); \
+ } \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ off = val_start + val_len_len; \
+ peek = tvb_get_guint8(tvb, off); \
+ if (is_text_string(peek)) { \
+ get_extension_media(val_str, tvb, off, len, ok); \
+ /* As we're using val_str, it is automatically g_free()d */ \
+ off += len; /* off now points to 1st byte after string */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string (tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ } else if (is_integer_value(peek)) { \
+ get_integer_value(val, tvb, off, len, ok); \
+ if (ok) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val, &vals_content_types_ext, \
+ "(Unknown content type identifier 0x%X)")); \
+ } \
+ off += len; \
+ } \
+ /* Remember: offset == val_start + val_len + val_len_len */ \
+ if (ok && (off < offset)) { /* Add parameters if any */ \
+ parameter_tree = proto_item_add_subtree (ti, ett_header); \
+ while (off < offset) { \
+ off = parameter (parameter_tree, ti, tvb, off, offset - off); \
+ } \
+ } \
+ \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/*
* Accept-value =
- * Short-integer
- * | Extension-media
- * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
+ * Short-integer
+ * | Extension-media
+ * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
*/
wkh_content_type_header(accept, "Accept")
/*
* Content-type-value =
- * Short-integer
- * | Extension-media
- * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
+ * Short-integer
+ * | Extension-media
+ * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
*
* Beware: this header should not appear as such; it is dissected elsewhere
* and at the same time the content type is used for subdissectors.
@@ -2101,9 +2096,9 @@ wkh_content_type_header(content_type, "Content-Type")
/*
* Content-type-value =
- * Short-integer
- * | Extension-media
- * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
+ * Short-integer
+ * | Extension-media
+ * | ( Value-length ( Extension-media | Integer-value ) *( Parameter ) )
*
* This function adds the content type value to the protocol tree,
* and computes either the numeric or textual media type in return,
@@ -2111,107 +2106,107 @@ wkh_content_type_header(content_type, "Content-Type")
*/
guint32
add_content_type(proto_tree *tree, tvbuff_t *tvb, guint32 val_start,
- guint32 *well_known_content, const char **textual_content)
+ guint32 *well_known_content, const char **textual_content)
{
- /* Replace wkh_0_Declarations with slightly modified declarations
- * so we can still make use of the wkh_[1-4]_XXX macros! */
- guint32 hdr_start = val_start; /* No header name, only value! */
- guint8 hdr_id = FN_CONTENT_TYPE; /* Same remark */
- guint8 val_id = tvb_get_guint8 (tvb, val_start);
- guint32 offset = val_start; /* Offset to one past this header */
- guint32 val_len; /* length for value with length field */
- guint32 val_len_len; /* length of length field */
- gchar *val_str = NULL;
- guint32 off, val = 0, len;
- guint8 peek;
- gboolean ok = FALSE;
- proto_item *ti = NULL;
- proto_item *hidden_item = NULL;
- proto_tree *parameter_tree = NULL;
-
- *textual_content = NULL;
- *well_known_content = 0;
-
- DebugLog(("add_content_type() - START\n"));
-
- wkh_1_WellKnownValue;
- DebugLog(("add_content_type() - Well-known - Start\n"));
- *textual_content = val_to_str_ext(val_id & 0x7F, &vals_content_types_ext,
- "<Unknown media type identifier 0x%X>");
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_type,
- tvb, hdr_start, offset - hdr_start,
- *textual_content);
- *well_known_content = val_id & 0x7F;
- ok = TRUE;
- DebugLog(("add_content_type() - Well-known - End\n"));
- wkh_2_TextualValue;
- DebugLog(("add_content_type() - Textual - Start\n"));
- /* Sometimes with a No-Content response, a NULL content type
- * is reported. Process this correctly! */
- if (*val_str) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_type,
- tvb, hdr_start, offset - hdr_start,
- val_str);
- /* As we're using val_str, it is automatically g_free()d */
- *textual_content = g_strdup(val_str);
- *well_known_content = 0;
- } else {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_type,
- tvb, hdr_start, offset - hdr_start,
- "<no media type has been specified>");
- *textual_content = NULL;
- *well_known_content = 0;
- }
- ok = TRUE;
- DebugLog(("add_content_type() - Textual - End\n"));
- wkh_3_ValueWithLength;
- DebugLog(("add_content_type() - General form - Start\n"));
- off = val_start + val_len_len;
- peek = tvb_get_guint8(tvb, off);
- if (is_text_string(peek)) {
- DebugLog(("add_content_type() - General form - extension-media\n"));
- get_extension_media(val_str, tvb, off, len, ok);
- /* As we're using val_str, it is automatically g_free()d */
- /* ??? Not sure anymore, we're in wkh_3, not in wkh_2 ! */
- off += len; /* off now points to 1st byte after string */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string (tree, hf_hdr_content_type,
- tvb, hdr_start, offset - hdr_start, val_str);
- /* Following statement: required? */
- *textual_content = g_strdup(val_str);
- *well_known_content = 0;
- } else if (is_integer_value(peek)) {
- DebugLog(("add_content_type() - General form - integer_value\n"));
- get_integer_value(val, tvb, off, len, ok);
- if (ok) {
- *textual_content = val_to_str_ext(val, &vals_content_types_ext,
- "<Unknown media type identifier 0x%X>");
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_type,
- tvb, hdr_start, offset - hdr_start,
- *textual_content);
- *well_known_content = val;
- }
- off += len;
- } /* else ok = FALSE */
- /* Remember: offset == val_start + val_len_len + val_len */
- if (ok && (off < offset)) { /* Add parameters if any */
- DebugLog(("add_content_type() - General form - parameters\n"));
- parameter_tree = proto_item_add_subtree (ti, ett_header);
- while (off < offset) {
- DebugLog(("add_content_type() - General form - parameter start "
- "(off = %u)\n", off));
- off = parameter (parameter_tree, ti, tvb, off, offset - off);
- DebugLog(("add_content_type() - General form - parameter end "
- "(off = %u)\n", off));
- }
- }
- DebugLog(("add_content_type() - General form - End\n"));
-
- wkh_4_End(hf_hdr_content_type);
+ /* Replace wkh_0_Declarations with slightly modified declarations
+ * so we can still make use of the wkh_[1-4]_XXX macros! */
+ guint32 hdr_start = val_start; /* No header name, only value! */
+ guint8 hdr_id = FN_CONTENT_TYPE; /* Same remark */
+ guint8 val_id = tvb_get_guint8 (tvb, val_start);
+ guint32 offset = val_start; /* Offset to one past this header */
+ guint32 val_len; /* length for value with length field */
+ guint32 val_len_len; /* length of length field */
+ gchar *val_str = NULL;
+ guint32 off, val = 0, len;
+ guint8 peek;
+ gboolean ok = FALSE;
+ proto_item *ti = NULL;
+ proto_item *hidden_item = NULL;
+ proto_tree *parameter_tree = NULL;
+
+ *textual_content = NULL;
+ *well_known_content = 0;
+
+ DebugLog(("add_content_type() - START\n"));
+
+ wkh_1_WellKnownValue;
+ DebugLog(("add_content_type() - Well-known - Start\n"));
+ *textual_content = val_to_str_ext(val_id & 0x7F, &vals_content_types_ext,
+ "<Unknown media type identifier 0x%X>");
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_type,
+ tvb, hdr_start, offset - hdr_start,
+ *textual_content);
+ *well_known_content = val_id & 0x7F;
+ ok = TRUE;
+ DebugLog(("add_content_type() - Well-known - End\n"));
+ wkh_2_TextualValue;
+ DebugLog(("add_content_type() - Textual - Start\n"));
+ /* Sometimes with a No-Content response, a NULL content type
+ * is reported. Process this correctly! */
+ if (*val_str) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_type,
+ tvb, hdr_start, offset - hdr_start,
+ val_str);
+ /* As we're using val_str, it is automatically g_free()d */
+ *textual_content = g_strdup(val_str);
+ *well_known_content = 0;
+ } else {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_type,
+ tvb, hdr_start, offset - hdr_start,
+ "<no media type has been specified>");
+ *textual_content = NULL;
+ *well_known_content = 0;
+ }
+ ok = TRUE;
+ DebugLog(("add_content_type() - Textual - End\n"));
+ wkh_3_ValueWithLength;
+ DebugLog(("add_content_type() - General form - Start\n"));
+ off = val_start + val_len_len;
+ peek = tvb_get_guint8(tvb, off);
+ if (is_text_string(peek)) {
+ DebugLog(("add_content_type() - General form - extension-media\n"));
+ get_extension_media(val_str, tvb, off, len, ok);
+ /* As we're using val_str, it is automatically g_free()d */
+ /* ??? Not sure anymore, we're in wkh_3, not in wkh_2 ! */
+ off += len; /* off now points to 1st byte after string */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string (tree, hf_hdr_content_type,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ /* Following statement: required? */
+ *textual_content = g_strdup(val_str);
+ *well_known_content = 0;
+ } else if (is_integer_value(peek)) {
+ DebugLog(("add_content_type() - General form - integer_value\n"));
+ get_integer_value(val, tvb, off, len, ok);
+ if (ok) {
+ *textual_content = val_to_str_ext(val, &vals_content_types_ext,
+ "<Unknown media type identifier 0x%X>");
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_type,
+ tvb, hdr_start, offset - hdr_start,
+ *textual_content);
+ *well_known_content = val;
+ }
+ off += len;
+ } /* else ok = FALSE */
+ /* Remember: offset == val_start + val_len_len + val_len */
+ if (ok && (off < offset)) { /* Add parameters if any */
+ DebugLog(("add_content_type() - General form - parameters\n"));
+ parameter_tree = proto_item_add_subtree (ti, ett_header);
+ while (off < offset) {
+ DebugLog(("add_content_type() - General form - parameter start "
+ "(off = %u)\n", off));
+ off = parameter (parameter_tree, ti, tvb, off, offset - off);
+ DebugLog(("add_content_type() - General form - parameter end "
+ "(off = %u)\n", off));
+ }
+ }
+ DebugLog(("add_content_type() - General form - End\n"));
+
+ wkh_4_End(hf_hdr_content_type);
}
@@ -2222,69 +2217,69 @@ add_content_type(proto_tree *tree, tvbuff_t *tvb, guint32 val_start,
static guint32 \
wkh_ ## underscored (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint32 off, val = 0, len; \
- guint8 peek; \
- proto_tree *parameter_tree = NULL; \
- \
- wkh_1_WellKnownValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
- "<Unknown " valueName " identifier 0x%X>")); \
- ok = TRUE; \
- wkh_2_TextualValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- off = val_start + val_len_len; \
- peek = tvb_get_guint8(tvb, off); \
- if (is_text_string(peek)) { \
- get_token_text(val_str, tvb, off, len, ok); \
- /* As we're using val_str, it is automatically g_free()d */ \
- off += len; /* off now points to 1st byte after string */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string (tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- } else if (is_integer_value(peek)) { \
- get_integer_value(val, tvb, off, len, ok); \
- if (ok) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val, valueStringExtAddr, \
- "<Unknown " valueName " identifier 0x%X>")); \
- } \
- off += len; \
- } /* else ok = FALSE */ \
- /* Remember: offset == val_start + val_len */ \
- if (ok && (off < offset)) { /* Add Q-value if available */ \
- parameter_tree = proto_item_add_subtree (ti, ett_header); \
- off = parameter_value_q (parameter_tree, ti, tvb, off); \
- } \
- \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint32 off, val = 0, len; \
+ guint8 peek; \
+ proto_tree *parameter_tree = NULL; \
+ \
+ wkh_1_WellKnownValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
+ "<Unknown " valueName " identifier 0x%X>")); \
+ ok = TRUE; \
+ wkh_2_TextualValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ off = val_start + val_len_len; \
+ peek = tvb_get_guint8(tvb, off); \
+ if (is_text_string(peek)) { \
+ get_token_text(val_str, tvb, off, len, ok); \
+ /* As we're using val_str, it is automatically g_free()d */ \
+ off += len; /* off now points to 1st byte after string */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string (tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ } else if (is_integer_value(peek)) { \
+ get_integer_value(val, tvb, off, len, ok); \
+ if (ok) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val, valueStringExtAddr, \
+ "<Unknown " valueName " identifier 0x%X>")); \
+ } \
+ off += len; \
+ } /* else ok = FALSE */ \
+ /* Remember: offset == val_start + val_len */ \
+ if (ok && (off < offset)) { /* Add Q-value if available */ \
+ parameter_tree = proto_item_add_subtree (ti, ett_header); \
+ off = parameter_value_q (parameter_tree, ti, tvb, off); \
+ } \
+ \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/*
* Accept-charset-value =
- * Short-integer
- * | Extension-media
- * | ( Value-length ( Token-text | Integer-value ) [ Q-value ] )
+ * Short-integer
+ * | Extension-media
+ * | ( Value-length ( Token-text | Integer-value ) [ Q-value ] )
*/
wkh_accept_x_q_header(accept_charset, "Accept-Charset",
- &vals_character_sets_ext, "character set")
+ &vals_character_sets_ext, "character set")
/*
* Accept-language-value =
- * Short-integer
- * | Extension-media
- * | ( Value-length ( Text-string | Integer-value ) [ Q-value ] )
+ * Short-integer
+ * | Extension-media
+ * | ( Value-length ( Text-string | Integer-value ) [ Q-value ] )
*/
wkh_accept_x_q_header(accept_language, "Accept-Language",
- &vals_languages_ext, "language")
+ &vals_languages_ext, "language")
/*
@@ -2293,64 +2288,64 @@ wkh_accept_x_q_header(accept_language, "Accept-Language",
static guint32
wkh_push_flag(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0a_Declarations;
- proto_tree *subtree = NULL;
-
- wkh_1_WellKnownValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_push_flag,
- tvb, hdr_start, offset - hdr_start, "");
- subtree = proto_item_add_subtree(ti, ett_header);
- proto_tree_add_uint(subtree, hf_hdr_push_flag_auth,
- tvb, val_start, 1, val_id);
- proto_tree_add_uint(subtree, hf_hdr_push_flag_trust,
- tvb, val_start, 1, val_id);
- proto_tree_add_uint(subtree, hf_hdr_push_flag_last,
- tvb, val_start, 1, val_id);
- if (val_id & 0x01)
- proto_item_append_string(ti, " (Initiator URI authenticated)");
- if (val_id & 0x02)
- proto_item_append_string(ti, " (Content trusted)");
- if (val_id & 0x04)
- proto_item_append_string(ti, " (Last push message)");
- if (val_id & 0x78)
- proto_item_append_text(ti, " <Warning: Reserved flags set>");
- else
- ok = TRUE;
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_push_flag);
+ wkh_0a_Declarations;
+ proto_tree *subtree = NULL;
+
+ wkh_1_WellKnownValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_push_flag,
+ tvb, hdr_start, offset - hdr_start, "");
+ subtree = proto_item_add_subtree(ti, ett_header);
+ proto_tree_add_uint(subtree, hf_hdr_push_flag_auth,
+ tvb, val_start, 1, val_id);
+ proto_tree_add_uint(subtree, hf_hdr_push_flag_trust,
+ tvb, val_start, 1, val_id);
+ proto_tree_add_uint(subtree, hf_hdr_push_flag_last,
+ tvb, val_start, 1, val_id);
+ if (val_id & 0x01)
+ proto_item_append_string(ti, " (Initiator URI authenticated)");
+ if (val_id & 0x02)
+ proto_item_append_string(ti, " (Content trusted)");
+ if (val_id & 0x04)
+ proto_item_append_string(ti, " (Last push message)");
+ if (val_id & 0x78)
+ proto_item_append_text(ti, " <Warning: Reserved flags set>");
+ else
+ ok = TRUE;
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_push_flag);
}
/*
* Profile-Diff (with WBXML): Profile-diff-value =
- * Value-length <WBXML-Content>
+ * Value-length <WBXML-Content>
*/
static guint32 wkh_profile_diff_wbxml (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo)
+ guint32 hdr_start, packet_info *pinfo)
{
- wkh_0a_Declarations;
- tvbuff_t *tmp_tvb;
- proto_tree *subtree;
-
- ok = TRUE; /* Bypass error checking as we don't parse the values! */
-
- wkh_1_WellKnownValue;
- /* Invalid */
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_profile_diff, tvb, hdr_start, offset - hdr_start,
- "(Profile-Diff value as WBXML)");
- subtree = proto_item_add_subtree(ti, ett_header);
- tmp_tvb = tvb_new_subset(tvb, val_start + val_len_len, val_len, val_len); /* TODO: fix 2nd length */
- call_dissector(wbxml_uaprof_handle, tmp_tvb, pinfo, subtree);
- ok = TRUE;
- wkh_4_End(hf_hdr_profile_diff);
+ wkh_0a_Declarations;
+ tvbuff_t *tmp_tvb;
+ proto_tree *subtree;
+
+ ok = TRUE; /* Bypass error checking as we don't parse the values! */
+
+ wkh_1_WellKnownValue;
+ /* Invalid */
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_profile_diff, tvb, hdr_start, offset - hdr_start,
+ "(Profile-Diff value as WBXML)");
+ subtree = proto_item_add_subtree(ti, ett_header);
+ tmp_tvb = tvb_new_subset(tvb, val_start + val_len_len, val_len, val_len); /* TODO: fix 2nd length */
+ call_dissector(wbxml_uaprof_handle, tmp_tvb, pinfo, subtree);
+ ok = TRUE;
+ wkh_4_End(hf_hdr_profile_diff);
}
@@ -2361,23 +2356,23 @@ static guint32 wkh_profile_diff_wbxml (proto_tree *tree, tvbuff_t *tvb,
static guint32
wkh_allow(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *apinfo _U_)
{
- wkh_0a_Declarations;
-
- wkh_1_WellKnownValue;
- val_id &= 0x7F;
- if (val_id >= 0x40) { /* Valid WSP method */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_allow,
- tvb, hdr_start, offset - hdr_start,
- val_to_str_ext(val_id & 0x7F, &wsp_vals_pdu_type_ext,
- "<Unknown WSP method 0x%02X>"));
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_allow);
+ wkh_0a_Declarations;
+
+ wkh_1_WellKnownValue;
+ val_id &= 0x7F;
+ if (val_id >= 0x40) { /* Valid WSP method */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_allow,
+ tvb, hdr_start, offset - hdr_start,
+ val_to_str_ext(val_id & 0x7F, &wsp_vals_pdu_type_ext,
+ "<Unknown WSP method 0x%02X>"));
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_allow);
}
@@ -2388,26 +2383,26 @@ wkh_allow(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *apinf
static guint32
wkh_public(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *apinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- val_id &= 0x7F;
- if (val_id >= 0x40) { /* Valid WSP method */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_public,
- tvb, hdr_start, offset - hdr_start,
- val_to_str_ext(val_id & 0x7F, &wsp_vals_pdu_type_ext,
- "<Unknown WSP method 0x%02X>"));
- ok = TRUE;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_public,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_public);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ val_id &= 0x7F;
+ if (val_id >= 0x40) { /* Valid WSP method */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_public,
+ tvb, hdr_start, offset - hdr_start,
+ val_to_str_ext(val_id & 0x7F, &wsp_vals_pdu_type_ext,
+ "<Unknown WSP method 0x%02X>"));
+ ok = TRUE;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_public,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_public);
}
@@ -2418,24 +2413,24 @@ wkh_public(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *apin
static guint32
wkh_vary(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_vary,
- tvb, hdr_start, offset - hdr_start,
- val_to_str_ext(val_id & 0x7F, &vals_field_names_ext,
- "<Unknown WSP header field 0x%02X>"));
- ok = TRUE;
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_vary,
- tvb, hdr_start, offset - hdr_start,
- val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_vary);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_vary,
+ tvb, hdr_start, offset - hdr_start,
+ val_to_str_ext(val_id & 0x7F, &vals_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"));
+ ok = TRUE;
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_vary,
+ tvb, hdr_start, offset - hdr_start,
+ val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_vary);
}
@@ -2445,20 +2440,20 @@ wkh_vary(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo
static guint32
wkh_x_wap_security(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0a_Declarations;
-
- wkh_1_WellKnownValue;
- if (val_id == 0x80) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_x_wap_security,
- tvb, hdr_start, offset - hdr_start, "close-subordinate");
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_x_wap_security);
+ wkh_0a_Declarations;
+
+ wkh_1_WellKnownValue;
+ if (val_id == 0x80) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_x_wap_security,
+ tvb, hdr_start, offset - hdr_start, "close-subordinate");
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_x_wap_security);
}
@@ -2468,23 +2463,23 @@ wkh_x_wap_security(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_in
static guint32
wkh_connection(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *apinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- if (val_id == 0x80) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_connection,
- tvb, hdr_start, offset - hdr_start, "close");
- ok = TRUE;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_connection,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_connection);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ if (val_id == 0x80) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_connection,
+ tvb, hdr_start, offset - hdr_start, "close");
+ ok = TRUE;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_connection,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_connection);
}
@@ -2494,23 +2489,23 @@ wkh_connection(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *
static guint32
wkh_transfer_encoding(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- if (val_id == 0x80) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_transfer_encoding,
- tvb, hdr_start, offset - hdr_start, "chunked");
- ok = TRUE;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_transfer_encoding,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_transfer_encoding);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ if (val_id == 0x80) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_transfer_encoding,
+ tvb, hdr_start, offset - hdr_start, "chunked");
+ ok = TRUE;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_transfer_encoding,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_transfer_encoding);
}
@@ -2520,31 +2515,31 @@ wkh_transfer_encoding(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet
static guint32
wkh_accept_ranges(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- switch (val_id) {
- case 0x80: /* none */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
- tvb, hdr_start, offset - hdr_start, "none");
- ok = TRUE;
- break;
- case 0x81: /* bytes */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
- tvb, hdr_start, offset - hdr_start, "bytes");
- ok = TRUE;
- break;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_accept_ranges);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ switch (val_id) {
+ case 0x80: /* none */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
+ tvb, hdr_start, offset - hdr_start, "none");
+ ok = TRUE;
+ break;
+ case 0x81: /* bytes */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
+ tvb, hdr_start, offset - hdr_start, "bytes");
+ ok = TRUE;
+ break;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_ranges,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_accept_ranges);
}
@@ -2554,204 +2549,204 @@ wkh_accept_ranges(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_inf
static guint32
wkh_content_encoding(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- wkh_1_WellKnownValue;
- switch (val_id) {
- case 0x80: /* gzip */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
- tvb, hdr_start, offset - hdr_start, "gzip");
- ok = TRUE;
- break;
- case 0x81: /* compress */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
- tvb, hdr_start, offset - hdr_start, "compress");
- ok = TRUE;
- break;
- case 0x82: /* deflate */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
- tvb, hdr_start, offset - hdr_start, "deflate");
- ok = TRUE;
- break;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* Invalid */
- wkh_4_End(hf_hdr_content_encoding);
+ wkh_0_Declarations;
+
+ wkh_1_WellKnownValue;
+ switch (val_id) {
+ case 0x80: /* gzip */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
+ tvb, hdr_start, offset - hdr_start, "gzip");
+ ok = TRUE;
+ break;
+ case 0x81: /* compress */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
+ tvb, hdr_start, offset - hdr_start, "compress");
+ ok = TRUE;
+ break;
+ case 0x82: /* deflate */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
+ tvb, hdr_start, offset - hdr_start, "deflate");
+ ok = TRUE;
+ break;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_encoding,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* Invalid */
+ wkh_4_End(hf_hdr_content_encoding);
}
/*
* Accept-encoding-value =
- * Short-integer
- * | Token-text
- * | ( Value-length ( Short-integer | Text-string ) [ Q-value ] )
+ * Short-integer
+ * | Token-text
+ * | ( Value-length ( Short-integer | Text-string ) [ Q-value ] )
*/
static guint32
wkh_accept_encoding(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 len, off;
- guint8 peek;
- gchar *str;
- proto_tree *parameter_tree = NULL;
-
- wkh_1_WellKnownValue;
- switch (val_id) {
- case 0x80: /* gzip */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "gzip");
- ok = TRUE;
- break;
- case 0x81: /* compress */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "compress");
- ok = TRUE;
- break;
- case 0x82: /* deflate */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "deflate");
- ok = TRUE;
- break;
- case 0x83: /* * */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "*");
- ok = TRUE;
- break;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- peek = tvb_get_guint8(tvb, off);
- if (is_short_integer(peek)) {
- switch (peek) {
- case 0x80: /* gzip */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "gzip");
- ok = TRUE;
- break;
- case 0x81: /* compress */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "compress");
- ok = TRUE;
- break;
- case 0x82: /* deflate */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "deflate");
- ok = TRUE;
- break;
- case 0x83: /* any */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, "*");
- ok = TRUE;
- break;
- }
- off++;
- } else {
- get_token_text(str, tvb, off, len, ok);
- if (ok) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
- tvb, hdr_start, offset - hdr_start, str);
- g_free(str);
- }
- off += len;
- }
- if (ok) {
- /* Remember: offset == val_start + val_len_len + val_len */
- if (off < offset) { /* Add Q-value if available */
- parameter_tree = proto_item_add_subtree(ti, ett_header);
- off = parameter_value_q(parameter_tree, ti, tvb, off);
- }
- }
- wkh_4_End(hf_hdr_accept_encoding);
+ wkh_0_Declarations;
+ guint32 len, off;
+ guint8 peek;
+ gchar *str;
+ proto_tree *parameter_tree = NULL;
+
+ wkh_1_WellKnownValue;
+ switch (val_id) {
+ case 0x80: /* gzip */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "gzip");
+ ok = TRUE;
+ break;
+ case 0x81: /* compress */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "compress");
+ ok = TRUE;
+ break;
+ case 0x82: /* deflate */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "deflate");
+ ok = TRUE;
+ break;
+ case 0x83: /* * */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "*");
+ ok = TRUE;
+ break;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ peek = tvb_get_guint8(tvb, off);
+ if (is_short_integer(peek)) {
+ switch (peek) {
+ case 0x80: /* gzip */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "gzip");
+ ok = TRUE;
+ break;
+ case 0x81: /* compress */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "compress");
+ ok = TRUE;
+ break;
+ case 0x82: /* deflate */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "deflate");
+ ok = TRUE;
+ break;
+ case 0x83: /* any */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, "*");
+ ok = TRUE;
+ break;
+ }
+ off++;
+ } else {
+ get_token_text(str, tvb, off, len, ok);
+ if (ok) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_accept_encoding,
+ tvb, hdr_start, offset - hdr_start, str);
+ g_free(str);
+ }
+ off += len;
+ }
+ if (ok) {
+ /* Remember: offset == val_start + val_len_len + val_len */
+ if (off < offset) { /* Add Q-value if available */
+ parameter_tree = proto_item_add_subtree(ti, ett_header);
+ off = parameter_value_q(parameter_tree, ti, tvb, off);
+ }
+ }
+ wkh_4_End(hf_hdr_accept_encoding);
}
/*
* Content-disposition-value = Value-length ( Disposition ) *( Parameter )
- * Disposition = Form-data | Attachment | Inline | Token-text
- * Form-data = 0x80
- * Attachment = 0x81
- * Inline = 0x82
+ * Disposition = Form-data | Attachment | Inline | Token-text
+ * Form-data = 0x80
+ * Attachment = 0x81
+ * Inline = 0x82
* We handle this as:
- * Value-length ( Short-integer | Text-string ) *( Parameter )
+ * Value-length ( Short-integer | Text-string ) *( Parameter )
*/
static guint32
wkh_content_disposition(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0a_Declarations;
- guint32 len, off;
- guint8 peek;
- gchar *str;
- proto_tree *parameter_tree = NULL;
-
- wkh_1_WellKnownValue;
- /* Invalid */
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- peek = tvb_get_guint8(tvb, off);
- if (is_short_integer(peek)) {
- switch (peek) {
- case 0x80: /* form-data */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
- tvb, hdr_start, offset - hdr_start, "form-data");
- ok = TRUE;
- break;
- case 0x81: /* attachment */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
- tvb, hdr_start, offset - hdr_start, "attachment");
- ok = TRUE;
- break;
- case 0x82: /* inline */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
- tvb, hdr_start, offset - hdr_start, "inline");
- ok = TRUE;
- break;
- }
- off++;
- } else {
- get_token_text(str, tvb, off, len, ok);
- if (ok) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
- tvb, hdr_start, offset - hdr_start, str);
- g_free(str);
- }
- off += len;
- }
- if ((ok) && (off < offset)) {
- /* Remember: offset == val_start + val_len_len + val_len */
- parameter_tree = proto_item_add_subtree(ti, ett_header);
- while (off < offset) { /* Add parameters if available */
- off = parameter(parameter_tree, ti, tvb, off, offset - off);
- }
- }
- wkh_4_End(hf_hdr_content_disposition);
+ wkh_0a_Declarations;
+ guint32 len, off;
+ guint8 peek;
+ gchar *str;
+ proto_tree *parameter_tree = NULL;
+
+ wkh_1_WellKnownValue;
+ /* Invalid */
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ peek = tvb_get_guint8(tvb, off);
+ if (is_short_integer(peek)) {
+ switch (peek) {
+ case 0x80: /* form-data */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
+ tvb, hdr_start, offset - hdr_start, "form-data");
+ ok = TRUE;
+ break;
+ case 0x81: /* attachment */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
+ tvb, hdr_start, offset - hdr_start, "attachment");
+ ok = TRUE;
+ break;
+ case 0x82: /* inline */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
+ tvb, hdr_start, offset - hdr_start, "inline");
+ ok = TRUE;
+ break;
+ }
+ off++;
+ } else {
+ get_token_text(str, tvb, off, len, ok);
+ if (ok) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_disposition,
+ tvb, hdr_start, offset - hdr_start, str);
+ g_free(str);
+ }
+ off += len;
+ }
+ if ((ok) && (off < offset)) {
+ /* Remember: offset == val_start + val_len_len + val_len */
+ parameter_tree = proto_item_add_subtree(ti, ett_header);
+ while (off < offset) { /* Add parameters if available */
+ off = parameter(parameter_tree, ti, tvb, off, offset - off);
+ }
+ }
+ wkh_4_End(hf_hdr_content_disposition);
}
@@ -2763,18 +2758,18 @@ wkh_content_disposition(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, pack
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- /* Invalid */ \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ /* Invalid */ \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/* Text-only headers: */
@@ -2802,34 +2797,34 @@ wkh_text_header(profile, "Profile")
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- gchar *str; \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValue; \
- if (is_quoted_string(val_str[0])) { \
- if (is_quoted_string(val_str[val_len-2])) { \
- /* Trailing quote - issue a warning */ \
- str = g_strdup_printf("%s" TrailingQuoteWarning, val_str); \
- } else { /* OK (no trailing quote) */ \
- str = g_strdup_printf("%s\"", val_str); \
- } \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- g_free(str); \
- } else { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- proto_item_append_text(ti, \
- " <Warning: should be encoded as a Quoted-string>"); \
- } \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- /* Invalid */ \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ gchar *str; \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValue; \
+ if (is_quoted_string(val_str[0])) { \
+ if (is_quoted_string(val_str[val_len-2])) { \
+ /* Trailing quote - issue a warning */ \
+ str = g_strdup_printf("%s" TrailingQuoteWarning, val_str); \
+ } else { /* OK (no trailing quote) */ \
+ str = g_strdup_printf("%s\"", val_str); \
+ } \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ g_free(str); \
+ } else { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ proto_item_append_text(ti, \
+ " <Warning: should be encoded as a Quoted-string>"); \
+ } \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ /* Invalid */ \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
wkh_quoted_string_header(content_id, "Content-ID")
@@ -2843,30 +2838,30 @@ wkh_quoted_string_header(content_id, "Content-ID")
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint32 val = 0, off = val_start, len; \
- gchar *str; /* may not be freed! */ \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_date_value(val, tvb, off, len, ok); \
- if (ok) { \
- str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- /* BEHOLD: do NOT try to free str, as \
- * abs_time_secs_to_str() returns ep_allocated data */ \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ gchar *str; /* may not be freed! */ \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_date_value(val, tvb, off, len, ok); \
+ if (ok) { \
+ str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/* If-Range */
@@ -2881,27 +2876,27 @@ wkh_text_or_date_value_header(if_range,"If-Range")
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0a_Declarations; \
- guint32 val = 0, off = val_start, len; \
- gchar *str; /* may not be freed! */ \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_date_value(val, tvb, off, len, ok); \
- if (ok) { \
- str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- /* BEHOLD: do NOT try to free str, as \
- * abs_time_secs_to_str() returns ep_allocated data */ \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0a_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ gchar *str; /* may not be freed! */ \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_date_value(val, tvb, off, len, ok); \
+ if (ok) { \
+ str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/* Date-value only headers: */
@@ -2917,43 +2912,43 @@ wkh_date_value_header(last_modified, "Last-Modified")
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0a_Declarations; \
- guint32 val = 0, off = val_start, len; \
- gchar *str; /* may not be freed! */ \
- \
- wkh_1_WellKnownValue; \
- if (val_id == 0x80) { /* Openwave TOD header uses this format */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- "Requesting Time Of Day"); \
- proto_item_append_text(ti, \
- " <Warning: should be encoded as long-integer>"); \
- ok = TRUE; \
- } \
- /* It seems VERY unlikely that we'll see date values within the first \
- * 127 seconds of the UNIX 1-1-1970 00:00:00 start of the date clocks \
- * so I assume such a value is a genuine error */ \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_date_value(val, tvb, off, len, ok); \
- if (ok) { \
- if (val == 0) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- "Requesting Time Of Day"); \
- } else { \
- str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- } \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0a_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ gchar *str; /* may not be freed! */ \
+ \
+ wkh_1_WellKnownValue; \
+ if (val_id == 0x80) { /* Openwave TOD header uses this format */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ "Requesting Time Of Day"); \
+ proto_item_append_text(ti, \
+ " <Warning: should be encoded as long-integer>"); \
+ ok = TRUE; \
+ } \
+ /* It seems VERY unlikely that we'll see date values within the first \
+ * 127 seconds of the UNIX 1-1-1970 00:00:00 start of the date clocks \
+ * so I assume such a value is a genuine error */ \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_date_value(val, tvb, off, len, ok); \
+ if (ok) { \
+ if (val == 0) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ "Requesting Time Of Day"); \
+ } else { \
+ str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ } \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
wkh_tod_value_header(x_wap_tod, "X-Wap-Tod")
@@ -2965,31 +2960,31 @@ wkh_tod_value_header(x_wap_tod, "X-Wap-Tod")
static guint32
wkh_age(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 val = 0, off = val_start, len;
-
- wkh_1_WellKnownValue;
- val = val_id & 0x7F;
- val_str = g_strdup_printf("%u second%s", val, plurality(val, "", "s"));
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_age,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- ok = TRUE;
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- if (val_id <= 4) { /* Length field already parsed by macro! */
- get_long_integer(val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("%u second%s", val, plurality(val, "", "s"));
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_age,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- }
- }
- wkh_4_End(hf_hdr_age);
+ wkh_0_Declarations;
+ guint32 val = 0, off = val_start, len;
+
+ wkh_1_WellKnownValue;
+ val = val_id & 0x7F;
+ val_str = g_strdup_printf("%u second%s", val, plurality(val, "", "s"));
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_age,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ ok = TRUE;
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ if (val_id <= 4) { /* Length field already parsed by macro! */
+ get_long_integer(val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("%u second%s", val, plurality(val, "", "s"));
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_age,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ }
+ }
+ wkh_4_End(hf_hdr_age);
}
@@ -3000,49 +2995,49 @@ wkh_age(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint32 val = 0, off = val_start, len; \
- \
- wkh_1_WellKnownValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
- "(Unknown " valueName " identifier 0x%X)")); \
- ok = TRUE; \
- wkh_2_TextualValue; \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_long_integer(val, tvb, off, len, ok); \
- if (ok) { \
- val = val; /* hack to prevent 'set but not used' gcc warning */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
- "(Unknown " valueName " identifier 0x%X)")); \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ \
+ wkh_1_WellKnownValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
+ "(Unknown " valueName " identifier 0x%X)")); \
+ ok = TRUE; \
+ wkh_2_TextualValue; \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_long_integer(val, tvb, off, len, ok); \
+ if (ok) { \
+ val = val; /* hack to prevent 'set but not used' gcc warning */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext(val_id & 0x7F, valueStringExtAddr, \
+ "(Unknown " valueName " identifier 0x%X)")); \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/*
* Wap-application-value: Uri-value | Integer-value
*/
wkh_integer_lookup_or_text_value(x_wap_application_id, "X-Wap-Application-Id",
- &vals_wap_application_ids_ext, "WAP application")
+ &vals_wap_application_ids_ext, "WAP application")
wkh_integer_lookup_or_text_value(accept_application, "Accept-Application",
- &vals_wap_application_ids_ext, "WAP application")
+ &vals_wap_application_ids_ext, "WAP application")
wkh_integer_lookup_or_text_value(content_language, "Content-Language",
- &vals_languages_ext, "language")
+ &vals_languages_ext, "language")
/* NOTE - Although the WSP spec says this is an integer-value, the WSP headers
* are encoded as a 7-bit entity! */
wkh_integer_lookup_or_text_value(trailer, "Trailer",
- &vals_field_names_ext, "well-known-header")
+ &vals_field_names_ext, "well-known-header")
/*
@@ -3056,72 +3051,72 @@ wkh_integer_lookup_or_text_value(trailer, "Trailer",
#define wkh_challenge_value_header(underscored,Text) \
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, \
- guint32 hdr_start, packet_info *pinfo _U_) \
+ guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint8 peek; \
- guint32 off, len; \
- proto_tree *subtree; \
- gchar *str; \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- off = val_start + val_len_len; \
- peek = tvb_get_guint8(tvb, off); \
- if (peek == 0x80) { /* Basic */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, "basic"); \
- subtree = proto_item_add_subtree(ti, ett_header); \
- proto_tree_add_string(subtree, hf_hdr_ ## underscored ## _scheme, \
- tvb, off, 1, "basic"); \
- off++; \
- /* Realm: text-string */ \
- get_text_string(str,tvb,off,len,ok); \
- if (ok) { \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _realm, \
- tvb, off, len, str); \
- val_str = g_strdup_printf("; realm=%s", str); \
- proto_item_append_string(ti, val_str); \
- g_free( (gpointer) val_str); \
- g_free(str); \
- off += len; \
- } \
- } else { /* Authentication-scheme: token-text */ \
- get_token_text(str, tvb, off, len, ok); \
- if (ok) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, off - hdr_start, str); \
- subtree = proto_item_add_subtree(ti, ett_header); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _scheme, \
- tvb, hdr_start, off - hdr_start, str); \
- g_free(str); \
- off += len; \
- /* Realm: text-string */ \
- get_text_string(str,tvb,off,len,ok); \
- if (ok) { \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _realm, \
- tvb, off, len, str); \
- val_str = g_strdup_printf("; realm=%s", str); \
- proto_item_append_string(ti, val_str); \
- g_free( (gpointer) val_str); \
- g_free(str); \
- off += len; \
- /* Auth-params: parameter - TODO */ \
- while (off < offset) /* Parse parameters */ \
- off = parameter(subtree, ti, tvb, off, offset - off); \
- } \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint8 peek; \
+ guint32 off, len; \
+ proto_tree *subtree; \
+ gchar *str; \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ off = val_start + val_len_len; \
+ peek = tvb_get_guint8(tvb, off); \
+ if (peek == 0x80) { /* Basic */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, "basic"); \
+ subtree = proto_item_add_subtree(ti, ett_header); \
+ proto_tree_add_string(subtree, hf_hdr_ ## underscored ## _scheme, \
+ tvb, off, 1, "basic"); \
+ off++; \
+ /* Realm: text-string */ \
+ get_text_string(str,tvb,off,len,ok); \
+ if (ok) { \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _realm, \
+ tvb, off, len, str); \
+ val_str = g_strdup_printf("; realm=%s", str); \
+ proto_item_append_string(ti, val_str); \
+ g_free( (gpointer) val_str); \
+ g_free(str); \
+ off += len; \
+ } \
+ } else { /* Authentication-scheme: token-text */ \
+ get_token_text(str, tvb, off, len, ok); \
+ if (ok) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, off - hdr_start, str); \
+ subtree = proto_item_add_subtree(ti, ett_header); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _scheme, \
+ tvb, hdr_start, off - hdr_start, str); \
+ g_free(str); \
+ off += len; \
+ /* Realm: text-string */ \
+ get_text_string(str,tvb,off,len,ok); \
+ if (ok) { \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _realm, \
+ tvb, off, len, str); \
+ val_str = g_strdup_printf("; realm=%s", str); \
+ proto_item_append_string(ti, val_str); \
+ g_free( (gpointer) val_str); \
+ g_free(str); \
+ off += len; \
+ /* Auth-params: parameter - TODO */ \
+ while (off < offset) /* Parse parameters */ \
+ off = parameter(subtree, ti, tvb, off, offset - off); \
+ } \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/* Challenge-value only headers: */
@@ -3140,71 +3135,71 @@ wkh_challenge_value_header(proxy_authenticate, "Proxy-Authenticate")
#define wkh_credentials_value_header(underscored,Text) \
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, \
- guint32 hdr_start, packet_info *pinfo _U_) \
+ guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint8 peek; \
- guint32 off, len; \
- proto_tree *subtree; \
- gchar *str; \
- \
- wkh_1_WellKnownValue; \
- /* Invalid */ \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- off = val_start + val_len_len; \
- peek = tvb_get_guint8(tvb, off); \
- if (peek == 0x80) { /* Basic */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, "basic"); \
- subtree = proto_item_add_subtree(ti, ett_header); \
- proto_tree_add_string(subtree, hf_hdr_ ## underscored ## _scheme, \
- tvb, off, 1, "basic"); \
- off++; \
- /* User-id: text-string */ \
- get_text_string(str,tvb,off,len,ok); \
- if (ok) { \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _user_id, \
- tvb, off, len, str); \
- val_str = g_strdup_printf("; user-id=%s", str); \
- proto_item_append_string(ti, val_str); \
- g_free( (gpointer) val_str); \
- g_free(str); \
- off += len; \
- /* Password: text-string */ \
- get_text_string(str,tvb,off,len,ok); \
- if (ok) { \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _password, \
- tvb, off, len, str); \
- val_str = g_strdup_printf("; password=%s", str); \
- proto_item_append_string(ti, val_str); \
- g_free( (gpointer) val_str); \
- g_free(str); \
- off += len; \
- } \
- } \
- } else { /* Authentication-scheme: token-text */ \
- get_token_text(str, tvb, off, len, ok); \
- if (ok) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, off - hdr_start, str); \
- subtree = proto_item_add_subtree(ti, ett_header); \
- proto_tree_add_string(subtree, \
- hf_hdr_ ## underscored ## _scheme, \
- tvb, hdr_start, off - hdr_start, str); \
- g_free(str); \
- off += len; \
- /* Auth-params: parameter - TODO */ \
- while (off < offset) /* Parse parameters */ \
- off = parameter(subtree, ti, tvb, off, offset - off); \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint8 peek; \
+ guint32 off, len; \
+ proto_tree *subtree; \
+ gchar *str; \
+ \
+ wkh_1_WellKnownValue; \
+ /* Invalid */ \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ off = val_start + val_len_len; \
+ peek = tvb_get_guint8(tvb, off); \
+ if (peek == 0x80) { /* Basic */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, "basic"); \
+ subtree = proto_item_add_subtree(ti, ett_header); \
+ proto_tree_add_string(subtree, hf_hdr_ ## underscored ## _scheme, \
+ tvb, off, 1, "basic"); \
+ off++; \
+ /* User-id: text-string */ \
+ get_text_string(str,tvb,off,len,ok); \
+ if (ok) { \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _user_id, \
+ tvb, off, len, str); \
+ val_str = g_strdup_printf("; user-id=%s", str); \
+ proto_item_append_string(ti, val_str); \
+ g_free( (gpointer) val_str); \
+ g_free(str); \
+ off += len; \
+ /* Password: text-string */ \
+ get_text_string(str,tvb,off,len,ok); \
+ if (ok) { \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _password, \
+ tvb, off, len, str); \
+ val_str = g_strdup_printf("; password=%s", str); \
+ proto_item_append_string(ti, val_str); \
+ g_free( (gpointer) val_str); \
+ g_free(str); \
+ off += len; \
+ } \
+ } \
+ } else { /* Authentication-scheme: token-text */ \
+ get_token_text(str, tvb, off, len, ok); \
+ if (ok) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, off - hdr_start, str); \
+ subtree = proto_item_add_subtree(ti, ett_header); \
+ proto_tree_add_string(subtree, \
+ hf_hdr_ ## underscored ## _scheme, \
+ tvb, hdr_start, off - hdr_start, str); \
+ g_free(str); \
+ off += len; \
+ /* Auth-params: parameter - TODO */ \
+ while (off < offset) /* Parse parameters */ \
+ off = parameter(subtree, ti, tvb, off, offset - off); \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
/* Credentials-value only headers: */
@@ -3218,43 +3213,43 @@ wkh_credentials_value_header(proxy_authorization, "Proxy-Authorization")
static guint32
wkh_content_md5 (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off;
-
- wkh_1_WellKnownValue;
- /* Invalid */
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- if (val_len == 16) {
- val_str = g_strdup_printf(
- "%02x%02x%02x%02x%02x%02x%02x%02x"
- "%02x%02x%02x%02x%02x%02x%02x%02x",
- tvb_get_guint8(tvb, off),
- tvb_get_guint8(tvb, off + 1),
- tvb_get_guint8(tvb, off + 2),
- tvb_get_guint8(tvb, off + 3),
- tvb_get_guint8(tvb, off + 4),
- tvb_get_guint8(tvb, off + 5),
- tvb_get_guint8(tvb, off + 6),
- tvb_get_guint8(tvb, off + 7),
- tvb_get_guint8(tvb, off + 8),
- tvb_get_guint8(tvb, off + 9),
- tvb_get_guint8(tvb, off + 10),
- tvb_get_guint8(tvb, off + 11),
- tvb_get_guint8(tvb, off + 12),
- tvb_get_guint8(tvb, off + 13),
- tvb_get_guint8(tvb, off + 14),
- tvb_get_guint8(tvb, off + 15)
- );
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_md5,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str);
- ok = TRUE;
- }
- wkh_4_End(hf_hdr_content_md5);
+ wkh_0_Declarations;
+ guint32 off;
+
+ wkh_1_WellKnownValue;
+ /* Invalid */
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ if (val_len == 16) {
+ val_str = g_strdup_printf(
+ "%02x%02x%02x%02x%02x%02x%02x%02x"
+ "%02x%02x%02x%02x%02x%02x%02x%02x",
+ tvb_get_guint8(tvb, off),
+ tvb_get_guint8(tvb, off + 1),
+ tvb_get_guint8(tvb, off + 2),
+ tvb_get_guint8(tvb, off + 3),
+ tvb_get_guint8(tvb, off + 4),
+ tvb_get_guint8(tvb, off + 5),
+ tvb_get_guint8(tvb, off + 6),
+ tvb_get_guint8(tvb, off + 7),
+ tvb_get_guint8(tvb, off + 8),
+ tvb_get_guint8(tvb, off + 9),
+ tvb_get_guint8(tvb, off + 10),
+ tvb_get_guint8(tvb, off + 11),
+ tvb_get_guint8(tvb, off + 12),
+ tvb_get_guint8(tvb, off + 13),
+ tvb_get_guint8(tvb, off + 14),
+ tvb_get_guint8(tvb, off + 15)
+ );
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_md5,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str);
+ ok = TRUE;
+ }
+ wkh_4_End(hf_hdr_content_md5);
}
@@ -3264,29 +3259,29 @@ wkh_content_md5 (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info
static guint32
wkh_pragma(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0a_Declarations;
- guint32 off;
-
- wkh_1_WellKnownValue;
- if (val_id == 0x80) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_pragma,
- tvb, hdr_start, offset - hdr_start, "no-cache");
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_pragma,
- tvb, hdr_start, off - hdr_start, "");
- /* NULL subtree for parameter() results in no subtree
- * TODO - provide a single parameter dissector that appends data
- * to the header field data. */
- off = parameter(NULL, ti, tvb, off, offset - off);
- ok = TRUE;
- wkh_4_End(hf_hdr_pragma);
+ wkh_0a_Declarations;
+ guint32 off;
+
+ wkh_1_WellKnownValue;
+ if (val_id == 0x80) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_pragma,
+ tvb, hdr_start, offset - hdr_start, "no-cache");
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_pragma,
+ tvb, hdr_start, off - hdr_start, "");
+ /* NULL subtree for parameter() results in no subtree
+ * TODO - provide a single parameter dissector that appends data
+ * to the header field data. */
+ off = parameter(NULL, ti, tvb, off, offset - off);
+ ok = TRUE;
+ wkh_4_End(hf_hdr_pragma);
}
@@ -3297,31 +3292,31 @@ wkh_pragma(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinf
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0a_Declarations; \
- guint32 val = 0, off = val_start, len; \
- gchar *str; /* may not be freed! */ \
- \
- wkh_1_WellKnownValue; \
- str = g_strdup_printf("%u", val_id & 0x7F); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- g_free(str); \
- ok = TRUE; \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_long_integer(val, tvb, off, len, ok); \
- if (ok) { \
- str = g_strdup_printf("%u", val); \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, str); \
- g_free(str); \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0a_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ gchar *str; /* may not be freed! */ \
+ \
+ wkh_1_WellKnownValue; \
+ str = g_strdup_printf("%u", val_id & 0x7F); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ g_free(str); \
+ ok = TRUE; \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_long_integer(val, tvb, off, len, ok); \
+ if (ok) { \
+ str = g_strdup_printf("%u", val); \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, str); \
+ g_free(str); \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
wkh_integer_value_header(content_length, "Content-Length")
@@ -3332,48 +3327,48 @@ wkh_integer_value_header(max_forwards, "Max-Forwards")
static guint32 \
wkh_ ## underscored(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_) \
{ \
- wkh_0_Declarations; \
- guint32 val = 0, off = val_start, len; \
- \
- wkh_1_WellKnownValue; \
- val_str = match_strval_ext(val_id & 0x7F, valueStringExtAddr); \
- if (val_str) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- } else { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- "<Unknown " valueName ">"); \
- } \
- wkh_2_TextualValueInv; \
- /* Invalid */ \
- wkh_3_ValueWithLength; \
- if (val_id <= 4) { /* Length field already parsed by macro! */ \
- get_long_integer(val, tvb, off, len, ok); \
- if (ok) { \
- val = val; /* hack to prevent 'set but not used' gcc warning */ \
- val_str = match_strval_ext(val_id & 0x7F, valueStringExtAddr); \
- if (val_str) { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, val_str); \
- ok = TRUE; \
- } else { \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
- tvb, hdr_start, offset - hdr_start, \
- "<Unknown " valueName ">"); \
- } \
- } \
- } \
- wkh_4_End(hf_hdr_ ## underscored); \
+ wkh_0_Declarations; \
+ guint32 val = 0, off = val_start, len; \
+ \
+ wkh_1_WellKnownValue; \
+ val_str = match_strval_ext(val_id & 0x7F, valueStringExtAddr); \
+ if (val_str) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ } else { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ "<Unknown " valueName ">"); \
+ } \
+ wkh_2_TextualValueInv; \
+ /* Invalid */ \
+ wkh_3_ValueWithLength; \
+ if (val_id <= 4) { /* Length field already parsed by macro! */ \
+ get_long_integer(val, tvb, off, len, ok); \
+ if (ok) { \
+ val = val; /* hack to prevent 'set but not used' gcc warning */ \
+ val_str = match_strval_ext(val_id & 0x7F, valueStringExtAddr); \
+ if (val_str) { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, val_str); \
+ ok = TRUE; \
+ } else { \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ ti = proto_tree_add_string(tree, hf_hdr_ ## underscored, \
+ tvb, hdr_start, offset - hdr_start, \
+ "<Unknown " valueName ">"); \
+ } \
+ } \
+ } \
+ wkh_4_End(hf_hdr_ ## underscored); \
}
wkh_integer_lookup_value_header(bearer_indication, "Bearer-Indication",
- &vals_bearer_types_ext, "bearer type")
+ &vals_bearer_types_ext, "bearer type")
/*
@@ -3382,467 +3377,467 @@ wkh_integer_lookup_value_header(bearer_indication, "Bearer-Indication",
static guint32
wkh_cache_control(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, len, val = 0;
- guint8 peek, cache_control_directive;
- gchar *str;
-
- wkh_1_WellKnownValue;
- val = val_id & 0x7F;
- val_str = match_strval_ext(val, &vals_cache_control_ext);
- if (val_str) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_cache_control,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- }
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_cache_control,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- /* General form:
- * ( no-cache | private ) 1*( Field-name )
- * | ( max-age | max-stale | min-fresh | s-maxage) Delta-seconds-value
- * | Token-text ( Integer-value | Text-value )
- * Where:
- * Field-name = Short-integer | Token-text
- */
- off = val_start + val_len_len;
- cache_control_directive = tvb_get_guint8(tvb, off++);
- if (cache_control_directive & 0x80) { /* Well known cache directive */
- switch (cache_control_directive & 0x7F) {
- case CACHE_CONTROL_NO_CACHE:
- case CACHE_CONTROL_PRIVATE:
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_cache_control,
- tvb, hdr_start, offset - hdr_start,
- val_to_str_ext (cache_control_directive & 0x7F, &vals_cache_control_ext,
- "<Unknown cache control directive 0x%02X>"));
- /* TODO: split multiple entries */
- ok = TRUE;
- while (ok && (off < offset)) { /* 1*( Field-name ) */
- peek = tvb_get_guint8(tvb, off);
- if (peek & 0x80) { /* Well-known-field-name */
- proto_item_append_string(ti,
- val_to_str (peek, vals_field_names,
- "<Unknown WSP header field 0x%02X>"));
- off++;
- } else { /* Token-text */
- get_token_text(val_str, tvb, off, len, ok);
- if (ok) {
- proto_item_append_string(ti, val_str);
- g_free( (gpointer) val_str);
- off += len;
- }
- }
- }
- break;
-
- case CACHE_CONTROL_MAX_AGE:
- case CACHE_CONTROL_MAX_STALE:
- case CACHE_CONTROL_MIN_FRESH:
- case CACHE_CONTROL_S_MAXAGE:
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_cache_control,
- tvb, hdr_start, offset - hdr_start,
- val_to_str_ext (cache_control_directive & 0x7F, &vals_cache_control_ext,
- "<Unknown cache control directive 0x%02X>"));
- get_delta_seconds_value(val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("=%u second%s",
- val, plurality(val, "", "s"));
- proto_item_append_string(ti, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- }
- break;
-
- default:
- /* ok = FALSE */
- break;
- }
- } else if (is_token_text(cache_control_directive)) {
- get_token_text(val_str, tvb, off, len, ok);
- if (ok) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_cache_control,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str);
- get_integer_value(val, tvb, off, len, ok);
- if (ok) { /* Integer-value */
- val_str = g_strdup_printf("=%u", val);
- proto_item_append_string(ti, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- } else { /* Text-value */
- get_text_string(val_str, tvb, off, len, ok);
- if (ok) {
- if (is_quoted_string(val_str[0])) {
- if (is_quoted_string(val_str[len-2])) {
- /* Trailing quote - issue a warning */
- str = g_strdup_printf("%s" TrailingQuoteWarning,
- val_str);
- } else { /* OK (no trailing quote) */
- str = g_strdup_printf("%s\"", val_str);
- }
- proto_item_append_string(ti, str);
- g_free(str);
- } else { /* Token-text | 0x00 */
- /* TODO - check that we have Token-text or 0x00 */
- proto_item_append_string(ti, val_str);
- }
- g_free( (gpointer) val_str);
- }
- }
- }
- }
- wkh_4_End(hf_hdr_cache_control);
+ wkh_0_Declarations;
+ guint32 off, len, val = 0;
+ guint8 peek, cache_control_directive;
+ gchar *str;
+
+ wkh_1_WellKnownValue;
+ val = val_id & 0x7F;
+ val_str = match_strval_ext(val, &vals_cache_control_ext);
+ if (val_str) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_cache_control,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ }
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_cache_control,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ /* General form:
+ * ( no-cache | private ) 1*( Field-name )
+ * | ( max-age | max-stale | min-fresh | s-maxage) Delta-seconds-value
+ * | Token-text ( Integer-value | Text-value )
+ * Where:
+ * Field-name = Short-integer | Token-text
+ */
+ off = val_start + val_len_len;
+ cache_control_directive = tvb_get_guint8(tvb, off++);
+ if (cache_control_directive & 0x80) { /* Well known cache directive */
+ switch (cache_control_directive & 0x7F) {
+ case CACHE_CONTROL_NO_CACHE:
+ case CACHE_CONTROL_PRIVATE:
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_cache_control,
+ tvb, hdr_start, offset - hdr_start,
+ val_to_str_ext (cache_control_directive & 0x7F, &vals_cache_control_ext,
+ "<Unknown cache control directive 0x%02X>"));
+ /* TODO: split multiple entries */
+ ok = TRUE;
+ while (ok && (off < offset)) { /* 1*( Field-name ) */
+ peek = tvb_get_guint8(tvb, off);
+ if (peek & 0x80) { /* Well-known-field-name */
+ proto_item_append_string(ti,
+ val_to_str (peek, vals_field_names,
+ "<Unknown WSP header field 0x%02X>"));
+ off++;
+ } else { /* Token-text */
+ get_token_text(val_str, tvb, off, len, ok);
+ if (ok) {
+ proto_item_append_string(ti, val_str);
+ g_free( (gpointer) val_str);
+ off += len;
+ }
+ }
+ }
+ break;
+
+ case CACHE_CONTROL_MAX_AGE:
+ case CACHE_CONTROL_MAX_STALE:
+ case CACHE_CONTROL_MIN_FRESH:
+ case CACHE_CONTROL_S_MAXAGE:
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_cache_control,
+ tvb, hdr_start, offset - hdr_start,
+ val_to_str_ext (cache_control_directive & 0x7F, &vals_cache_control_ext,
+ "<Unknown cache control directive 0x%02X>"));
+ get_delta_seconds_value(val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("=%u second%s",
+ val, plurality(val, "", "s"));
+ proto_item_append_string(ti, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ }
+ break;
+
+ default:
+ /* ok = FALSE */
+ break;
+ }
+ } else if (is_token_text(cache_control_directive)) {
+ get_token_text(val_str, tvb, off, len, ok);
+ if (ok) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_cache_control,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str);
+ get_integer_value(val, tvb, off, len, ok);
+ if (ok) { /* Integer-value */
+ val_str = g_strdup_printf("=%u", val);
+ proto_item_append_string(ti, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ } else { /* Text-value */
+ get_text_string(val_str, tvb, off, len, ok);
+ if (ok) {
+ if (is_quoted_string(val_str[0])) {
+ if (is_quoted_string(val_str[len-2])) {
+ /* Trailing quote - issue a warning */
+ str = g_strdup_printf("%s" TrailingQuoteWarning,
+ val_str);
+ } else { /* OK (no trailing quote) */
+ str = g_strdup_printf("%s\"", val_str);
+ }
+ proto_item_append_string(ti, str);
+ g_free(str);
+ } else { /* Token-text | 0x00 */
+ /* TODO - check that we have Token-text or 0x00 */
+ proto_item_append_string(ti, val_str);
+ }
+ g_free( (gpointer) val_str);
+ }
+ }
+ }
+ }
+ wkh_4_End(hf_hdr_cache_control);
}
/*
* Warning-value =
- * Short-integer
- * | ( Value-length Short-integer Text-string Text-string )
+ * Short-integer
+ * | ( Value-length Short-integer Text-string Text-string )
*/
static guint32
wkh_warning(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, len, val;
- guint8 warn_code;
- gchar *str;
- proto_tree *subtree;
-
- /* TODO - subtree with values */
-
- wkh_1_WellKnownValue;
- val = val_id & 0x7F;
- val_str = match_strval_ext(val, &vals_wsp_warning_code_ext);
- if (val_str) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_warning,
- tvb, hdr_start, offset - hdr_start, val_str);
- subtree = proto_item_add_subtree(ti, ett_header);
- proto_tree_add_uint(subtree, hf_hdr_warning_code,
- tvb, val_start, 1, val);
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- /* TODO - subtree with individual values */
- off = val_start + val_len_len;
- warn_code = tvb_get_guint8(tvb, off);
- if (warn_code & 0x80) { /* Well known warn code */
- val = warn_code & 0x7f;
- val_str = match_strval_ext(val, &vals_wsp_warning_code_short_ext);
- if (val_str) { /* OK */
- str = g_strdup_printf("code=%s", val_str);
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_warning,
- tvb, hdr_start, offset - hdr_start, str);
- g_free(str);
- subtree = proto_item_add_subtree(ti, ett_header);
- proto_tree_add_uint(subtree, hf_hdr_warning_code,
- tvb, off, 1, val);
- off++; /* Now skip to the warn-agent subfield */
- get_text_string(str, tvb, off, len, ok);
- if (ok) { /* Valid warn-agent string */
- proto_tree_add_string(subtree, hf_hdr_warning_agent,
- tvb, off, len, str);
- val_str = g_strdup_printf("; agent=%s", str);
- proto_item_append_string(ti, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- g_free(str);
- off += len;
- get_text_string(str, tvb, off, len, ok);
- if (ok) { /* Valid warn-text string */
- proto_tree_add_string(subtree,
- hf_hdr_warning_text,
- tvb, off, len, str);
- val_str = g_strdup_printf("; text=%s", str);
- proto_item_append_string(ti, val_str);
- g_free( (gpointer) val_str); /* proto_XXX creates a copy */
- g_free(str);
- off += len;
- }
- }
- }
- }
- wkh_4_End(hf_hdr_warning);
+ wkh_0_Declarations;
+ guint32 off, len, val;
+ guint8 warn_code;
+ gchar *str;
+ proto_tree *subtree;
+
+ /* TODO - subtree with values */
+
+ wkh_1_WellKnownValue;
+ val = val_id & 0x7F;
+ val_str = match_strval_ext(val, &vals_wsp_warning_code_ext);
+ if (val_str) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_warning,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ subtree = proto_item_add_subtree(ti, ett_header);
+ proto_tree_add_uint(subtree, hf_hdr_warning_code,
+ tvb, val_start, 1, val);
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ /* TODO - subtree with individual values */
+ off = val_start + val_len_len;
+ warn_code = tvb_get_guint8(tvb, off);
+ if (warn_code & 0x80) { /* Well known warn code */
+ val = warn_code & 0x7f;
+ val_str = match_strval_ext(val, &vals_wsp_warning_code_short_ext);
+ if (val_str) { /* OK */
+ str = g_strdup_printf("code=%s", val_str);
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_warning,
+ tvb, hdr_start, offset - hdr_start, str);
+ g_free(str);
+ subtree = proto_item_add_subtree(ti, ett_header);
+ proto_tree_add_uint(subtree, hf_hdr_warning_code,
+ tvb, off, 1, val);
+ off++; /* Now skip to the warn-agent subfield */
+ get_text_string(str, tvb, off, len, ok);
+ if (ok) { /* Valid warn-agent string */
+ proto_tree_add_string(subtree, hf_hdr_warning_agent,
+ tvb, off, len, str);
+ val_str = g_strdup_printf("; agent=%s", str);
+ proto_item_append_string(ti, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ g_free(str);
+ off += len;
+ get_text_string(str, tvb, off, len, ok);
+ if (ok) { /* Valid warn-text string */
+ proto_tree_add_string(subtree,
+ hf_hdr_warning_text,
+ tvb, off, len, str);
+ val_str = g_strdup_printf("; text=%s", str);
+ proto_item_append_string(ti, val_str);
+ g_free( (gpointer) val_str); /* proto_XXX creates a copy */
+ g_free(str);
+ off += len;
+ }
+ }
+ }
+ }
+ wkh_4_End(hf_hdr_warning);
}
/*
* Profile-warning-value =
- * Short-integer
- * | ( Value-length Short-integer Text-string *( Date-value ) )
+ * Short-integer
+ * | ( Value-length Short-integer Text-string *( Date-value ) )
*/
static guint32
wkh_profile_warning(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, len, val = 0;
- guint8 warn_code;
- gchar *str;
-
- wkh_1_WellKnownValue;
- val = val_id & 0x7F;
- val_str = match_strval_ext(val, &vals_wsp_profile_warning_code_ext);
- if (val_str) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_profile_warning,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- warn_code = tvb_get_guint8(tvb, off++);
- if (warn_code & 0x80) { /* Well known warn code */
- val_str = match_strval_ext(val, &vals_wsp_profile_warning_code_ext);
- if (val_str) { /* OK */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_profile_warning,
- tvb, hdr_start, offset - hdr_start, val_str);
- get_uri_value(str, tvb, off, len, ok);
- if (ok) { /* Valid warn-target string */
- off += len;
- str = g_strdup_printf("; target=%s", val_str);
- proto_item_append_string(ti, str);
- g_free(str); /* proto_XXX creates a copy */
- /* Add zero or more dates */
- while (ok && (off < offset)) {
- get_date_value(val, tvb, off, len, ok);
- if (ok) { /* Valid warn-text string */
- off += len;
- val_str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE);
- str = g_strdup_printf("; date=%s", val_str);
- proto_item_append_string(ti, str);
- g_free(str); /* proto_XXX creates a copy */
- /* BEHOLD: do NOT try to free str, as \
- * abs_time_secs_to_str() returns ep_allocated data */ \
- }
- }
- }
- }
- }
- wkh_4_End(hf_hdr_profile_warning);
+ wkh_0_Declarations;
+ guint32 off, len, val = 0;
+ guint8 warn_code;
+ gchar *str;
+
+ wkh_1_WellKnownValue;
+ val = val_id & 0x7F;
+ val_str = match_strval_ext(val, &vals_wsp_profile_warning_code_ext);
+ if (val_str) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_profile_warning,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ warn_code = tvb_get_guint8(tvb, off++);
+ if (warn_code & 0x80) { /* Well known warn code */
+ val_str = match_strval_ext(val, &vals_wsp_profile_warning_code_ext);
+ if (val_str) { /* OK */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_profile_warning,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ get_uri_value(str, tvb, off, len, ok);
+ if (ok) { /* Valid warn-target string */
+ off += len;
+ str = g_strdup_printf("; target=%s", val_str);
+ proto_item_append_string(ti, str);
+ g_free(str); /* proto_XXX creates a copy */
+ /* Add zero or more dates */
+ while (ok && (off < offset)) {
+ get_date_value(val, tvb, off, len, ok);
+ if (ok) { /* Valid warn-text string */
+ off += len;
+ val_str = abs_time_secs_to_str(val, ABSOLUTE_TIME_LOCAL, TRUE);
+ str = g_strdup_printf("; date=%s", val_str);
+ proto_item_append_string(ti, str);
+ g_free(str); /* proto_XXX creates a copy */
+ /* BEHOLD: do NOT try to free str, as \
+ * abs_time_secs_to_str() returns ep_allocated data */ \
+ }
+ }
+ }
+ }
+ }
+ wkh_4_End(hf_hdr_profile_warning);
}
/* Encoding-version-value =
- * Short-integer
- * | Text-string
- * | Length Short-integer [ Short-integer | text-string ]
+ * Short-integer
+ * | Text-string
+ * | Length Short-integer [ Short-integer | text-string ]
*/
static guint32 wkh_encoding_version (proto_tree *tree, tvbuff_t *tvb,
- guint32 hdr_start, packet_info *pinfo _U_)
+ guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, val, len;
- gchar *str;
-
- wkh_1_WellKnownValue;
- val = val_id & 0x7F;
- val_str = g_strdup_printf("%u.%u", val >> 4, val & 0x0F);
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- proto_tree_add_string(tree, hf_hdr_encoding_version,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str);
- ok = TRUE;
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- proto_tree_add_string(tree, hf_hdr_encoding_version,
- tvb, hdr_start, offset - hdr_start, val_str);
- ok = TRUE;
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- val = tvb_get_guint8(tvb, off);
- if (val & 0x80) { /* Header Code Page */
- val_str = g_strdup_printf("code-page=%u", val & 0x7F);
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_encoding_version,
- tvb, hdr_start, offset - hdr_start, val_str);
- g_free( (gpointer) val_str);
- off++;
- ok = TRUE;
- if (off < offset) { /* Extra version-value */
- get_version_value(val,val_str,tvb,off,len,ok);
- if (ok) { /* Always creates a string if OK */
- str = g_strdup_printf(": %s", val_str);
- proto_item_append_string(ti, str);
- g_free(str);
- g_free( (gpointer) val_str);
- }
- }
- }
-
- wkh_4_End(hf_hdr_encoding_version);
+ wkh_0_Declarations;
+ guint32 off, val, len;
+ gchar *str;
+
+ wkh_1_WellKnownValue;
+ val = val_id & 0x7F;
+ val_str = g_strdup_printf("%u.%u", val >> 4, val & 0x0F);
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ proto_tree_add_string(tree, hf_hdr_encoding_version,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str);
+ ok = TRUE;
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ proto_tree_add_string(tree, hf_hdr_encoding_version,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ ok = TRUE;
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ val = tvb_get_guint8(tvb, off);
+ if (val & 0x80) { /* Header Code Page */
+ val_str = g_strdup_printf("code-page=%u", val & 0x7F);
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_encoding_version,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ g_free( (gpointer) val_str);
+ off++;
+ ok = TRUE;
+ if (off < offset) { /* Extra version-value */
+ get_version_value(val,val_str,tvb,off,len,ok);
+ if (ok) { /* Always creates a string if OK */
+ str = g_strdup_printf(": %s", val_str);
+ proto_item_append_string(ti, str);
+ g_free(str);
+ g_free( (gpointer) val_str);
+ }
+ }
+ }
+
+ wkh_4_End(hf_hdr_encoding_version);
}
/* Content-range-value =
- * Length Uintvar-integer ( 0x80 | Uintvar-integer )
+ * Length Uintvar-integer ( 0x80 | Uintvar-integer )
*/
static guint32
wkh_content_range(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, val, len;
- proto_tree *subtree = NULL;
-
- wkh_1_WellKnownValue;
- /* Invalid */
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- get_uintvar_integer (val, tvb, off, len, ok); /* Uintvar start */
- if (ok) {
- val_str = g_strdup_printf("first-byte-pos=%u", val);
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_content_range,
- tvb, hdr_start, offset - hdr_start, val_str);
- subtree = proto_item_add_subtree(ti, ett_header);
- proto_tree_add_uint(subtree, hf_hdr_content_range_first_byte_pos,
- tvb, off, len, val);
- g_free( (gpointer) val_str);
- off += len;
- /* Now check next value */
- val = tvb_get_guint8(tvb, off);
- if (val == 0x80) { /* Unknown length */
- proto_item_append_string(ti, "; entity-length=unknown");
- } else { /* Uintvar entity length */
- get_uintvar_integer (val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("; entity-length=%u", val);
- proto_item_append_string(ti, val_str);
- proto_tree_add_uint(subtree,
- hf_hdr_content_range_entity_length,
- tvb, off, len, val);
- g_free( (gpointer) val_str);
- }
- }
- }
-
- wkh_4_End(hf_hdr_content_range);
+ wkh_0_Declarations;
+ guint32 off, val, len;
+ proto_tree *subtree = NULL;
+
+ wkh_1_WellKnownValue;
+ /* Invalid */
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ get_uintvar_integer (val, tvb, off, len, ok); /* Uintvar start */
+ if (ok) {
+ val_str = g_strdup_printf("first-byte-pos=%u", val);
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_content_range,
+ tvb, hdr_start, offset - hdr_start, val_str);
+ subtree = proto_item_add_subtree(ti, ett_header);
+ proto_tree_add_uint(subtree, hf_hdr_content_range_first_byte_pos,
+ tvb, off, len, val);
+ g_free( (gpointer) val_str);
+ off += len;
+ /* Now check next value */
+ val = tvb_get_guint8(tvb, off);
+ if (val == 0x80) { /* Unknown length */
+ proto_item_append_string(ti, "; entity-length=unknown");
+ } else { /* Uintvar entity length */
+ get_uintvar_integer (val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("; entity-length=%u", val);
+ proto_item_append_string(ti, val_str);
+ proto_tree_add_uint(subtree,
+ hf_hdr_content_range_entity_length,
+ tvb, off, len, val);
+ g_free( (gpointer) val_str);
+ }
+ }
+ }
+
+ wkh_4_End(hf_hdr_content_range);
}
/* Range-value =
- * Length
- * 0x80 Uintvar-integer [ Uintvar-integer ]
- * | 0x81 Uintvar-integer
+ * Length
+ * 0x80 Uintvar-integer [ Uintvar-integer ]
+ * | 0x81 Uintvar-integer
*/
static guint32
wkh_range(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, val, len;
- proto_tree *subtree = NULL;
-
- wkh_1_WellKnownValue;
- /* Invalid */
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- val = tvb_get_guint8(tvb, off);
- if (val == 0x80) { /* Byte-range */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_range,
- tvb, hdr_start, offset - hdr_start, "byte-range");
- subtree = proto_item_add_subtree(ti, ett_header);
- /* Get the First-byte-pos (Uintvar-integer) */
- get_uintvar_integer (val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("; first-byte-pos=%u", val);
- proto_item_append_string(ti, val_str);
- proto_tree_add_uint(subtree, hf_hdr_range_first_byte_pos,
- tvb, off, len, val);
- g_free( (gpointer) val_str);
- off += len;
- /* Get the optional Last-byte-pos (Uintvar-integer) */
- if (off < offset) {
- get_uintvar_integer (val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("; last-byte-pos=%u", val);
- proto_item_append_string(ti, val_str);
- proto_tree_add_uint(subtree,
- hf_hdr_range_last_byte_pos,
- tvb, off, len, val);
- g_free( (gpointer) val_str);
- }
- }
- }
- } else if (val == 0x81) { /* Suffix-byte-range */
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_range,
- tvb, hdr_start, offset - hdr_start, "suffix-byte-range");
- subtree = proto_item_add_subtree(ti, ett_header);
- /* Get the Suffix-length (Uintvar-integer) */
- get_uintvar_integer (val, tvb, off, len, ok);
- if (ok) {
- val_str = g_strdup_printf("; suffix-length=%u", val);
- proto_item_append_string(ti, val_str);
- proto_tree_add_uint(subtree, hf_hdr_range_suffix_length,
- tvb, off, len, val);
- g_free( (gpointer) val_str);
- }
- }
-
- wkh_4_End(hf_hdr_range);
+ wkh_0_Declarations;
+ guint32 off, val, len;
+ proto_tree *subtree = NULL;
+
+ wkh_1_WellKnownValue;
+ /* Invalid */
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ val = tvb_get_guint8(tvb, off);
+ if (val == 0x80) { /* Byte-range */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_range,
+ tvb, hdr_start, offset - hdr_start, "byte-range");
+ subtree = proto_item_add_subtree(ti, ett_header);
+ /* Get the First-byte-pos (Uintvar-integer) */
+ get_uintvar_integer (val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("; first-byte-pos=%u", val);
+ proto_item_append_string(ti, val_str);
+ proto_tree_add_uint(subtree, hf_hdr_range_first_byte_pos,
+ tvb, off, len, val);
+ g_free( (gpointer) val_str);
+ off += len;
+ /* Get the optional Last-byte-pos (Uintvar-integer) */
+ if (off < offset) {
+ get_uintvar_integer (val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("; last-byte-pos=%u", val);
+ proto_item_append_string(ti, val_str);
+ proto_tree_add_uint(subtree,
+ hf_hdr_range_last_byte_pos,
+ tvb, off, len, val);
+ g_free( (gpointer) val_str);
+ }
+ }
+ }
+ } else if (val == 0x81) { /* Suffix-byte-range */
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_range,
+ tvb, hdr_start, offset - hdr_start, "suffix-byte-range");
+ subtree = proto_item_add_subtree(ti, ett_header);
+ /* Get the Suffix-length (Uintvar-integer) */
+ get_uintvar_integer (val, tvb, off, len, ok);
+ if (ok) {
+ val_str = g_strdup_printf("; suffix-length=%u", val);
+ proto_item_append_string(ti, val_str);
+ proto_tree_add_uint(subtree, hf_hdr_range_suffix_length,
+ tvb, off, len, val);
+ g_free( (gpointer) val_str);
+ }
+ }
+
+ wkh_4_End(hf_hdr_range);
}
/* TE-value =
- * 0x81
- * | Value-length (0x82--0x86 | Token-text) [ Q-token Q-value ]
+ * 0x81
+ * | Value-length (0x82--0x86 | Token-text) [ Q-token Q-value ]
*/
static guint32 wkh_te (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
- guint32 off, val, len;
-
- wkh_1_WellKnownValue;
- if (val_id == 0x81) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- proto_tree_add_string(tree, hf_hdr_encoding_version,
- tvb, hdr_start, offset - hdr_start, "trailers");
- ok = TRUE;
- }
- wkh_2_TextualValueInv;
- /* Invalid */
- wkh_3_ValueWithLength;
- off = val_start + val_len_len;
- val = tvb_get_guint8(tvb, off);
- if (val & 0x80) { /* Well-known-TE */
- val_str = match_strval_ext((val & 0x7F), &vals_well_known_te_ext);
- if (val_str) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_te,
- tvb, hdr_start, off - hdr_start, val_str);
- off++;
- ok = TRUE;
- }
- } else { /* TE in Token-text format */
- get_token_text(val_str, tvb, off, len, ok);
- if (ok) {
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_string(tree, hf_hdr_te,
- tvb, hdr_start, off - hdr_start, val_str);
- g_free( (gpointer) val_str);
- off += len;
- }
- }
- if ((ok) && (off < offset)) { /* Q-token Q-value */
- /* TODO */
- }
-
- wkh_4_End(hf_hdr_te);
+ wkh_0_Declarations;
+ guint32 off, val, len;
+
+ wkh_1_WellKnownValue;
+ if (val_id == 0x81) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ proto_tree_add_string(tree, hf_hdr_encoding_version,
+ tvb, hdr_start, offset - hdr_start, "trailers");
+ ok = TRUE;
+ }
+ wkh_2_TextualValueInv;
+ /* Invalid */
+ wkh_3_ValueWithLength;
+ off = val_start + val_len_len;
+ val = tvb_get_guint8(tvb, off);
+ if (val & 0x80) { /* Well-known-TE */
+ val_str = match_strval_ext((val & 0x7F), &vals_well_known_te_ext);
+ if (val_str) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_te,
+ tvb, hdr_start, off - hdr_start, val_str);
+ off++;
+ ok = TRUE;
+ }
+ } else { /* TE in Token-text format */
+ get_token_text(val_str, tvb, off, len, ok);
+ if (ok) {
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_string(tree, hf_hdr_te,
+ tvb, hdr_start, off - hdr_start, val_str);
+ g_free( (gpointer) val_str);
+ off += len;
+ }
+ }
+ if ((ok) && (off < offset)) { /* Q-token Q-value */
+ /* TODO */
+ }
+
+ wkh_4_End(hf_hdr_te);
}
@@ -3858,223 +3853,223 @@ static guint32 wkh_te (proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packe
* are used instead of the default WSP header field names
*/
#undef wkh_1_WellKnownValue
-#define wkh_1_WellKnownValue /* Parse Well Known Value */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- hidden_item = proto_tree_add_string(tree, hf_hdr_name, \
- tvb, hdr_start, offset - hdr_start, \
- val_to_str_ext (hdr_id, &vals_openwave_field_names_ext, \
- "<Unknown WSP header field 0x%02X>")); \
- PROTO_ITEM_SET_HIDDEN(hidden_item); \
- if (val_id & 0x80) { /* Well-known value */ \
- offset++; \
- /* Well-known value processing starts HERE \
- * \
- * BEGIN */
+#define wkh_1_WellKnownValue /* Parse Well Known Value */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ hidden_item = proto_tree_add_string(tree, hf_hdr_name, \
+ tvb, hdr_start, offset - hdr_start, \
+ val_to_str_ext (hdr_id, &vals_openwave_field_names_ext, \
+ "<Unknown WSP header field 0x%02X>")); \
+ PROTO_ITEM_SET_HIDDEN(hidden_item); \
+ if (val_id & 0x80) { /* Well-known value */ \
+ offset++; \
+ /* Well-known value processing starts HERE \
+ * \
+ * BEGIN */
/*
* Redefine the End parsing so Openwave header field names are used
* instead of the default WSP field names
*/
#undef wkh_4_End
-#define wkh_4_End(hf) /* End of value parsing */ \
- /* END */ \
- } \
- /* Check for errors */ \
- if (! ok) { \
- if (ti) { /* Append to protocol tree item label */ \
- proto_item_append_text(ti, \
- "<Error: Invalid header value>"); \
- } else if (hf > 0) { /* Create protocol tree item */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- proto_tree_add_string(tree, hf, \
- tvb, hdr_start, offset - hdr_start, \
- " <Error: Invalid header value>"); \
- } else { /* Create anonymous header field entry */ \
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
- proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start, \
- "%s: <Error: Invalid header value>", \
- val_to_str_ext (hdr_id, &vals_openwave_field_names_ext, \
- "<Unknown WSP header field 0x%02X>")); \
- } \
- } \
- return offset;
+#define wkh_4_End(hf) /* End of value parsing */ \
+ /* END */ \
+ } \
+ /* Check for errors */ \
+ if (! ok) { \
+ if (ti) { /* Append to protocol tree item label */ \
+ proto_item_append_text(ti, \
+ "<Error: Invalid header value>"); \
+ } else if (hf > 0) { /* Create protocol tree item */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ proto_tree_add_string(tree, hf, \
+ tvb, hdr_start, offset - hdr_start, \
+ " <Error: Invalid header value>"); \
+ } else { /* Create anonymous header field entry */ \
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start); \
+ proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start, \
+ "%s: <Error: Invalid header value>", \
+ val_to_str_ext (hdr_id, &vals_openwave_field_names_ext, \
+ "<Unknown WSP header field 0x%02X>")); \
+ } \
+ } \
+ return offset;
/* Dissect the Openwave header value (generic) */
static guint32
wkh_openwave_default(proto_tree *tree, tvbuff_t *tvb, guint32 hdr_start, packet_info *pinfo _U_)
{
- wkh_0_Declarations;
-
- ok = TRUE; /* Bypass error checking as we don't parse the values! */
-
- wkh_1_WellKnownValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
- "%s: (Undecoded well-known value 0x%02x)",
- val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
- "<Unknown WSP header field 0x%02X>"), val_id & 0x7F);
- wkh_2_TextualValue;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text(tree,tvb,hdr_start, offset - hdr_start,
- "%s: %s",
- val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
- "<Unknown WSP header field 0x%02X>"), val_str);
- wkh_3_ValueWithLength;
- tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
- ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
- "%s: (Undecoded value in general form with length indicator)",
- val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
- "<Unknown WSP header field 0x%02X>"));
-
- wkh_4_End(HF_EMPTY); /* See wkh_default for explanation */
+ wkh_0_Declarations;
+
+ ok = TRUE; /* Bypass error checking as we don't parse the values! */
+
+ wkh_1_WellKnownValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
+ "%s: (Undecoded well-known value 0x%02x)",
+ val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"), val_id & 0x7F);
+ wkh_2_TextualValue;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text(tree,tvb,hdr_start, offset - hdr_start,
+ "%s: %s",
+ val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"), val_str);
+ wkh_3_ValueWithLength;
+ tvb_ensure_bytes_exist(tvb, hdr_start, offset - hdr_start);
+ ti = proto_tree_add_text(tree, tvb, hdr_start, offset - hdr_start,
+ "%s: (Undecoded value in general form with length indicator)",
+ val_to_str_ext (hdr_id, &vals_openwave_field_names_ext,
+ "<Unknown WSP header field 0x%02X>"));
+
+ wkh_4_End(HF_EMPTY); /* See wkh_default for explanation */
}
/* Textual Openwave headers */
wkh_text_header(openwave_x_up_proxy_operator_domain,
- "x-up-proxy-operator-domain")
+ "x-up-proxy-operator-domain")
wkh_text_header(openwave_x_up_proxy_home_page,
- "x-up-proxy-home-page")
+ "x-up-proxy-home-page")
wkh_text_header(openwave_x_up_proxy_uplink_version,
- "x-up-proxy-uplink-version")
+ "x-up-proxy-uplink-version")
wkh_text_header(openwave_x_up_proxy_ba_realm,
- "x-up-proxy-ba-realm")
+ "x-up-proxy-ba-realm")
wkh_text_header(openwave_x_up_proxy_request_uri,
- "x-up-proxy-request-uri")
+ "x-up-proxy-request-uri")
wkh_text_header(openwave_x_up_proxy_bookmark,
- "x-up-proxy-bookmark")
+ "x-up-proxy-bookmark")
/* Integer Openwave headers */
wkh_integer_value_header(openwave_x_up_proxy_push_seq,
- "x-up-proxy-push-seq")
+ "x-up-proxy-push-seq")
wkh_integer_value_header(openwave_x_up_proxy_notify,
- "x-up-proxy-notify")
+ "x-up-proxy-notify")
wkh_integer_value_header(openwave_x_up_proxy_net_ask,
- "x-up-proxy-net-ask")
+ "x-up-proxy-net-ask")
wkh_integer_value_header(openwave_x_up_proxy_ba_enable,
- "x-up-proxy-ba-enable")
+ "x-up-proxy-ba-enable")
wkh_integer_value_header(openwave_x_up_proxy_redirect_enable,
- "x-up-proxy-redirect-enable")
+ "x-up-proxy-redirect-enable")
wkh_integer_value_header(openwave_x_up_proxy_redirect_status,
- "x-up-proxy-redirect-status")
+ "x-up-proxy-redirect-status")
wkh_integer_value_header(openwave_x_up_proxy_linger,
- "x-up-proxy-linger")
+ "x-up-proxy-linger")
wkh_integer_value_header(openwave_x_up_proxy_enable_trust,
- "x-up-proxy-enable-trust")
+ "x-up-proxy-enable-trust")
wkh_integer_value_header(openwave_x_up_proxy_trust,
- "x-up-proxy-trust")
+ "x-up-proxy-trust")
wkh_integer_value_header(openwave_x_up_devcap_has_color,
- "x-up-devcap-has-color")
+ "x-up-devcap-has-color")
wkh_integer_value_header(openwave_x_up_devcap_num_softkeys,
- "x-up-devcap-num-softkeys")
+ "x-up-devcap-num-softkeys")
wkh_integer_value_header(openwave_x_up_devcap_softkey_size,
- "x-up-devcap-softkey-size")
+ "x-up-devcap-softkey-size")
wkh_integer_value_header(openwave_x_up_devcap_screen_chars,
- "x-up-devcap-screen-chars")
+ "x-up-devcap-screen-chars")
wkh_integer_value_header(openwave_x_up_devcap_screen_pixels,
- "x-up-devcap-screen-pixels")
+ "x-up-devcap-screen-pixels")
wkh_integer_value_header(openwave_x_up_devcap_em_size,
- "x-up-devcap-em-size")
+ "x-up-devcap-em-size")
wkh_integer_value_header(openwave_x_up_devcap_screen_depth,
- "x-up-devcap-screen-depth")
+ "x-up-devcap-screen-depth")
wkh_integer_value_header(openwave_x_up_devcap_immed_alert,
- "x-up-devcap-immed_alert")
+ "x-up-devcap-immed_alert")
wkh_integer_value_header(openwave_x_up_devcap_gui,
- "x-up-devcap-gui")
+ "x-up-devcap-gui")
/* Openwave Time-Of-Day value header */
wkh_tod_value_header(openwave_x_up_proxy_tod,
- "x-up-proxy-tod")
+ "x-up-proxy-tod")
/* Openwave accept_x_q header */
wkh_accept_x_q_header(openwave_x_up_proxy_trans_charset,
- "x-up-proxy-trans-charset",
- &vals_character_sets_ext, "character set")
+ "x-up-proxy-trans-charset",
+ &vals_character_sets_ext, "character set")
/* Openwave content type header */
wkh_content_type_header(openwave_x_up_proxy_push_accept,
- "x-up-proxy-push-accept")
+ "x-up-proxy-push-accept")
/*
* Header value parameter parsing
*/
#define InvalidParameterValue(parameter,value) \
- "<Error: Invalid " parameter " parameter value: invalid " value ">"
+ "<Error: Invalid " parameter " parameter value: invalid " value ">"
#define parameter_text(hf,lowercase,Uppercase,value) \
- DebugLog(("parameter with text_string value: " Uppercase "\n")); \
- get_text_string(val_str, tvb, offset, val_len, ok); \
- if (ok) { \
- DebugLog(("OK, valid text_string value found!\n")); \
- DebugLog(("Adding val_str to the header field in proto tree\n")); \
- proto_tree_add_string(tree, hf, \
- tvb, start, type_len + val_len, val_str); \
- DebugLog(("Creating str to append to ti\n")); \
- str = g_strdup_printf("; " lowercase "=%s", val_str); \
- DebugLog(("Appending str to ti\n")); \
- proto_item_append_string(ti, str); \
- DebugLog(("\tFreeing str [%s]\n", str)); \
- g_free(str); \
- DebugLog(("\tFreeing val_str [%s]\n", val_str)); \
- g_free( (gpointer) val_str); \
- offset += val_len; \
- } else { \
- DebugLog(("\tError: invalid parameter value!\n")); \
- proto_tree_add_string(tree, hf, tvb, start, len, \
- InvalidParameterValue(Uppercase, value)); \
- offset = start + len; /* Skip to end of buffer */ \
- } \
- DebugLog(("parameter with text_string value - END\n"));
+ DebugLog(("parameter with text_string value: " Uppercase "\n")); \
+ get_text_string(val_str, tvb, offset, val_len, ok); \
+ if (ok) { \
+ DebugLog(("OK, valid text_string value found!\n")); \
+ DebugLog(("Adding val_str to the header field in proto tree\n")); \
+ proto_tree_add_string(tree, hf, \
+ tvb, start, type_len + val_len, val_str); \
+ DebugLog(("Creating str to append to ti\n")); \
+ str = g_strdup_printf("; " lowercase "=%s", val_str); \
+ DebugLog(("Appending str to ti\n")); \
+ proto_item_append_string(ti, str); \
+ DebugLog(("\tFreeing str [%s]\n", str)); \
+ g_free(str); \
+ DebugLog(("\tFreeing val_str [%s]\n", val_str)); \
+ g_free( (gpointer) val_str); \
+ offset += val_len; \
+ } else { \
+ DebugLog(("\tError: invalid parameter value!\n")); \
+ proto_tree_add_string(tree, hf, tvb, start, len, \
+ InvalidParameterValue(Uppercase, value)); \
+ offset = start + len; /* Skip to end of buffer */ \
+ } \
+ DebugLog(("parameter with text_string value - END\n"));
#define parameter_text_value(hf,lowercase,Uppercase,value) \
- get_text_string(val_str, tvb, offset, val_len, ok); \
- if (ok) { \
- if (is_quoted_string(val_str[0])) { \
- if (is_quoted_string(val_str[val_len-2])) { \
- /* Trailing quote - issue a warning */ \
- str = g_strdup_printf("%s" TrailingQuoteWarning, val_str); \
- proto_tree_add_string(tree, hf, \
- tvb, start, type_len + val_len, str); \
- g_free(str); \
- str = g_strdup_printf("; " lowercase "=%s", val_str); \
- } else { /* OK (no trailing quote) */ \
- str = g_strdup_printf("%s\"", val_str); \
- proto_tree_add_string(tree, hf, \
- tvb, start, type_len + val_len, str); \
- g_free(str); \
- str = g_strdup_printf("; " lowercase "=%s\"", val_str); \
- } \
- } else { /* Token-text | 0x00 */ \
- /* TODO - verify that we have either Token-text or 0x00 */ \
- proto_tree_add_string(tree, hf, \
- tvb, start, type_len + val_len, val_str); \
- str = g_strdup_printf("; " lowercase "=%s", val_str); \
- } \
- proto_item_append_string(ti, str); \
- g_free(str); \
- g_free( (gpointer) val_str); \
- offset += val_len; \
- } else { \
- proto_tree_add_string(tree, hf, tvb, start, len, \
- InvalidParameterValue(Uppercase, value)); \
- offset = start + len; /* Skip to end of buffer */ \
- }
+ get_text_string(val_str, tvb, offset, val_len, ok); \
+ if (ok) { \
+ if (is_quoted_string(val_str[0])) { \
+ if (is_quoted_string(val_str[val_len-2])) { \
+ /* Trailing quote - issue a warning */ \
+ str = g_strdup_printf("%s" TrailingQuoteWarning, val_str); \
+ proto_tree_add_string(tree, hf, \
+ tvb, start, type_len + val_len, str); \
+ g_free(str); \
+ str = g_strdup_printf("; " lowercase "=%s", val_str); \
+ } else { /* OK (no trailing quote) */ \
+ str = g_strdup_printf("%s\"", val_str); \
+ proto_tree_add_string(tree, hf, \
+ tvb, start, type_len + val_len, str); \
+ g_free(str); \
+ str = g_strdup_printf("; " lowercase "=%s\"", val_str); \
+ } \
+ } else { /* Token-text | 0x00 */ \
+ /* TODO - verify that we have either Token-text or 0x00 */ \
+ proto_tree_add_string(tree, hf, \
+ tvb, start, type_len + val_len, val_str); \
+ str = g_strdup_printf("; " lowercase "=%s", val_str); \
+ } \
+ proto_item_append_string(ti, str); \
+ g_free(str); \
+ g_free( (gpointer) val_str); \
+ offset += val_len; \
+ } else { \
+ proto_tree_add_string(tree, hf, tvb, start, len, \
+ InvalidParameterValue(Uppercase, value)); \
+ offset = start + len; /* Skip to end of buffer */ \
+ }
/* Parameter = Untyped-parameter | Typed-parameter
* Untyped-parameter = Token-text ( Integer-value | Text-value )
* Typed-parameter =
- * Integer-value (
- * ( Integer-value | Date-value | Delta-seconds-value
- * | Q-value | Version-value | Uri-value )
- * | Text-value )
+ * Integer-value (
+ * ( Integer-value | Date-value | Delta-seconds-value
+ * | Q-value | Version-value | Uri-value )
+ * | Text-value )
*
*
* Returns: next offset
@@ -4084,351 +4079,351 @@ wkh_content_type_header(openwave_x_up_proxy_push_accept,
static int
parameter (proto_tree *tree, proto_item *ti, tvbuff_t *tvb, int start, int len)
{
- int offset = start;
- guint8 peek = tvb_get_guint8 (tvb,start);
- guint32 val = 0, type = 0, type_len, val_len;
- gchar *str = NULL;
- const gchar *val_str = NULL;
- gchar *s;
- gboolean ok;
-
- DebugLog(("parameter(start = %u, len = %u)\n", start, len));
- if (is_token_text (peek)) {
- /*
- * Untyped parameter
- */
- DebugLog(("parameter() - Untyped - Start\n"));
- get_token_text (str,tvb,start,val_len,ok); /* Should always succeed */
- if (ok) { /* Found a textual parameter name: str */
- offset += val_len;
- get_text_value(val_str, tvb, offset, val_len, ok);
- if (ok) { /* Also found a textual parameter value: val_str */
- DebugLog(("Trying textual parameter value.\n"));
- offset += val_len;
- if (is_quoted_string(val_str[0])) { /* Add trailing quote! */
- if (is_quoted_string(val_str[val_len-2])) {
- /* Trailing quote - issue a warning */
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "%s: %s" TrailingQuoteWarning, str, val_str);
- s = g_strdup_printf("; %s=%s", str, val_str);
- } else { /* OK (no trailing quote) */
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "%s: %s\"", str, val_str);
- s = g_strdup_printf("; %s=%s\"", str, val_str);
- }
- } else { /* Token-text | 0x00 */
- /* TODO - verify that it is either Token-text or 0x00
- * and flag with warning if invalid */
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "%s: %s", str, val_str);
- s = g_strdup_printf("; %s=%s", str, val_str);
- }
- /* TODO - check if we can insert a searchable field in the
- * protocol tree for the untyped parameter case */
- DebugLog(("parameter() - Untyped: %s\n", s));
- proto_item_append_string(ti, s);
- DebugLog(("Freeing s\n"));
- g_free(s);
- DebugLog(("Freeing val_str\n"));
- g_free( (gpointer) val_str);
- DebugLog(("Done!\n"));
- } else { /* Try integer value */
- DebugLog(("Trying integer parameter value.\n"));
- get_integer_value (val,tvb,offset,val_len,ok);
- if (ok) { /* Also found a valid integer parameter value: val */
- offset += val_len;
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "%s: %u", str, val);
- s = g_strdup_printf("; %s=%u", str, val);
- proto_item_append_string(ti, s);
- DebugLog(("parameter() - Untyped: %s\n", s));
- g_free(s);
- /* TODO - check if we can insert a searchable field in the
- * protocol tree for the untyped parameter case */
- } else { /* Error: neither token-text not Integer-value */
- DebugLog(("Invalid untyped parameter value!\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text (tree, tvb, start, offset - start,
- "<Error: Invalid untyped parameter definition>");
- offset = start + len; /* Skip to end of buffer */
- }
- }
- g_free(str);
- }
- DebugLog(("parameter() - Untyped - End\n"));
- return offset;
- }
- /*
- * Else: Typed parameter
- */
- DebugLog(("parameter() - Typed - Start\n"));
- get_integer_value (type,tvb,start,type_len,ok);
- if (!ok) {
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text (tree, tvb, start, offset - start,
- "<Error: Invalid typed parameter definition>");
- return (start + len); /* Skip to end of buffer */
- }
- offset += type_len;
- /* Now offset points to the parameter value */
- DebugLog(("Typed parameter = 0x%02x\n", type));
- switch (type) {
- case 0x01: /* WSP 1.1 encoding - Charset: Well-known-charset */
- get_integer_value(val, tvb, offset, val_len, ok);
- if (ok) {
- val_str = val_to_str_ext(val, &vals_character_sets_ext,
- "<Unknown character set Identifier 0x%X>");
- proto_tree_add_string(tree, hf_parameter_charset,
- tvb, start, type_len + val_len, val_str);
- str = g_strdup_printf("; charset=%s", val_str);
- proto_item_append_string(ti, str);
- g_free(str);
- offset += val_len;
- } else {
- proto_tree_add_text (tree, tvb, start, offset,
- InvalidParameterValue("Charset", "Integer-value"));
- offset = start + len; /* Skip to end of buffer */
- }
- break;
-
- case 0x03: /* WSP 1.1 encoding - Type: Integer-value */
- get_integer_value (val,tvb,offset,val_len,ok);
- if (ok) {
- proto_tree_add_uint (tree, hf_wsp_parameter_type,
- tvb, start, type_len + val_len, val);
- s = g_strdup_printf("; Type=%u", val);
- proto_item_append_string (ti, s);
- g_free(s);
- offset += val_len;
- } else {
- proto_tree_add_text (tree, tvb, start, offset,
- InvalidParameterValue("Type", "Integer-value"));
- offset = start + len; /* Skip to end of buffer */
- }
- break;
-
- case 0x05: /* WSP 1.1 encoding - Name: Text-string */
- parameter_text(hf_wsp_parameter_name, "name",
- "Name (WSP 1.1 encoding)", "Text-string");
- break;
- case 0x17: /* WSP 1.4 encoding - Name: Text-value */
- parameter_text_value(hf_wsp_parameter_name, "name",
- "Name (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x06: /* WSP 1.1 encoding - Filename: Text-string */
- parameter_text(hf_wsp_parameter_filename, "filename",
- "Filename (WSP 1.1 encoding)", "Text-string");
- break;
- case 0x18: /* WSP 1.4 encoding - Filename: Text-value */
- parameter_text_value(hf_wsp_parameter_filename, "filename",
- "Filename (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x09: /* WSP 1.2 encoding - Type (special): Constrained-encoding */
- /* This is similar to the Content-Type header decoding,
- * but it is much simpler:
- * Constrained-encoding = Short-integer | Extension-media
- * Extension-media = *TEXT <Octet 0>
- */
- get_extension_media(val_str,tvb,offset,val_len,ok);
- if (ok) { /* Extension-media */
- offset += val_len;
- } else {
- get_short_integer(val,tvb,offset,val_len,ok);
- if (ok) {
- offset += val_len;
- val_str = val_to_str_ext(val, &vals_content_types_ext,
- "(Unknown content type identifier 0x%X)");
- } /* Else: invalid parameter value */
- }
- if (ok) {
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_string (tree, hf_wsp_parameter_upart_type,
- tvb, start, offset - start, val_str);
- str = g_strdup_printf("; type=%s", val_str);
- proto_item_append_string(ti, str);
- g_free(str);
- } else { /* Invalid parameter value */
- proto_tree_add_text (tree, tvb, start, len,
- InvalidParameterValue("Type",
- "Constrained-encoding"));
- offset = start + len; /* Skip the parameters */
- }
- break;
-
- case 0x0A: /* WSP 1.2 encoding - Start: Text-string */
- parameter_text(hf_wsp_parameter_start, "start",
- "Start (WSP 1.2 encoding)", "Text-string");
- break;
- case 0x19: /* WSP 1.4 encoding - Start (with multipart/related): Text-value */
- parameter_text_value(hf_wsp_parameter_start, "start",
- "Start (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x0B: /* WSP 1.2 encoding - Start-info: Text-string */
- parameter_text(hf_wsp_parameter_start_info, "start-info",
- "Start-info (WSP 1.2 encoding)", "Text-string");
- break;
- case 0x1A: /* WSP 1.4 encoding - Start-info (with multipart/related): Text-value */
- parameter_text_value(hf_wsp_parameter_start_info, "start-info",
- "Start-info (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x0C: /* WSP 1.3 encoding - Comment: Text-string */
- parameter_text(hf_wsp_parameter_comment, "comment",
- "Comment (WSP 1.3 encoding)", "Text-string");
- break;
- case 0x1B: /* WSP 1.4 encoding - Comment: Text-value */
- parameter_text_value(hf_wsp_parameter_comment, "comment",
- "Comment (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x0D: /* WSP 1.3 encoding - Domain: Text-string */
- parameter_text(hf_wsp_parameter_domain, "domain",
- "Domain (WSP 1.3 encoding)", "Text-string");
- break;
- case 0x1C: /* WSP 1.4 encoding - Domain: Text-value */
- parameter_text_value(hf_wsp_parameter_domain, "domain",
- "Domain (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x0F: /* WSP 1.3 encoding - Path: Text-string */
- parameter_text(hf_wsp_parameter_path, "path",
- "Path (WSP 1.3 encoding)", "Text-string");
- break;
- case 0x1D: /* WSP 1.4 encoding - Path: Text-value */
- parameter_text_value(hf_wsp_parameter_path, "path",
- "Path (WSP 1.4 encoding)", "Text-value");
- break;
-
- case 0x11: /* WSP 1.4 encoding - SEC: Short-integer (OCTET) */
- peek = tvb_get_guint8 (tvb, start+1);
- if (peek & 0x80) { /* Valid Short-integer */
- peek &= 0x7F;
- proto_tree_add_uint (tree, hf_wsp_parameter_sec,
- tvb, start, 2, peek);
- str = (gchar *) val_to_str_ext_const(peek, &vals_wsp_parameter_sec_ext, "Undefined");
- s = g_strdup_printf("; SEC=%s", str);
- proto_item_append_string (ti, s);
- g_free(s);
- offset++;
- } else { /* Error */
- proto_tree_add_text (tree, tvb, start, len,
- InvalidParameterValue("SEC", "Short-integer"));
- offset = start + len; /* Skip to end of buffer */
- }
- break;
-
- case 0x12: /* WSP 1.4 encoding - MAC: Text-value */
- parameter_text_value(hf_wsp_parameter_mac, "MAC",
- "MAC", "Text-value");
- break;
-
- case 0x02: /* WSP 1.1 encoding - Level: Version-value */
- get_version_value(val,str,tvb,offset,val_len,ok);
- if (ok) {
- proto_tree_add_string (tree, hf_wsp_parameter_level,
- tvb, start, type_len + val_len, str);
- s = g_strdup_printf("; level=%s", str);
- proto_item_append_string (ti, s);
- g_free(s);
- offset += val_len;
- } else {
- proto_tree_add_text (tree, tvb, start, len,
- InvalidParameterValue("Level", "Version-value"));
- offset = start + len; /* Skip to end of buffer */
- }
- break;
-
- case 0x00: /* WSP 1.1 encoding - Q: Q-value */
- offset = parameter_value_q(tree, ti, tvb, offset);
- break;
-
- case 0x16: /* WSP 1.4 encoding - Size: Integer-value */
- get_integer_value (val,tvb,offset,val_len,ok);
- if (ok) {
- proto_tree_add_uint (tree, hf_wsp_parameter_size,
- tvb, start, type_len + val_len, val);
- s = g_strdup_printf("; Size=%u", val);
- proto_item_append_string (ti, s);
- g_free(s);
- offset += val_len;
- } else {
- proto_tree_add_text (tree, tvb, start, offset,
- InvalidParameterValue("Size", "Integer-value"));
- offset = start + len; /* Skip to end of buffer */
- }
- break;
-
- /*
- * TODO
- */
-
- case 0x07: /* WSP 1.1 encoding - Differences: Field-name */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Differences - decoding stopped");
- break;
-
- case 0x08: /* WSP 1.1 encoding - Padding: Short-integer */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Padding - decoding stopped");
- break;
-
- case 0x0E: /* WSP 1.3 encoding - Max-Age: Delta-seconds-value */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Max-Age - decoding stopped");
- break;
-
- case 0x10: /* WSP 1.3 encoding - Secure: No-value */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Secure - decoding stopped");
- break;
-
- case 0x13: /* WSP 1.4 encoding - Creation-date: Date-value */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Creation-Date - decoding stopped");
- break;
-
- case 0x14: /* WSP 1.4 encoding - Modification-date: Date-value */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Modification-Date - decoding stopped");
- break;
-
- case 0x15: /* WSP 1.4 encoding - Read-date: Date-value */
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter Read-Date - decoding stopped");
- break;
-
- default:
- DebugLog(("Skipping remaining parameters from here\n"));
- tvb_ensure_bytes_exist(tvb, start, offset - start);
- proto_tree_add_text(tree, tvb, start, offset - start,
- "Undecoded parameter type 0x%02x - decoding stopped",
- type);
- offset = start + len; /* Skip the parameters */
- break;
- }
- DebugLog(("parameter() - Typed - End\n"));
- return offset;
+ int offset = start;
+ guint8 peek = tvb_get_guint8 (tvb,start);
+ guint32 val = 0, type = 0, type_len, val_len;
+ gchar *str = NULL;
+ const gchar *val_str = NULL;
+ gchar *s;
+ gboolean ok;
+
+ DebugLog(("parameter(start = %u, len = %u)\n", start, len));
+ if (is_token_text (peek)) {
+ /*
+ * Untyped parameter
+ */
+ DebugLog(("parameter() - Untyped - Start\n"));
+ get_token_text (str,tvb,start,val_len,ok); /* Should always succeed */
+ if (ok) { /* Found a textual parameter name: str */
+ offset += val_len;
+ get_text_value(val_str, tvb, offset, val_len, ok);
+ if (ok) { /* Also found a textual parameter value: val_str */
+ DebugLog(("Trying textual parameter value.\n"));
+ offset += val_len;
+ if (is_quoted_string(val_str[0])) { /* Add trailing quote! */
+ if (is_quoted_string(val_str[val_len-2])) {
+ /* Trailing quote - issue a warning */
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "%s: %s" TrailingQuoteWarning, str, val_str);
+ s = g_strdup_printf("; %s=%s", str, val_str);
+ } else { /* OK (no trailing quote) */
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "%s: %s\"", str, val_str);
+ s = g_strdup_printf("; %s=%s\"", str, val_str);
+ }
+ } else { /* Token-text | 0x00 */
+ /* TODO - verify that it is either Token-text or 0x00
+ * and flag with warning if invalid */
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "%s: %s", str, val_str);
+ s = g_strdup_printf("; %s=%s", str, val_str);
+ }
+ /* TODO - check if we can insert a searchable field in the
+ * protocol tree for the untyped parameter case */
+ DebugLog(("parameter() - Untyped: %s\n", s));
+ proto_item_append_string(ti, s);
+ DebugLog(("Freeing s\n"));
+ g_free(s);
+ DebugLog(("Freeing val_str\n"));
+ g_free( (gpointer) val_str);
+ DebugLog(("Done!\n"));
+ } else { /* Try integer value */
+ DebugLog(("Trying integer parameter value.\n"));
+ get_integer_value (val,tvb,offset,val_len,ok);
+ if (ok) { /* Also found a valid integer parameter value: val */
+ offset += val_len;
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "%s: %u", str, val);
+ s = g_strdup_printf("; %s=%u", str, val);
+ proto_item_append_string(ti, s);
+ DebugLog(("parameter() - Untyped: %s\n", s));
+ g_free(s);
+ /* TODO - check if we can insert a searchable field in the
+ * protocol tree for the untyped parameter case */
+ } else { /* Error: neither token-text not Integer-value */
+ DebugLog(("Invalid untyped parameter value!\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text (tree, tvb, start, offset - start,
+ "<Error: Invalid untyped parameter definition>");
+ offset = start + len; /* Skip to end of buffer */
+ }
+ }
+ g_free(str);
+ }
+ DebugLog(("parameter() - Untyped - End\n"));
+ return offset;
+ }
+ /*
+ * Else: Typed parameter
+ */
+ DebugLog(("parameter() - Typed - Start\n"));
+ get_integer_value (type,tvb,start,type_len,ok);
+ if (!ok) {
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text (tree, tvb, start, offset - start,
+ "<Error: Invalid typed parameter definition>");
+ return (start + len); /* Skip to end of buffer */
+ }
+ offset += type_len;
+ /* Now offset points to the parameter value */
+ DebugLog(("Typed parameter = 0x%02x\n", type));
+ switch (type) {
+ case 0x01: /* WSP 1.1 encoding - Charset: Well-known-charset */
+ get_integer_value(val, tvb, offset, val_len, ok);
+ if (ok) {
+ val_str = val_to_str_ext(val, &vals_character_sets_ext,
+ "<Unknown character set Identifier 0x%X>");
+ proto_tree_add_string(tree, hf_parameter_charset,
+ tvb, start, type_len + val_len, val_str);
+ str = g_strdup_printf("; charset=%s", val_str);
+ proto_item_append_string(ti, str);
+ g_free(str);
+ offset += val_len;
+ } else {
+ proto_tree_add_text (tree, tvb, start, offset,
+ InvalidParameterValue("Charset", "Integer-value"));
+ offset = start + len; /* Skip to end of buffer */
+ }
+ break;
+
+ case 0x03: /* WSP 1.1 encoding - Type: Integer-value */
+ get_integer_value (val,tvb,offset,val_len,ok);
+ if (ok) {
+ proto_tree_add_uint (tree, hf_wsp_parameter_type,
+ tvb, start, type_len + val_len, val);
+ s = g_strdup_printf("; Type=%u", val);
+ proto_item_append_string (ti, s);
+ g_free(s);
+ offset += val_len;
+ } else {
+ proto_tree_add_text (tree, tvb, start, offset,
+ InvalidParameterValue("Type", "Integer-value"));
+ offset = start + len; /* Skip to end of buffer */
+ }
+ break;
+
+ case 0x05: /* WSP 1.1 encoding - Name: Text-string */
+ parameter_text(hf_wsp_parameter_name, "name",
+ "Name (WSP 1.1 encoding)", "Text-string");
+ break;
+ case 0x17: /* WSP 1.4 encoding - Name: Text-value */
+ parameter_text_value(hf_wsp_parameter_name, "name",
+ "Name (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x06: /* WSP 1.1 encoding - Filename: Text-string */
+ parameter_text(hf_wsp_parameter_filename, "filename",
+ "Filename (WSP 1.1 encoding)", "Text-string");
+ break;
+ case 0x18: /* WSP 1.4 encoding - Filename: Text-value */
+ parameter_text_value(hf_wsp_parameter_filename, "filename",
+ "Filename (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x09: /* WSP 1.2 encoding - Type (special): Constrained-encoding */
+ /* This is similar to the Content-Type header decoding,
+ * but it is much simpler:
+ * Constrained-encoding = Short-integer | Extension-media
+ * Extension-media = *TEXT <Octet 0>
+ */
+ get_extension_media(val_str,tvb,offset,val_len,ok);
+ if (ok) { /* Extension-media */
+ offset += val_len;
+ } else {
+ get_short_integer(val,tvb,offset,val_len,ok);
+ if (ok) {
+ offset += val_len;
+ val_str = val_to_str_ext(val, &vals_content_types_ext,
+ "(Unknown content type identifier 0x%X)");
+ } /* Else: invalid parameter value */
+ }
+ if (ok) {
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_string (tree, hf_wsp_parameter_upart_type,
+ tvb, start, offset - start, val_str);
+ str = g_strdup_printf("; type=%s", val_str);
+ proto_item_append_string(ti, str);
+ g_free(str);
+ } else { /* Invalid parameter value */
+ proto_tree_add_text (tree, tvb, start, len,
+ InvalidParameterValue("Type",
+ "Constrained-encoding"));
+ offset = start + len; /* Skip the parameters */
+ }
+ break;
+
+ case 0x0A: /* WSP 1.2 encoding - Start: Text-string */
+ parameter_text(hf_wsp_parameter_start, "start",
+ "Start (WSP 1.2 encoding)", "Text-string");
+ break;
+ case 0x19: /* WSP 1.4 encoding - Start (with multipart/related): Text-value */
+ parameter_text_value(hf_wsp_parameter_start, "start",
+ "Start (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x0B: /* WSP 1.2 encoding - Start-info: Text-string */
+ parameter_text(hf_wsp_parameter_start_info, "start-info",
+ "Start-info (WSP 1.2 encoding)", "Text-string");
+ break;
+ case 0x1A: /* WSP 1.4 encoding - Start-info (with multipart/related): Text-value */
+ parameter_text_value(hf_wsp_parameter_start_info, "start-info",
+ "Start-info (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x0C: /* WSP 1.3 encoding - Comment: Text-string */
+ parameter_text(hf_wsp_parameter_comment, "comment",
+ "Comment (WSP 1.3 encoding)", "Text-string");
+ break;
+ case 0x1B: /* WSP 1.4 encoding - Comment: Text-value */
+ parameter_text_value(hf_wsp_parameter_comment, "comment",
+ "Comment (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x0D: /* WSP 1.3 encoding - Domain: Text-string */
+ parameter_text(hf_wsp_parameter_domain, "domain",
+ "Domain (WSP 1.3 encoding)", "Text-string");
+ break;
+ case 0x1C: /* WSP 1.4 encoding - Domain: Text-value */
+ parameter_text_value(hf_wsp_parameter_domain, "domain",
+ "Domain (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x0F: /* WSP 1.3 encoding - Path: Text-string */
+ parameter_text(hf_wsp_parameter_path, "path",
+ "Path (WSP 1.3 encoding)", "Text-string");
+ break;
+ case 0x1D: /* WSP 1.4 encoding - Path: Text-value */
+ parameter_text_value(hf_wsp_parameter_path, "path",
+ "Path (WSP 1.4 encoding)", "Text-value");
+ break;
+
+ case 0x11: /* WSP 1.4 encoding - SEC: Short-integer (OCTET) */
+ peek = tvb_get_guint8 (tvb, start+1);
+ if (peek & 0x80) { /* Valid Short-integer */
+ peek &= 0x7F;
+ proto_tree_add_uint (tree, hf_wsp_parameter_sec,
+ tvb, start, 2, peek);
+ str = (gchar *) val_to_str_ext_const(peek, &vals_wsp_parameter_sec_ext, "Undefined");
+ s = g_strdup_printf("; SEC=%s", str);
+ proto_item_append_string (ti, s);
+ g_free(s);
+ offset++;
+ } else { /* Error */
+ proto_tree_add_text (tree, tvb, start, len,
+ InvalidParameterValue("SEC", "Short-integer"));
+ offset = start + len; /* Skip to end of buffer */
+ }
+ break;
+
+ case 0x12: /* WSP 1.4 encoding - MAC: Text-value */
+ parameter_text_value(hf_wsp_parameter_mac, "MAC",
+ "MAC", "Text-value");
+ break;
+
+ case 0x02: /* WSP 1.1 encoding - Level: Version-value */
+ get_version_value(val,str,tvb,offset,val_len,ok);
+ if (ok) {
+ proto_tree_add_string (tree, hf_wsp_parameter_level,
+ tvb, start, type_len + val_len, str);
+ s = g_strdup_printf("; level=%s", str);
+ proto_item_append_string (ti, s);
+ g_free(s);
+ offset += val_len;
+ } else {
+ proto_tree_add_text (tree, tvb, start, len,
+ InvalidParameterValue("Level", "Version-value"));
+ offset = start + len; /* Skip to end of buffer */
+ }
+ break;
+
+ case 0x00: /* WSP 1.1 encoding - Q: Q-value */
+ offset = parameter_value_q(tree, ti, tvb, offset);
+ break;
+
+ case 0x16: /* WSP 1.4 encoding - Size: Integer-value */
+ get_integer_value (val,tvb,offset,val_len,ok);
+ if (ok) {
+ proto_tree_add_uint (tree, hf_wsp_parameter_size,
+ tvb, start, type_len + val_len, val);
+ s = g_strdup_printf("; Size=%u", val);
+ proto_item_append_string (ti, s);
+ g_free(s);
+ offset += val_len;
+ } else {
+ proto_tree_add_text (tree, tvb, start, offset,
+ InvalidParameterValue("Size", "Integer-value"));
+ offset = start + len; /* Skip to end of buffer */
+ }
+ break;
+
+ /*
+ * TODO
+ */
+
+ case 0x07: /* WSP 1.1 encoding - Differences: Field-name */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Differences - decoding stopped");
+ break;
+
+ case 0x08: /* WSP 1.1 encoding - Padding: Short-integer */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Padding - decoding stopped");
+ break;
+
+ case 0x0E: /* WSP 1.3 encoding - Max-Age: Delta-seconds-value */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Max-Age - decoding stopped");
+ break;
+
+ case 0x10: /* WSP 1.3 encoding - Secure: No-value */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Secure - decoding stopped");
+ break;
+
+ case 0x13: /* WSP 1.4 encoding - Creation-date: Date-value */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Creation-Date - decoding stopped");
+ break;
+
+ case 0x14: /* WSP 1.4 encoding - Modification-date: Date-value */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Modification-Date - decoding stopped");
+ break;
+
+ case 0x15: /* WSP 1.4 encoding - Read-date: Date-value */
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter Read-Date - decoding stopped");
+ break;
+
+ default:
+ DebugLog(("Skipping remaining parameters from here\n"));
+ tvb_ensure_bytes_exist(tvb, start, offset - start);
+ proto_tree_add_text(tree, tvb, start, offset - start,
+ "Undecoded parameter type 0x%02x - decoding stopped",
+ type);
+ offset = start + len; /* Skip the parameters */
+ break;
+ }
+ DebugLog(("parameter() - Typed - End\n"));
+ return offset;
}
@@ -4440,31 +4435,31 @@ parameter (proto_tree *tree, proto_item *ti, tvbuff_t *tvb, int start, int len)
static int
parameter_value_q (proto_tree *tree, proto_item *ti, tvbuff_t *tvb, int start)
{
- int offset = start;
- guint32 val = 0, val_len;
- gchar *str = NULL, *s = NULL;
- guint8 ok;
-
- get_uintvar_integer (val, tvb, offset, val_len, ok);
- if (ok && (val < 1100)) {
- if (val <= 100) { /* Q-value in 0.01 steps */
- str = g_strdup_printf("0.%02u", val - 1);
- } else { /* Q-value in 0.001 steps */
- str = g_strdup_printf("0.%03u", val - 100);
- }
- s = g_strdup_printf("; q=%s", str);
- proto_item_append_string (ti, s);
- g_free(s);
- proto_tree_add_string (tree, hf_parameter_q,
- tvb, start, val_len, str);
- g_free(str);
- offset += val_len;
- } else {
- proto_tree_add_text (tree, tvb, start, offset,
- InvalidParameterValue("Q", "Q-value"));
- offset += val_len;
- }
- return offset;
+ int offset = start;
+ guint32 val = 0, val_len;
+ gchar *str = NULL, *s = NULL;
+ guint8 ok;
+
+ get_uintvar_integer (val, tvb, offset, val_len, ok);
+ if (ok && (val < 1100)) {
+ if (val <= 100) { /* Q-value in 0.01 steps */
+ str = g_strdup_printf("0.%02u", val - 1);
+ } else { /* Q-value in 0.001 steps */
+ str = g_strdup_printf("0.%03u", val - 100);
+ }
+ s = g_strdup_printf("; q=%s", str);
+ proto_item_append_string (ti, s);
+ g_free(s);
+ proto_tree_add_string (tree, hf_parameter_q,
+ tvb, start, val_len, str);
+ g_free(str);
+ offset += val_len;
+ } else {
+ proto_tree_add_text (tree, tvb, start, offset,
+ InvalidParameterValue("Q", "Q-value"));
+ offset += val_len;
+ }
+ return offset;
}
@@ -4482,213 +4477,213 @@ static void
dissect_redirect(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, dissector_handle_t dissector_handle)
{
- guint8 flags;
- proto_item *ti;
- proto_tree *addresses_tree = NULL;
- proto_tree *addr_tree = NULL;
- proto_tree *flags_tree;
- guint8 bearer_type;
- guint8 address_flags_len;
- int address_len;
- proto_tree *address_flags_tree;
- guint16 port_num;
- guint32 address_ipv4;
- struct e_in6_addr address_ipv6;
- address redir_address;
- conversation_t *conv;
- guint32 idx = 0; /* Address index */
- guint32 address_record_len; /* Length of the entire address record */
-
- /*
- * Redirect flags.
- */
- flags = tvb_get_guint8 (tvb, offset);
- if (tree) {
- ti = proto_tree_add_uint (tree, hf_wsp_redirect_flags,
- tvb, offset, 1, flags);
- flags_tree = proto_item_add_subtree (ti, ett_redirect_flags);
- proto_tree_add_boolean (flags_tree, hf_wsp_redirect_permanent,
- tvb, offset, 1, flags);
- proto_tree_add_boolean (flags_tree, hf_wsp_redirect_reuse_security_session,
- tvb, offset, 1, flags);
- }
- offset++;
-
- /*
- * Redirect addresses.
- */
- if (tree) {
- ti = proto_tree_add_item(tree, hf_redirect_addresses,
- tvb, 0, -1, bo_little_endian);
- addresses_tree = proto_item_add_subtree(ti, ett_addresses);
- }
-
- while (tvb_reported_length_remaining (tvb, offset) > 0) {
- idx++;
- /*
- * Read a single address at a time.
- */
- address_flags_len = tvb_get_guint8 (tvb, offset);
- address_len = address_flags_len & ADDRESS_LEN;
- address_record_len = address_len
- + (address_flags_len & BEARER_TYPE_INCLUDED ? 1 : 0)
- + (address_flags_len & PORT_NUMBER_INCLUDED ? 2 : 0)
- ;
-
- if (tree) {
- ti = proto_tree_add_uint(addresses_tree, hf_address_entry,
- tvb, offset, 1 + address_record_len, idx);
- addr_tree = proto_item_add_subtree(ti, ett_address);
-
- ti = proto_tree_add_uint (addr_tree, hf_address_flags_length,
- tvb, offset, 1, address_flags_len);
- address_flags_tree = proto_item_add_subtree (ti, ett_address_flags);
- proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included,
- tvb, offset, 1, address_flags_len);
- proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included,
- tvb, offset, 1, address_flags_len);
- proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len,
- tvb, offset, 1, address_flags_len);
- }
- offset++;
- if (address_flags_len & BEARER_TYPE_INCLUDED) {
- bearer_type = tvb_get_guint8 (tvb, offset);
- if (tree) {
- proto_tree_add_uint (addr_tree, hf_address_bearer_type,
- tvb, offset, 1, bearer_type);
- }
- offset++;
- } else {
- bearer_type = 0x00; /* XXX */
- }
- if (address_flags_len & PORT_NUMBER_INCLUDED) {
- port_num = tvb_get_ntohs (tvb, offset);
- if (tree) {
- proto_tree_add_uint (addr_tree, hf_address_port_num,
- tvb, offset, 2, port_num);
- }
- offset += 2;
- } else {
- /*
- * Redirecting to the same server port number as was
- * being used, i.e. the source port number of this
- * redirect.
- */
- port_num = pinfo->srcport;
- }
- if (!(address_flags_len & BEARER_TYPE_INCLUDED)) {
- /*
- * We don't have the bearer type in the message,
- * so we don't know the address type.
- * (It's the same bearer type as the original
- * connection.)
- */
- goto unknown_address_type;
- }
-
- /*
- * We know the bearer type, so we know the address type.
- */
- switch (bearer_type) {
-
- case BT_IPv4:
- case BT_IS_95_CSD:
- case BT_IS_95_PACKET_DATA:
- case BT_ANSI_136_CSD:
- case BT_ANSI_136_PACKET_DATA:
- case BT_GSM_CSD:
- case BT_GSM_GPRS:
- case BT_GSM_USSD_IPv4:
- case BT_AMPS_CDPD:
- case BT_PDC_CSD:
- case BT_PDC_PACKET_DATA:
- case BT_IDEN_CSD:
- case BT_IDEN_PACKET_DATA:
- case BT_PHS_CSD:
- case BT_TETRA_PACKET_DATA:
- /*
- * IPv4.
- */
- if (address_len != 4) {
- /*
- * Say what?
- */
- goto unknown_address_type;
- }
- address_ipv4 = tvb_get_ipv4(tvb, offset);
- if (tree) {
- proto_tree_add_ipv4 (addr_tree,
- hf_address_ipv4_addr,
- tvb, offset, 4, address_ipv4);
- }
-
- /*
- * Create a conversation so that the
- * redirected session will be dissected
- * as WAP.
- */
- redir_address.type = AT_IPv4;
- redir_address.len = 4;
- redir_address.data = (const guint8 *)&address_ipv4;
- /* Find a conversation based on redir_address and pinfo->dst */
- conv = find_conversation(pinfo->fd->num, &redir_address, &pinfo->dst,
- PT_UDP, port_num, 0, NO_PORT_B);
- if (conv == NULL) { /* This conversation does not exist yet */
- conv = conversation_new(pinfo->fd->num, &redir_address,
- &pinfo->dst, PT_UDP, port_num, 0, NO_PORT2);
- }
- /* Apply WSP dissection to the conversation */
- conversation_set_dissector(conv, dissector_handle);
- break;
-
- case BT_IPv6:
- /*
- * IPv6.
- */
- if (address_len != 16) {
- /*
- * Say what?
- */
- goto unknown_address_type;
- }
- tvb_get_ipv6(tvb, offset, &address_ipv6);
- if (tree) {
- proto_tree_add_ipv6 (addr_tree,
- hf_address_ipv6_addr,
- tvb, offset, 16, (guint8 *)&address_ipv6);
- }
-
- /*
- * Create a conversation so that the
- * redirected session will be dissected
- * as WAP.
- */
- redir_address.type = AT_IPv6;
- redir_address.len = 16;
- redir_address.data = (const guint8 *)&address_ipv6;
- /* Find a conversation based on redir_address and pinfo->dst */
- conv = find_conversation(pinfo->fd->num, &redir_address, &pinfo->dst,
- PT_UDP, port_num, 0, NO_PORT_B);
- if (conv == NULL) { /* This conversation does not exist yet */
- conv = conversation_new(pinfo->fd->num, &redir_address,
- &pinfo->dst, PT_UDP, port_num, 0, NO_PORT2);
- }
- /* Apply WSP dissection to the conversation */
- conversation_set_dissector(conv, dissector_handle);
- break;
-
- unknown_address_type:
- default:
- if (address_len != 0) {
- if (tree) {
- proto_tree_add_item (addr_tree, hf_address_addr,
- tvb, offset, address_len, bo_little_endian);
- }
- }
- break;
- }
- offset += address_len;
- } /* while */
+ guint8 flags;
+ proto_item *ti;
+ proto_tree *addresses_tree = NULL;
+ proto_tree *addr_tree = NULL;
+ proto_tree *flags_tree;
+ guint8 bearer_type;
+ guint8 address_flags_len;
+ int address_len;
+ proto_tree *address_flags_tree;
+ guint16 port_num;
+ guint32 address_ipv4;
+ struct e_in6_addr address_ipv6;
+ address redir_address;
+ conversation_t *conv;
+ guint32 idx = 0; /* Address index */
+ guint32 address_record_len; /* Length of the entire address record */
+
+ /*
+ * Redirect flags.
+ */
+ flags = tvb_get_guint8 (tvb, offset);
+ if (tree) {
+ ti = proto_tree_add_uint (tree, hf_wsp_redirect_flags,
+ tvb, offset, 1, flags);
+ flags_tree = proto_item_add_subtree (ti, ett_redirect_flags);
+ proto_tree_add_boolean (flags_tree, hf_wsp_redirect_permanent,
+ tvb, offset, 1, flags);
+ proto_tree_add_boolean (flags_tree, hf_wsp_redirect_reuse_security_session,
+ tvb, offset, 1, flags);
+ }
+ offset++;
+
+ /*
+ * Redirect addresses.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, hf_redirect_addresses,
+ tvb, 0, -1, bo_little_endian);
+ addresses_tree = proto_item_add_subtree(ti, ett_addresses);
+ }
+
+ while (tvb_reported_length_remaining (tvb, offset) > 0) {
+ idx++;
+ /*
+ * Read a single address at a time.
+ */
+ address_flags_len = tvb_get_guint8 (tvb, offset);
+ address_len = address_flags_len & ADDRESS_LEN;
+ address_record_len = address_len
+ + (address_flags_len & BEARER_TYPE_INCLUDED ? 1 : 0)
+ + (address_flags_len & PORT_NUMBER_INCLUDED ? 2 : 0)
+ ;
+
+ if (tree) {
+ ti = proto_tree_add_uint(addresses_tree, hf_address_entry,
+ tvb, offset, 1 + address_record_len, idx);
+ addr_tree = proto_item_add_subtree(ti, ett_address);
+
+ ti = proto_tree_add_uint (addr_tree, hf_address_flags_length,
+ tvb, offset, 1, address_flags_len);
+ address_flags_tree = proto_item_add_subtree (ti, ett_address_flags);
+ proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included,
+ tvb, offset, 1, address_flags_len);
+ proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included,
+ tvb, offset, 1, address_flags_len);
+ proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len,
+ tvb, offset, 1, address_flags_len);
+ }
+ offset++;
+ if (address_flags_len & BEARER_TYPE_INCLUDED) {
+ bearer_type = tvb_get_guint8 (tvb, offset);
+ if (tree) {
+ proto_tree_add_uint (addr_tree, hf_address_bearer_type,
+ tvb, offset, 1, bearer_type);
+ }
+ offset++;
+ } else {
+ bearer_type = 0x00; /* XXX */
+ }
+ if (address_flags_len & PORT_NUMBER_INCLUDED) {
+ port_num = tvb_get_ntohs (tvb, offset);
+ if (tree) {
+ proto_tree_add_uint (addr_tree, hf_address_port_num,
+ tvb, offset, 2, port_num);
+ }
+ offset += 2;
+ } else {
+ /*
+ * Redirecting to the same server port number as was
+ * being used, i.e. the source port number of this
+ * redirect.
+ */
+ port_num = pinfo->srcport;
+ }
+ if (!(address_flags_len & BEARER_TYPE_INCLUDED)) {
+ /*
+ * We don't have the bearer type in the message,
+ * so we don't know the address type.
+ * (It's the same bearer type as the original
+ * connection.)
+ */
+ goto unknown_address_type;
+ }
+
+ /*
+ * We know the bearer type, so we know the address type.
+ */
+ switch (bearer_type) {
+
+ case BT_IPv4:
+ case BT_IS_95_CSD:
+ case BT_IS_95_PACKET_DATA:
+ case BT_ANSI_136_CSD:
+ case BT_ANSI_136_PACKET_DATA:
+ case BT_GSM_CSD:
+ case BT_GSM_GPRS:
+ case BT_GSM_USSD_IPv4:
+ case BT_AMPS_CDPD:
+ case BT_PDC_CSD:
+ case BT_PDC_PACKET_DATA:
+ case BT_IDEN_CSD:
+ case BT_IDEN_PACKET_DATA:
+ case BT_PHS_CSD:
+ case BT_TETRA_PACKET_DATA:
+ /*
+ * IPv4.
+ */
+ if (address_len != 4) {
+ /*
+ * Say what?
+ */
+ goto unknown_address_type;
+ }
+ address_ipv4 = tvb_get_ipv4(tvb, offset);
+ if (tree) {
+ proto_tree_add_ipv4 (addr_tree,
+ hf_address_ipv4_addr,
+ tvb, offset, 4, address_ipv4);
+ }
+
+ /*
+ * Create a conversation so that the
+ * redirected session will be dissected
+ * as WAP.
+ */
+ redir_address.type = AT_IPv4;
+ redir_address.len = 4;
+ redir_address.data = (const guint8 *)&address_ipv4;
+ /* Find a conversation based on redir_address and pinfo->dst */
+ conv = find_conversation(pinfo->fd->num, &redir_address, &pinfo->dst,
+ PT_UDP, port_num, 0, NO_PORT_B);
+ if (conv == NULL) { /* This conversation does not exist yet */
+ conv = conversation_new(pinfo->fd->num, &redir_address,
+ &pinfo->dst, PT_UDP, port_num, 0, NO_PORT2);
+ }
+ /* Apply WSP dissection to the conversation */
+ conversation_set_dissector(conv, dissector_handle);
+ break;
+
+ case BT_IPv6:
+ /*
+ * IPv6.
+ */
+ if (address_len != 16) {
+ /*
+ * Say what?
+ */
+ goto unknown_address_type;
+ }
+ tvb_get_ipv6(tvb, offset, &address_ipv6);
+ if (tree) {
+ proto_tree_add_ipv6 (addr_tree,
+ hf_address_ipv6_addr,
+ tvb, offset, 16, (guint8 *)&address_ipv6);
+ }
+
+ /*
+ * Create a conversation so that the
+ * redirected session will be dissected
+ * as WAP.
+ */
+ redir_address.type = AT_IPv6;
+ redir_address.len = 16;
+ redir_address.data = (const guint8 *)&address_ipv6;
+ /* Find a conversation based on redir_address and pinfo->dst */
+ conv = find_conversation(pinfo->fd->num, &redir_address, &pinfo->dst,
+ PT_UDP, port_num, 0, NO_PORT_B);
+ if (conv == NULL) { /* This conversation does not exist yet */
+ conv = conversation_new(pinfo->fd->num, &redir_address,
+ &pinfo->dst, PT_UDP, port_num, 0, NO_PORT2);
+ }
+ /* Apply WSP dissection to the conversation */
+ conversation_set_dissector(conv, dissector_handle);
+ break;
+
+ unknown_address_type:
+ default:
+ if (address_len != 0) {
+ if (tree) {
+ proto_tree_add_item (addr_tree, hf_address_addr,
+ tvb, offset, address_len, bo_little_endian);
+ }
+ }
+ break;
+ }
+ offset += address_len;
+ } /* while */
}
/* Add addresses to the protocol tree.
@@ -4697,158 +4692,158 @@ dissect_redirect(tvbuff_t *tvb, int offset, packet_info *pinfo,
static void
add_addresses(proto_tree *tree, tvbuff_t *tvb, int hf)
{
- proto_item *ti;
- proto_tree *addresses_tree;
- proto_tree *addr_tree;
- guint8 bearer_type;
- guint8 address_flags_len;
- int address_len;
- proto_tree *address_flags_tree;
- guint16 port_num;
- guint32 address_ipv4;
- struct e_in6_addr address_ipv6;
- guint32 tvb_len = tvb_length(tvb);
- guint32 offset = 0;
- guint32 idx = 0; /* Address index */
- guint32 address_record_len; /* Length of the entire address record */
-
- /* Skip needless processing */
- if (! tree)
- return;
- if (offset >= tvb_len)
- return;
-
- /*
- * Addresses.
- */
- ti = proto_tree_add_item(tree, hf, tvb, 0, -1, bo_little_endian);
- addresses_tree = proto_item_add_subtree(ti, ett_addresses);
-
- while (offset < tvb_len) {
- idx++;
- /*
- * Read a single address at a time.
- */
- address_flags_len = tvb_get_guint8 (tvb, offset);
- address_len = address_flags_len & ADDRESS_LEN;
- address_record_len = address_len
- + (address_flags_len & BEARER_TYPE_INCLUDED ? 1 : 0)
- + (address_flags_len & PORT_NUMBER_INCLUDED ? 2 : 0)
- ;
-
- ti = proto_tree_add_uint(addresses_tree, hf_address_entry,
- tvb, offset, 1 + address_record_len, idx);
- addr_tree = proto_item_add_subtree(ti, ett_address);
-
- ti = proto_tree_add_uint (addr_tree, hf_address_flags_length,
- tvb, offset, 1, address_flags_len);
- address_flags_tree = proto_item_add_subtree (ti, ett_address_flags);
- proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included,
- tvb, offset, 1, address_flags_len);
- proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included,
- tvb, offset, 1, address_flags_len);
- proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len,
- tvb, offset, 1, address_flags_len);
- offset++;
- if (address_flags_len & BEARER_TYPE_INCLUDED) {
- bearer_type = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint (addr_tree, hf_address_bearer_type,
- tvb, offset, 1, bearer_type);
- offset++;
- } else {
- bearer_type = 0x00; /* XXX */
- }
- if (address_flags_len & PORT_NUMBER_INCLUDED) {
- port_num = tvb_get_ntohs (tvb, offset);
- proto_tree_add_uint (addr_tree, hf_address_port_num,
- tvb, offset, 2, port_num);
- offset += 2;
- } else {
- /*
- * Redirecting to the same server port number as was
- * being used, i.e. the source port number of this
- * redirect.
- */
- port_num = 0;
- }
- if (!(address_flags_len & BEARER_TYPE_INCLUDED)) {
- /*
- * We don't have the bearer type in the message,
- * so we don't know the address type.
- * (It's the same bearer type as the original
- * connection.)
- */
- goto unknown_address_type;
- }
-
- /*
- * We know the bearer type, so we know the address type.
- */
- switch (bearer_type) {
-
- case BT_IPv4:
- case BT_IS_95_CSD:
- case BT_IS_95_PACKET_DATA:
- case BT_ANSI_136_CSD:
- case BT_ANSI_136_PACKET_DATA:
- case BT_GSM_CSD:
- case BT_GSM_GPRS:
- case BT_GSM_USSD_IPv4:
- case BT_AMPS_CDPD:
- case BT_PDC_CSD:
- case BT_PDC_PACKET_DATA:
- case BT_IDEN_CSD:
- case BT_IDEN_PACKET_DATA:
- case BT_PHS_CSD:
- case BT_TETRA_PACKET_DATA:
- /*
- * IPv4.
- */
- if (address_len != 4) {
- /*
- * Say what?
- */
- goto unknown_address_type;
- }
- address_ipv4 = tvb_get_ipv4(tvb, offset);
- proto_tree_add_ipv4 (addr_tree, hf_address_ipv4_addr,
- tvb, offset, 4, address_ipv4);
- break;
-
- case BT_IPv6:
- /*
- * IPv6.
- */
- if (address_len != 16) {
- /*
- * Say what?
- */
- goto unknown_address_type;
- }
- tvb_get_ipv6(tvb, offset, &address_ipv6);
- proto_tree_add_ipv6 (addr_tree, hf_address_ipv6_addr,
- tvb, offset, 16, (guint8 *)&address_ipv6);
- break;
-
- unknown_address_type:
- default:
- if (address_len != 0) {
- proto_tree_add_item (addr_tree, hf_address_addr,
- tvb, offset, address_len, bo_little_endian);
- }
- break;
- }
- offset += address_len;
- } /* while */
+ proto_item *ti;
+ proto_tree *addresses_tree;
+ proto_tree *addr_tree;
+ guint8 bearer_type;
+ guint8 address_flags_len;
+ int address_len;
+ proto_tree *address_flags_tree;
+ guint16 port_num;
+ guint32 address_ipv4;
+ struct e_in6_addr address_ipv6;
+ guint32 tvb_len = tvb_length(tvb);
+ guint32 offset = 0;
+ guint32 idx = 0; /* Address index */
+ guint32 address_record_len; /* Length of the entire address record */
+
+ /* Skip needless processing */
+ if (! tree)
+ return;
+ if (offset >= tvb_len)
+ return;
+
+ /*
+ * Addresses.
+ */
+ ti = proto_tree_add_item(tree, hf, tvb, 0, -1, bo_little_endian);
+ addresses_tree = proto_item_add_subtree(ti, ett_addresses);
+
+ while (offset < tvb_len) {
+ idx++;
+ /*
+ * Read a single address at a time.
+ */
+ address_flags_len = tvb_get_guint8 (tvb, offset);
+ address_len = address_flags_len & ADDRESS_LEN;
+ address_record_len = address_len
+ + (address_flags_len & BEARER_TYPE_INCLUDED ? 1 : 0)
+ + (address_flags_len & PORT_NUMBER_INCLUDED ? 2 : 0)
+ ;
+
+ ti = proto_tree_add_uint(addresses_tree, hf_address_entry,
+ tvb, offset, 1 + address_record_len, idx);
+ addr_tree = proto_item_add_subtree(ti, ett_address);
+
+ ti = proto_tree_add_uint (addr_tree, hf_address_flags_length,
+ tvb, offset, 1, address_flags_len);
+ address_flags_tree = proto_item_add_subtree (ti, ett_address_flags);
+ proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included,
+ tvb, offset, 1, address_flags_len);
+ proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included,
+ tvb, offset, 1, address_flags_len);
+ proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len,
+ tvb, offset, 1, address_flags_len);
+ offset++;
+ if (address_flags_len & BEARER_TYPE_INCLUDED) {
+ bearer_type = tvb_get_guint8 (tvb, offset);
+ proto_tree_add_uint (addr_tree, hf_address_bearer_type,
+ tvb, offset, 1, bearer_type);
+ offset++;
+ } else {
+ bearer_type = 0x00; /* XXX */
+ }
+ if (address_flags_len & PORT_NUMBER_INCLUDED) {
+ port_num = tvb_get_ntohs (tvb, offset);
+ proto_tree_add_uint (addr_tree, hf_address_port_num,
+ tvb, offset, 2, port_num);
+ offset += 2;
+ } else {
+ /*
+ * Redirecting to the same server port number as was
+ * being used, i.e. the source port number of this
+ * redirect.
+ */
+ port_num = 0;
+ }
+ if (!(address_flags_len & BEARER_TYPE_INCLUDED)) {
+ /*
+ * We don't have the bearer type in the message,
+ * so we don't know the address type.
+ * (It's the same bearer type as the original
+ * connection.)
+ */
+ goto unknown_address_type;
+ }
+
+ /*
+ * We know the bearer type, so we know the address type.
+ */
+ switch (bearer_type) {
+
+ case BT_IPv4:
+ case BT_IS_95_CSD:
+ case BT_IS_95_PACKET_DATA:
+ case BT_ANSI_136_CSD:
+ case BT_ANSI_136_PACKET_DATA:
+ case BT_GSM_CSD:
+ case BT_GSM_GPRS:
+ case BT_GSM_USSD_IPv4:
+ case BT_AMPS_CDPD:
+ case BT_PDC_CSD:
+ case BT_PDC_PACKET_DATA:
+ case BT_IDEN_CSD:
+ case BT_IDEN_PACKET_DATA:
+ case BT_PHS_CSD:
+ case BT_TETRA_PACKET_DATA:
+ /*
+ * IPv4.
+ */
+ if (address_len != 4) {
+ /*
+ * Say what?
+ */
+ goto unknown_address_type;
+ }
+ address_ipv4 = tvb_get_ipv4(tvb, offset);
+ proto_tree_add_ipv4 (addr_tree, hf_address_ipv4_addr,
+ tvb, offset, 4, address_ipv4);
+ break;
+
+ case BT_IPv6:
+ /*
+ * IPv6.
+ */
+ if (address_len != 16) {
+ /*
+ * Say what?
+ */
+ goto unknown_address_type;
+ }
+ tvb_get_ipv6(tvb, offset, &address_ipv6);
+ proto_tree_add_ipv6 (addr_tree, hf_address_ipv6_addr,
+ tvb, offset, 16, (guint8 *)&address_ipv6);
+ break;
+
+ unknown_address_type:
+ default:
+ if (address_len != 0) {
+ proto_tree_add_item (addr_tree, hf_address_addr,
+ tvb, offset, address_len, bo_little_endian);
+ }
+ break;
+ }
+ offset += address_len;
+ } /* while */
}
static const value_string vals_sir_protocol_options[] = {
- { 0, "OTA-HTTP, no CPITag present" },
- { 1, "OTA-HTTP, CPITag present" },
- /* 2--255 are reserved */
- /* 256--16383 are available for private WINA registration */
+ { 0, "OTA-HTTP, no CPITag present" },
+ { 1, "OTA-HTTP, CPITag present" },
+ /* 2--255 are reserved */
+ /* 256--16383 are available for private WINA registration */
- { 0x00, NULL }
+ { 0x00, NULL }
};
/* Dissect a Session Initiation Request.
@@ -4859,579 +4854,579 @@ static const value_string vals_sir_protocol_options[] = {
static void
dissect_sir(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 version;
- guint32 val_len;
- guint32 len;
- guint32 offset = 0;
- guint32 i;
- tvbuff_t *tmp_tvb;
- proto_tree *subtree;
- proto_item *ti;
-
- if (check_col(pinfo->cinfo, COL_INFO))
- { /* Append status code to INFO column */
- col_append_str(pinfo->cinfo, COL_INFO,
- ": WAP Session Initiation Request");
- }
-
- /* The remainder of the code adds items to the protocol tree */
- if (! tree)
- return;
-
- ti = proto_tree_add_item(tree, hf_sir_section,
- tvb, 0, -1, bo_little_endian);
- subtree = proto_item_add_subtree(ti, ett_sir);
-
- /* Version */
- version = tvb_get_guint8(tvb, 0);
- proto_tree_add_uint(subtree, hf_sir_version,
- tvb, 0, 1, version);
-
- /* Length of Application-Id headers list */
- val_len = tvb_get_guintvar(tvb, 1, &len);
- proto_tree_add_uint(subtree, hf_sir_app_id_list_len,
- tvb, 1, len, val_len);
- offset = 1 + len;
- /* Application-Id headers */
- tmp_tvb = tvb_new_subset(tvb, offset, val_len, val_len);
- add_headers (subtree, tmp_tvb, hf_sir_app_id_list, pinfo);
- offset += val_len;
-
- /* Length of WSP contact points list */
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_wsp_contact_points_len,
- tvb, offset, len, val_len);
- offset += len;
- /* WSP contact point list */
- tmp_tvb = tvb_new_subset (tvb, offset, val_len, val_len);
- add_addresses(subtree, tmp_tvb, hf_sir_wsp_contact_points);
-
- /* End of version 0 SIR content */
- if (version == 0)
- return;
-
- offset += val_len;
-
- /* Length of non-WSP contact points list */
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_contact_points_len,
- tvb, offset, len, val_len);
- offset += len;
- /* Non-WSP contact point list */
- tmp_tvb = tvb_new_subset (tvb, offset, val_len, val_len);
- add_addresses(subtree, tmp_tvb, hf_sir_contact_points);
-
- offset += val_len;
-
- /* Number of entries in the Protocol Options list */
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_protocol_options_len,
- tvb, offset, len, val_len);
- offset += len;
- /* Protocol Options list.
- * Each protocol option is encoded as a guintvar */
- for (i = 0; i < val_len; i++) {
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_protocol_options,
- tvb, offset, len, val_len);
- offset += len;
- }
-
- /* Length of ProvURL */
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_prov_url_len,
- tvb, offset, len, val_len);
- offset += len;
- /* ProvURL */
- tvb_ensure_bytes_exist(tvb, offset, val_len);
- ti = proto_tree_add_item (tree, hf_sir_prov_url,
- tvb, offset, val_len, bo_little_endian);
- offset += val_len;
-
- /* Number of entries in the CPITag list */
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_uint(subtree, hf_sir_cpi_tag_len,
- tvb, offset, len, val_len);
- offset += len;
- /* CPITag list.
- * Each CPITag is encoded as 4 octets of opaque data.
- * In OTA-HTTP, it is conveyed in the X-Wap-CPITag header
- * but with a Base64 encoding of the 4 bytes. */
- for (i = 0; i < val_len; i++) {
- val_len = tvb_get_guintvar(tvb, offset, &len);
- proto_tree_add_item(subtree, hf_sir_cpi_tag,
- tvb, offset, 4, val_len);
- offset += 4;
- }
+ guint8 version;
+ guint32 val_len;
+ guint32 len;
+ guint32 offset = 0;
+ guint32 i;
+ tvbuff_t *tmp_tvb;
+ proto_tree *subtree;
+ proto_item *ti;
+
+ if (check_col(pinfo->cinfo, COL_INFO))
+ { /* Append status code to INFO column */
+ col_append_str(pinfo->cinfo, COL_INFO,
+ ": WAP Session Initiation Request");
+ }
+
+ /* The remainder of the code adds items to the protocol tree */
+ if (! tree)
+ return;
+
+ ti = proto_tree_add_item(tree, hf_sir_section,
+ tvb, 0, -1, bo_little_endian);
+ subtree = proto_item_add_subtree(ti, ett_sir);
+
+ /* Version */
+ version = tvb_get_guint8(tvb, 0);
+ proto_tree_add_uint(subtree, hf_sir_version,
+ tvb, 0, 1, version);
+
+ /* Length of Application-Id headers list */
+ val_len = tvb_get_guintvar(tvb, 1, &len);
+ proto_tree_add_uint(subtree, hf_sir_app_id_list_len,
+ tvb, 1, len, val_len);
+ offset = 1 + len;
+ /* Application-Id headers */
+ tmp_tvb = tvb_new_subset(tvb, offset, val_len, val_len);
+ add_headers (subtree, tmp_tvb, hf_sir_app_id_list, pinfo);
+ offset += val_len;
+
+ /* Length of WSP contact points list */
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_wsp_contact_points_len,
+ tvb, offset, len, val_len);
+ offset += len;
+ /* WSP contact point list */
+ tmp_tvb = tvb_new_subset (tvb, offset, val_len, val_len);
+ add_addresses(subtree, tmp_tvb, hf_sir_wsp_contact_points);
+
+ /* End of version 0 SIR content */
+ if (version == 0)
+ return;
+
+ offset += val_len;
+
+ /* Length of non-WSP contact points list */
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_contact_points_len,
+ tvb, offset, len, val_len);
+ offset += len;
+ /* Non-WSP contact point list */
+ tmp_tvb = tvb_new_subset (tvb, offset, val_len, val_len);
+ add_addresses(subtree, tmp_tvb, hf_sir_contact_points);
+
+ offset += val_len;
+
+ /* Number of entries in the Protocol Options list */
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_protocol_options_len,
+ tvb, offset, len, val_len);
+ offset += len;
+ /* Protocol Options list.
+ * Each protocol option is encoded as a guintvar */
+ for (i = 0; i < val_len; i++) {
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_protocol_options,
+ tvb, offset, len, val_len);
+ offset += len;
+ }
+
+ /* Length of ProvURL */
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_prov_url_len,
+ tvb, offset, len, val_len);
+ offset += len;
+ /* ProvURL */
+ tvb_ensure_bytes_exist(tvb, offset, val_len);
+ ti = proto_tree_add_item (tree, hf_sir_prov_url,
+ tvb, offset, val_len, bo_little_endian);
+ offset += val_len;
+
+ /* Number of entries in the CPITag list */
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_uint(subtree, hf_sir_cpi_tag_len,
+ tvb, offset, len, val_len);
+ offset += len;
+ /* CPITag list.
+ * Each CPITag is encoded as 4 octets of opaque data.
+ * In OTA-HTTP, it is conveyed in the X-Wap-CPITag header
+ * but with a Base64 encoding of the 4 bytes. */
+ for (i = 0; i < val_len; i++) {
+ val_len = tvb_get_guintvar(tvb, offset, &len);
+ proto_tree_add_item(subtree, hf_sir_cpi_tag,
+ tvb, offset, 4, val_len);
+ offset += 4;
+ }
}
static void
dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
dissector_handle_t dissector_handle, gboolean is_connectionless)
{
- int offset = 0;
-
- guint8 pdut;
- guint count = 0;
- guint value = 0;
- guint uriLength = 0;
- guint uriStart = 0;
- guint capabilityLength = 0;
- guint capabilityStart = 0;
- guint headersLength = 0;
- guint headerLength = 0;
- guint headerStart = 0;
- guint nextOffset = 0;
- guint contentTypeStart = 0;
- guint contentType = 0;
- const char *contentTypeStr;
- tvbuff_t *tmp_tvb;
- gboolean found_match;
+ int offset = 0;
+
+ guint8 pdut;
+ guint count = 0;
+ guint value = 0;
+ guint uriLength = 0;
+ guint uriStart = 0;
+ guint capabilityLength = 0;
+ guint capabilityStart = 0;
+ guint headersLength = 0;
+ guint headerLength = 0;
+ guint headerStart = 0;
+ guint nextOffset = 0;
+ guint contentTypeStart = 0;
+ guint contentType = 0;
+ const char *contentTypeStr;
+ tvbuff_t *tmp_tvb;
+ gboolean found_match;
/* Set up structures we will need to add the protocol subtree and manage it */
- proto_item *proto_ti = NULL; /* for the proto entry */
- proto_tree *wsp_tree = NULL;
+ proto_item *proto_ti = NULL; /* for the proto entry */
+ proto_tree *wsp_tree = NULL;
- wsp_info_value_t *stat_info;
- stat_info = (wsp_info_value_t *)ep_alloc(sizeof(wsp_info_value_t));
- stat_info->status_code = 0;
+ wsp_info_value_t *stat_info;
+ stat_info = (wsp_info_value_t *)ep_alloc(sizeof(wsp_info_value_t));
+ stat_info->status_code = 0;
/* This field shows up as the "Info" column in the display; you should make
it, if possible, summarize what's in the packet, so that a user looking
at the list of packets can tell what type of packet it is. */
- /* Connection-less mode has a TID first */
- if (is_connectionless)
- {
- offset++; /* Skip the 1-byte Transaction ID */
- };
-
- /* Find the PDU type */
- pdut = tvb_get_guint8 (tvb, offset);
-
- /* Develop the string to put in the Info column */
- if (check_col(pinfo->cinfo, COL_INFO))
- {
- col_append_fstr(pinfo->cinfo, COL_INFO, "WSP %s (0x%02x)",
- val_to_str_ext (pdut, &wsp_vals_pdu_type_ext, "Unknown PDU type (0x%02x)"),
- pdut);
- };
-
- /* In the interest of speed, if "tree" is NULL, don't do any work not
- * necessary to generate protocol tree items. */
- if (tree) {
-
- /* We use proto_item_append_string() in a number of places.
- * It does not work with the TRY_TO_FAKE_THIS_ITEM speed
- * optimization, so we have to disable that one and become
- * "slow" by pretending that the tree is "visible".
- *
- * This code must be present for the MMSE dissector which
- * calls this function; otherwise, this causes a
- * dissector_assert [bug 492] (proto_item_append_string()
- * issue), and similar problems occur in other places.
- */
- proto_tree_set_visible(tree, TRUE);
-
- proto_ti = proto_tree_add_item(tree, proto_wsp,
- tvb, 0, -1, bo_little_endian);
- wsp_tree = proto_item_add_subtree(proto_ti, ett_wsp);
- proto_item_append_text(proto_ti, ", Method: %s (0x%02x)",
- val_to_str_ext (pdut, &wsp_vals_pdu_type_ext, "Unknown (0x%02x)"),
- pdut);
-
- /* Add common items: only TID and PDU Type */
-
- /* If this is connectionless, then the TID Field is always first */
- if (is_connectionless)
- {
- proto_tree_add_item (wsp_tree, hf_wsp_header_tid,
- tvb, 0, 1, bo_little_endian);
- }
- proto_tree_add_item( wsp_tree, hf_wsp_header_pdu_type,
- tvb, offset, 1, bo_little_endian);
- }
- offset++;
-
- /* Map extended methods to the main method now the Column info has been
- * written; this way we can dissect the extended method PDUs. */
- if ((pdut >= 0x50) && (pdut <= 0x5F)) /* Extended GET --> GET */
- pdut = WSP_PDU_GET;
- else if ((pdut >= 0x70) && (pdut <= 0x7F)) /* Extended POST --> POST */
- pdut = WSP_PDU_POST;
-
- switch (pdut)
- {
- case WSP_PDU_CONNECT:
- case WSP_PDU_CONNECTREPLY:
- case WSP_PDU_RESUME:
- if (tree) {
- if (pdut == WSP_PDU_CONNECT)
- {
- proto_tree_add_item (wsp_tree, hf_wsp_version_major,
- tvb, offset, 1, bo_little_endian);
- proto_tree_add_item (wsp_tree, hf_wsp_version_minor,
- tvb, offset, 1, bo_little_endian);
- {
- guint8 ver = tvb_get_guint8(tvb, offset);
- proto_item_append_text(proto_ti, ", Version: %u.%u",
- ver >> 4, ver & 0x0F);
- }
- offset++;
- } else {
- count = 0; /* Initialise count */
- value = tvb_get_guintvar (tvb, offset, &count);
- proto_tree_add_uint (wsp_tree,
- hf_wsp_server_session_id,
- tvb, offset, count, value);
- proto_item_append_text(proto_ti, ", Session ID: %u", value);
- offset += count;
- }
- capabilityStart = offset;
- count = 0; /* Initialise count */
- capabilityLength = tvb_get_guintvar (tvb, offset, &count);
- offset += count;
- proto_tree_add_uint (wsp_tree, hf_capabilities_length,
- tvb, capabilityStart, count, capabilityLength);
-
- if (pdut != WSP_PDU_RESUME)
- {
- count = 0; /* Initialise count */
- headerLength = tvb_get_guintvar (tvb, offset, &count);
- proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
- tvb, offset, count, headerLength);
- offset += count;
- capabilityStart = offset;
- headerStart = capabilityStart + capabilityLength;
- } else {
- /* Resume computes the headerlength
- * by remaining bytes */
- capabilityStart = offset;
- headerStart = capabilityStart + capabilityLength;
- headerLength = tvb_reported_length_remaining (tvb,
- headerStart);
- }
- if (capabilityLength > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, offset,
- capabilityLength, capabilityLength);
- add_capabilities (wsp_tree, tmp_tvb, pdut);
- offset += capabilityLength;
- }
-
- if (headerLength > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, offset,
- headerLength, headerLength);
- add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- } /* if (tree) */
-
- break;
-
- case WSP_PDU_REDIRECT:
- dissect_redirect(tvb, offset, pinfo, wsp_tree, dissector_handle);
- break;
-
- case WSP_PDU_DISCONNECT:
- case WSP_PDU_SUSPEND:
- if (tree) {
- count = 0; /* Initialise count */
- value = tvb_get_guintvar (tvb, offset, &count);
- proto_tree_add_uint (wsp_tree,
- hf_wsp_server_session_id,
- tvb, offset, count, value);
- proto_item_append_text(proto_ti, ", Session ID: %u", value);
- }
- break;
-
- case WSP_PDU_GET:
- case WSP_PDU_OPTIONS:
- case WSP_PDU_HEAD:
- case WSP_PDU_DELETE:
- case WSP_PDU_TRACE:
- count = 0; /* Initialise count */
- /* Length of URI and size of URILen field */
- value = tvb_get_guintvar (tvb, offset, &count);
- nextOffset = offset + count;
- add_uri (wsp_tree, pinfo, tvb, offset, nextOffset, proto_ti);
- if (tree) {
- offset += value + count; /* VERIFY */
- tmp_tvb = tvb_new_subset_remaining (tvb, offset);
- add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- break;
-
- case WSP_PDU_POST:
- case WSP_PDU_PUT:
- uriStart = offset;
- count = 0; /* Initialise count */
- uriLength = tvb_get_guintvar (tvb, offset, &count);
- headerStart = uriStart+count;
- count = 0; /* Initialise count */
- headersLength = tvb_get_guintvar (tvb, headerStart, &count);
- offset = headerStart + count;
-
- add_uri (wsp_tree, pinfo, tvb, uriStart, offset, proto_ti);
- offset += uriLength;
-
- if (tree)
- proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
- tvb, headerStart, count, headersLength);
-
- /* Stop processing POST PDU if length of headers is zero;
- * this should not happen as we expect at least Content-Type. */
- if (headersLength == 0)
- break;
-
- contentTypeStart = offset;
- nextOffset = add_content_type (wsp_tree,
- tvb, offset, &contentType, &contentTypeStr);
-
- if (tree) {
- /* Add content type to protocol summary line */
- if (contentTypeStr) {
- proto_item_append_text(proto_ti, ", Content-Type: %s",
- contentTypeStr);
- } else {
- proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
- contentType);
- }
-
- /* Add headers subtree that will hold the headers fields */
- /* Runs from nextOffset for
- * headersLength - (length of content-type field) */
- headerLength = headersLength - (nextOffset - contentTypeStart);
- if (headerLength > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, nextOffset,
- headerLength, headerLength);
- add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- /* XXX - offset is no longer used after this point */
- offset = nextOffset+headerLength;
- }
- /* WSP_PDU_POST data - First check whether a subdissector exists
- * for the content type */
- if (tvb_reported_length_remaining(tvb,
- headerStart + count + uriLength + headersLength) > 0)
- {
- tmp_tvb = tvb_new_subset_remaining (tvb,
- headerStart + count + uriLength + headersLength);
- /*
- * Try finding a dissector for the content
- * first, then fallback.
- */
- found_match = FALSE;
- if (contentTypeStr) {
- /*
- * Content type is a string.
- */
- found_match = dissector_try_string(media_type_table,
- contentTypeStr, tmp_tvb, pinfo, tree);
- }
- if (! found_match) {
- if (! dissector_try_heuristic(heur_subdissector_list,
- tmp_tvb, pinfo, tree)) {
- guint8* save_private_data = pinfo->private_data;
-
- pinfo->match_string = contentTypeStr;
- pinfo->private_data = NULL; /* TODO: parameters */
- call_dissector(media_handle, tmp_tvb, pinfo, tree);
- pinfo->private_data = save_private_data;
+ /* Connection-less mode has a TID first */
+ if (is_connectionless)
+ {
+ offset++; /* Skip the 1-byte Transaction ID */
+ };
+
+ /* Find the PDU type */
+ pdut = tvb_get_guint8 (tvb, offset);
+
+ /* Develop the string to put in the Info column */
+ if (check_col(pinfo->cinfo, COL_INFO))
+ {
+ col_append_fstr(pinfo->cinfo, COL_INFO, "WSP %s (0x%02x)",
+ val_to_str_ext (pdut, &wsp_vals_pdu_type_ext, "Unknown PDU type (0x%02x)"),
+ pdut);
+ };
+
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items. */
+ if (tree) {
+
+ /* We use proto_item_append_string() in a number of places.
+ * It does not work with the TRY_TO_FAKE_THIS_ITEM speed
+ * optimization, so we have to disable that one and become
+ * "slow" by pretending that the tree is "visible".
+ *
+ * This code must be present for the MMSE dissector which
+ * calls this function; otherwise, this causes a
+ * dissector_assert [bug 492] (proto_item_append_string()
+ * issue), and similar problems occur in other places.
+ */
+ proto_tree_set_visible(tree, TRUE);
+
+ proto_ti = proto_tree_add_item(tree, proto_wsp,
+ tvb, 0, -1, bo_little_endian);
+ wsp_tree = proto_item_add_subtree(proto_ti, ett_wsp);
+ proto_item_append_text(proto_ti, ", Method: %s (0x%02x)",
+ val_to_str_ext (pdut, &wsp_vals_pdu_type_ext, "Unknown (0x%02x)"),
+ pdut);
+
+ /* Add common items: only TID and PDU Type */
+
+ /* If this is connectionless, then the TID Field is always first */
+ if (is_connectionless)
+ {
+ proto_tree_add_item (wsp_tree, hf_wsp_header_tid,
+ tvb, 0, 1, bo_little_endian);
+ }
+ proto_tree_add_item( wsp_tree, hf_wsp_header_pdu_type,
+ tvb, offset, 1, bo_little_endian);
+ }
+ offset++;
+
+ /* Map extended methods to the main method now the Column info has been
+ * written; this way we can dissect the extended method PDUs. */
+ if ((pdut >= 0x50) && (pdut <= 0x5F)) /* Extended GET --> GET */
+ pdut = WSP_PDU_GET;
+ else if ((pdut >= 0x70) && (pdut <= 0x7F)) /* Extended POST --> POST */
+ pdut = WSP_PDU_POST;
+
+ switch (pdut)
+ {
+ case WSP_PDU_CONNECT:
+ case WSP_PDU_CONNECTREPLY:
+ case WSP_PDU_RESUME:
+ if (tree) {
+ if (pdut == WSP_PDU_CONNECT)
+ {
+ proto_tree_add_item (wsp_tree, hf_wsp_version_major,
+ tvb, offset, 1, bo_little_endian);
+ proto_tree_add_item (wsp_tree, hf_wsp_version_minor,
+ tvb, offset, 1, bo_little_endian);
+ {
+ guint8 ver = tvb_get_guint8(tvb, offset);
+ proto_item_append_text(proto_ti, ", Version: %u.%u",
+ ver >> 4, ver & 0x0F);
+ }
+ offset++;
+ } else {
+ count = 0; /* Initialise count */
+ value = tvb_get_guintvar (tvb, offset, &count);
+ proto_tree_add_uint (wsp_tree,
+ hf_wsp_server_session_id,
+ tvb, offset, count, value);
+ proto_item_append_text(proto_ti, ", Session ID: %u", value);
+ offset += count;
+ }
+ capabilityStart = offset;
+ count = 0; /* Initialise count */
+ capabilityLength = tvb_get_guintvar (tvb, offset, &count);
+ offset += count;
+ proto_tree_add_uint (wsp_tree, hf_capabilities_length,
+ tvb, capabilityStart, count, capabilityLength);
+
+ if (pdut != WSP_PDU_RESUME)
+ {
+ count = 0; /* Initialise count */
+ headerLength = tvb_get_guintvar (tvb, offset, &count);
+ proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
+ tvb, offset, count, headerLength);
+ offset += count;
+ capabilityStart = offset;
+ headerStart = capabilityStart + capabilityLength;
+ } else {
+ /* Resume computes the headerlength
+ * by remaining bytes */
+ capabilityStart = offset;
+ headerStart = capabilityStart + capabilityLength;
+ headerLength = tvb_reported_length_remaining (tvb,
+ headerStart);
+ }
+ if (capabilityLength > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, offset,
+ capabilityLength, capabilityLength);
+ add_capabilities (wsp_tree, tmp_tvb, pdut);
+ offset += capabilityLength;
+ }
+
+ if (headerLength > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, offset,
+ headerLength, headerLength);
+ add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ } /* if (tree) */
+
+ break;
+
+ case WSP_PDU_REDIRECT:
+ dissect_redirect(tvb, offset, pinfo, wsp_tree, dissector_handle);
+ break;
+
+ case WSP_PDU_DISCONNECT:
+ case WSP_PDU_SUSPEND:
+ if (tree) {
+ count = 0; /* Initialise count */
+ value = tvb_get_guintvar (tvb, offset, &count);
+ proto_tree_add_uint (wsp_tree,
+ hf_wsp_server_session_id,
+ tvb, offset, count, value);
+ proto_item_append_text(proto_ti, ", Session ID: %u", value);
+ }
+ break;
+
+ case WSP_PDU_GET:
+ case WSP_PDU_OPTIONS:
+ case WSP_PDU_HEAD:
+ case WSP_PDU_DELETE:
+ case WSP_PDU_TRACE:
+ count = 0; /* Initialise count */
+ /* Length of URI and size of URILen field */
+ value = tvb_get_guintvar (tvb, offset, &count);
+ nextOffset = offset + count;
+ add_uri (wsp_tree, pinfo, tvb, offset, nextOffset, proto_ti);
+ if (tree) {
+ offset += value + count; /* VERIFY */
+ tmp_tvb = tvb_new_subset_remaining (tvb, offset);
+ add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ break;
+
+ case WSP_PDU_POST:
+ case WSP_PDU_PUT:
+ uriStart = offset;
+ count = 0; /* Initialise count */
+ uriLength = tvb_get_guintvar (tvb, offset, &count);
+ headerStart = uriStart+count;
+ count = 0; /* Initialise count */
+ headersLength = tvb_get_guintvar (tvb, headerStart, &count);
+ offset = headerStart + count;
+
+ add_uri (wsp_tree, pinfo, tvb, uriStart, offset, proto_ti);
+ offset += uriLength;
+
+ if (tree)
+ proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
+ tvb, headerStart, count, headersLength);
+
+ /* Stop processing POST PDU if length of headers is zero;
+ * this should not happen as we expect at least Content-Type. */
+ if (headersLength == 0)
+ break;
+
+ contentTypeStart = offset;
+ nextOffset = add_content_type (wsp_tree,
+ tvb, offset, &contentType, &contentTypeStr);
+
+ if (tree) {
+ /* Add content type to protocol summary line */
+ if (contentTypeStr) {
+ proto_item_append_text(proto_ti, ", Content-Type: %s",
+ contentTypeStr);
+ } else {
+ proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
+ contentType);
+ }
+
+ /* Add headers subtree that will hold the headers fields */
+ /* Runs from nextOffset for
+ * headersLength - (length of content-type field) */
+ headerLength = headersLength - (nextOffset - contentTypeStart);
+ if (headerLength > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, nextOffset,
+ headerLength, headerLength);
+ add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ /* XXX - offset is no longer used after this point */
+ offset = nextOffset+headerLength;
+ }
+ /* WSP_PDU_POST data - First check whether a subdissector exists
+ * for the content type */
+ if (tvb_reported_length_remaining(tvb,
+ headerStart + count + uriLength + headersLength) > 0)
+ {
+ tmp_tvb = tvb_new_subset_remaining (tvb,
+ headerStart + count + uriLength + headersLength);
+ /*
+ * Try finding a dissector for the content
+ * first, then fallback.
+ */
+ found_match = FALSE;
+ if (contentTypeStr) {
+ /*
+ * Content type is a string.
+ */
+ found_match = dissector_try_string(media_type_table,
+ contentTypeStr, tmp_tvb, pinfo, tree);
+ }
+ if (! found_match) {
+ if (! dissector_try_heuristic(heur_subdissector_list,
+ tmp_tvb, pinfo, tree)) {
+ guint8* save_private_data = pinfo->private_data;
+
+ pinfo->match_string = contentTypeStr;
+ pinfo->private_data = NULL; /* TODO: parameters */
+ call_dissector(media_handle, tmp_tvb, pinfo, tree);
+ pinfo->private_data = save_private_data;
#if 0
- if (tree) /* Only display if needed */
- add_post_data (wsp_tree, tmp_tvb,
- contentType, contentTypeStr, pinfo);
+ if (tree) /* Only display if needed */
+ add_post_data (wsp_tree, tmp_tvb,
+ contentType, contentTypeStr, pinfo);
#endif
- }
- }
- }
- break;
-
- case WSP_PDU_REPLY:
- count = 0; /* Initialise count */
- headersLength = tvb_get_guintvar (tvb, offset+1, &count);
- headerStart = offset + count + 1;
- {
- guint8 reply_status = tvb_get_guint8(tvb, offset);
- const char *reply_status_str;
-
- reply_status_str = val_to_str_ext_const (reply_status, &wsp_vals_status_ext, "(Unknown response status)");
- if (tree) {
- proto_tree_add_item (wsp_tree, hf_wsp_header_status,
- tvb, offset, 1, bo_little_endian);
- proto_item_append_text(proto_ti, ", Status: %s (0x%02x)",
- reply_status_str, reply_status);
- }
- stat_info->status_code = (gint) reply_status;
- if (check_col(pinfo->cinfo, COL_INFO))
- { /* Append status code to INFO column */
- col_append_fstr(pinfo->cinfo, COL_INFO,
- ": %s (0x%02x)",
- reply_status_str, reply_status);
- }
- }
- nextOffset = offset + 1 + count;
- if (tree)
- proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
- tvb, offset + 1, count, headersLength);
-
- if (headersLength == 0)
- break;
-
- contentTypeStart = nextOffset;
- nextOffset = add_content_type (wsp_tree, tvb,
- nextOffset, &contentType, &contentTypeStr);
-
- if (tree) {
- /* Add content type to protocol summary line */
- if (contentTypeStr) {
- proto_item_append_text(proto_ti, ", Content-Type: %s",
- contentTypeStr);
- } else {
- proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
- contentType);
- }
-
- /* Add headers subtree that will hold the headers fields */
- /* Runs from nextOffset for
- * headersLength - (length of Content-Type field) */
- headerLength = headersLength - (nextOffset - contentTypeStart);
- if (headerLength > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, nextOffset,
- headerLength, headerLength);
- add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- /* XXX - offset is no longer used after this point */
- offset += count+headersLength+1;
- }
- /* WSP_PDU_REPLY data - First check whether a subdissector exists
- * for the content type */
- if (tvb_reported_length_remaining(tvb, headerStart + headersLength)
- > 0)
- {
- tmp_tvb = tvb_new_subset_remaining (tvb, headerStart + headersLength);
- /*
- * Try finding a dissector for the content
- * first, then fallback.
- */
- found_match = FALSE;
- if (contentTypeStr) {
- /*
- * Content type is a string.
- */
- found_match = dissector_try_string(media_type_table,
- contentTypeStr, tmp_tvb, pinfo, tree);
- }
- if (! found_match) {
- if (! dissector_try_heuristic(heur_subdissector_list,
- tmp_tvb, pinfo, tree)) {
- guint8* save_private_data = pinfo->private_data;
-
- pinfo->match_string = contentTypeStr;
- pinfo->private_data = NULL; /* TODO: parameters */
- call_dissector(media_handle, tmp_tvb, pinfo, tree);
- pinfo->private_data = save_private_data;
+ }
+ }
+ }
+ break;
+
+ case WSP_PDU_REPLY:
+ count = 0; /* Initialise count */
+ headersLength = tvb_get_guintvar (tvb, offset+1, &count);
+ headerStart = offset + count + 1;
+ {
+ guint8 reply_status = tvb_get_guint8(tvb, offset);
+ const char *reply_status_str;
+
+ reply_status_str = val_to_str_ext_const (reply_status, &wsp_vals_status_ext, "(Unknown response status)");
+ if (tree) {
+ proto_tree_add_item (wsp_tree, hf_wsp_header_status,
+ tvb, offset, 1, bo_little_endian);
+ proto_item_append_text(proto_ti, ", Status: %s (0x%02x)",
+ reply_status_str, reply_status);
+ }
+ stat_info->status_code = (gint) reply_status;
+ if (check_col(pinfo->cinfo, COL_INFO))
+ { /* Append status code to INFO column */
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ ": %s (0x%02x)",
+ reply_status_str, reply_status);
+ }
+ }
+ nextOffset = offset + 1 + count;
+ if (tree)
+ proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
+ tvb, offset + 1, count, headersLength);
+
+ if (headersLength == 0)
+ break;
+
+ contentTypeStart = nextOffset;
+ nextOffset = add_content_type (wsp_tree, tvb,
+ nextOffset, &contentType, &contentTypeStr);
+
+ if (tree) {
+ /* Add content type to protocol summary line */
+ if (contentTypeStr) {
+ proto_item_append_text(proto_ti, ", Content-Type: %s",
+ contentTypeStr);
+ } else {
+ proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
+ contentType);
+ }
+
+ /* Add headers subtree that will hold the headers fields */
+ /* Runs from nextOffset for
+ * headersLength - (length of Content-Type field) */
+ headerLength = headersLength - (nextOffset - contentTypeStart);
+ if (headerLength > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, nextOffset,
+ headerLength, headerLength);
+ add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ /* XXX - offset is no longer used after this point */
+ offset += count+headersLength+1;
+ }
+ /* WSP_PDU_REPLY data - First check whether a subdissector exists
+ * for the content type */
+ if (tvb_reported_length_remaining(tvb, headerStart + headersLength)
+ > 0)
+ {
+ tmp_tvb = tvb_new_subset_remaining (tvb, headerStart + headersLength);
+ /*
+ * Try finding a dissector for the content
+ * first, then fallback.
+ */
+ found_match = FALSE;
+ if (contentTypeStr) {
+ /*
+ * Content type is a string.
+ */
+ found_match = dissector_try_string(media_type_table,
+ contentTypeStr, tmp_tvb, pinfo, tree);
+ }
+ if (! found_match) {
+ if (! dissector_try_heuristic(heur_subdissector_list,
+ tmp_tvb, pinfo, tree)) {
+ guint8* save_private_data = pinfo->private_data;
+
+ pinfo->match_string = contentTypeStr;
+ pinfo->private_data = NULL; /* TODO: parameters */
+ call_dissector(media_handle, tmp_tvb, pinfo, tree);
+ pinfo->private_data = save_private_data;
#if 0
- if (tree) / * Only display if needed * /
- proto_tree_add_item (wsp_tree,
- hf_wsp_reply_data,
- tmp_tvb, 0, -1, bo_little_endian);
+ if (tree) / * Only display if needed * /
+ proto_tree_add_item (wsp_tree,
+ hf_wsp_reply_data,
+ tmp_tvb, 0, -1, bo_little_endian);
#endif
- }
- }
- }
- break;
-
- case WSP_PDU_PUSH:
- case WSP_PDU_CONFIRMEDPUSH:
- count = 0; /* Initialise count */
- headersLength = tvb_get_guintvar (tvb, offset, &count);
- headerStart = offset + count;
-
- if (tree)
- proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
- tvb, offset, count, headersLength);
-
- if (headersLength == 0)
- break;
-
- offset += count;
- contentTypeStart = offset;
- nextOffset = add_content_type (wsp_tree,
- tvb, offset, &contentType, &contentTypeStr);
-
- if (tree) {
- /* Add content type to protocol summary line */
- if (contentTypeStr) {
- proto_item_append_text(proto_ti, ", Content-Type: %s",
- contentTypeStr);
- } else {
- proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
- contentType);
- }
-
- /* Add headers subtree that will hold the headers fields */
- /* Runs from nextOffset for
- * headersLength-(length of Content-Type field) */
- headerLength = headersLength-(nextOffset-contentTypeStart);
- if (headerLength > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, nextOffset,
- headerLength, headerLength);
- add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- /* XXX - offset is no longer used after this point */
- offset += headersLength;
- }
- /* WSP_PDU_PUSH data - First check whether a subdissector exists
- * for the content type */
- if (tvb_reported_length_remaining(tvb, headerStart + headersLength)
- > 0)
- {
- tmp_tvb = tvb_new_subset_remaining (tvb, headerStart + headersLength);
- /*
- * Try finding a dissector for the content
- * first, then fallback.
- */
- found_match = FALSE;
- if (contentTypeStr) {
- /*
- * Content type is a string.
- */
- /*
- if (g_ascii_strcasecmp(contentTypeStr, "application/vnd.wap.sia") == 0) {
- dissect_sir(tree, tmp_tvb);
- } else
- */
- found_match = dissector_try_string(media_type_table,
- contentTypeStr, tmp_tvb, pinfo, tree);
- }
- if (! found_match) {
- if (! dissector_try_heuristic(heur_subdissector_list,
- tmp_tvb, pinfo, tree)) {
- guint8* save_private_data = pinfo->private_data;
-
- pinfo->match_string = contentTypeStr;
- pinfo->private_data = NULL; /* TODO: parameters */
- call_dissector(media_handle, tmp_tvb, pinfo, tree);
- pinfo->private_data = save_private_data;
+ }
+ }
+ }
+ break;
+
+ case WSP_PDU_PUSH:
+ case WSP_PDU_CONFIRMEDPUSH:
+ count = 0; /* Initialise count */
+ headersLength = tvb_get_guintvar (tvb, offset, &count);
+ headerStart = offset + count;
+
+ if (tree)
+ proto_tree_add_uint (wsp_tree, hf_wsp_header_length,
+ tvb, offset, count, headersLength);
+
+ if (headersLength == 0)
+ break;
+
+ offset += count;
+ contentTypeStart = offset;
+ nextOffset = add_content_type (wsp_tree,
+ tvb, offset, &contentType, &contentTypeStr);
+
+ if (tree) {
+ /* Add content type to protocol summary line */
+ if (contentTypeStr) {
+ proto_item_append_text(proto_ti, ", Content-Type: %s",
+ contentTypeStr);
+ } else {
+ proto_item_append_text(proto_ti, ", Content-Type: 0x%X",
+ contentType);
+ }
+
+ /* Add headers subtree that will hold the headers fields */
+ /* Runs from nextOffset for
+ * headersLength-(length of Content-Type field) */
+ headerLength = headersLength-(nextOffset-contentTypeStart);
+ if (headerLength > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, nextOffset,
+ headerLength, headerLength);
+ add_headers (wsp_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ /* XXX - offset is no longer used after this point */
+ offset += headersLength;
+ }
+ /* WSP_PDU_PUSH data - First check whether a subdissector exists
+ * for the content type */
+ if (tvb_reported_length_remaining(tvb, headerStart + headersLength)
+ > 0)
+ {
+ tmp_tvb = tvb_new_subset_remaining (tvb, headerStart + headersLength);
+ /*
+ * Try finding a dissector for the content
+ * first, then fallback.
+ */
+ found_match = FALSE;
+ if (contentTypeStr) {
+ /*
+ * Content type is a string.
+ */
+ /*
+ if (g_ascii_strcasecmp(contentTypeStr, "application/vnd.wap.sia") == 0) {
+ dissect_sir(tree, tmp_tvb);
+ } else
+ */
+ found_match = dissector_try_string(media_type_table,
+ contentTypeStr, tmp_tvb, pinfo, tree);
+ }
+ if (! found_match) {
+ if (! dissector_try_heuristic(heur_subdissector_list,
+ tmp_tvb, pinfo, tree)) {
+ guint8* save_private_data = pinfo->private_data;
+
+ pinfo->match_string = contentTypeStr;
+ pinfo->private_data = NULL; /* TODO: parameters */
+ call_dissector(media_handle, tmp_tvb, pinfo, tree);
+ pinfo->private_data = save_private_data;
#if 0
- if (tree) /* Only display if needed */
- proto_tree_add_item (wsp_tree,
- hf_wsp_push_data,
- tmp_tvb, 0, -1, bo_little_endian);
+ if (tree) /* Only display if needed */
+ proto_tree_add_item (wsp_tree,
+ hf_wsp_push_data,
+ tmp_tvb, 0, -1, bo_little_endian);
#endif
- }
- }
- }
- break;
-
- }
- stat_info->pdut = pdut;
- tap_queue_packet (wsp_tap, pinfo, stat_info);
+ }
+ }
+ }
+ break;
+
+ }
+ stat_info->pdut = pdut;
+ tap_queue_packet (wsp_tap, pinfo, stat_info);
}
@@ -5442,10 +5437,10 @@ dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
dissect_wsp_fromudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "WSP");
- col_clear(pinfo->cinfo, COL_INFO);
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "WSP");
+ col_clear(pinfo->cinfo, COL_INFO);
- dissect_wsp_common(tvb, pinfo, tree, wsp_fromudp_handle, TRUE);
+ dissect_wsp_common(tvb, pinfo, tree, wsp_fromudp_handle, TRUE);
}
@@ -5457,10 +5452,10 @@ dissect_wsp_fromudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_wsp_fromwap_co(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /*
- * XXX - what about WTLS->WTP->WSP?
- */
- dissect_wsp_common(tvb, pinfo, tree, wtp_fromudp_handle, FALSE);
+ /*
+ * XXX - what about WTLS->WTP->WSP?
+ */
+ dissect_wsp_common(tvb, pinfo, tree, wtp_fromudp_handle, FALSE);
}
@@ -5472,40 +5467,40 @@ dissect_wsp_fromwap_co(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
dissect_wsp_fromwap_cl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- /*
- * XXX - what about WTLS->WSP?
- */
- col_clear(pinfo->cinfo, COL_INFO);
- dissect_wsp_common(tvb, pinfo, tree, wtp_fromudp_handle, TRUE);
+ /*
+ * XXX - what about WTLS->WSP?
+ */
+ col_clear(pinfo->cinfo, COL_INFO);
+ dissect_wsp_common(tvb, pinfo, tree, wtp_fromudp_handle, TRUE);
}
static void
add_uri (proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb,
- guint URILenOffset, guint URIOffset, proto_item *proto_ti)
+ guint URILenOffset, guint URIOffset, proto_item *proto_ti)
{
- guint count = 0;
- guint uriLen = tvb_get_guintvar (tvb, URILenOffset, &count);
- gchar *str = NULL;
-
- if (tree)
- proto_tree_add_uint (tree, hf_wsp_header_uri_len,
- tvb, URILenOffset, count, uriLen);
-
- tvb_ensure_bytes_exist(tvb, URIOffset, uriLen);
- if (tree)
- proto_tree_add_item (tree, hf_wsp_header_uri,
- tvb, URIOffset, uriLen, bo_little_endian);
-
- str = tvb_format_text (tvb, URIOffset, uriLen);
- /* XXX - tvb_format_text() returns a pointer to a static text string
- * so please DO NOT attempt at g_free()ing it!
- */
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s", str);
- }
- if (proto_ti)
- proto_item_append_text(proto_ti, ", URI: %s", str);
+ guint count = 0;
+ guint uriLen = tvb_get_guintvar (tvb, URILenOffset, &count);
+ gchar *str = NULL;
+
+ if (tree)
+ proto_tree_add_uint (tree, hf_wsp_header_uri_len,
+ tvb, URILenOffset, count, uriLen);
+
+ tvb_ensure_bytes_exist(tvb, URIOffset, uriLen);
+ if (tree)
+ proto_tree_add_item (tree, hf_wsp_header_uri,
+ tvb, URIOffset, uriLen, bo_little_endian);
+
+ str = tvb_format_text (tvb, URIOffset, uriLen);
+ /* XXX - tvb_format_text() returns a pointer to a static text string
+ * so please DO NOT attempt at g_free()ing it!
+ */
+ if (check_col(pinfo->cinfo, COL_INFO)) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s", str);
+ }
+ if (proto_ti)
+ proto_item_append_text(proto_ti, ", URI: %s", str);
}
@@ -5514,530 +5509,530 @@ add_uri (proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb,
*/
enum {
- WSP_CAPA_CLIENT_SDU_SIZE = 0x00,
- WSP_CAPA_SERVER_SDU_SIZE,
- WSP_CAPA_PROTOCOL_OPTIONS,
- WSP_CAPA_METHOD_MOR,
- WSP_CAPA_PUSH_MOR,
- WSP_CAPA_EXTENDED_METHODS,
- WSP_CAPA_HEADER_CODE_PAGES,
- WSP_CAPA_ALIASES,
- WSP_CAPA_CLIENT_MESSAGE_SIZE,
- WSP_CAPA_SERVER_MESSAGE_SIZE
+ WSP_CAPA_CLIENT_SDU_SIZE = 0x00,
+ WSP_CAPA_SERVER_SDU_SIZE,
+ WSP_CAPA_PROTOCOL_OPTIONS,
+ WSP_CAPA_METHOD_MOR,
+ WSP_CAPA_PUSH_MOR,
+ WSP_CAPA_EXTENDED_METHODS,
+ WSP_CAPA_HEADER_CODE_PAGES,
+ WSP_CAPA_ALIASES,
+ WSP_CAPA_CLIENT_MESSAGE_SIZE,
+ WSP_CAPA_SERVER_MESSAGE_SIZE
};
static void
add_capabilities (proto_tree *tree, tvbuff_t *tvb, guint8 pdu_type)
{
- proto_tree *wsp_capabilities;
- proto_tree *capa_subtree;
- proto_item *ti;
- char *capaName, *str, *valStr;
- guint32 offset = 0;
- guint32 len = 0;
- guint32 capaStart = 0; /* Start offset of the capability */
- guint32 capaLen = 0; /* Length of the entire capability */
- guint32 capaValueLen = 0; /* Length of the capability value & type */
- guint32 tvb_len = tvb_reported_length(tvb);
- gboolean ok = FALSE;
- guint8 peek;
- guint32 value;
-
- if (tvb_len == 0) {
- DebugLog(("add_capabilities(): Capabilities = 0\n"));
- return;
- }
-
- DebugLog(("add_capabilities(): capabilities to process\n"));
-
- ti = proto_tree_add_item(tree, hf_capabilities_section,
- tvb, 0, tvb_len, bo_little_endian);
- wsp_capabilities = proto_item_add_subtree(ti, ett_capabilities);
-
- while (offset < tvb_len) {
- /*
- * WSP capabilities consist of:
- * - a guint32 length field,
- * - a capability identifier as Token-text or Short-integer,
- * - a capability-specific sequence of <length> octets.
- */
- capaStart = offset;
- /*
- * Now Offset points to the 1st byte of a capability field.
- * Get the length of the capability field
- */
- capaValueLen = tvb_get_guintvar(tvb, offset, &len);
- capaLen = capaValueLen + len;
- tvb_ensure_bytes_exist(tvb, offset, capaLen);
- offset += len;
- /*
- * Now offset points to the 1st byte of the capability type.
- * Get the capability identifier.
- */
- peek = tvb_get_guint8(tvb, offset);
- if (is_token_text(peek)) { /* Literal capability name */
- /* 1. Get the string from the tvb */
- get_token_text(capaName, tvb, offset, len, ok);
- if (! ok) {
- DebugLog(("add_capabilities(): expecting capability name as token_text "
- "at offset %u (1st char = 0x%02x)\n", offset, peek));
- return;
- }
- /* 2. Look up the string capability name */
- if (g_ascii_strcasecmp(capaName, "client-sdu-size") == 0) {
- peek = WSP_CAPA_CLIENT_SDU_SIZE;
- } else if (g_ascii_strcasecmp(capaName, "server-sdu-size") == 0) {
- peek = WSP_CAPA_SERVER_SDU_SIZE;
- } else if (g_ascii_strcasecmp(capaName, "protocol options") == 0) {
- peek = WSP_CAPA_PROTOCOL_OPTIONS;
- } else if (g_ascii_strcasecmp(capaName, "method-mor") == 0) {
- peek = WSP_CAPA_METHOD_MOR;
- } else if (g_ascii_strcasecmp(capaName, "push-mor") == 0) {
- peek = WSP_CAPA_PUSH_MOR;
- } else if (g_ascii_strcasecmp(capaName, "extended methods") == 0) {
- peek = WSP_CAPA_EXTENDED_METHODS;
- } else if (g_ascii_strcasecmp(capaName, "header code pages") == 0) {
- peek = WSP_CAPA_HEADER_CODE_PAGES;
- } else if (g_ascii_strcasecmp(capaName, "aliases") == 0) {
- peek = WSP_CAPA_ALIASES;
- } else if (g_ascii_strcasecmp(capaName, "client-message-size") == 0) {
- peek = WSP_CAPA_CLIENT_MESSAGE_SIZE;
- } else if (g_ascii_strcasecmp(capaName, "server-message-size") == 0) {
- peek = WSP_CAPA_SERVER_MESSAGE_SIZE;
- } else {
- DebugLog(("add_capabilities(): unknown capability '%s' at offset %u\n",
- capaName, offset));
- proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
- "Unknown or invalid textual capability: %s", capaName);
- g_free(capaName);
- /* Skip this capability */
- offset = capaStart + capaLen;
- continue;
- }
- g_free(capaName);
- offset += len;
- /* Now offset points to the 1st value byte of the capability. */
- } else if (peek < 0x80) {
- DebugLog(("add_capabilities(): invalid capability type identifier 0x%02X at offset %u.",
- peek, offset - 1));
- proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
- "Invalid well-known capability: 0x%02X", peek);
- /* Skip further capability parsing */
- return;
- }
- if (peek & 0x80) { /* Well-known capability */
- peek &= 0x7F;
- len = 1;
- offset++;
- /* Now offset points to the 1st value byte of the capability. */
- }
- /* Now the capability type is known */
- switch (peek) {
- case WSP_CAPA_CLIENT_SDU_SIZE:
- value = tvb_get_guintvar(tvb, offset, &len);
- DebugLog(("add_capabilities(client-sdu-size): "
- "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
- value, value, offset, tvb_get_guint8(tvb, offset), len));
- proto_tree_add_uint(wsp_capabilities, hf_capa_client_sdu_size,
- tvb, capaStart, capaLen, value);
- break;
- case WSP_CAPA_SERVER_SDU_SIZE:
- value = tvb_get_guintvar(tvb, offset, &len);
- DebugLog(("add_capabilities(server-sdu-size): "
- "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
- value, value, offset, tvb_get_guint8(tvb, offset), len));
- proto_tree_add_uint(wsp_capabilities, hf_capa_server_sdu_size,
- tvb, capaStart, capaLen, value);
- break;
- case WSP_CAPA_PROTOCOL_OPTIONS:
- ti = proto_tree_add_string(wsp_capabilities, hf_capa_protocol_options,
- tvb, capaStart, capaLen, "");
- capa_subtree = proto_item_add_subtree(ti, ett_capability);
- /*
- * The bits are stored in one or more octets, not an
- * uintvar-integer! Note that capability name and value
- * have length capaValueLength, and that the capability
- * name has length = len. Hence the remaining length is
- * given by capaValueLen - len.
- */
- switch (capaValueLen - len) {
- case 1:
- value = tvb_get_guint8(tvb, offset);
- len = 1;
- break;
- default:
- /*
- * The WSP spec foresees that this bit field can be
- * extended in the future. This does not make sense yet.
- */
- DebugLog(("add_capabilities(protocol options): "
- "bit field too large (%u bytes)\n",
- capaValueLen));
- proto_item_append_text(ti,
- " <warning: bit field too large>");
- offset = capaStart + capaLen;
- continue;
- }
- DebugLog(("add_capabilities(protocol options): "
- "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
- value, value, offset, tvb_get_guint8(tvb, offset), len));
- if (value & 0x80)
- proto_item_append_string(ti, " (confirmed push facility)");
- if (value & 0x40)
- proto_item_append_string(ti, " (push facility)");
- if (value & 0x20)
- proto_item_append_string(ti, " (session resume facility)");
- if (value & 0x10)
- proto_item_append_string(ti, " (acknowledgement headers)");
- if (value & 0x08)
- proto_item_append_string(ti, " (large data transfer)");
- if (value & 0xFFFFFF07)
- proto_item_append_text(ti, " <warning: reserved bits have been set>");
- proto_tree_add_boolean(capa_subtree,
- hf_capa_protocol_option_confirmed_push,
- tvb, offset, len, value);
- proto_tree_add_boolean(capa_subtree,
- hf_capa_protocol_option_push,
- tvb, offset, len, value);
- proto_tree_add_boolean(capa_subtree,
- hf_capa_protocol_option_session_resume,
- tvb, offset, len, value);
- proto_tree_add_boolean(capa_subtree,
- hf_capa_protocol_option_ack_headers,
- tvb, offset, len, value);
- proto_tree_add_boolean(capa_subtree,
- hf_capa_protocol_option_large_data_transfer,
- tvb, offset, len, value);
- break;
- case WSP_CAPA_METHOD_MOR:
- value = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint (wsp_capabilities,
- hf_capa_method_mor,
- tvb, capaStart, capaLen, value);
- break;
- case WSP_CAPA_PUSH_MOR:
- value = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint (wsp_capabilities,
- hf_capa_push_mor,
- tvb, capaStart, capaLen, value);
- break;
- case WSP_CAPA_EXTENDED_METHODS:
- /* Extended Methods capability format:
- * Connect PDU: collection of { Method (octet), Method-name (Token-text) }
- * ConnectReply PDU: collection of accepted { Method (octet) }
- */
- ti = proto_tree_add_string(wsp_capabilities,
- hf_capa_extended_methods,
- tvb, capaStart, capaLen, "");
- if (pdu_type == WSP_PDU_CONNECT) {
- while (offset < capaStart + capaLen) {
- peek = tvb_get_guint8(tvb, offset++);
- get_text_string(str, tvb, offset, len, ok);
- if (! ok) {
- proto_item_append_text(ti, " <error: invalid capability encoding>");
- DebugLog(("add_capability(extended methods): "
- "invalid method name at offset %u "
- "(octet = 0x%02X)\n",
- offset, tvb_get_guint8(tvb, offset)));
- return;
- }
- valStr = g_strdup_printf(" (0x%02x = %s)", peek, str);
- DebugLog(("add_capabilities(extended methods):%s\n",
- valStr));
- proto_item_append_string(ti, valStr);
- g_free(valStr);
- g_free(str);
- offset += len;
- }
- } else {
- while (offset < capaStart + capaLen) {
- peek = tvb_get_guint8(tvb, offset++);
- valStr = g_strdup_printf(" (0x%02x)", peek);
- DebugLog(("add_capabilities(extended methods):%s\n",
- valStr));
- proto_item_append_string(ti, valStr);
- g_free(valStr);
- }
- }
- break;
- case WSP_CAPA_HEADER_CODE_PAGES:
- /* Header Code Pages capability format:
- * Connect PDU: collection of { Page-id (octet), Page-name (Token-text) }
- * ConnectReply PDU: collection of accepted { Page-id (octet) }
- */
- ti = proto_tree_add_string(wsp_capabilities,
- hf_capa_header_code_pages,
- tvb, capaStart, capaLen, "");
- if (pdu_type == WSP_PDU_CONNECT) {
- while (offset < capaStart + capaLen) {
- peek = tvb_get_guint8(tvb, offset++);
- get_text_string(str, tvb, offset, len, ok);
- if (! ok) {
- proto_item_append_text(ti,
- " <error: invalid capability encoding>");
- DebugLog(("add_capability(header code pages): "
- "invalid header code page name at offset %u "
- "(octet = 0x%02X)\n",
- offset, tvb_get_guint8(tvb, offset)));
- return;
- }
- valStr = g_strdup_printf(" (0x%02x = %s)", peek, str);
- DebugLog(("add_capabilities(header code pages):%s\n",
- valStr));
- proto_item_append_string(ti, valStr);
- g_free(valStr);
- g_free(str);
- offset += len;
- }
- } else {
- while (offset < capaStart + capaLen) {
- peek = tvb_get_guint8(tvb, offset++);
- valStr = g_strdup_printf(" (0x%02x)", peek);
- DebugLog(("add_capabilities(header code pages):%s\n",
- valStr));
- proto_item_append_string(ti, valStr);
- g_free(valStr);
- }
- }
- break;
- case WSP_CAPA_ALIASES:
- /* TODO - same format as redirect addresses */
- proto_tree_add_item(wsp_capabilities, hf_capa_aliases,
- tvb, capaStart, capaLen, bo_little_endian);
- break;
- case WSP_CAPA_CLIENT_MESSAGE_SIZE:
- value = tvb_get_guintvar(tvb, offset, &len);
- DebugLog(("add_capabilities(client-message-size): "
- "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
- value, value, offset, tvb_get_guint8(tvb, offset), len));
- proto_tree_add_uint(wsp_capabilities, hf_capa_client_message_size,
- tvb, capaStart, capaLen, value);
- break;
- case WSP_CAPA_SERVER_MESSAGE_SIZE:
- value = tvb_get_guintvar(tvb, offset, &len);
- DebugLog(("add_capabilities(server-message-size): "
- "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
- value, value, offset, tvb_get_guint8(tvb, offset), len));
- proto_tree_add_uint(wsp_capabilities, hf_capa_server_message_size,
- tvb, capaStart, capaLen, value);
- break;
- default:
- proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
- "Unknown well-known capability: 0x%02X", peek);
- break;
- }
- offset = capaStart + capaLen;
- }
+ proto_tree *wsp_capabilities;
+ proto_tree *capa_subtree;
+ proto_item *ti;
+ char *capaName, *str, *valStr;
+ guint32 offset = 0;
+ guint32 len = 0;
+ guint32 capaStart = 0; /* Start offset of the capability */
+ guint32 capaLen = 0; /* Length of the entire capability */
+ guint32 capaValueLen = 0; /* Length of the capability value & type */
+ guint32 tvb_len = tvb_reported_length(tvb);
+ gboolean ok = FALSE;
+ guint8 peek;
+ guint32 value;
+
+ if (tvb_len == 0) {
+ DebugLog(("add_capabilities(): Capabilities = 0\n"));
+ return;
+ }
+
+ DebugLog(("add_capabilities(): capabilities to process\n"));
+
+ ti = proto_tree_add_item(tree, hf_capabilities_section,
+ tvb, 0, tvb_len, bo_little_endian);
+ wsp_capabilities = proto_item_add_subtree(ti, ett_capabilities);
+
+ while (offset < tvb_len) {
+ /*
+ * WSP capabilities consist of:
+ * - a guint32 length field,
+ * - a capability identifier as Token-text or Short-integer,
+ * - a capability-specific sequence of <length> octets.
+ */
+ capaStart = offset;
+ /*
+ * Now Offset points to the 1st byte of a capability field.
+ * Get the length of the capability field
+ */
+ capaValueLen = tvb_get_guintvar(tvb, offset, &len);
+ capaLen = capaValueLen + len;
+ tvb_ensure_bytes_exist(tvb, offset, capaLen);
+ offset += len;
+ /*
+ * Now offset points to the 1st byte of the capability type.
+ * Get the capability identifier.
+ */
+ peek = tvb_get_guint8(tvb, offset);
+ if (is_token_text(peek)) { /* Literal capability name */
+ /* 1. Get the string from the tvb */
+ get_token_text(capaName, tvb, offset, len, ok);
+ if (! ok) {
+ DebugLog(("add_capabilities(): expecting capability name as token_text "
+ "at offset %u (1st char = 0x%02x)\n", offset, peek));
+ return;
+ }
+ /* 2. Look up the string capability name */
+ if (g_ascii_strcasecmp(capaName, "client-sdu-size") == 0) {
+ peek = WSP_CAPA_CLIENT_SDU_SIZE;
+ } else if (g_ascii_strcasecmp(capaName, "server-sdu-size") == 0) {
+ peek = WSP_CAPA_SERVER_SDU_SIZE;
+ } else if (g_ascii_strcasecmp(capaName, "protocol options") == 0) {
+ peek = WSP_CAPA_PROTOCOL_OPTIONS;
+ } else if (g_ascii_strcasecmp(capaName, "method-mor") == 0) {
+ peek = WSP_CAPA_METHOD_MOR;
+ } else if (g_ascii_strcasecmp(capaName, "push-mor") == 0) {
+ peek = WSP_CAPA_PUSH_MOR;
+ } else if (g_ascii_strcasecmp(capaName, "extended methods") == 0) {
+ peek = WSP_CAPA_EXTENDED_METHODS;
+ } else if (g_ascii_strcasecmp(capaName, "header code pages") == 0) {
+ peek = WSP_CAPA_HEADER_CODE_PAGES;
+ } else if (g_ascii_strcasecmp(capaName, "aliases") == 0) {
+ peek = WSP_CAPA_ALIASES;
+ } else if (g_ascii_strcasecmp(capaName, "client-message-size") == 0) {
+ peek = WSP_CAPA_CLIENT_MESSAGE_SIZE;
+ } else if (g_ascii_strcasecmp(capaName, "server-message-size") == 0) {
+ peek = WSP_CAPA_SERVER_MESSAGE_SIZE;
+ } else {
+ DebugLog(("add_capabilities(): unknown capability '%s' at offset %u\n",
+ capaName, offset));
+ proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
+ "Unknown or invalid textual capability: %s", capaName);
+ g_free(capaName);
+ /* Skip this capability */
+ offset = capaStart + capaLen;
+ continue;
+ }
+ g_free(capaName);
+ offset += len;
+ /* Now offset points to the 1st value byte of the capability. */
+ } else if (peek < 0x80) {
+ DebugLog(("add_capabilities(): invalid capability type identifier 0x%02X at offset %u.",
+ peek, offset - 1));
+ proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
+ "Invalid well-known capability: 0x%02X", peek);
+ /* Skip further capability parsing */
+ return;
+ }
+ if (peek & 0x80) { /* Well-known capability */
+ peek &= 0x7F;
+ len = 1;
+ offset++;
+ /* Now offset points to the 1st value byte of the capability. */
+ }
+ /* Now the capability type is known */
+ switch (peek) {
+ case WSP_CAPA_CLIENT_SDU_SIZE:
+ value = tvb_get_guintvar(tvb, offset, &len);
+ DebugLog(("add_capabilities(client-sdu-size): "
+ "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
+ value, value, offset, tvb_get_guint8(tvb, offset), len));
+ proto_tree_add_uint(wsp_capabilities, hf_capa_client_sdu_size,
+ tvb, capaStart, capaLen, value);
+ break;
+ case WSP_CAPA_SERVER_SDU_SIZE:
+ value = tvb_get_guintvar(tvb, offset, &len);
+ DebugLog(("add_capabilities(server-sdu-size): "
+ "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
+ value, value, offset, tvb_get_guint8(tvb, offset), len));
+ proto_tree_add_uint(wsp_capabilities, hf_capa_server_sdu_size,
+ tvb, capaStart, capaLen, value);
+ break;
+ case WSP_CAPA_PROTOCOL_OPTIONS:
+ ti = proto_tree_add_string(wsp_capabilities, hf_capa_protocol_options,
+ tvb, capaStart, capaLen, "");
+ capa_subtree = proto_item_add_subtree(ti, ett_capability);
+ /*
+ * The bits are stored in one or more octets, not an
+ * uintvar-integer! Note that capability name and value
+ * have length capaValueLength, and that the capability
+ * name has length = len. Hence the remaining length is
+ * given by capaValueLen - len.
+ */
+ switch (capaValueLen - len) {
+ case 1:
+ value = tvb_get_guint8(tvb, offset);
+ len = 1;
+ break;
+ default:
+ /*
+ * The WSP spec foresees that this bit field can be
+ * extended in the future. This does not make sense yet.
+ */
+ DebugLog(("add_capabilities(protocol options): "
+ "bit field too large (%u bytes)\n",
+ capaValueLen));
+ proto_item_append_text(ti,
+ " <warning: bit field too large>");
+ offset = capaStart + capaLen;
+ continue;
+ }
+ DebugLog(("add_capabilities(protocol options): "
+ "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
+ value, value, offset, tvb_get_guint8(tvb, offset), len));
+ if (value & 0x80)
+ proto_item_append_string(ti, " (confirmed push facility)");
+ if (value & 0x40)
+ proto_item_append_string(ti, " (push facility)");
+ if (value & 0x20)
+ proto_item_append_string(ti, " (session resume facility)");
+ if (value & 0x10)
+ proto_item_append_string(ti, " (acknowledgement headers)");
+ if (value & 0x08)
+ proto_item_append_string(ti, " (large data transfer)");
+ if (value & 0xFFFFFF07)
+ proto_item_append_text(ti, " <warning: reserved bits have been set>");
+ proto_tree_add_boolean(capa_subtree,
+ hf_capa_protocol_option_confirmed_push,
+ tvb, offset, len, value);
+ proto_tree_add_boolean(capa_subtree,
+ hf_capa_protocol_option_push,
+ tvb, offset, len, value);
+ proto_tree_add_boolean(capa_subtree,
+ hf_capa_protocol_option_session_resume,
+ tvb, offset, len, value);
+ proto_tree_add_boolean(capa_subtree,
+ hf_capa_protocol_option_ack_headers,
+ tvb, offset, len, value);
+ proto_tree_add_boolean(capa_subtree,
+ hf_capa_protocol_option_large_data_transfer,
+ tvb, offset, len, value);
+ break;
+ case WSP_CAPA_METHOD_MOR:
+ value = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint (wsp_capabilities,
+ hf_capa_method_mor,
+ tvb, capaStart, capaLen, value);
+ break;
+ case WSP_CAPA_PUSH_MOR:
+ value = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint (wsp_capabilities,
+ hf_capa_push_mor,
+ tvb, capaStart, capaLen, value);
+ break;
+ case WSP_CAPA_EXTENDED_METHODS:
+ /* Extended Methods capability format:
+ * Connect PDU: collection of { Method (octet), Method-name (Token-text) }
+ * ConnectReply PDU: collection of accepted { Method (octet) }
+ */
+ ti = proto_tree_add_string(wsp_capabilities,
+ hf_capa_extended_methods,
+ tvb, capaStart, capaLen, "");
+ if (pdu_type == WSP_PDU_CONNECT) {
+ while (offset < capaStart + capaLen) {
+ peek = tvb_get_guint8(tvb, offset++);
+ get_text_string(str, tvb, offset, len, ok);
+ if (! ok) {
+ proto_item_append_text(ti, " <error: invalid capability encoding>");
+ DebugLog(("add_capability(extended methods): "
+ "invalid method name at offset %u "
+ "(octet = 0x%02X)\n",
+ offset, tvb_get_guint8(tvb, offset)));
+ return;
+ }
+ valStr = g_strdup_printf(" (0x%02x = %s)", peek, str);
+ DebugLog(("add_capabilities(extended methods):%s\n",
+ valStr));
+ proto_item_append_string(ti, valStr);
+ g_free(valStr);
+ g_free(str);
+ offset += len;
+ }
+ } else {
+ while (offset < capaStart + capaLen) {
+ peek = tvb_get_guint8(tvb, offset++);
+ valStr = g_strdup_printf(" (0x%02x)", peek);
+ DebugLog(("add_capabilities(extended methods):%s\n",
+ valStr));
+ proto_item_append_string(ti, valStr);
+ g_free(valStr);
+ }
+ }
+ break;
+ case WSP_CAPA_HEADER_CODE_PAGES:
+ /* Header Code Pages capability format:
+ * Connect PDU: collection of { Page-id (octet), Page-name (Token-text) }
+ * ConnectReply PDU: collection of accepted { Page-id (octet) }
+ */
+ ti = proto_tree_add_string(wsp_capabilities,
+ hf_capa_header_code_pages,
+ tvb, capaStart, capaLen, "");
+ if (pdu_type == WSP_PDU_CONNECT) {
+ while (offset < capaStart + capaLen) {
+ peek = tvb_get_guint8(tvb, offset++);
+ get_text_string(str, tvb, offset, len, ok);
+ if (! ok) {
+ proto_item_append_text(ti,
+ " <error: invalid capability encoding>");
+ DebugLog(("add_capability(header code pages): "
+ "invalid header code page name at offset %u "
+ "(octet = 0x%02X)\n",
+ offset, tvb_get_guint8(tvb, offset)));
+ return;
+ }
+ valStr = g_strdup_printf(" (0x%02x = %s)", peek, str);
+ DebugLog(("add_capabilities(header code pages):%s\n",
+ valStr));
+ proto_item_append_string(ti, valStr);
+ g_free(valStr);
+ g_free(str);
+ offset += len;
+ }
+ } else {
+ while (offset < capaStart + capaLen) {
+ peek = tvb_get_guint8(tvb, offset++);
+ valStr = g_strdup_printf(" (0x%02x)", peek);
+ DebugLog(("add_capabilities(header code pages):%s\n",
+ valStr));
+ proto_item_append_string(ti, valStr);
+ g_free(valStr);
+ }
+ }
+ break;
+ case WSP_CAPA_ALIASES:
+ /* TODO - same format as redirect addresses */
+ proto_tree_add_item(wsp_capabilities, hf_capa_aliases,
+ tvb, capaStart, capaLen, bo_little_endian);
+ break;
+ case WSP_CAPA_CLIENT_MESSAGE_SIZE:
+ value = tvb_get_guintvar(tvb, offset, &len);
+ DebugLog(("add_capabilities(client-message-size): "
+ "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
+ value, value, offset, tvb_get_guint8(tvb, offset), len));
+ proto_tree_add_uint(wsp_capabilities, hf_capa_client_message_size,
+ tvb, capaStart, capaLen, value);
+ break;
+ case WSP_CAPA_SERVER_MESSAGE_SIZE:
+ value = tvb_get_guintvar(tvb, offset, &len);
+ DebugLog(("add_capabilities(server-message-size): "
+ "guintvar = %u (0x%X) at offset %u (1st byte = 0x%02X) (len = %u)\n",
+ value, value, offset, tvb_get_guint8(tvb, offset), len));
+ proto_tree_add_uint(wsp_capabilities, hf_capa_server_message_size,
+ tvb, capaStart, capaLen, value);
+ break;
+ default:
+ proto_tree_add_text(wsp_capabilities, tvb, capaStart, capaLen,
+ "Unknown well-known capability: 0x%02X", peek);
+ break;
+ }
+ offset = capaStart + capaLen;
+ }
}
void
add_post_data (proto_tree *tree, tvbuff_t *tvb, guint contentType,
const char *contentTypeStr, packet_info *pinfo)
{
- guint offset = 0;
- guint variableStart = 0;
- guint variableEnd = 0;
- guint valueStart = 0;
- guint8 peek = 0;
- proto_item *ti;
- proto_tree *sub_tree = NULL;
-
- DebugLog(("add_post_data() - START\n"));
-
- /* VERIFY ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian); */
- if (tree) {
- ti = proto_tree_add_item (tree, hf_wsp_post_data,
- tvb, offset, -1, bo_little_endian);
- sub_tree = proto_item_add_subtree(ti, ett_post);
- }
-
- if ( (contentTypeStr == NULL && contentType == 0x12)
- || (contentTypeStr && (g_ascii_strcasecmp(contentTypeStr,
- "application/x-www-form-urlencoded") == 0)) )
- {
- if (tree) {
- /*
- * URL Encoded data.
- * Iterate through post data.
- */
- for (offset = 0; offset < tvb_reported_length (tvb); offset++)
- {
- peek = tvb_get_guint8 (tvb, offset);
- if (peek == '=')
- {
- variableEnd = offset;
- valueStart = offset+1;
- }
- else if (peek == '&')
- {
- if (variableEnd > 0)
- {
- add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
- }
- variableStart = offset+1;
- variableEnd = 0;
- valueStart = 0;
- }
- }
-
- /* See if there's outstanding data */
- if (variableEnd > 0)
- {
- add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
- }
- } /* if (tree) */
- }
- else if ((contentType == 0x22) || (contentType == 0x23) || (contentType == 0x24) ||
- (contentType == 0x25) || (contentType == 0x26) || (contentType == 0x33))
- {
- /* add_multipart_data takes also care of subdissection */
- add_multipart_data(sub_tree, tvb, pinfo);
- }
- DebugLog(("add_post_data() - END\n"));
+ guint offset = 0;
+ guint variableStart = 0;
+ guint variableEnd = 0;
+ guint valueStart = 0;
+ guint8 peek = 0;
+ proto_item *ti;
+ proto_tree *sub_tree = NULL;
+
+ DebugLog(("add_post_data() - START\n"));
+
+ /* VERIFY ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian); */
+ if (tree) {
+ ti = proto_tree_add_item (tree, hf_wsp_post_data,
+ tvb, offset, -1, bo_little_endian);
+ sub_tree = proto_item_add_subtree(ti, ett_post);
+ }
+
+ if ( (contentTypeStr == NULL && contentType == 0x12)
+ || (contentTypeStr && (g_ascii_strcasecmp(contentTypeStr,
+ "application/x-www-form-urlencoded") == 0)) )
+ {
+ if (tree) {
+ /*
+ * URL Encoded data.
+ * Iterate through post data.
+ */
+ for (offset = 0; offset < tvb_reported_length (tvb); offset++)
+ {
+ peek = tvb_get_guint8 (tvb, offset);
+ if (peek == '=')
+ {
+ variableEnd = offset;
+ valueStart = offset+1;
+ }
+ else if (peek == '&')
+ {
+ if (variableEnd > 0)
+ {
+ add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
+ }
+ variableStart = offset+1;
+ variableEnd = 0;
+ valueStart = 0;
+ }
+ }
+
+ /* See if there's outstanding data */
+ if (variableEnd > 0)
+ {
+ add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
+ }
+ } /* if (tree) */
+ }
+ else if ((contentType == 0x22) || (contentType == 0x23) || (contentType == 0x24) ||
+ (contentType == 0x25) || (contentType == 0x26) || (contentType == 0x33))
+ {
+ /* add_multipart_data takes also care of subdissection */
+ add_multipart_data(sub_tree, tvb, pinfo);
+ }
+ DebugLog(("add_post_data() - END\n"));
}
static void
add_post_variable (proto_tree *tree, tvbuff_t *tvb, guint variableStart, guint variableEnd, guint valueStart, guint valueEnd)
{
- int variableLength = variableEnd-variableStart;
- int valueLength = 0;
- char *variableBuffer;
- char *valueBuffer;
-
- variableBuffer = tvb_get_ephemeral_string(tvb, variableStart, variableLength);
-
- if (valueEnd < valueStart)
- {
- valueBuffer = g_malloc (1);
- valueBuffer[0] = 0;
- valueEnd = valueStart;
- }
- else
- {
- valueLength = valueEnd-valueStart;
- /* XXX - if this throws an exception, "variableBuffer"
- is leaked */
- valueBuffer = tvb_get_ephemeral_string(tvb, valueStart, valueLength);
- }
-
- /* Check for variables with no value */
- if (valueStart >= tvb_reported_length (tvb))
- {
- valueStart = tvb_reported_length (tvb);
- valueEnd = valueStart;
- }
- valueLength = valueEnd-valueStart;
-
- proto_tree_add_text (tree, tvb, variableStart, valueEnd-variableStart, "%s: %s", variableBuffer, valueBuffer);
+ int variableLength = variableEnd-variableStart;
+ int valueLength = 0;
+ char *variableBuffer;
+ char *valueBuffer;
+
+ variableBuffer = tvb_get_ephemeral_string(tvb, variableStart, variableLength);
+
+ if (valueEnd < valueStart)
+ {
+ valueBuffer = g_malloc (1);
+ valueBuffer[0] = 0;
+ valueEnd = valueStart;
+ }
+ else
+ {
+ valueLength = valueEnd-valueStart;
+ /* XXX - if this throws an exception, "variableBuffer"
+ is leaked */
+ valueBuffer = tvb_get_ephemeral_string(tvb, valueStart, valueLength);
+ }
+
+ /* Check for variables with no value */
+ if (valueStart >= tvb_reported_length (tvb))
+ {
+ valueStart = tvb_reported_length (tvb);
+ valueEnd = valueStart;
+ }
+ valueLength = valueEnd-valueStart;
+
+ proto_tree_add_text (tree, tvb, variableStart, valueEnd-variableStart, "%s: %s", variableBuffer, valueBuffer);
}
static void
add_multipart_data (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo)
{
- int offset = 0;
- guint nextOffset;
- guint nEntries = 0;
- guint count;
- guint HeadersLen;
- guint DataLen;
- guint contentType = 0;
- const char *contentTypeStr;
- tvbuff_t *tmp_tvb;
- int partnr = 1;
- int part_start;
- gboolean found_match = FALSE;
-
- proto_item *sub_tree = NULL;
- proto_item *ti = NULL;
- proto_tree *mpart_tree = NULL;
-
- DebugLog(("add_multipart_data(): offset = %u, byte = 0x%02x: ",
- offset, tvb_get_guint8(tvb,offset)));
- nEntries = tvb_get_guintvar (tvb, offset, &count);
- DebugLog(("parts = %u\n", nEntries));
- offset += count;
- if (nEntries)
- {
- ti = proto_tree_add_text(tree, tvb, offset - count, 0,
- "Multipart body");
- sub_tree = proto_item_add_subtree(ti, ett_mpartlist);
- }
- while (nEntries--)
- {
- DebugLog(("add_multipart_data(): Parts to do after this: %u"
- " (offset = %u, 0x%02x): ",
- nEntries, offset, tvb_get_guint8(tvb,offset)));
- part_start = offset;
- HeadersLen = tvb_get_guintvar (tvb, offset, &count);
- offset += count;
- DataLen = tvb_get_guintvar (tvb, offset, &count);
- offset += count;
- if (tree) {
- tvb_ensure_bytes_exist(tvb, part_start, HeadersLen + DataLen + (offset - part_start));
- ti = proto_tree_add_uint(sub_tree, hf_wsp_mpart, tvb, part_start,
- HeadersLen + DataLen + (offset - part_start), partnr);
- mpart_tree = proto_item_add_subtree(ti, ett_multiparts);
- }
- nextOffset = add_content_type (mpart_tree, tvb, offset,
- &contentType, &contentTypeStr);
-
- if (tree) {
- /* Add content type to protocol summary line */
- if (contentTypeStr) {
- proto_item_append_text(ti, ", content-type: %s",
- contentTypeStr);
- } else {
- proto_item_append_text(ti, ", content-type: 0x%X",
- contentType);
- }
- }
-
- HeadersLen -= (nextOffset - offset);
- if (HeadersLen > 0)
- {
- tmp_tvb = tvb_new_subset (tvb, nextOffset, HeadersLen, HeadersLen);
- add_headers (mpart_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
- }
- offset = nextOffset + HeadersLen;
- /*
- * Try the dissectors of the multipart content.
- *
- * TODO - handle nested multipart documents.
- */
- tmp_tvb = tvb_new_subset(tvb, offset, DataLen, DataLen);
- /*
- * Try finding a dissector for the content
- * first, then fallback.
- */
- found_match = FALSE;
- if (contentTypeStr) {
- /*
- * Content type is a string.
- */
- found_match = dissector_try_string(media_type_table,
- contentTypeStr, tmp_tvb, pinfo, mpart_tree);
- }
- if (! found_match) {
- if (! dissector_try_heuristic(heur_subdissector_list,
- tmp_tvb, pinfo, mpart_tree)) {
- guint8* save_private_data = pinfo->private_data;
-
- pinfo->match_string = contentTypeStr;
- pinfo->private_data = NULL; /* TODO: parameters */
- call_dissector(media_handle, tmp_tvb, pinfo, mpart_tree);
- pinfo->private_data = save_private_data;
+ int offset = 0;
+ guint nextOffset;
+ guint nEntries = 0;
+ guint count;
+ guint HeadersLen;
+ guint DataLen;
+ guint contentType = 0;
+ const char *contentTypeStr;
+ tvbuff_t *tmp_tvb;
+ int partnr = 1;
+ int part_start;
+ gboolean found_match = FALSE;
+
+ proto_item *sub_tree = NULL;
+ proto_item *ti = NULL;
+ proto_tree *mpart_tree = NULL;
+
+ DebugLog(("add_multipart_data(): offset = %u, byte = 0x%02x: ",
+ offset, tvb_get_guint8(tvb,offset)));
+ nEntries = tvb_get_guintvar (tvb, offset, &count);
+ DebugLog(("parts = %u\n", nEntries));
+ offset += count;
+ if (nEntries)
+ {
+ ti = proto_tree_add_text(tree, tvb, offset - count, 0,
+ "Multipart body");
+ sub_tree = proto_item_add_subtree(ti, ett_mpartlist);
+ }
+ while (nEntries--)
+ {
+ DebugLog(("add_multipart_data(): Parts to do after this: %u"
+ " (offset = %u, 0x%02x): ",
+ nEntries, offset, tvb_get_guint8(tvb,offset)));
+ part_start = offset;
+ HeadersLen = tvb_get_guintvar (tvb, offset, &count);
+ offset += count;
+ DataLen = tvb_get_guintvar (tvb, offset, &count);
+ offset += count;
+ if (tree) {
+ tvb_ensure_bytes_exist(tvb, part_start, HeadersLen + DataLen + (offset - part_start));
+ ti = proto_tree_add_uint(sub_tree, hf_wsp_mpart, tvb, part_start,
+ HeadersLen + DataLen + (offset - part_start), partnr);
+ mpart_tree = proto_item_add_subtree(ti, ett_multiparts);
+ }
+ nextOffset = add_content_type (mpart_tree, tvb, offset,
+ &contentType, &contentTypeStr);
+
+ if (tree) {
+ /* Add content type to protocol summary line */
+ if (contentTypeStr) {
+ proto_item_append_text(ti, ", content-type: %s",
+ contentTypeStr);
+ } else {
+ proto_item_append_text(ti, ", content-type: 0x%X",
+ contentType);
+ }
+ }
+
+ HeadersLen -= (nextOffset - offset);
+ if (HeadersLen > 0)
+ {
+ tmp_tvb = tvb_new_subset (tvb, nextOffset, HeadersLen, HeadersLen);
+ add_headers (mpart_tree, tmp_tvb, hf_wsp_headers_section, pinfo);
+ }
+ offset = nextOffset + HeadersLen;
+ /*
+ * Try the dissectors of the multipart content.
+ *
+ * TODO - handle nested multipart documents.
+ */
+ tmp_tvb = tvb_new_subset(tvb, offset, DataLen, DataLen);
+ /*
+ * Try finding a dissector for the content
+ * first, then fallback.
+ */
+ found_match = FALSE;
+ if (contentTypeStr) {
+ /*
+ * Content type is a string.
+ */
+ found_match = dissector_try_string(media_type_table,
+ contentTypeStr, tmp_tvb, pinfo, mpart_tree);
+ }
+ if (! found_match) {
+ if (! dissector_try_heuristic(heur_subdissector_list,
+ tmp_tvb, pinfo, mpart_tree)) {
+ guint8* save_private_data = pinfo->private_data;
+
+ pinfo->match_string = contentTypeStr;
+ pinfo->private_data = NULL; /* TODO: parameters */
+ call_dissector(media_handle, tmp_tvb, pinfo, mpart_tree);
+ pinfo->private_data = save_private_data;
#if 0
- if (tree) /* Only display if needed */
- proto_tree_add_item (mpart_tree, hf_wsp_multipart_data,
- tvb, offset, DataLen, bo_little_endian);
+ if (tree) /* Only display if needed */
+ proto_tree_add_item (mpart_tree, hf_wsp_multipart_data,
+ tvb, offset, DataLen, bo_little_endian);
#endif
- }
- }
+ }
+ }
- offset += DataLen;
- partnr++;
- }
+ offset += DataLen;
+ partnr++;
+ }
}
@@ -6047,1358 +6042,1358 @@ proto_register_wsp(void)
{
/* Setup list of header fields */
- static hf_register_info hf[] = {
- { &hf_wsp_header_tid,
- { "Transaction ID",
- "wsp.TID",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- "WSP Transaction ID (for connectionless WSP)", HFILL
- }
- },
- { &hf_wsp_header_pdu_type,
- { "PDU Type",
- "wsp.pdu_type",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &wsp_vals_pdu_type_ext, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_version_major,
- { "Version (Major)",
- "wsp.version.major",
- FT_UINT8, BASE_DEC, NULL, 0xF0,
- NULL, HFILL
- }
- },
- { &hf_wsp_version_minor,
- { "Version (Minor)",
- "wsp.version.minor",
- FT_UINT8, BASE_DEC, NULL, 0x0F,
- NULL, HFILL
- }
- },
- { &hf_capabilities_length,
- { "Capabilities Length",
- "wsp.capabilities.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of Capabilities field (bytes)", HFILL
- }
- },
- { &hf_wsp_header_length,
- { "Headers Length",
- "wsp.headers_length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of Headers field (bytes)", HFILL
- }
- },
- { &hf_capabilities_section,
- { "Capabilities",
- "wsp.capabilities",
- FT_NONE, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_headers_section,
- { "Headers",
- "wsp.headers",
- FT_NONE, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_header_uri_len,
- { "URI Length",
- "wsp.uri_length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of URI field", HFILL
- }
- },
- { &hf_wsp_header_uri,
- { "URI",
- "wsp.uri",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_server_session_id,
- { "Server Session ID",
- "wsp.server.session_id",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_header_status,
- { "Status",
- "wsp.reply.status",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &wsp_vals_status_ext, 0x00,
- "Reply Status", HFILL
- }
- },
- { &hf_wsp_parameter_type,
- { "Type",
- "wsp.parameter.type",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Type parameter", HFILL
- }
- },
- { &hf_wsp_parameter_name,
- { "Name",
- "wsp.parameter.name",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Name parameter", HFILL
- }
- },
- { &hf_wsp_parameter_filename,
- { "Filename",
- "wsp.parameter.filename",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Filename parameter", HFILL
- }
- },
- { &hf_wsp_parameter_start,
- { "Start",
- "wsp.parameter.start",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Start parameter", HFILL
- }
- },
- { &hf_wsp_parameter_start_info,
- { "Start-info",
- "wsp.parameter.start_info",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Start-info parameter", HFILL
- }
- },
- { &hf_wsp_parameter_comment,
- { "Comment",
- "wsp.parameter.comment",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Comment parameter", HFILL
- }
- },
- { &hf_wsp_parameter_domain,
- { "Domain",
- "wsp.parameter.domain",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Domain parameter", HFILL
- }
- },
- { &hf_wsp_parameter_path,
- { "Path",
- "wsp.parameter.path",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Path parameter", HFILL
- }
- },
- { &hf_wsp_parameter_sec,
- { "SEC",
- "wsp.parameter.sec",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_wsp_parameter_sec_ext, 0x00,
- "SEC parameter (Content-Type: application/vnd.wap.connectivity-wbxml)", HFILL
- }
- },
- { &hf_wsp_parameter_mac,
- { "MAC",
- "wsp.parameter.mac",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "MAC parameter (Content-Type: application/vnd.wap.connectivity-wbxml)", HFILL
- }
- },
- { &hf_wsp_parameter_upart_type,
- { "Type",
- "wsp.parameter.upart.type",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Multipart type parameter", HFILL
- }
- },
- { &hf_wsp_parameter_level,
- { "Level",
- "wsp.parameter.level",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Level parameter", HFILL
- }
- },
- { &hf_wsp_parameter_size,
- { "Size",
- "wsp.parameter.size",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Size parameter", HFILL
- }
- },
- { &hf_wsp_reply_data,
- { "Data",
- "wsp.reply.data",
- FT_NONE, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_header_shift_code,
- { "Switching to WSP header code-page",
- "wsp.code_page",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Header code-page shift code", HFILL
- }
- },
- /*
- * CO-WSP capability negotiation
- */
- { &hf_capa_client_sdu_size,
- { "Client SDU Size",
- "wsp.capability.client_sdu_size",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Client Service Data Unit size (bytes)", HFILL
- }
- },
- { &hf_capa_server_sdu_size,
- { "Server SDU Size",
- "wsp.capability.server_sdu_size",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Server Service Data Unit size (bytes)", HFILL
- }
- },
- { &hf_capa_protocol_options,
- { "Protocol Options",
- "wsp.capability.protocol_opt",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_protocol_option_confirmed_push,
- { "Confirmed Push facility",
- "wsp.capability.protocol_option.confirmed_push",
- FT_BOOLEAN, 8, NULL, 0x80,
- "If set, this CO-WSP session supports the Confirmed Push facility", HFILL
- }
- },
- { &hf_capa_protocol_option_push,
- { "Push facility",
- "wsp.capability.protocol_option.push",
- FT_BOOLEAN, 8, NULL, 0x40,
- "If set, this CO-WSP session supports the Push facility", HFILL
- }
- },
- { &hf_capa_protocol_option_session_resume,
- { "Session Resume facility",
- "wsp.capability.protocol_option.session_resume",
- FT_BOOLEAN, 8, NULL, 0x20,
- "If set, this CO-WSP session supports the Session Resume facility", HFILL
- }
- },
- { &hf_capa_protocol_option_ack_headers,
- { "Acknowledgement headers",
- "wsp.capability.protocol_option.ack_headers",
- FT_BOOLEAN, 8, NULL, 0x10,
- "If set, this CO-WSP session supports Acknowledgement headers", HFILL
- }
- },
- { &hf_capa_protocol_option_large_data_transfer,
- { "Large data transfer",
- "wsp.capability.protocol_option.large_data_transfer",
- FT_BOOLEAN, 8, NULL, 0x08,
- "If set, this CO-WSP session supports Large data transfer", HFILL
- }
- },
- { &hf_capa_method_mor,
- { "Method MOR",
- "wsp.capability.method_mor",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_push_mor,
- { "Push MOR",
- "wsp.capability.push_mor",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_extended_methods,
- { "Extended Methods",
- "wsp.capability.extended_methods",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_header_code_pages,
- { "Header Code Pages",
- "wsp.capability.code_pages",
- FT_STRING, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_aliases,
- { "Aliases",
- "wsp.capability.aliases",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_capa_client_message_size,
- { "Client Message Size",
- "wsp.capability.client_message_size",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Client Message size (bytes)", HFILL
- }
- },
- { &hf_capa_server_message_size,
- { "Server Message Size",
- "wsp.capability.server_message_size",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Server Message size (bytes)", HFILL
- }
- },
- { &hf_wsp_post_data,
- { "Data (Post)",
- "wsp.post.data",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Post Data", HFILL
- }
- },
- { &hf_wsp_push_data,
- { "Push Data",
- "wsp.push.data",
- FT_NONE, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_wsp_multipart_data,
- { "Data in this part",
- "wsp.multipart.data",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "The data of 1 MIME-multipart part.", HFILL
- }
- },
- { &hf_wsp_mpart,
- { "Part",
- "wsp.multipart",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "MIME part of multipart data.", HFILL
- }
- },
- { &hf_wsp_redirect_flags,
- { "Flags",
- "wsp.redirect.flags",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- "Redirect Flags", HFILL
- }
- },
- { &hf_wsp_redirect_permanent,
- { "Permanent Redirect",
- "wsp.redirect.flags.permanent",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), PERMANENT_REDIRECT,
- NULL, HFILL
- }
- },
- { &hf_wsp_redirect_reuse_security_session,
- { "Reuse Security Session",
- "wsp.redirect.flags.reuse_security_session",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), REUSE_SECURITY_SESSION,
- "If set, the existing Security Session may be reused", HFILL
- }
- },
- { &hf_redirect_addresses,
- { "Redirect Addresses",
- "wsp.redirect.addresses",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "List of Redirect Addresses", HFILL
- }
- },
-
- /*
- * Addresses
- */
- { &hf_address_entry,
- { "Address Record",
- "wsp.address",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_address_flags_length,
- { "Flags/Length",
- "wsp.address.flags",
- FT_UINT8, BASE_HEX, NULL, 0x00,
- "Address Flags/Length", HFILL
- }
- },
- { &hf_address_flags_length_bearer_type_included,
- { "Bearer Type Included",
- "wsp.address.flags.bearer_type_included",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), BEARER_TYPE_INCLUDED,
- "Address bearer type included", HFILL
- }
- },
- { &hf_address_flags_length_port_number_included,
- { "Port Number Included",
- "wsp.address.flags.port_number_included",
- FT_BOOLEAN, 8, TFS(&tfs_yes_no), PORT_NUMBER_INCLUDED,
- "Address port number included", HFILL
- }
- },
- { &hf_address_flags_length_address_len,
- { "Address Length",
- "wsp.address.flags.length",
- FT_UINT8, BASE_DEC, NULL, ADDRESS_LEN,
- NULL, HFILL
- }
- },
- { &hf_address_bearer_type,
- { "Bearer Type",
- "wsp.address.bearer_type",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_bearer_types_ext, 0x0,
- NULL, HFILL
- }
- },
- { &hf_address_port_num,
- { "Port Number",
- "wsp.address.port",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL
- }
- },
- { &hf_address_ipv4_addr,
- { "IPv4 Address",
- "wsp.address.ipv4",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "Address (IPv4)", HFILL
- }
- },
- { &hf_address_ipv6_addr,
- { "IPv6 Address",
- "wsp.address.ipv6",
- FT_IPv6, BASE_NONE, NULL, 0x0,
- "Address (IPv6)", HFILL
- }
- },
- { &hf_address_addr,
- { "Address",
- "wsp.address.unknown",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Address (unknown)", HFILL
- }
- },
-
-
- /*
- * New WSP header fields
- */
-
-
- /* WSP header name */
- { &hf_hdr_name,
- { "Header name",
- "wsp.header.name",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Name of the WSP header", HFILL
- }
- },
- /* WSP headers start here */
- { &hf_hdr_accept,
- { "Accept",
- "wsp.header.accept",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept", HFILL
- }
- },
- { &hf_hdr_accept_charset,
- { "Accept-Charset",
- "wsp.header.accept_charset",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept-Charset", HFILL
- }
- },
- { &hf_hdr_accept_encoding,
- { "Accept-Encoding",
- "wsp.header.accept_encoding",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept-Encoding", HFILL
- }
- },
- { &hf_hdr_accept_language,
- { "Accept-Language",
- "wsp.header.accept_language",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept-Language", HFILL
- }
- },
- { &hf_hdr_accept_ranges,
- { "Accept-Ranges",
- "wsp.header.accept_ranges",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept-Ranges", HFILL
- }
- },
- { &hf_hdr_age,
- { "Age",
- "wsp.header.age",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Age", HFILL
- }
- },
- { &hf_hdr_allow,
- { "Allow",
- "wsp.header.allow",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Allow", HFILL
- }
- },
- { &hf_hdr_authorization,
- { "Authorization",
- "wsp.header.authorization",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Authorization", HFILL
- }
- },
- { &hf_hdr_authorization_scheme,
- { "Authorization Scheme",
- "wsp.header.authorization.scheme",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Authorization: used scheme", HFILL
- }
- },
- { &hf_hdr_authorization_user_id,
- { "User-id",
- "wsp.header.authorization.user_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Authorization: user ID for basic authorization", HFILL
- }
- },
- { &hf_hdr_authorization_password,
- { "Password",
- "wsp.header.authorization.password",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Authorization: password for basic authorization", HFILL
- }
- },
- { &hf_hdr_cache_control,
- { "Cache-Control",
- "wsp.header.cache_control",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Cache-Control", HFILL
- }
- },
- { &hf_hdr_connection,
- { "Connection",
- "wsp.header.connection",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Connection", HFILL
- }
- },
- { &hf_hdr_content_base,
- { "Content-Base",
- "wsp.header.content_base",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Base", HFILL
- }
- },
- { &hf_hdr_content_encoding,
- { "Content-Encoding",
- "wsp.header.content_encoding",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Encoding", HFILL
- }
- },
- { &hf_hdr_content_language,
- { "Content-Language",
- "wsp.header.content_language",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Language", HFILL
- }
- },
- { &hf_hdr_content_length,
- { "Content-Length",
- "wsp.header.content_length",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Length", HFILL
- }
- },
- { &hf_hdr_content_location,
- { "Content-Location",
- "wsp.header.content_location",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Location", HFILL
- }
- },
- { &hf_hdr_content_md5,
- { "Content-Md5",
- "wsp.header.content_md5",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Md5", HFILL
- }
- },
- { &hf_hdr_content_range,
- { "Content-Range",
- "wsp.header.content_range",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Range", HFILL
- }
- },
- { &hf_hdr_content_range_first_byte_pos,
- { "First-byte-position",
- "wsp.header.content_range.first_byte_pos",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "WSP header Content-Range: position of first byte", HFILL
- }
- },
- { &hf_hdr_content_range_entity_length,
- { "Entity-length",
- "wsp.header.content_range.entity_length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "WSP header Content-Range: length of the entity", HFILL
- }
- },
- { &hf_hdr_content_type,
- { "Content-Type",
- "wsp.header.content_type",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Type", HFILL
- }
- },
- { &hf_hdr_date,
- { "Date",
- "wsp.header.date",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Date", HFILL
- }
- },
- { &hf_hdr_etag,
- { "ETag",
- "wsp.header.etag",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header ETag", HFILL
- }
- },
- { &hf_hdr_expires,
- { "Expires",
- "wsp.header.expires",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Expires", HFILL
- }
- },
- { &hf_hdr_from,
- { "From",
- "wsp.header.from",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header From", HFILL
- }
- },
- { &hf_hdr_host,
- { "Host",
- "wsp.header.host",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Host", HFILL
- }
- },
- { &hf_hdr_if_modified_since,
- { "If-Modified-Since",
- "wsp.header.if_modified_since",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header If-Modified-Since", HFILL
- }
- },
- { &hf_hdr_if_match,
- { "If-Match",
- "wsp.header.if_match",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header If-Match", HFILL
- }
- },
- { &hf_hdr_if_none_match,
- { "If-None-Match",
- "wsp.header.if_none_match",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header If-None-Match", HFILL
- }
- },
- { &hf_hdr_if_range,
- { "If-Range",
- "wsp.header.if_range",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header If-Range", HFILL
- }
- },
- { &hf_hdr_if_unmodified_since,
- { "If-Unmodified-Since",
- "wsp.header.if_unmodified_since",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header If-Unmodified-Since", HFILL
- }
- },
- { &hf_hdr_last_modified,
- { "Last-Modified",
- "wsp.header.last_modified",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Last-Modified", HFILL
- }
- },
- { &hf_hdr_location,
- { "Location",
- "wsp.header.location",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Location", HFILL
- }
- },
- { &hf_hdr_max_forwards,
- { "Max-Forwards",
- "wsp.header.max_forwards",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Max-Forwards", HFILL
- }
- },
- { &hf_hdr_pragma,
- { "Pragma",
- "wsp.header.pragma",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Pragma", HFILL
- }
- },
- { &hf_hdr_proxy_authenticate,
- { "Proxy-Authenticate",
- "wsp.header.proxy_authenticate",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authenticate", HFILL
- }
- },
- { &hf_hdr_proxy_authenticate_scheme,
- { "Authentication Scheme",
- "wsp.header.proxy_authenticate.scheme",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authenticate: used scheme", HFILL
- }
- },
- { &hf_hdr_proxy_authenticate_realm,
- { "Authentication Realm",
- "wsp.header.proxy_authenticate.realm",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authenticate: used realm", HFILL
- }
- },
- { &hf_hdr_proxy_authorization,
- { "Proxy-Authorization",
- "wsp.header.proxy_authorization",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authorization", HFILL
- }
- },
- { &hf_hdr_proxy_authorization_scheme,
- { "Authorization Scheme",
- "wsp.header.proxy_authorization.scheme",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authorization: used scheme", HFILL
- }
- },
- { &hf_hdr_proxy_authorization_user_id,
- { "User-id",
- "wsp.header.proxy_authorization.user_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authorization: user ID for basic authorization", HFILL
- }
- },
- { &hf_hdr_proxy_authorization_password,
- { "Password",
- "wsp.header.proxy_authorization.password",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Proxy-Authorization: password for basic authorization", HFILL
- }
- },
- { &hf_hdr_public,
- { "Public",
- "wsp.header.public",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Public", HFILL
- }
- },
- { &hf_hdr_range,
- { "Range",
- "wsp.header.range",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Range", HFILL
- }
- },
- { &hf_hdr_range_first_byte_pos,
- { "First-byte-position",
- "wsp.header.range.first_byte_pos",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "WSP header Range: position of first byte", HFILL
- }
- },
- { &hf_hdr_range_last_byte_pos,
- { "Last-byte-position",
- "wsp.header.range.last_byte_pos",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "WSP header Range: position of last byte", HFILL
- }
- },
- { &hf_hdr_range_suffix_length,
- { "Suffix-length",
- "wsp.header.range.suffix_length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "WSP header Range: length of the suffix", HFILL
- }
- },
- { &hf_hdr_referer,
- { "Referer",
- "wsp.header.referer",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Referer", HFILL
- }
- },
- { &hf_hdr_retry_after,
- { "Retry-After",
- "wsp.header.retry_after",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Retry-After", HFILL
- }
- },
- { &hf_hdr_server,
- { "Server",
- "wsp.header.server",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Server", HFILL
- }
- },
- { &hf_hdr_transfer_encoding,
- { "Transfer-Encoding",
- "wsp.header.transfer_encoding",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Transfer-Encoding", HFILL
- }
- },
- { &hf_hdr_upgrade,
- { "Upgrade",
- "wsp.header.upgrade",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Upgrade", HFILL
- }
- },
- { &hf_hdr_user_agent,
- { "User-Agent",
- "wsp.header.user_agent",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header User-Agent", HFILL
- }
- },
- { &hf_hdr_vary,
- { "Vary",
- "wsp.header.vary",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Vary", HFILL
- }
- },
- { &hf_hdr_via,
- { "Via",
- "wsp.header.via",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Via", HFILL
- }
- },
- { &hf_hdr_warning,
- { "Warning",
- "wsp.header.warning",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Warning", HFILL
- }
- },
- { &hf_hdr_warning_code,
- { "Warning code",
- "wsp.header.warning.code",
- FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_wsp_warning_code_ext, 0x00,
- "WSP header Warning code", HFILL
- }
- },
- { &hf_hdr_warning_agent,
- { "Warning agent",
- "wsp.header.warning.agent",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Warning agent", HFILL
- }
- },
- { &hf_hdr_warning_text,
- { "Warning text",
- "wsp.header.warning.text",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Warning text", HFILL
- }
- },
- { &hf_hdr_www_authenticate,
- { "Www-Authenticate",
- "wsp.header.www_authenticate",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Www-Authenticate", HFILL
- }
- },
- { &hf_hdr_www_authenticate_scheme,
- { "Authentication Scheme",
- "wsp.header.www_authenticate.scheme",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header WWW-Authenticate: used scheme", HFILL
- }
- },
- { &hf_hdr_www_authenticate_realm,
- { "Authentication Realm",
- "wsp.header.www_authenticate.realm",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header WWW-Authenticate: used realm", HFILL
- }
- },
- { &hf_hdr_content_disposition,
- { "Content-Disposition",
- "wsp.header.content_disposition",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Disposition", HFILL
- }
- },
- { &hf_hdr_application_id,
- { "Application-Id",
- "wsp.header.application_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Application-Id", HFILL
- }
- },
- { &hf_hdr_content_uri,
- { "Content-Uri",
- "wsp.header.content_uri",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Uri", HFILL
- }
- },
- { &hf_hdr_initiator_uri,
- { "Initiator-Uri",
- "wsp.header.initiator_uri",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Initiator-Uri", HFILL
- }
- },
- { &hf_hdr_bearer_indication,
- { "Bearer-Indication",
- "wsp.header.bearer_indication",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Bearer-Indication", HFILL
- }
- },
- { &hf_hdr_push_flag,
- { "Push-Flag",
- "wsp.header.push_flag",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Push-Flag", HFILL
- }
- },
- { &hf_hdr_push_flag_auth,
- { "Initiator URI is authenticated",
- "wsp.header.push_flag.authenticated",
- FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x01,
- "The X-Wap-Initiator-URI has been authenticated.", HFILL
- }
- },
- { &hf_hdr_push_flag_trust,
- { "Content is trusted",
- "wsp.header.push_flag.trusted",
- FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x02,
- "The push content is trusted.", HFILL
- }
- },
- { &hf_hdr_push_flag_last,
- { "Last push message",
- "wsp.header.push_flag.last",
- FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x04,
- "Indicates whether this is the last push message.", HFILL
- }
- },
- { &hf_hdr_profile,
- { "Profile",
- "wsp.header.profile",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Profile", HFILL
- }
- },
- { &hf_hdr_profile_diff,
- { "Profile-Diff",
- "wsp.header.profile_diff",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Profile-Diff", HFILL
- }
- },
- { &hf_hdr_profile_warning,
- { "Profile-Warning",
- "wsp.header.profile_warning",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Profile-Warning", HFILL
- }
- },
- { &hf_hdr_expect,
- { "Expect",
- "wsp.header.expect",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Expect", HFILL
- }
- },
- { &hf_hdr_te,
- { "Te",
- "wsp.header.te",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Te", HFILL
- }
- },
- { &hf_hdr_trailer,
- { "Trailer",
- "wsp.header.trailer",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Trailer", HFILL
- }
- },
- { &hf_hdr_x_wap_tod,
- { "X-Wap-Tod",
- "wsp.header.x_wap_tod",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header X-Wap-Tod", HFILL
- }
- },
- { &hf_hdr_content_id,
- { "Content-Id",
- "wsp.header.content_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Content-Id", HFILL
- }
- },
- { &hf_hdr_set_cookie,
- { "Set-Cookie",
- "wsp.header.set_cookie",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Set-Cookie", HFILL
- }
- },
- { &hf_hdr_cookie,
- { "Cookie",
- "wsp.header.cookie",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Cookie", HFILL
- }
- },
- { &hf_hdr_encoding_version,
- { "Encoding-Version",
- "wsp.header.encoding_version",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Encoding-Version", HFILL
- }
- },
- { &hf_hdr_x_wap_security,
- { "X-Wap-Security",
- "wsp.header.x_wap_security",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header X-Wap-Security", HFILL
- }
- },
- { &hf_hdr_x_wap_application_id,
- { "X-Wap-Application-Id",
- "wsp.header.x_wap_application_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header X-Wap-Application-Id", HFILL
- }
- },
- { &hf_hdr_accept_application,
- { "Accept-Application",
- "wsp.header.accept_application",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP header Accept-Application", HFILL
- }
- },
-
-
- /*
- * Openwave headers
- * Header Code Page: x-up-1
- */
-
- /* Textual headers */
- { &hf_hdr_openwave_x_up_proxy_operator_domain,
- { "x-up-proxy-operator-domain",
- "wsp.header.x_up_1.x_up_proxy_operator_domain",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-operator-domain", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_home_page,
- { "x-up-proxy-home-page",
- "wsp.header.x_up_1.x_up_proxy_home_page",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-home-page", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_uplink_version,
- { "x-up-proxy-uplink-version",
- "wsp.header.x_up_1.x_up_proxy_uplink_version",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-uplink-version", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_ba_realm,
- { "x-up-proxy-ba-realm",
- "wsp.header.x_up_1.x_up_proxy_ba_realm",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-ba-realm", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_request_uri,
- { "x-up-proxy-request-uri",
- "wsp.header.x_up_1.x_up_proxy_request_uri",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-request-uri", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_bookmark,
- { "x-up-proxy-bookmark",
- "wsp.header.x_up_1.x_up_proxy_bookmark",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-bookmark", HFILL
- }
- },
- /* Integer-value headers */
- { &hf_hdr_openwave_x_up_proxy_push_seq,
- { "x-up-proxy-push-seq",
- "wsp.header.x_up_1.x_up_proxy_push_seq",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-push-seq", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_notify,
- { "x-up-proxy-notify",
- "wsp.header.x_up_1.x_up_proxy_notify",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-notify", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_net_ask,
- { "x-up-proxy-net-ask",
- "wsp.header.x_up_1.x_up_proxy_net_ask",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-net-ask", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_tod,
- { "x-up-proxy-tod",
- "wsp.header.x_up_1.x_up_proxy_tod",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-tod", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_ba_enable,
- { "x-up-proxy-ba-enable",
- "wsp.header.x_up_1.x_up_proxy_ba_enable",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-ba-enable", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_redirect_enable,
- { "x-up-proxy-redirect-enable",
- "wsp.header.x_up_1.x_up_proxy_redirect_enable",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-redirect-enable", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_redirect_status,
- { "x-up-proxy-redirect-status",
- "wsp.header.x_up_1.x_up_proxy_redirect_status",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-redirect-status", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_linger,
- { "x-up-proxy-linger",
- "wsp.header.x_up_1.x_up_proxy_linger",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-linger", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_enable_trust,
- { "x-up-proxy-enable-trust",
- "wsp.header.x_up_1.x_up_proxy_enable_trust",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-enable-trust", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_trust,
- { "x-up-proxy-trust",
- "wsp.header.x_up_1.x_up_proxy_trust",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-trust", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_has_color,
- { "x-up-devcap-has-color",
- "wsp.header.x_up_1.x_up_devcap_has_color",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-has-color", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_num_softkeys,
- { "x-up-devcap-num-softkeys",
- "wsp.header.x_up_1.x_up_devcap_num_softkeys",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-num-softkeys", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_softkey_size,
- { "x-up-devcap-softkey-size",
- "wsp.header.x_up_1.x_up_devcap_softkey_size",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-softkey-size", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_screen_chars,
- { "x-up-devcap-screen-chars",
- "wsp.header.x_up_1.x_up_devcap_screen_chars",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-screen-chars", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_screen_pixels,
- { "x-up-devcap-screen-pixels",
- "wsp.header.x_up_1.x_up_devcap_screen_pixels",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-screen-pixels", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_em_size,
- { "x-up-devcap-em-size",
- "wsp.header.x_up_1.x_up_devcap_em_size",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-em-size", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_screen_depth,
- { "x-up-devcap-screen-depth",
- "wsp.header.x_up_1.x_up_devcap_screen_depth",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-screen-depth", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_immed_alert,
- { "x-up-devcap-immed-alert",
- "wsp.header.x_up_1.x_up_devcap_immed_alert",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-immed-alert", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_devcap_gui,
- { "x-up-devcap-gui",
- "wsp.header.x_up_1.x_up_devcap_gui",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-devcap-gui", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_trans_charset,
- { "x-up-proxy-trans-charset",
- "wsp.header.x_up_1.x_up_proxy_trans_charset",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-trans-charset", HFILL
- }
- },
- { &hf_hdr_openwave_x_up_proxy_push_accept,
- { "x-up-proxy-push-accept",
- "wsp.header.x_up_1.x_up_proxy_push_accept",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-push-accept", HFILL
- }
- },
-
- /* Not used for now
- { &hf_hdr_openwave_x_up_proxy_client_id,
- { "x-up-proxy-client-id",
- "wsp.header.x_up_1.x_up_proxy_client_id",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "WSP Openwave header x-up-proxy-client-id", HFILL
- }
- },
- */
-
- /*
- * Header value parameters
- */
-
- { &hf_parameter_q,
- { "Q",
- "wsp.parameter.q",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Q parameter", HFILL
- }
- },
- { &hf_parameter_charset,
- { "Charset",
- "wsp.parameter.charset",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "Charset parameter", HFILL
- }
- }
- };
+ static hf_register_info hf[] = {
+ { &hf_wsp_header_tid,
+ { "Transaction ID",
+ "wsp.TID",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "WSP Transaction ID (for connectionless WSP)", HFILL
+ }
+ },
+ { &hf_wsp_header_pdu_type,
+ { "PDU Type",
+ "wsp.pdu_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &wsp_vals_pdu_type_ext, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_version_major,
+ { "Version (Major)",
+ "wsp.version.major",
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_version_minor,
+ { "Version (Minor)",
+ "wsp.version.minor",
+ FT_UINT8, BASE_DEC, NULL, 0x0F,
+ NULL, HFILL
+ }
+ },
+ { &hf_capabilities_length,
+ { "Capabilities Length",
+ "wsp.capabilities.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of Capabilities field (bytes)", HFILL
+ }
+ },
+ { &hf_wsp_header_length,
+ { "Headers Length",
+ "wsp.headers_length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of Headers field (bytes)", HFILL
+ }
+ },
+ { &hf_capabilities_section,
+ { "Capabilities",
+ "wsp.capabilities",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_headers_section,
+ { "Headers",
+ "wsp.headers",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_header_uri_len,
+ { "URI Length",
+ "wsp.uri_length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of URI field", HFILL
+ }
+ },
+ { &hf_wsp_header_uri,
+ { "URI",
+ "wsp.uri",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_server_session_id,
+ { "Server Session ID",
+ "wsp.server.session_id",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_header_status,
+ { "Status",
+ "wsp.reply.status",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &wsp_vals_status_ext, 0x00,
+ "Reply Status", HFILL
+ }
+ },
+ { &hf_wsp_parameter_type,
+ { "Type",
+ "wsp.parameter.type",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Type parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_name,
+ { "Name",
+ "wsp.parameter.name",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Name parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_filename,
+ { "Filename",
+ "wsp.parameter.filename",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Filename parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_start,
+ { "Start",
+ "wsp.parameter.start",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Start parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_start_info,
+ { "Start-info",
+ "wsp.parameter.start_info",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Start-info parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_comment,
+ { "Comment",
+ "wsp.parameter.comment",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Comment parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_domain,
+ { "Domain",
+ "wsp.parameter.domain",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Domain parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_path,
+ { "Path",
+ "wsp.parameter.path",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Path parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_sec,
+ { "SEC",
+ "wsp.parameter.sec",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_wsp_parameter_sec_ext, 0x00,
+ "SEC parameter (Content-Type: application/vnd.wap.connectivity-wbxml)", HFILL
+ }
+ },
+ { &hf_wsp_parameter_mac,
+ { "MAC",
+ "wsp.parameter.mac",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "MAC parameter (Content-Type: application/vnd.wap.connectivity-wbxml)", HFILL
+ }
+ },
+ { &hf_wsp_parameter_upart_type,
+ { "Type",
+ "wsp.parameter.upart.type",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Multipart type parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_level,
+ { "Level",
+ "wsp.parameter.level",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Level parameter", HFILL
+ }
+ },
+ { &hf_wsp_parameter_size,
+ { "Size",
+ "wsp.parameter.size",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Size parameter", HFILL
+ }
+ },
+ { &hf_wsp_reply_data,
+ { "Data",
+ "wsp.reply.data",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_header_shift_code,
+ { "Switching to WSP header code-page",
+ "wsp.code_page",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Header code-page shift code", HFILL
+ }
+ },
+ /*
+ * CO-WSP capability negotiation
+ */
+ { &hf_capa_client_sdu_size,
+ { "Client SDU Size",
+ "wsp.capability.client_sdu_size",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Client Service Data Unit size (bytes)", HFILL
+ }
+ },
+ { &hf_capa_server_sdu_size,
+ { "Server SDU Size",
+ "wsp.capability.server_sdu_size",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Server Service Data Unit size (bytes)", HFILL
+ }
+ },
+ { &hf_capa_protocol_options,
+ { "Protocol Options",
+ "wsp.capability.protocol_opt",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_protocol_option_confirmed_push,
+ { "Confirmed Push facility",
+ "wsp.capability.protocol_option.confirmed_push",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "If set, this CO-WSP session supports the Confirmed Push facility", HFILL
+ }
+ },
+ { &hf_capa_protocol_option_push,
+ { "Push facility",
+ "wsp.capability.protocol_option.push",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "If set, this CO-WSP session supports the Push facility", HFILL
+ }
+ },
+ { &hf_capa_protocol_option_session_resume,
+ { "Session Resume facility",
+ "wsp.capability.protocol_option.session_resume",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "If set, this CO-WSP session supports the Session Resume facility", HFILL
+ }
+ },
+ { &hf_capa_protocol_option_ack_headers,
+ { "Acknowledgement headers",
+ "wsp.capability.protocol_option.ack_headers",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "If set, this CO-WSP session supports Acknowledgement headers", HFILL
+ }
+ },
+ { &hf_capa_protocol_option_large_data_transfer,
+ { "Large data transfer",
+ "wsp.capability.protocol_option.large_data_transfer",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "If set, this CO-WSP session supports Large data transfer", HFILL
+ }
+ },
+ { &hf_capa_method_mor,
+ { "Method MOR",
+ "wsp.capability.method_mor",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_push_mor,
+ { "Push MOR",
+ "wsp.capability.push_mor",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_extended_methods,
+ { "Extended Methods",
+ "wsp.capability.extended_methods",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_header_code_pages,
+ { "Header Code Pages",
+ "wsp.capability.code_pages",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_aliases,
+ { "Aliases",
+ "wsp.capability.aliases",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_capa_client_message_size,
+ { "Client Message Size",
+ "wsp.capability.client_message_size",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Client Message size (bytes)", HFILL
+ }
+ },
+ { &hf_capa_server_message_size,
+ { "Server Message Size",
+ "wsp.capability.server_message_size",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Server Message size (bytes)", HFILL
+ }
+ },
+ { &hf_wsp_post_data,
+ { "Data (Post)",
+ "wsp.post.data",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Post Data", HFILL
+ }
+ },
+ { &hf_wsp_push_data,
+ { "Push Data",
+ "wsp.push.data",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_multipart_data,
+ { "Data in this part",
+ "wsp.multipart.data",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "The data of 1 MIME-multipart part.", HFILL
+ }
+ },
+ { &hf_wsp_mpart,
+ { "Part",
+ "wsp.multipart",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "MIME part of multipart data.", HFILL
+ }
+ },
+ { &hf_wsp_redirect_flags,
+ { "Flags",
+ "wsp.redirect.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "Redirect Flags", HFILL
+ }
+ },
+ { &hf_wsp_redirect_permanent,
+ { "Permanent Redirect",
+ "wsp.redirect.flags.permanent",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), PERMANENT_REDIRECT,
+ NULL, HFILL
+ }
+ },
+ { &hf_wsp_redirect_reuse_security_session,
+ { "Reuse Security Session",
+ "wsp.redirect.flags.reuse_security_session",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), REUSE_SECURITY_SESSION,
+ "If set, the existing Security Session may be reused", HFILL
+ }
+ },
+ { &hf_redirect_addresses,
+ { "Redirect Addresses",
+ "wsp.redirect.addresses",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "List of Redirect Addresses", HFILL
+ }
+ },
+
+ /*
+ * Addresses
+ */
+ { &hf_address_entry,
+ { "Address Record",
+ "wsp.address",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_address_flags_length,
+ { "Flags/Length",
+ "wsp.address.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x00,
+ "Address Flags/Length", HFILL
+ }
+ },
+ { &hf_address_flags_length_bearer_type_included,
+ { "Bearer Type Included",
+ "wsp.address.flags.bearer_type_included",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), BEARER_TYPE_INCLUDED,
+ "Address bearer type included", HFILL
+ }
+ },
+ { &hf_address_flags_length_port_number_included,
+ { "Port Number Included",
+ "wsp.address.flags.port_number_included",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), PORT_NUMBER_INCLUDED,
+ "Address port number included", HFILL
+ }
+ },
+ { &hf_address_flags_length_address_len,
+ { "Address Length",
+ "wsp.address.flags.length",
+ FT_UINT8, BASE_DEC, NULL, ADDRESS_LEN,
+ NULL, HFILL
+ }
+ },
+ { &hf_address_bearer_type,
+ { "Bearer Type",
+ "wsp.address.bearer_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_bearer_types_ext, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_address_port_num,
+ { "Port Number",
+ "wsp.address.port",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_address_ipv4_addr,
+ { "IPv4 Address",
+ "wsp.address.ipv4",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "Address (IPv4)", HFILL
+ }
+ },
+ { &hf_address_ipv6_addr,
+ { "IPv6 Address",
+ "wsp.address.ipv6",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ "Address (IPv6)", HFILL
+ }
+ },
+ { &hf_address_addr,
+ { "Address",
+ "wsp.address.unknown",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ "Address (unknown)", HFILL
+ }
+ },
+
+
+ /*
+ * New WSP header fields
+ */
+
+
+ /* WSP header name */
+ { &hf_hdr_name,
+ { "Header name",
+ "wsp.header.name",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Name of the WSP header", HFILL
+ }
+ },
+ /* WSP headers start here */
+ { &hf_hdr_accept,
+ { "Accept",
+ "wsp.header.accept",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept", HFILL
+ }
+ },
+ { &hf_hdr_accept_charset,
+ { "Accept-Charset",
+ "wsp.header.accept_charset",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept-Charset", HFILL
+ }
+ },
+ { &hf_hdr_accept_encoding,
+ { "Accept-Encoding",
+ "wsp.header.accept_encoding",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept-Encoding", HFILL
+ }
+ },
+ { &hf_hdr_accept_language,
+ { "Accept-Language",
+ "wsp.header.accept_language",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept-Language", HFILL
+ }
+ },
+ { &hf_hdr_accept_ranges,
+ { "Accept-Ranges",
+ "wsp.header.accept_ranges",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept-Ranges", HFILL
+ }
+ },
+ { &hf_hdr_age,
+ { "Age",
+ "wsp.header.age",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Age", HFILL
+ }
+ },
+ { &hf_hdr_allow,
+ { "Allow",
+ "wsp.header.allow",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Allow", HFILL
+ }
+ },
+ { &hf_hdr_authorization,
+ { "Authorization",
+ "wsp.header.authorization",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Authorization", HFILL
+ }
+ },
+ { &hf_hdr_authorization_scheme,
+ { "Authorization Scheme",
+ "wsp.header.authorization.scheme",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Authorization: used scheme", HFILL
+ }
+ },
+ { &hf_hdr_authorization_user_id,
+ { "User-id",
+ "wsp.header.authorization.user_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Authorization: user ID for basic authorization", HFILL
+ }
+ },
+ { &hf_hdr_authorization_password,
+ { "Password",
+ "wsp.header.authorization.password",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Authorization: password for basic authorization", HFILL
+ }
+ },
+ { &hf_hdr_cache_control,
+ { "Cache-Control",
+ "wsp.header.cache_control",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Cache-Control", HFILL
+ }
+ },
+ { &hf_hdr_connection,
+ { "Connection",
+ "wsp.header.connection",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Connection", HFILL
+ }
+ },
+ { &hf_hdr_content_base,
+ { "Content-Base",
+ "wsp.header.content_base",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Base", HFILL
+ }
+ },
+ { &hf_hdr_content_encoding,
+ { "Content-Encoding",
+ "wsp.header.content_encoding",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Encoding", HFILL
+ }
+ },
+ { &hf_hdr_content_language,
+ { "Content-Language",
+ "wsp.header.content_language",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Language", HFILL
+ }
+ },
+ { &hf_hdr_content_length,
+ { "Content-Length",
+ "wsp.header.content_length",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Length", HFILL
+ }
+ },
+ { &hf_hdr_content_location,
+ { "Content-Location",
+ "wsp.header.content_location",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Location", HFILL
+ }
+ },
+ { &hf_hdr_content_md5,
+ { "Content-Md5",
+ "wsp.header.content_md5",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Md5", HFILL
+ }
+ },
+ { &hf_hdr_content_range,
+ { "Content-Range",
+ "wsp.header.content_range",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Range", HFILL
+ }
+ },
+ { &hf_hdr_content_range_first_byte_pos,
+ { "First-byte-position",
+ "wsp.header.content_range.first_byte_pos",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "WSP header Content-Range: position of first byte", HFILL
+ }
+ },
+ { &hf_hdr_content_range_entity_length,
+ { "Entity-length",
+ "wsp.header.content_range.entity_length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "WSP header Content-Range: length of the entity", HFILL
+ }
+ },
+ { &hf_hdr_content_type,
+ { "Content-Type",
+ "wsp.header.content_type",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Type", HFILL
+ }
+ },
+ { &hf_hdr_date,
+ { "Date",
+ "wsp.header.date",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Date", HFILL
+ }
+ },
+ { &hf_hdr_etag,
+ { "ETag",
+ "wsp.header.etag",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header ETag", HFILL
+ }
+ },
+ { &hf_hdr_expires,
+ { "Expires",
+ "wsp.header.expires",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Expires", HFILL
+ }
+ },
+ { &hf_hdr_from,
+ { "From",
+ "wsp.header.from",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header From", HFILL
+ }
+ },
+ { &hf_hdr_host,
+ { "Host",
+ "wsp.header.host",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Host", HFILL
+ }
+ },
+ { &hf_hdr_if_modified_since,
+ { "If-Modified-Since",
+ "wsp.header.if_modified_since",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header If-Modified-Since", HFILL
+ }
+ },
+ { &hf_hdr_if_match,
+ { "If-Match",
+ "wsp.header.if_match",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header If-Match", HFILL
+ }
+ },
+ { &hf_hdr_if_none_match,
+ { "If-None-Match",
+ "wsp.header.if_none_match",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header If-None-Match", HFILL
+ }
+ },
+ { &hf_hdr_if_range,
+ { "If-Range",
+ "wsp.header.if_range",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header If-Range", HFILL
+ }
+ },
+ { &hf_hdr_if_unmodified_since,
+ { "If-Unmodified-Since",
+ "wsp.header.if_unmodified_since",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header If-Unmodified-Since", HFILL
+ }
+ },
+ { &hf_hdr_last_modified,
+ { "Last-Modified",
+ "wsp.header.last_modified",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Last-Modified", HFILL
+ }
+ },
+ { &hf_hdr_location,
+ { "Location",
+ "wsp.header.location",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Location", HFILL
+ }
+ },
+ { &hf_hdr_max_forwards,
+ { "Max-Forwards",
+ "wsp.header.max_forwards",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Max-Forwards", HFILL
+ }
+ },
+ { &hf_hdr_pragma,
+ { "Pragma",
+ "wsp.header.pragma",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Pragma", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authenticate,
+ { "Proxy-Authenticate",
+ "wsp.header.proxy_authenticate",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authenticate", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authenticate_scheme,
+ { "Authentication Scheme",
+ "wsp.header.proxy_authenticate.scheme",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authenticate: used scheme", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authenticate_realm,
+ { "Authentication Realm",
+ "wsp.header.proxy_authenticate.realm",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authenticate: used realm", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authorization,
+ { "Proxy-Authorization",
+ "wsp.header.proxy_authorization",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authorization", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authorization_scheme,
+ { "Authorization Scheme",
+ "wsp.header.proxy_authorization.scheme",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authorization: used scheme", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authorization_user_id,
+ { "User-id",
+ "wsp.header.proxy_authorization.user_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authorization: user ID for basic authorization", HFILL
+ }
+ },
+ { &hf_hdr_proxy_authorization_password,
+ { "Password",
+ "wsp.header.proxy_authorization.password",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Proxy-Authorization: password for basic authorization", HFILL
+ }
+ },
+ { &hf_hdr_public,
+ { "Public",
+ "wsp.header.public",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Public", HFILL
+ }
+ },
+ { &hf_hdr_range,
+ { "Range",
+ "wsp.header.range",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Range", HFILL
+ }
+ },
+ { &hf_hdr_range_first_byte_pos,
+ { "First-byte-position",
+ "wsp.header.range.first_byte_pos",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "WSP header Range: position of first byte", HFILL
+ }
+ },
+ { &hf_hdr_range_last_byte_pos,
+ { "Last-byte-position",
+ "wsp.header.range.last_byte_pos",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "WSP header Range: position of last byte", HFILL
+ }
+ },
+ { &hf_hdr_range_suffix_length,
+ { "Suffix-length",
+ "wsp.header.range.suffix_length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "WSP header Range: length of the suffix", HFILL
+ }
+ },
+ { &hf_hdr_referer,
+ { "Referer",
+ "wsp.header.referer",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Referer", HFILL
+ }
+ },
+ { &hf_hdr_retry_after,
+ { "Retry-After",
+ "wsp.header.retry_after",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Retry-After", HFILL
+ }
+ },
+ { &hf_hdr_server,
+ { "Server",
+ "wsp.header.server",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Server", HFILL
+ }
+ },
+ { &hf_hdr_transfer_encoding,
+ { "Transfer-Encoding",
+ "wsp.header.transfer_encoding",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Transfer-Encoding", HFILL
+ }
+ },
+ { &hf_hdr_upgrade,
+ { "Upgrade",
+ "wsp.header.upgrade",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Upgrade", HFILL
+ }
+ },
+ { &hf_hdr_user_agent,
+ { "User-Agent",
+ "wsp.header.user_agent",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header User-Agent", HFILL
+ }
+ },
+ { &hf_hdr_vary,
+ { "Vary",
+ "wsp.header.vary",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Vary", HFILL
+ }
+ },
+ { &hf_hdr_via,
+ { "Via",
+ "wsp.header.via",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Via", HFILL
+ }
+ },
+ { &hf_hdr_warning,
+ { "Warning",
+ "wsp.header.warning",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Warning", HFILL
+ }
+ },
+ { &hf_hdr_warning_code,
+ { "Warning code",
+ "wsp.header.warning.code",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &vals_wsp_warning_code_ext, 0x00,
+ "WSP header Warning code", HFILL
+ }
+ },
+ { &hf_hdr_warning_agent,
+ { "Warning agent",
+ "wsp.header.warning.agent",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Warning agent", HFILL
+ }
+ },
+ { &hf_hdr_warning_text,
+ { "Warning text",
+ "wsp.header.warning.text",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Warning text", HFILL
+ }
+ },
+ { &hf_hdr_www_authenticate,
+ { "Www-Authenticate",
+ "wsp.header.www_authenticate",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Www-Authenticate", HFILL
+ }
+ },
+ { &hf_hdr_www_authenticate_scheme,
+ { "Authentication Scheme",
+ "wsp.header.www_authenticate.scheme",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header WWW-Authenticate: used scheme", HFILL
+ }
+ },
+ { &hf_hdr_www_authenticate_realm,
+ { "Authentication Realm",
+ "wsp.header.www_authenticate.realm",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header WWW-Authenticate: used realm", HFILL
+ }
+ },
+ { &hf_hdr_content_disposition,
+ { "Content-Disposition",
+ "wsp.header.content_disposition",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Disposition", HFILL
+ }
+ },
+ { &hf_hdr_application_id,
+ { "Application-Id",
+ "wsp.header.application_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Application-Id", HFILL
+ }
+ },
+ { &hf_hdr_content_uri,
+ { "Content-Uri",
+ "wsp.header.content_uri",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Uri", HFILL
+ }
+ },
+ { &hf_hdr_initiator_uri,
+ { "Initiator-Uri",
+ "wsp.header.initiator_uri",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Initiator-Uri", HFILL
+ }
+ },
+ { &hf_hdr_bearer_indication,
+ { "Bearer-Indication",
+ "wsp.header.bearer_indication",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Bearer-Indication", HFILL
+ }
+ },
+ { &hf_hdr_push_flag,
+ { "Push-Flag",
+ "wsp.header.push_flag",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Push-Flag", HFILL
+ }
+ },
+ { &hf_hdr_push_flag_auth,
+ { "Initiator URI is authenticated",
+ "wsp.header.push_flag.authenticated",
+ FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x01,
+ "The X-Wap-Initiator-URI has been authenticated.", HFILL
+ }
+ },
+ { &hf_hdr_push_flag_trust,
+ { "Content is trusted",
+ "wsp.header.push_flag.trusted",
+ FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x02,
+ "The push content is trusted.", HFILL
+ }
+ },
+ { &hf_hdr_push_flag_last,
+ { "Last push message",
+ "wsp.header.push_flag.last",
+ FT_UINT8, BASE_DEC, VALS(vals_false_true), 0x04,
+ "Indicates whether this is the last push message.", HFILL
+ }
+ },
+ { &hf_hdr_profile,
+ { "Profile",
+ "wsp.header.profile",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Profile", HFILL
+ }
+ },
+ { &hf_hdr_profile_diff,
+ { "Profile-Diff",
+ "wsp.header.profile_diff",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Profile-Diff", HFILL
+ }
+ },
+ { &hf_hdr_profile_warning,
+ { "Profile-Warning",
+ "wsp.header.profile_warning",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Profile-Warning", HFILL
+ }
+ },
+ { &hf_hdr_expect,
+ { "Expect",
+ "wsp.header.expect",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Expect", HFILL
+ }
+ },
+ { &hf_hdr_te,
+ { "Te",
+ "wsp.header.te",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Te", HFILL
+ }
+ },
+ { &hf_hdr_trailer,
+ { "Trailer",
+ "wsp.header.trailer",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Trailer", HFILL
+ }
+ },
+ { &hf_hdr_x_wap_tod,
+ { "X-Wap-Tod",
+ "wsp.header.x_wap_tod",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header X-Wap-Tod", HFILL
+ }
+ },
+ { &hf_hdr_content_id,
+ { "Content-Id",
+ "wsp.header.content_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Content-Id", HFILL
+ }
+ },
+ { &hf_hdr_set_cookie,
+ { "Set-Cookie",
+ "wsp.header.set_cookie",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Set-Cookie", HFILL
+ }
+ },
+ { &hf_hdr_cookie,
+ { "Cookie",
+ "wsp.header.cookie",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Cookie", HFILL
+ }
+ },
+ { &hf_hdr_encoding_version,
+ { "Encoding-Version",
+ "wsp.header.encoding_version",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Encoding-Version", HFILL
+ }
+ },
+ { &hf_hdr_x_wap_security,
+ { "X-Wap-Security",
+ "wsp.header.x_wap_security",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header X-Wap-Security", HFILL
+ }
+ },
+ { &hf_hdr_x_wap_application_id,
+ { "X-Wap-Application-Id",
+ "wsp.header.x_wap_application_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header X-Wap-Application-Id", HFILL
+ }
+ },
+ { &hf_hdr_accept_application,
+ { "Accept-Application",
+ "wsp.header.accept_application",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP header Accept-Application", HFILL
+ }
+ },
+
+
+ /*
+ * Openwave headers
+ * Header Code Page: x-up-1
+ */
+
+ /* Textual headers */
+ { &hf_hdr_openwave_x_up_proxy_operator_domain,
+ { "x-up-proxy-operator-domain",
+ "wsp.header.x_up_1.x_up_proxy_operator_domain",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-operator-domain", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_home_page,
+ { "x-up-proxy-home-page",
+ "wsp.header.x_up_1.x_up_proxy_home_page",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-home-page", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_uplink_version,
+ { "x-up-proxy-uplink-version",
+ "wsp.header.x_up_1.x_up_proxy_uplink_version",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-uplink-version", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_ba_realm,
+ { "x-up-proxy-ba-realm",
+ "wsp.header.x_up_1.x_up_proxy_ba_realm",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-ba-realm", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_request_uri,
+ { "x-up-proxy-request-uri",
+ "wsp.header.x_up_1.x_up_proxy_request_uri",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-request-uri", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_bookmark,
+ { "x-up-proxy-bookmark",
+ "wsp.header.x_up_1.x_up_proxy_bookmark",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-bookmark", HFILL
+ }
+ },
+ /* Integer-value headers */
+ { &hf_hdr_openwave_x_up_proxy_push_seq,
+ { "x-up-proxy-push-seq",
+ "wsp.header.x_up_1.x_up_proxy_push_seq",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-push-seq", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_notify,
+ { "x-up-proxy-notify",
+ "wsp.header.x_up_1.x_up_proxy_notify",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-notify", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_net_ask,
+ { "x-up-proxy-net-ask",
+ "wsp.header.x_up_1.x_up_proxy_net_ask",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-net-ask", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_tod,
+ { "x-up-proxy-tod",
+ "wsp.header.x_up_1.x_up_proxy_tod",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-tod", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_ba_enable,
+ { "x-up-proxy-ba-enable",
+ "wsp.header.x_up_1.x_up_proxy_ba_enable",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-ba-enable", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_redirect_enable,
+ { "x-up-proxy-redirect-enable",
+ "wsp.header.x_up_1.x_up_proxy_redirect_enable",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-redirect-enable", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_redirect_status,
+ { "x-up-proxy-redirect-status",
+ "wsp.header.x_up_1.x_up_proxy_redirect_status",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-redirect-status", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_linger,
+ { "x-up-proxy-linger",
+ "wsp.header.x_up_1.x_up_proxy_linger",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-linger", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_enable_trust,
+ { "x-up-proxy-enable-trust",
+ "wsp.header.x_up_1.x_up_proxy_enable_trust",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-enable-trust", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_trust,
+ { "x-up-proxy-trust",
+ "wsp.header.x_up_1.x_up_proxy_trust",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-trust", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_has_color,
+ { "x-up-devcap-has-color",
+ "wsp.header.x_up_1.x_up_devcap_has_color",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-has-color", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_num_softkeys,
+ { "x-up-devcap-num-softkeys",
+ "wsp.header.x_up_1.x_up_devcap_num_softkeys",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-num-softkeys", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_softkey_size,
+ { "x-up-devcap-softkey-size",
+ "wsp.header.x_up_1.x_up_devcap_softkey_size",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-softkey-size", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_screen_chars,
+ { "x-up-devcap-screen-chars",
+ "wsp.header.x_up_1.x_up_devcap_screen_chars",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-screen-chars", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_screen_pixels,
+ { "x-up-devcap-screen-pixels",
+ "wsp.header.x_up_1.x_up_devcap_screen_pixels",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-screen-pixels", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_em_size,
+ { "x-up-devcap-em-size",
+ "wsp.header.x_up_1.x_up_devcap_em_size",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-em-size", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_screen_depth,
+ { "x-up-devcap-screen-depth",
+ "wsp.header.x_up_1.x_up_devcap_screen_depth",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-screen-depth", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_immed_alert,
+ { "x-up-devcap-immed-alert",
+ "wsp.header.x_up_1.x_up_devcap_immed_alert",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-immed-alert", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_devcap_gui,
+ { "x-up-devcap-gui",
+ "wsp.header.x_up_1.x_up_devcap_gui",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-devcap-gui", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_trans_charset,
+ { "x-up-proxy-trans-charset",
+ "wsp.header.x_up_1.x_up_proxy_trans_charset",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-trans-charset", HFILL
+ }
+ },
+ { &hf_hdr_openwave_x_up_proxy_push_accept,
+ { "x-up-proxy-push-accept",
+ "wsp.header.x_up_1.x_up_proxy_push_accept",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-push-accept", HFILL
+ }
+ },
+
+ /* Not used for now
+ { &hf_hdr_openwave_x_up_proxy_client_id,
+ { "x-up-proxy-client-id",
+ "wsp.header.x_up_1.x_up_proxy_client_id",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "WSP Openwave header x-up-proxy-client-id", HFILL
+ }
+ },
+ */
+
+ /*
+ * Header value parameters
+ */
+
+ { &hf_parameter_q,
+ { "Q",
+ "wsp.parameter.q",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Q parameter", HFILL
+ }
+ },
+ { &hf_parameter_charset,
+ { "Charset",
+ "wsp.parameter.charset",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "Charset parameter", HFILL
+ }
+ }
+ };
/* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_wsp,
- &ett_header, /* Header field subtree */
- &ett_headers, /* Subtree for WSP headers */
- &ett_capabilities, /* CO-WSP Session Capabilities */
- &ett_capability, /* CO-WSP Session single Capability */
- &ett_post,
- &ett_redirect_flags,
- &ett_address_flags,
- &ett_multiparts,
- &ett_mpartlist,
- &ett_addresses, /* Addresses */
- &ett_address /* Single address */
- };
+ static gint *ett[] = {
+ &ett_wsp,
+ &ett_header, /* Header field subtree */
+ &ett_headers, /* Subtree for WSP headers */
+ &ett_capabilities, /* CO-WSP Session Capabilities */
+ &ett_capability, /* CO-WSP Session single Capability */
+ &ett_post,
+ &ett_redirect_flags,
+ &ett_address_flags,
+ &ett_multiparts,
+ &ett_mpartlist,
+ &ett_addresses, /* Addresses */
+ &ett_address /* Single address */
+ };
/* Register the protocol name and description */
- proto_wsp = proto_register_protocol(
- "Wireless Session Protocol", /* protocol name for use by wireshark */
- "WSP", /* short version of name */
- "wsp" /* Abbreviated protocol name,
- should Match IANA:
- < URL:http://www.iana.org/assignments/port-numbers/ >
- */
- );
- wsp_tap = register_tap("wsp");
- /* Init the hash table */
-/* wsp_sessions = g_hash_table_new(
- (GHashFunc) wsp_session_hash,
- (GEqualFunc)wsp_session_equal);*/
+ proto_wsp = proto_register_protocol(
+ "Wireless Session Protocol", /* protocol name for use by wireshark */
+ "WSP", /* short version of name */
+ "wsp" /* Abbreviated protocol name,
+ should Match IANA:
+ < URL:http://www.iana.org/assignments/port-numbers/ >
+ */
+ );
+ wsp_tap = register_tap("wsp");
+ /* Init the hash table */
+/* wsp_sessions = g_hash_table_new(
+ (GHashFunc) wsp_session_hash,
+ (GEqualFunc)wsp_session_equal);*/
/* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_wsp, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_wsp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- register_dissector("wsp-co", dissect_wsp_fromwap_co, proto_wsp);
- register_dissector("wsp-cl", dissect_wsp_fromwap_cl, proto_wsp);
- register_heur_dissector_list("wsp", &heur_subdissector_list);
+ register_dissector("wsp-co", dissect_wsp_fromwap_co, proto_wsp);
+ register_dissector("wsp-cl", dissect_wsp_fromwap_cl, proto_wsp);
+ register_heur_dissector_list("wsp", &heur_subdissector_list);
- wsp_fromudp_handle = create_dissector_handle(dissect_wsp_fromudp,
- proto_wsp);
+ wsp_fromudp_handle = create_dissector_handle(dissect_wsp_fromudp,
+ proto_wsp);
}
void
proto_reg_handoff_wsp(void)
{
- /*
- * Get a handle for the WTP-over-UDP and the generic media dissectors.
- */
- wtp_fromudp_handle = find_dissector("wtp-udp");
- media_handle = find_dissector("media");
- wbxml_uaprof_handle = find_dissector("wbxml-uaprof");
-
- /* Only connection-less WSP has no previous handler */
- dissector_add_uint("udp.port", UDP_PORT_WSP, wsp_fromudp_handle);
- dissector_add_uint("udp.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
-
- /* GSM SMS UD dissector can also carry WSP */
- dissector_add_uint("gsm-sms-ud.udh.port", UDP_PORT_WSP, wsp_fromudp_handle);
- dissector_add_uint("gsm-sms-ud.udh.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
-
- /* GSM SMS dissector can also carry WSP */
- dissector_add_uint("gsm-sms.udh.port", UDP_PORT_WSP, wsp_fromudp_handle);
- dissector_add_uint("gsm-sms.udh.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
-
- /* As the media types for WSP and HTTP are the same, the WSP dissector
- * uses the same string dissector table as the HTTP protocol. */
- media_type_table = find_dissector_table("media_type");
-
- /* This dissector is also called from the WTP and WTLS dissectors */
+ /*
+ * Get a handle for the WTP-over-UDP and the generic media dissectors.
+ */
+ wtp_fromudp_handle = find_dissector("wtp-udp");
+ media_handle = find_dissector("media");
+ wbxml_uaprof_handle = find_dissector("wbxml-uaprof");
+
+ /* Only connection-less WSP has no previous handler */
+ dissector_add_uint("udp.port", UDP_PORT_WSP, wsp_fromudp_handle);
+ dissector_add_uint("udp.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
+
+ /* GSM SMS UD dissector can also carry WSP */
+ dissector_add_uint("gsm-sms-ud.udh.port", UDP_PORT_WSP, wsp_fromudp_handle);
+ dissector_add_uint("gsm-sms-ud.udh.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
+
+ /* GSM SMS dissector can also carry WSP */
+ dissector_add_uint("gsm-sms.udh.port", UDP_PORT_WSP, wsp_fromudp_handle);
+ dissector_add_uint("gsm-sms.udh.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle);
+
+ /* As the media types for WSP and HTTP are the same, the WSP dissector
+ * uses the same string dissector table as the HTTP protocol. */
+ media_type_table = find_dissector_table("media_type");
+
+ /* This dissector is also called from the WTP and WTLS dissectors */
}
/*
@@ -7409,135 +7404,150 @@ proto_reg_handoff_wsp(void)
void
proto_register_sir(void)
{
- /* Setup list of header fields */
- static hf_register_info hf[] = {
- { &hf_sir_section,
- { "Session Initiation Request",
- "wap.sir",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Session Initiation Request content", HFILL
- }
- },
- { &hf_sir_version,
- { "Version",
- "wap.sir.version",
- FT_UINT8, BASE_DEC, NULL, 0x00,
- "Version of the Session Initiation Request document", HFILL
- }
- },
- { &hf_sir_app_id_list_len,
- { "Application-ID List Length",
- "wap.sir.app_id_list.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of the Application-ID list (bytes)", HFILL
- }
- },
- { &hf_sir_app_id_list,
- { "Application-ID List",
- "wap.sir.app_id_list",
- FT_NONE, BASE_NONE, NULL, 0x00,
- NULL, HFILL
- }
- },
- { &hf_sir_wsp_contact_points_len,
- { "WSP Contact Points Length",
- "wap.sir.wsp_contact_points.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of the WSP Contact Points list (bytes)", HFILL
- }
- },
- { &hf_sir_wsp_contact_points,
- { "WSP Contact Points",
- "wap.sir.wsp_contact_points",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "WSP Contact Points list", HFILL
- }
- },
- { &hf_sir_contact_points_len,
- { "Non-WSP Contact Points Length",
- "wap.sir.contact_points.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of the Non-WSP Contact Points list (bytes)", HFILL
- }
- },
- { &hf_sir_contact_points,
- { "Non-WSP Contact Points",
- "wap.sir.contact_points",
- FT_NONE, BASE_NONE, NULL, 0x00,
- "Non-WSP Contact Points list", HFILL
- }
- },
- { &hf_sir_protocol_options_len,
- { "Protocol Options List Entries",
- "wap.sir.protocol_options.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Number of entries in the Protocol Options list", HFILL
- }
- },
- { &hf_sir_protocol_options,
- { "Protocol Options",
- "wap.sir.protocol_options",
- FT_UINT16, BASE_DEC, VALS(vals_sir_protocol_options), 0x00,
- "Protocol Options list", HFILL
- }
- },
- { &hf_sir_prov_url_len,
- { "X-Wap-ProvURL Length",
- "wap.sir.prov_url.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Length of the X-Wap-ProvURL (Identifies the WAP Client Provisioning Context)", HFILL
- }
- },
- { &hf_sir_prov_url,
- { "X-Wap-ProvURL",
- "wap.sir.prov_url",
- FT_STRING, BASE_NONE, NULL, 0x00,
- "X-Wap-ProvURL (Identifies the WAP Client Provisioning Context)", HFILL
- }
- },
- { &hf_sir_cpi_tag_len,
- { "CPITag List Entries",
- "wap.sir.cpi_tag.length",
- FT_UINT32, BASE_DEC, NULL, 0x00,
- "Number of entries in the CPITag list", HFILL
- }
- },
- { &hf_sir_cpi_tag,
- { "CPITag",
- "wap.sir.cpi_tag",
- FT_BYTES, BASE_NONE, NULL, 0x00,
- "CPITag (OTA-HTTP)", HFILL
- }
- }
- };
-
- /* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_sir /* Session Initiation Request */
- };
-
- /* Register the dissector */
- proto_sir = proto_register_protocol(
- "WAP Session Initiation Request", /* protocol name for use by wireshark */
- "WAP SIR", /* short version of name */
- "wap-sir" /* Abbreviated protocol name,
- should Match IANA:
- < URL:http://www.iana.org/assignments/port-numbers/ >
- */
- );
-
- /* Register header fields and protocol subtrees */
- proto_register_field_array(proto_sir, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ /* Setup list of header fields */
+ static hf_register_info hf[] = {
+ { &hf_sir_section,
+ { "Session Initiation Request",
+ "wap.sir",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Session Initiation Request content", HFILL
+ }
+ },
+ { &hf_sir_version,
+ { "Version",
+ "wap.sir.version",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ "Version of the Session Initiation Request document", HFILL
+ }
+ },
+ { &hf_sir_app_id_list_len,
+ { "Application-ID List Length",
+ "wap.sir.app_id_list.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of the Application-ID list (bytes)", HFILL
+ }
+ },
+ { &hf_sir_app_id_list,
+ { "Application-ID List",
+ "wap.sir.app_id_list",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL
+ }
+ },
+ { &hf_sir_wsp_contact_points_len,
+ { "WSP Contact Points Length",
+ "wap.sir.wsp_contact_points.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of the WSP Contact Points list (bytes)", HFILL
+ }
+ },
+ { &hf_sir_wsp_contact_points,
+ { "WSP Contact Points",
+ "wap.sir.wsp_contact_points",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "WSP Contact Points list", HFILL
+ }
+ },
+ { &hf_sir_contact_points_len,
+ { "Non-WSP Contact Points Length",
+ "wap.sir.contact_points.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of the Non-WSP Contact Points list (bytes)", HFILL
+ }
+ },
+ { &hf_sir_contact_points,
+ { "Non-WSP Contact Points",
+ "wap.sir.contact_points",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ "Non-WSP Contact Points list", HFILL
+ }
+ },
+ { &hf_sir_protocol_options_len,
+ { "Protocol Options List Entries",
+ "wap.sir.protocol_options.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Number of entries in the Protocol Options list", HFILL
+ }
+ },
+ { &hf_sir_protocol_options,
+ { "Protocol Options",
+ "wap.sir.protocol_options",
+ FT_UINT16, BASE_DEC, VALS(vals_sir_protocol_options), 0x00,
+ "Protocol Options list", HFILL
+ }
+ },
+ { &hf_sir_prov_url_len,
+ { "X-Wap-ProvURL Length",
+ "wap.sir.prov_url.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Length of the X-Wap-ProvURL (Identifies the WAP Client Provisioning Context)", HFILL
+ }
+ },
+ { &hf_sir_prov_url,
+ { "X-Wap-ProvURL",
+ "wap.sir.prov_url",
+ FT_STRING, BASE_NONE, NULL, 0x00,
+ "X-Wap-ProvURL (Identifies the WAP Client Provisioning Context)", HFILL
+ }
+ },
+ { &hf_sir_cpi_tag_len,
+ { "CPITag List Entries",
+ "wap.sir.cpi_tag.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00,
+ "Number of entries in the CPITag list", HFILL
+ }
+ },
+ { &hf_sir_cpi_tag,
+ { "CPITag",
+ "wap.sir.cpi_tag",
+ FT_BYTES, BASE_NONE, NULL, 0x00,
+ "CPITag (OTA-HTTP)", HFILL
+ }
+ }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_sir /* Session Initiation Request */
+ };
+
+ /* Register the dissector */
+ proto_sir = proto_register_protocol(
+ "WAP Session Initiation Request", /* protocol name for use by wireshark */
+ "WAP SIR", /* short version of name */
+ "wap-sir" /* Abbreviated protocol name,
+ should Match IANA:
+ < URL:http://www.iana.org/assignments/port-numbers/ >
+ */
+ );
+
+ /* Register header fields and protocol subtrees */
+ proto_register_field_array(proto_sir, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_sir(void)
{
- dissector_handle_t sir_handle;
+ dissector_handle_t sir_handle;
- sir_handle = create_dissector_handle(dissect_sir, proto_sir);
+ sir_handle = create_dissector_handle(dissect_sir, proto_sir);
- /* Add dissector bindings for SIR dissection */
- dissector_add_string("media_type", "application/vnd.wap.sia", sir_handle);
+ /* Add dissector bindings for SIR dissection */
+ dissector_add_string("media_type", "application/vnd.wap.sia", sir_handle);
}
+
+
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */