diff options
Diffstat (limited to 'epan/dissectors/packet-rpcap.c')
-rw-r--r-- | epan/dissectors/packet-rpcap.c | 273 |
1 files changed, 135 insertions, 138 deletions
diff --git a/epan/dissectors/packet-rpcap.c b/epan/dissectors/packet-rpcap.c index 2e63a36be0..64931ba230 100644 --- a/epan/dissectors/packet-rpcap.c +++ b/epan/dissectors/packet-rpcap.c @@ -85,131 +85,131 @@ void proto_register_rpcap (void); void proto_reg_handoff_rpcap (void); -static int proto_rpcap = -1; - -static int hf_version = -1; -static int hf_type = -1; -static int hf_value = -1; -static int hf_plen = -1; - -static int hf_error = -1; -static int hf_error_value = -1; - -static int hf_packet = -1; -static int hf_timestamp = -1; -static int hf_caplen = -1; -static int hf_len = -1; -static int hf_npkt = -1; - -static int hf_auth_request = -1; -static int hf_auth_type = -1; -static int hf_auth_slen1 = -1; -static int hf_auth_slen2 = -1; -static int hf_auth_username = -1; -static int hf_auth_password = -1; - -static int hf_auth_reply = -1; -static int hf_auth_minvers = -1; -static int hf_auth_maxvers = -1; - -static int hf_open_request = -1; - -static int hf_open_reply = -1; -static int hf_linktype = -1; -static int hf_tzoff = -1; - -static int hf_startcap_request = -1; -static int hf_snaplen = -1; -static int hf_read_timeout = -1; -static int hf_flags = -1; -static int hf_flags_promisc = -1; -static int hf_flags_dgram = -1; -static int hf_flags_serveropen = -1; -static int hf_flags_inbound = -1; -static int hf_flags_outbound = -1; -static int hf_client_port = -1; -static int hf_startcap_reply = -1; -static int hf_bufsize = -1; -static int hf_server_port = -1; -static int hf_dummy = -1; - -static int hf_filter = -1; -static int hf_filtertype = -1; -static int hf_nitems = -1; - -static int hf_filterbpf_insn = -1; -static int hf_code = -1; -static int hf_code_class = -1; -static int hf_code_fields = -1; -static int hf_code_ld_size = -1; -static int hf_code_ld_mode = -1; -static int hf_code_alu_op = -1; -static int hf_code_jmp_op = -1; -static int hf_code_src = -1; -static int hf_code_rval = -1; -static int hf_code_misc_op = -1; -static int hf_jt = -1; -static int hf_jf = -1; -static int hf_instr_value = -1; - -static int hf_stats_reply = -1; -static int hf_ifrecv = -1; -static int hf_ifdrop = -1; -static int hf_krnldrop = -1; -static int hf_srvcapt = -1; - -static int hf_findalldevs_reply = -1; -static int hf_findalldevs_if = -1; -static int hf_namelen = -1; -static int hf_desclen = -1; -static int hf_if_flags = -1; -static int hf_naddr = -1; -static int hf_if_name = -1; -static int hf_if_desc = -1; - -static int hf_findalldevs_ifaddr = -1; -static int hf_if_addr = -1; -static int hf_if_netmask = -1; -static int hf_if_broadaddr = -1; -static int hf_if_dstaddr = -1; -static int hf_if_af = -1; -static int hf_if_port = -1; -static int hf_if_ipv4 = -1; -static int hf_if_flowinfo = -1; -static int hf_if_ipv6 = -1; -static int hf_if_scopeid = -1; -static int hf_if_padding = -1; -static int hf_if_unknown = -1; - -static int hf_sampling_request = -1; -static int hf_sampling_method = -1; -static int hf_sampling_dummy1 = -1; -static int hf_sampling_dummy2 = -1; -static int hf_sampling_value = -1; - -static gint ett_rpcap = -1; -static gint ett_error = -1; -static gint ett_packet = -1; -static gint ett_auth_request = -1; -static gint ett_auth_reply = -1; -static gint ett_open_reply = -1; -static gint ett_startcap_request = -1; -static gint ett_startcap_reply = -1; -static gint ett_startcap_flags = -1; -static gint ett_filter = -1; -static gint ett_filterbpf_insn = -1; -static gint ett_filterbpf_insn_code = -1; -static gint ett_stats_reply = -1; -static gint ett_findalldevs_reply = -1; -static gint ett_findalldevs_if = -1; -static gint ett_findalldevs_ifaddr = -1; -static gint ett_ifaddr = -1; -static gint ett_sampling_request = -1; - -static expert_field ei_error = EI_INIT; -static expert_field ei_if_unknown = EI_INIT; -static expert_field ei_no_more_data = EI_INIT; -static expert_field ei_caplen_too_big = EI_INIT; +static int proto_rpcap; + +static int hf_version; +static int hf_type; +static int hf_value; +static int hf_plen; + +static int hf_error; +static int hf_error_value; + +static int hf_packet; +static int hf_timestamp; +static int hf_caplen; +static int hf_len; +static int hf_npkt; + +static int hf_auth_request; +static int hf_auth_type; +static int hf_auth_slen1; +static int hf_auth_slen2; +static int hf_auth_username; +static int hf_auth_password; + +static int hf_auth_reply; +static int hf_auth_minvers; +static int hf_auth_maxvers; + +static int hf_open_request; + +static int hf_open_reply; +static int hf_linktype; +static int hf_tzoff; + +static int hf_startcap_request; +static int hf_snaplen; +static int hf_read_timeout; +static int hf_flags; +static int hf_flags_promisc; +static int hf_flags_dgram; +static int hf_flags_serveropen; +static int hf_flags_inbound; +static int hf_flags_outbound; +static int hf_client_port; +static int hf_startcap_reply; +static int hf_bufsize; +static int hf_server_port; +static int hf_dummy; + +static int hf_filter; +static int hf_filtertype; +static int hf_nitems; + +static int hf_filterbpf_insn; +static int hf_code; +static int hf_code_class; +static int hf_code_fields; +static int hf_code_ld_size; +static int hf_code_ld_mode; +static int hf_code_alu_op; +static int hf_code_jmp_op; +static int hf_code_src; +static int hf_code_rval; +static int hf_code_misc_op; +static int hf_jt; +static int hf_jf; +static int hf_instr_value; + +static int hf_stats_reply; +static int hf_ifrecv; +static int hf_ifdrop; +static int hf_krnldrop; +static int hf_srvcapt; + +static int hf_findalldevs_reply; +static int hf_findalldevs_if; +static int hf_namelen; +static int hf_desclen; +static int hf_if_flags; +static int hf_naddr; +static int hf_if_name; +static int hf_if_desc; + +static int hf_findalldevs_ifaddr; +static int hf_if_addr; +static int hf_if_netmask; +static int hf_if_broadaddr; +static int hf_if_dstaddr; +static int hf_if_af; +static int hf_if_port; +static int hf_if_ipv4; +static int hf_if_flowinfo; +static int hf_if_ipv6; +static int hf_if_scopeid; +static int hf_if_padding; +static int hf_if_unknown; + +static int hf_sampling_request; +static int hf_sampling_method; +static int hf_sampling_dummy1; +static int hf_sampling_dummy2; +static int hf_sampling_value; + +static gint ett_rpcap; +static gint ett_error; +static gint ett_packet; +static gint ett_auth_request; +static gint ett_auth_reply; +static gint ett_open_reply; +static gint ett_startcap_request; +static gint ett_startcap_reply; +static gint ett_startcap_flags; +static gint ett_filter; +static gint ett_filterbpf_insn; +static gint ett_filterbpf_insn_code; +static gint ett_stats_reply; +static gint ett_findalldevs_reply; +static gint ett_findalldevs_if; +static gint ett_findalldevs_ifaddr; +static gint ett_ifaddr; +static gint ett_sampling_request; + +static expert_field ei_error; +static expert_field ei_if_unknown; +static expert_field ei_no_more_data; +static expert_field ei_caplen_too_big; static dissector_handle_t pcap_pktdata_handle; static dissector_handle_t rpcap_tcp_handle; @@ -363,17 +363,15 @@ dissect_rpcap_error (tvbuff_t *tvb, packet_info *pinfo, { proto_item *ti; gint len; + char *str; len = tvb_reported_length_remaining (tvb, offset); if (len <= 0) return; - col_append_fstr (pinfo->cinfo, COL_INFO, ": %s", - tvb_format_text_wsp (pinfo->pool, tvb, offset, len)); - - ti = proto_tree_add_item (parent_tree, hf_error, tvb, offset, len, ENC_ASCII|ENC_NA); - expert_add_info_format(pinfo, ti, &ei_error, - "Error: %s", tvb_format_text_wsp (pinfo->pool, tvb, offset, len)); + ti = proto_tree_add_item_ret_display_string(parent_tree, hf_error, tvb, offset, len, ENC_ASCII, pinfo->pool, &str); + expert_add_info_format(pinfo, ti, &ei_error, "Error: %s", str); + col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", str); } /* @@ -481,7 +479,7 @@ dissect_rpcap_ifaddr (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree; proto_item *ti; guint16 af; - guint32 ipv4; + ws_in4_addr ipv4; ws_in6_addr ipv6; gchar ipaddr[MAX_ADDR_STR_LEN]; @@ -501,7 +499,7 @@ dissect_rpcap_ifaddr (tvbuff_t *tvb, packet_info *pinfo, offset += 2; ipv4 = tvb_get_ipv4 (tvb, offset); - ip_to_str_buf((guint8 *)&ipv4, ipaddr, MAX_ADDR_STR_LEN); + ip_addr_to_str_buf(&ipv4, ipaddr, MAX_ADDR_STR_LEN); proto_item_append_text (ti, ": %s", ipaddr); if (parent_item) { proto_item_append_text (parent_item, ": %s", ipaddr); @@ -618,7 +616,7 @@ dissect_rpcap_findalldevs_if (tvbuff_t *tvb, packet_info *pinfo _U_, } if (desclen) { - proto_tree_add_item (tree, hf_if_desc, tvb, offset, desclen, ENC_ASCII|ENC_NA); + proto_tree_add_item (tree, hf_if_desc, tvb, offset, desclen, ENC_ASCII); offset += desclen; } @@ -825,7 +823,7 @@ dissect_rpcap_open_request (tvbuff_t *tvb, packet_info *pinfo _U_, gint len; len = tvb_reported_length_remaining (tvb, offset); - proto_tree_add_item (parent_tree, hf_open_request, tvb, offset, len, ENC_ASCII|ENC_NA); + proto_tree_add_item (parent_tree, hf_open_request, tvb, offset, len, ENC_ASCII); } @@ -1321,7 +1319,7 @@ proto_register_rpcap (void) /* Error */ { &hf_error, - { "Error", "rpcap.error", FT_STRING, BASE_NONE, + { "Error", "rpcap.error", FT_STRING, BASE_STR_WSP, NULL, 0x0, "Error text", HFILL } }, { &hf_error_value, { "Error value", "rpcap.error_value", FT_UINT16, BASE_DEC, @@ -1635,6 +1633,7 @@ proto_register_rpcap (void) proto_rpcap = proto_register_protocol (PNAME, PSNAME, PFNAME); register_dissector (PFNAME, dissect_rpcap, proto_rpcap); + rpcap_tcp_handle = register_dissector(PFNAME ".tcp", dissect_rpcap_tcp, proto_rpcap); expert_rpcap = expert_register_protocol(proto_rpcap); expert_register_field_array(expert_rpcap, ei, array_length(ei)); @@ -1674,8 +1673,6 @@ proto_reg_handoff_rpcap (void) heur_dissector_add ("tcp", dissect_rpcap_heur_tcp, "RPCAP over TCP", "rpcap_tcp", proto_rpcap, HEURISTIC_ENABLE); heur_dissector_add ("udp", dissect_rpcap_heur_udp, "RPCAP over UDP", "rpcap_udp", proto_rpcap, HEURISTIC_ENABLE); - - rpcap_tcp_handle = create_dissector_handle(dissect_rpcap_tcp, proto_rpcap); } info_added = FALSE; |