diff options
author | Michael Mann <mmann78@netscape.net> | 2013-05-28 03:11:44 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-05-28 03:11:44 +0000 |
commit | 553bec65bab1b29317a4a2882af9e36bcf92aafd (patch) | |
tree | ffb845da44f6ecf27b6e645a73ee25fed0ad5ad7 /epan/dissectors/packet-xmpp.c | |
parent | 292e50ed1dc51216ad1b157c3e2d3938528be11e (diff) |
Batch of filterable expert infos. This (mostly) completes the non-ASN.1 list of (built-in) dissectors that only had a small handful of add_expert_info_format calls.
svn path=/trunk/; revision=49602
Diffstat (limited to 'epan/dissectors/packet-xmpp.c')
-rw-r--r-- | epan/dissectors/packet-xmpp.c | 114 |
1 files changed, 61 insertions, 53 deletions
diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c index d816048bdc..dec593fb13 100644 --- a/epan/dissectors/packet-xmpp.c +++ b/epan/dissectors/packet-xmpp.c @@ -360,6 +360,9 @@ gint ett_xmpp_jitsi_inputevt_rmt_ctrl = -1; gint ett_unknown[ETT_UNKNOWN_LEN]; +static expert_field ei_xmpp_xml_disabled = EI_INIT; +static expert_field ei_xmpp_packet_unknown = EI_INIT; + static void dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -371,6 +374,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *xmpp_tree = NULL; proto_item *xmpp_item = NULL; + proto_item *outin_item; xmpp_element_t *packet = NULL; @@ -425,7 +429,7 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { if (!proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(xml_handle)))) { col_append_str(pinfo->cinfo, COL_INFO, "(XML dissector disabled, can't dissect XMPP)"); - expert_add_info_format(pinfo, xmpp_item, PI_UNDECODED, PI_WARN, "XML dissector disabled, can't dissect XMPP"); + expert_add_info(pinfo, xmpp_item, &ei_xmpp_xml_disabled); return; } @@ -477,63 +481,59 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { xmpp_ibb_session_track(pinfo, packet, xmpp_info); } - if (tree) { /* we are being asked for details */ - proto_item *outin_item; - - if (out_packet) - outin_item = proto_tree_add_boolean(xmpp_tree, hf_xmpp_out, tvb, 0, 0, TRUE); - else - outin_item = proto_tree_add_boolean(xmpp_tree, hf_xmpp_in, tvb, 0, 0, TRUE); + if (out_packet) + outin_item = proto_tree_add_boolean(xmpp_tree, hf_xmpp_out, tvb, 0, 0, TRUE); + else + outin_item = proto_tree_add_boolean(xmpp_tree, hf_xmpp_in, tvb, 0, 0, TRUE); - PROTO_ITEM_SET_HIDDEN(outin_item); + PROTO_ITEM_SET_HIDDEN(outin_item); - /*it hides tree generated by XML dissector*/ - xmpp_proto_tree_hide_first_child(xmpp_tree); + /*it hides tree generated by XML dissector*/ + xmpp_proto_tree_hide_first_child(xmpp_tree); - if (strcmp(packet->name, "iq") == 0) { - xmpp_iq(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "presence") == 0) { - xmpp_presence(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "message") == 0) { - xmpp_message(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "auth") == 0) { - xmpp_auth(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "challenge") == 0) { - xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_challenge, ett_xmpp_challenge, "CHALLENGE"); - } else if (strcmp(packet->name, "response") == 0) { - xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_response, ett_xmpp_response, "RESPONSE"); - } else if (strcmp(packet->name, "success") == 0) { - xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_success, ett_xmpp_success, "SUCCESS"); - } else if (strcmp(packet->name, "failure") == 0) { - xmpp_failure(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "xml") == 0) { - xmpp_xml_header(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "stream") == 0) { - xmpp_stream(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "features") == 0) { - xmpp_features(xmpp_tree, tvb, pinfo, packet); - } else if (strcmp(packet->name, "starttls") == 0) { - xmpp_starttls(xmpp_tree, tvb, pinfo, packet, xmpp_info); - }else if (strcmp(packet->name, "proceed") == 0) { - xmpp_proceed(xmpp_tree, tvb, pinfo, packet, xmpp_info); - }else { - xmpp_proto_tree_show_first_child(xmpp_tree); - expert_add_info_format(pinfo, xmpp_tree, PI_UNDECODED, PI_NOTE, "Unknown packet: %s", packet->name); - col_clear(pinfo->cinfo, COL_INFO); - col_append_fstr(pinfo->cinfo, COL_INFO, "UNKNOWN PACKET "); - } + if (strcmp(packet->name, "iq") == 0) { + xmpp_iq(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "presence") == 0) { + xmpp_presence(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "message") == 0) { + xmpp_message(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "auth") == 0) { + xmpp_auth(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "challenge") == 0) { + xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_challenge, ett_xmpp_challenge, "CHALLENGE"); + } else if (strcmp(packet->name, "response") == 0) { + xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_response, ett_xmpp_response, "RESPONSE"); + } else if (strcmp(packet->name, "success") == 0) { + xmpp_challenge_response_success(xmpp_tree, tvb, pinfo, packet, hf_xmpp_success, ett_xmpp_success, "SUCCESS"); + } else if (strcmp(packet->name, "failure") == 0) { + xmpp_failure(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "xml") == 0) { + xmpp_xml_header(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "stream") == 0) { + xmpp_stream(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "features") == 0) { + xmpp_features(xmpp_tree, tvb, pinfo, packet); + } else if (strcmp(packet->name, "starttls") == 0) { + xmpp_starttls(xmpp_tree, tvb, pinfo, packet, xmpp_info); + }else if (strcmp(packet->name, "proceed") == 0) { + xmpp_proceed(xmpp_tree, tvb, pinfo, packet, xmpp_info); + }else { + xmpp_proto_tree_show_first_child(xmpp_tree); + expert_add_info_format_text(pinfo, xmpp_tree, &ei_xmpp_packet_unknown, "Unknown packet: %s", packet->name); + col_clear(pinfo->cinfo, COL_INFO); + col_append_fstr(pinfo->cinfo, COL_INFO, "UNKNOWN PACKET "); + } - /*appends to COL_INFO information about src or dst*/ - if (pinfo->match_uint == pinfo->destport) { - xmpp_attr_t *to = xmpp_get_attr(packet, "to"); - if (to) - col_append_fstr(pinfo->cinfo, COL_INFO, "> %s ", to->value); - } else { - xmpp_attr_t *from = xmpp_get_attr(packet, "from"); - if (from) - col_append_fstr(pinfo->cinfo, COL_INFO, "< %s ", from->value); - } + /*appends to COL_INFO information about src or dst*/ + if (pinfo->match_uint == pinfo->destport) { + xmpp_attr_t *to = xmpp_get_attr(packet, "to"); + if (to) + col_append_fstr(pinfo->cinfo, COL_INFO, "> %s ", to->value); + } else { + xmpp_attr_t *from = xmpp_get_attr(packet, "from"); + if (from) + col_append_fstr(pinfo->cinfo, COL_INFO, "< %s ", from->value); } xmpp_element_t_tree_free(packet); @@ -1384,7 +1384,13 @@ proto_register_xmpp(void) { &ett_xmpp_proceed, }; + static ei_register_info ei[] = { + { &ei_xmpp_xml_disabled, { "xmpp.xml_disabled", PI_UNDECODED, PI_WARN, "XML dissector disabled, can't dissect XMPP", EXPFILL }}, + { &ei_xmpp_packet_unknown, { "xmpp.packet_unknown", PI_UNDECODED, PI_NOTE, "Unknown packet", EXPFILL }}, + }; + module_t *xmpp_module; + expert_module_t* expert_xmpp; static gint* ett_unknown_ptr[ETT_UNKNOWN_LEN]; gint i; @@ -1412,6 +1418,8 @@ proto_register_xmpp(void) { proto_register_field_array(proto_xmpp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); proto_register_subtree_array(ett_unknown_ptr, array_length(ett_unknown_ptr)); + expert_xmpp = expert_register_protocol(proto_xmpp); + expert_register_field_array(expert_xmpp, ei, array_length(ei)); register_dissector("xmpp", dissect_xmpp, proto_xmpp); |