aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2012-09-07 02:09:59 +0000
committerJeff Morriss <jeff.morriss.ws@gmail.com>2012-09-07 02:09:59 +0000
commitaa5d9d78ddcb4b7066ab03afa4277fab0bf0f468 (patch)
tree7549708474866dbbdbe811f34c57a3a7bd6ccf0b /epan
parent8ba24b5530a5916769d2fa0012de4943bac2fde3 (diff)
From Robert Bullen via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7683 :
The reassembled fragments tree in the Packet Details view is awesome, but it lacks one thing: a field that exposes the reassembled data. tcp.data already exists for exposing a single TCP segment's payload as a byte array. It would be handy to have something similar for a single application layer PDU when TCP segment reassembly is involved. I propose tcp.reassembled.data, named and placed after the already existing field tcp.reassembled.length. My primary use case for this feature is outputting tcp.reassembled.data with tshark for further processing with a script. The attached patch implements this very feature. Because the reassembled fragment tree code is general purpose, i.e. not specific to just TCP, any dissector that relies upon it can add a similar field very cheaply. In that vein I've also implemented ip.reassembled.data and ipv6.reassembled.data, which expose reassembled fragment data as a single byte stream for IPv4 and IPv6, respectively. All other protocols that use the reassembly code have been left alone, other than inserting NULL into their initializer lists for the newly introduced struct field reassemble.h:fragment_items.hf_reassembled_data. svn path=/trunk/; revision=44802
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-6lowpan.c44
-rw-r--r--epan/dissectors/packet-atalk.c2
-rw-r--r--epan/dissectors/packet-bacapp.c2
-rw-r--r--epan/dissectors/packet-batadv.c2
-rw-r--r--epan/dissectors/packet-ber.c2
-rw-r--r--epan/dissectors/packet-btobex.c2
-rw-r--r--epan/dissectors/packet-capwap.c4
-rw-r--r--epan/dissectors/packet-cell_broadcast.c2
-rw-r--r--epan/dissectors/packet-clnp.c2
-rw-r--r--epan/dissectors/packet-dcerpc.c2
-rw-r--r--epan/dissectors/packet-dcm.c2
-rw-r--r--epan/dissectors/packet-dcp-etsi.c2
-rw-r--r--epan/dissectors/packet-dnp.c12
-rw-r--r--epan/dissectors/packet-dtls.c2
-rw-r--r--epan/dissectors/packet-dtn.c2
-rw-r--r--epan/dissectors/packet-dvbci.c6
-rw-r--r--epan/dissectors/packet-eap.c2
-rw-r--r--epan/dissectors/packet-gsm_cbch.c2
-rw-r--r--epan/dissectors/packet-gsm_sms.c2
-rw-r--r--epan/dissectors/packet-gsm_sms_ud.c2
-rw-r--r--epan/dissectors/packet-gssapi.c2
-rw-r--r--epan/dissectors/packet-h223.c4
-rw-r--r--epan/dissectors/packet-iax2.c2
-rw-r--r--epan/dissectors/packet-idmp.c2
-rw-r--r--epan/dissectors/packet-ieee80211.c6
-rw-r--r--epan/dissectors/packet-ip.c10
-rw-r--r--epan/dissectors/packet-ipv6.c6
-rw-r--r--epan/dissectors/packet-isakmp.c2
-rw-r--r--epan/dissectors/packet-isup.c2
-rw-r--r--epan/dissectors/packet-lapdm.c2
-rw-r--r--epan/dissectors/packet-lapsat.c2
-rw-r--r--epan/dissectors/packet-ltp.c2
-rw-r--r--epan/dissectors/packet-mp2t.c2
-rw-r--r--epan/dissectors/packet-mux27010.c2
-rw-r--r--epan/dissectors/packet-ncp2222.inc2
-rw-r--r--epan/dissectors/packet-ndmp.c2
-rw-r--r--epan/dissectors/packet-ndps.c2
-rw-r--r--epan/dissectors/packet-netbios.c2
-rw-r--r--epan/dissectors/packet-ositp.c2
-rw-r--r--epan/dissectors/packet-p_mul.c2
-rw-r--r--epan/dissectors/packet-pop.c2
-rw-r--r--epan/dissectors/packet-q931.c2
-rw-r--r--epan/dissectors/packet-reload.c2
-rw-r--r--epan/dissectors/packet-rpc.c2
-rw-r--r--epan/dissectors/packet-rtp.c4
-rw-r--r--epan/dissectors/packet-rtse.c30
-rw-r--r--epan/dissectors/packet-sccp.c2
-rw-r--r--epan/dissectors/packet-scsi.c6
-rw-r--r--epan/dissectors/packet-ses.c2
-rw-r--r--epan/dissectors/packet-smb-pipe.c2
-rw-r--r--epan/dissectors/packet-smb.c2
-rw-r--r--epan/dissectors/packet-smtp.c8
-rw-r--r--epan/dissectors/packet-sndcp.c2
-rw-r--r--epan/dissectors/packet-ssl.c2
-rw-r--r--epan/dissectors/packet-t38.c36
-rw-r--r--epan/dissectors/packet-tcp.c6
-rw-r--r--epan/dissectors/packet-tds.c4
-rw-r--r--epan/dissectors/packet-teamspeak2.c2
-rw-r--r--epan/dissectors/packet-tipc.c2
-rw-r--r--epan/dissectors/packet-wai.c2
-rw-r--r--epan/dissectors/packet-wtp.c2
-rw-r--r--epan/dissectors/packet-x25.c2
-rw-r--r--epan/dissectors/packet-zbee-aps.c2
-rw-r--r--epan/reassemble.c6
-rw-r--r--epan/reassemble.h40
65 files changed, 241 insertions, 87 deletions
diff --git a/epan/dissectors/packet-6lowpan.c b/epan/dissectors/packet-6lowpan.c
index 8247ae466f..821bae0b4b 100644
--- a/epan/dissectors/packet-6lowpan.c
+++ b/epan/dissectors/packet-6lowpan.c
@@ -407,6 +407,8 @@ static const fragment_items lowpan_frag_items = {
&hf_6lowpan_reassembled_in,
/* Reassembled length field */
&hf_6lowpan_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"6LoWPAN fragments"
};
@@ -496,7 +498,7 @@ static lowpan_context_data *lowpan_context_find(guint8 cid, guint16 pan);
* NAME
* lowpan_pfxcpy
* DESCRIPTION
- * A version of memcpy that takes a length in bits. If the
+ * A version of memcpy that takes a length in bits. If the
* length is not byte-aligned, the final byte will be
* manipulated so that only the desired number of bits are
* copied.
@@ -545,7 +547,7 @@ lowpan_context_hash(gconstpointer key)
* PARAMETERS
* key ; Pointer to a lowpan_context_key type.
* RETURNS
- * gboolean ;
+ * gboolean ;
*---------------------------------------------------------------
*/
static gboolean
@@ -564,7 +566,7 @@ lowpan_context_equal(gconstpointer a, gconstpointer b)
* cid ; Context identifier.
* pan ; PAN identifier.
* RETURNS
- * lowpan_context_data *;
+ * lowpan_context_data *;
*---------------------------------------------------------------
*/
static lowpan_context_data *
@@ -572,23 +574,23 @@ lowpan_context_find(guint8 cid, guint16 pan)
{
lowpan_context_key key;
lowpan_context_data *data;
-
+
/* Check for the internal link-local context. */
if (cid == LOWPAN_CONTEXT_LINK_LOCAL) return &lowpan_context_local;
-
+
/* Lookup the context from the table. */
key.pan = pan;
key.cid = cid;
data = g_hash_table_lookup(lowpan_context_table, &key);
if (data) return data;
-
+
/* If we didn't find a match, try again with the broadcast PAN. */
if (pan != IEEE802154_BCAST_PAN) {
key.pan = IEEE802154_BCAST_PAN;
data = g_hash_table_lookup(lowpan_context_table, &key);
if (data) return data;
}
-
+
/* If the lookup failed, return the default context (::/0) */
return &lowpan_context_default;
} /* lowpan_context_find */
@@ -605,7 +607,7 @@ lowpan_context_find(guint8 cid, guint16 pan)
* prefix ; Compression prefix.
* frame ; Frame number.
* RETURNS
- * void ;
+ * void ;
*---------------------------------------------------------------
*/
void
@@ -615,11 +617,11 @@ lowpan_context_insert(guint8 cid, guint16 pan, guint8 plen, struct e_in6_addr *p
lowpan_context_data *data;
gpointer pkey;
gpointer pdata;
-
+
/* Sanity! */
if (plen > 128) return;
if (!prefix) return;
-
+
/* Search the context table for an existing entry. */
key.pan = pan;
key.cid = cid;
@@ -634,7 +636,7 @@ lowpan_context_insert(guint8 cid, guint16 pan, guint8 plen, struct e_in6_addr *p
else {
pkey = se_memdup(&key, sizeof(key));
}
-
+
/* Create a new context */
data = se_alloc(sizeof(lowpan_context_data));
data->frame = frame;
@@ -689,7 +691,7 @@ static gboolean
lowpan_dlsrc_to_ifcid(packet_info *pinfo, guint8 *ifcid)
{
ieee802154_hints_t *hints;
-
+
/* Check the link-layer address field. */
if (pinfo->dl_src.type == AT_EUI64) {
memcpy(ifcid, pinfo->dl_src.data, LOWPAN_IFC_ID_LEN);
@@ -697,7 +699,7 @@ lowpan_dlsrc_to_ifcid(packet_info *pinfo, guint8 *ifcid)
ifcid[0] ^= 0x02;
return TRUE;
}
-
+
/* Lookup the IEEE 802.15.4 addressing hints. */
hints = (ieee802154_hints_t *)p_get_proto_data(pinfo->fd,
proto_get_id_by_filter_name(IEEE802154_PROTOABBREV_WPAN));
@@ -736,7 +738,7 @@ lowpan_dldst_to_ifcid(packet_info *pinfo, guint8 *ifcid)
ifcid[0] ^= 0x02;
return TRUE;
}
-
+
/* Lookup the IEEE 802.15.4 addressing hints. */
hints = (ieee802154_hints_t *)p_get_proto_data(pinfo->fd,
proto_get_id_by_filter_name(IEEE802154_PROTOABBREV_WPAN));
@@ -1369,7 +1371,7 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d
tvbuff_t * ipv6_tvb;
/* Next header chain */
struct lowpan_nhdr *nhdr_list;
-
+
/* Lookup the IEEE 802.15.4 addressing hints. */
hints = (ieee802154_hints_t *)p_get_proto_data(pinfo->fd,
proto_get_id_by_filter_name(IEEE802154_PROTOABBREV_WPAN));
@@ -1431,7 +1433,7 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d
/* Lookup the contexts. */
/*
* Don't display their origin until after we decompress the address in case
- * the address modes indicate that we should use a different context.
+ * the address modes indicate that we should use a different context.
*/
sctx = lowpan_context_find(iphc_sci, hint_panid);
dctx = lowpan_context_find(iphc_dci, hint_panid);
@@ -2765,7 +2767,7 @@ proto_register_6lowpan(void)
*/
pref_name = g_strdup_printf("context%d", i);
pref_title = g_strdup_printf("Context %d", i);
- prefs_register_string_preference(prefs_module, pref_name, pref_title,
+ prefs_register_string_preference(prefs_module, pref_name, pref_title,
"IPv6 prefix to use for stateful address decompression.",
&lowpan_context_prefs[i]);
}
@@ -2788,18 +2790,18 @@ proto_init_6lowpan(void)
/* Initialize the fragment reassembly table. */
fragment_table_init(&lowpan_fragment_table);
reassembled_table_init(&lowpan_reassembled_table);
-
+
/* Initialize the context table. */
if (lowpan_context_table)
g_hash_table_destroy(lowpan_context_table);
lowpan_context_table = g_hash_table_new(lowpan_context_hash, lowpan_context_equal);
-
-
+
+
/* Initialize the link-local context. */
lowpan_context_local.frame = 0;
lowpan_context_local.plen = LOWPAN_CONTEXT_LINK_LOCAL_BITS;
memcpy(&lowpan_context_local.prefix, lowpan_llprefix, sizeof(lowpan_llprefix));
-
+
/* Reload static contexts from our preferences. */
prefs_6lowpan_apply();
} /* proto_init_6lowpan */
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c
index 7a871fe699..48791a9ca9 100644
--- a/epan/dissectors/packet-atalk.c
+++ b/epan/dissectors/packet-atalk.c
@@ -353,6 +353,8 @@ static const fragment_items atp_frag_items = {
&hf_atp_segment_count,
&hf_atp_reassembled_in,
&hf_atp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c
index 2445f38345..97d89af8ed 100644
--- a/epan/dissectors/packet-bacapp.c
+++ b/epan/dissectors/packet-bacapp.c
@@ -4698,6 +4698,8 @@ static const fragment_items msg_frag_items = {
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-batadv.c b/epan/dissectors/packet-batadv.c
index 81b1df3e53..3cf7b39358 100644
--- a/epan/dissectors/packet-batadv.c
+++ b/epan/dissectors/packet-batadv.c
@@ -513,6 +513,8 @@ static const fragment_items msg_frag_items = {
/* Reassembled in field */
&hf_msg_reassembled_in,
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index 179a513ff4..f695d1aff1 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -282,6 +282,8 @@ static const fragment_items octet_string_frag_items = {
&hf_ber_reassembled_in,
/* Reassembled length field */
&hf_ber_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"OCTET STRING fragments"
};
diff --git a/epan/dissectors/packet-btobex.c b/epan/dissectors/packet-btobex.c
index 7d40fca593..cef0752029 100644
--- a/epan/dissectors/packet-btobex.c
+++ b/epan/dissectors/packet-btobex.c
@@ -88,6 +88,8 @@ static const fragment_items btobex_frag_items = {
&hf_btobex_fragment_count,
&hf_btobex_reassembled_in,
&hf_btobex_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c
index ba9dc6ae7a..96fbdf68f5 100644
--- a/epan/dissectors/packet-capwap.c
+++ b/epan/dissectors/packet-capwap.c
@@ -281,6 +281,8 @@ static const fragment_items capwap_frag_items = {
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
@@ -1375,7 +1377,7 @@ dissect_capwap_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (global_capwap_reassemble && fragment_is)
{
const int len_rem = tvb_length_remaining(tvb, offset);
- if (len_rem <= 0)
+ if (len_rem <= 0)
return offset;
pinfo->fragmented = TRUE;
diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c
index 95797fb15c..6d38f34d07 100644
--- a/epan/dissectors/packet-cell_broadcast.c
+++ b/epan/dissectors/packet-cell_broadcast.c
@@ -157,6 +157,8 @@ static const fragment_items gsm_page_items = {
&hf_gsm_cbs_page_count,
&hf_gsm_cbs_message_reassembled_in,
&hf_gsm_cbs_message_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"pages"
};
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index b9d0ec6ca8..66c5bec8d3 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -84,6 +84,8 @@ static const fragment_items clnp_frag_items = {
&hf_clnp_segment_count,
&hf_clnp_reassembled_in,
&hf_clnp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c
index 3ba4d08370..7b9993ed90 100644
--- a/epan/dissectors/packet-dcerpc.c
+++ b/epan/dissectors/packet-dcerpc.c
@@ -610,6 +610,8 @@ static const fragment_items dcerpc_frag_items = {
&hf_dcerpc_fragment_count,
NULL,
&hf_dcerpc_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-dcm.c b/epan/dissectors/packet-dcm.c
index 277bf4d2a9..f6d1f064d1 100644
--- a/epan/dissectors/packet-dcm.c
+++ b/epan/dissectors/packet-dcm.c
@@ -370,6 +370,8 @@ static const fragment_items dcm_pdv_fragment_items = {
&hf_dcm_pdv_fragment_count,
&hf_dcm_pdv_reassembled_in,
&hf_dcm_pdv_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-dcp-etsi.c b/epan/dissectors/packet-dcp-etsi.c
index cacafdaaf3..672316c74b 100644
--- a/epan/dissectors/packet-dcp-etsi.c
+++ b/epan/dissectors/packet-dcp-etsi.c
@@ -122,6 +122,8 @@ static const fragment_items dcp_frag_items = {
&hf_edcp_reassembled_in,
/* Reassembled length field */
&hf_edcp_reassembled_length,
+/* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c
index 3134193ef0..e6318b5078 100644
--- a/epan/dissectors/packet-dnp.c
+++ b/epan/dissectors/packet-dnp.c
@@ -1097,6 +1097,8 @@ static const fragment_items dnp3_frag_items = {
&hf_dnp3_fragment_count,
&hf_dnp3_fragment_reassembled_in,
&hf_dnp3_fragment_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"DNP 3.0 fragments"
};
@@ -2237,7 +2239,7 @@ dnp3_al_process_object(tvbuff_t *tvb, packet_info *pinfo, int offset,
proto_tree_add_time(object_tree, hf_dnp3_al_timestamp, tvb, data_pos, 6, &al_abstime);
data_pos += 6;
proto_item_set_len(point_item, data_pos - offset);
-
+
if (al_obj == AL_OBJ_TDCTO) {
/* Copy the time object to the CTO for any other relative time objects in this response */
nstime_copy(al_cto, &al_abstime);
@@ -2489,9 +2491,9 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *al_tree = NULL, *field_tree = NULL, *robj_tree = NULL;
const gchar *func_code_str;
nstime_t al_cto;
-
+
nstime_set_zero (&al_cto);
-
+
data_len = tvb_length(tvb);
/* Handle the control byte and function code */
@@ -3545,7 +3547,7 @@ proto_register_dnp3(void)
/* Register the protocol name and description */
proto_dnp3 = proto_register_protocol("Distributed Network Protocol 3.0",
"DNP 3.0", "dnp3");
-
+
/* Register the dissector so it may be used as a User DLT payload protocol */
new_register_dissector("dnp3.udp", dissect_dnp3_udp, proto_dnp3);
@@ -3571,7 +3573,7 @@ proto_reg_handoff_dnp3(void)
/* register as heuristic dissector for both TCP and UDP */
heur_dissector_add("tcp", dissect_dnp3_tcp, proto_dnp3);
heur_dissector_add("udp", dissect_dnp3_udp, proto_dnp3);
-
+
dnp3_tcp_handle = new_create_dissector_handle(dissect_dnp3_tcp, proto_dnp3);
dnp3_udp_handle = new_create_dissector_handle(dissect_dnp3_udp, proto_dnp3);
dissector_add_uint("tcp.port", TCP_PORT_DNP, dnp3_tcp_handle);
diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c
index bac43f4b74..8893bf99ec 100644
--- a/epan/dissectors/packet-dtls.c
+++ b/epan/dissectors/packet-dtls.c
@@ -206,6 +206,8 @@ static const fragment_items dtls_frag_items = {
&hf_dtls_reassembled_in,
/* Reassembled length field */
&hf_dtls_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c
index 3c66a0f572..311fced350 100644
--- a/epan/dissectors/packet-dtn.c
+++ b/epan/dissectors/packet-dtn.c
@@ -301,6 +301,8 @@ static const fragment_items msg_frag_items = {
&hf_msg_reassembled_in,
/*Reassembled length field*/
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/*Tag*/
"Message fragments"
};
diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c
index 04e0c9fcc5..beed125720 100644
--- a/epan/dissectors/packet-dvbci.c
+++ b/epan/dissectors/packet-dvbci.c
@@ -1007,6 +1007,8 @@ static const fragment_items tpdu_frag_items = {
&hf_dvbci_l_reass_in,
&hf_dvbci_l_reass_len,
+ /* Reassembled data field */
+ NULL,
"Tpdu fragments"
};
static const fragment_items spdu_frag_items = {
@@ -1024,6 +1026,8 @@ static const fragment_items spdu_frag_items = {
&hf_dvbci_t_reass_in,
&hf_dvbci_t_reass_len,
+ /* Reassembled data field */
+ NULL,
"Spdu fragments"
};
@@ -1619,7 +1623,7 @@ store_lsc_msg_dissector(circuit_t *circuit, guint8 ip_proto, guint16 port)
circuit_set_dissector(circuit, msg_handle);
}
-
+
/* dissect a connection_descriptor for the lsc resource
returns its length or -1 for error */
static gint
diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c
index 727fc4de89..0e5671bb19 100644
--- a/epan/dissectors/packet-eap.c
+++ b/epan/dissectors/packet-eap.c
@@ -354,6 +354,8 @@ static const fragment_items eap_tls_frag_items = {
&hf_eap_tls_fragment_count,
NULL,
&hf_eap_tls_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-gsm_cbch.c b/epan/dissectors/packet-gsm_cbch.c
index faaf262d6c..b91adcba2e 100644
--- a/epan/dissectors/packet-gsm_cbch.c
+++ b/epan/dissectors/packet-gsm_cbch.c
@@ -113,6 +113,8 @@ static const fragment_items cbch_frag_items = {
&hf_cbch_fragment_count,
&hf_cbch_reassembled_in,
&hf_cbch_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"blocks"
};
diff --git a/epan/dissectors/packet-gsm_sms.c b/epan/dissectors/packet-gsm_sms.c
index 8fad3b3487..f9ee8ea7e7 100644
--- a/epan/dissectors/packet-gsm_sms.c
+++ b/epan/dissectors/packet-gsm_sms.c
@@ -230,6 +230,8 @@ static const fragment_items sm_frag_items = {
&hf_gsm_sms_ud_reassembled_in,
/* Reassembled length field */
&hf_gsm_sms_ud_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Short Message fragments"
};
diff --git a/epan/dissectors/packet-gsm_sms_ud.c b/epan/dissectors/packet-gsm_sms_ud.c
index 83d3752cf2..410b6bdebb 100644
--- a/epan/dissectors/packet-gsm_sms_ud.c
+++ b/epan/dissectors/packet-gsm_sms_ud.c
@@ -127,6 +127,8 @@ static const fragment_items sm_frag_items = {
&hf_gsm_sms_ud_reassembled_in,
/* Reassembled length field */
&hf_gsm_sms_ud_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Short Message fragments"
};
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c
index d10d46b425..1160eec93b 100644
--- a/epan/dissectors/packet-gssapi.c
+++ b/epan/dissectors/packet-gssapi.c
@@ -94,6 +94,8 @@ static const fragment_items gssapi_frag_items = {
&hf_gssapi_segment_count,
NULL,
&hf_gssapi_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-h223.c b/epan/dissectors/packet-h223.c
index 1c597c9d0d..f65c959f96 100644
--- a/epan/dissectors/packet-h223.c
+++ b/epan/dissectors/packet-h223.c
@@ -138,6 +138,8 @@ static const fragment_items h223_mux_frag_items _U_ = {
&hf_h223_mux_fragment_count,
&hf_h223_mux_reassembled_in,
&hf_h223_mux_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
@@ -154,6 +156,8 @@ static const fragment_items h223_al_frag_items = {
&hf_h223_al_fragment_count,
&hf_h223_al_reassembled_in,
&hf_h223_al_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-iax2.c b/epan/dissectors/packet-iax2.c
index a2320d4e5e..c6999fa422 100644
--- a/epan/dissectors/packet-iax2.c
+++ b/epan/dissectors/packet-iax2.c
@@ -192,6 +192,8 @@ static const fragment_items iax2_fragment_items = {
&hf_iax2_fragment_count,
&hf_iax2_reassembled_in,
&hf_iax2_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"iax2 fragments"
};
diff --git a/epan/dissectors/packet-idmp.c b/epan/dissectors/packet-idmp.c
index 6c0b63299c..758f692c68 100644
--- a/epan/dissectors/packet-idmp.c
+++ b/epan/dissectors/packet-idmp.c
@@ -111,6 +111,8 @@ static const fragment_items idmp_frag_items = {
&hf_idmp_reassembled_in,
/* Reassembled length field */
&hf_idmp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"IDMP fragments"
};
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 1c4e7bd397..c7a690d0bb 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -2711,6 +2711,8 @@ static const fragment_items frag_items = {
&hf_ieee80211_fragment_count,
&hf_ieee80211_reassembled_in,
&hf_ieee80211_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
@@ -4102,6 +4104,8 @@ static const fragment_items gas_resp_frag_items = {
&hf_ieee80211_gas_resp_fragment_count,
&hf_ieee80211_gas_resp_reassembled_in,
&hf_ieee80211_gas_resp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"GAS Response fragments"
};
@@ -7475,7 +7479,7 @@ dissect_frame_control(proto_tree * tree, tvbuff_t * tvb, gboolean wlan_broken_fc
}
static void
-dissect_vendor_ie_ht(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+dissect_vendor_ie_ht(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint offset, proto_item *item, proto_item *ti_len, gint tag_len)
{
diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c
index ac4f019857..bba473929a 100644
--- a/epan/dissectors/packet-ip.c
+++ b/epan/dissectors/packet-ip.c
@@ -177,6 +177,7 @@ static int hf_ip_fragment_error = -1;
static int hf_ip_fragment_count = -1;
static int hf_ip_reassembled_in = -1;
static int hf_ip_reassembled_length = -1;
+static int hf_ip_reassembled_data = -1;
#ifdef HAVE_GEOIP
static int hf_geoip_country = -1;
@@ -244,6 +245,7 @@ static const fragment_items ip_frag_items = {
&hf_ip_fragment_count,
&hf_ip_reassembled_in,
&hf_ip_reassembled_length,
+ &hf_ip_reassembled_data,
"IPv4 fragments"
};
@@ -2828,8 +2830,12 @@ proto_register_ip(void)
{ &hf_ip_reassembled_length,
{ "Reassembled IPv4 length", "ip.reassembled.length", FT_UINT32, BASE_DEC,
- NULL, 0x0, "The total length of the reassembled payload", HFILL }}
- };
+ NULL, 0x0, "The total length of the reassembled payload", HFILL }},
+
+ { &hf_ip_reassembled_data,
+ { "Reassembled IPv4 data", "ip.reassembled.data", FT_BYTES, BASE_NONE,
+ NULL, 0x0, "The reassembled payload", HFILL }}
+};
static gint *ett[] = {
&ett_ip,
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index 85e30e819d..b213267340 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -182,6 +182,7 @@ static int hf_ipv6_fragment_error = -1;
static int hf_ipv6_fragment_count = -1;
static int hf_ipv6_reassembled_in = -1;
static int hf_ipv6_reassembled_length = -1;
+static int hf_ipv6_reassembled_data = -1;
static int hf_ipv6_mipv6_home_address = -1;
@@ -292,6 +293,7 @@ static const fragment_items ipv6_frag_items = {
&hf_ipv6_fragment_count,
&hf_ipv6_reassembled_in,
&hf_ipv6_reassembled_length,
+ &hf_ipv6_reassembled_data,
"IPv6 fragments"
};
@@ -2545,6 +2547,10 @@ proto_register_ipv6(void)
FT_UINT32, BASE_DEC, NULL, 0x0,
"The total length of the reassembled payload", HFILL }},
+ { &hf_ipv6_reassembled_data,
+ { "Reassembled IPv6 data", "ipv6.reassembled.data",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The reassembled payload", HFILL }},
/* RPL Routing Header */
{ &hf_ipv6_routing_hdr_rpl_cmprI,
{ "Compressed Internal Octets (CmprI)", "ipv6.routing_hdr.rpl.cmprI",
diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c
index 27bc921d8a..3a391841e4 100644
--- a/epan/dissectors/packet-isakmp.c
+++ b/epan/dissectors/packet-isakmp.c
@@ -392,6 +392,8 @@ static const fragment_items isakmp_frag_items = {
&hf_isakmp_reassembled_in,
/* Reassembled length field */
&hf_isakmp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c
index 6ea310a835..3158d739fc 100644
--- a/epan/dissectors/packet-isup.c
+++ b/epan/dissectors/packet-isup.c
@@ -2929,6 +2929,8 @@ static const fragment_items isup_apm_msg_frag_items = {
&hf_isup_apm_msg_reassembled_in,
/* Reassembled length field */
&hf_isup_apm_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"ISUP APM Message fragments"
};
diff --git a/epan/dissectors/packet-lapdm.c b/epan/dissectors/packet-lapdm.c
index c569857601..841281fb19 100644
--- a/epan/dissectors/packet-lapdm.c
+++ b/epan/dissectors/packet-lapdm.c
@@ -198,6 +198,8 @@ static const fragment_items lapdm_frag_items = {
&hf_lapdm_reassembled_in,
/* Reassembled length field */
&hf_lapdm_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"fragments"
};
diff --git a/epan/dissectors/packet-lapsat.c b/epan/dissectors/packet-lapsat.c
index 38ae3ff00b..693b3dd86b 100644
--- a/epan/dissectors/packet-lapsat.c
+++ b/epan/dissectors/packet-lapsat.c
@@ -244,6 +244,8 @@ static const fragment_items lapsat_frag_items = {
&hf_lapsat_reassembled_in,
/* Reassembled length field */
&hf_lapsat_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"fragments"
};
diff --git a/epan/dissectors/packet-ltp.c b/epan/dissectors/packet-ltp.c
index 36d1172792..80d582ade9 100644
--- a/epan/dissectors/packet-ltp.c
+++ b/epan/dissectors/packet-ltp.c
@@ -197,6 +197,8 @@ static const fragment_items ltp_frag_items = {
&hf_ltp_reassembled_in,
/*Reassembled length field*/
&hf_ltp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/*Tag*/
"LTP fragments"
};
diff --git a/epan/dissectors/packet-mp2t.c b/epan/dissectors/packet-mp2t.c
index 02b5bc5a3c..b8b9615cc4 100644
--- a/epan/dissectors/packet-mp2t.c
+++ b/epan/dissectors/packet-mp2t.c
@@ -238,6 +238,8 @@ static const fragment_items mp2t_msg_frag_items = {
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-mux27010.c b/epan/dissectors/packet-mux27010.c
index 08b15d276b..e2f046a919 100644
--- a/epan/dissectors/packet-mux27010.c
+++ b/epan/dissectors/packet-mux27010.c
@@ -285,6 +285,8 @@ static gint ett_msg_fragments = -1;
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-ncp2222.inc b/epan/dissectors/packet-ncp2222.inc
index 5c1a1de460..939c66f73f 100644
--- a/epan/dissectors/packet-ncp2222.inc
+++ b/epan/dissectors/packet-ncp2222.inc
@@ -78,6 +78,8 @@ static const fragment_items nds_frag_items = {
&hf_nds_segment_count,
NULL,
&hf_nds_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-ndmp.c b/epan/dissectors/packet-ndmp.c
index 1577ca7fec..3bf3105077 100644
--- a/epan/dissectors/packet-ndmp.c
+++ b/epan/dissectors/packet-ndmp.c
@@ -280,6 +280,8 @@ static const fragment_items ndmp_frag_items = {
&hf_ndmp_reassembled_in,
/* Reassembled length field */
&hf_ndmp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"NDMP fragments"
};
diff --git a/epan/dissectors/packet-ndps.c b/epan/dissectors/packet-ndps.c
index 35eb0b7501..01ed8d96eb 100644
--- a/epan/dissectors/packet-ndps.c
+++ b/epan/dissectors/packet-ndps.c
@@ -4038,6 +4038,8 @@ static const fragment_items ndps_frag_items = {
&hf_ndps_segment_count,
NULL,
&hf_ndps_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c
index fb5d06d07e..0a07be827b 100644
--- a/epan/dissectors/packet-netbios.c
+++ b/epan/dissectors/packet-netbios.c
@@ -134,6 +134,8 @@ static const fragment_items netbios_frag_items = {
&hf_netb_fragment_count,
NULL,
&hf_netb_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-ositp.c b/epan/dissectors/packet-ositp.c
index 0109aa75f9..c25a23cfe6 100644
--- a/epan/dissectors/packet-ositp.c
+++ b/epan/dissectors/packet-ositp.c
@@ -102,6 +102,8 @@ static const fragment_items cotp_frag_items = {
&hf_cotp_segment_count,
&hf_cotp_reassembled_in,
&hf_cotp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-p_mul.c b/epan/dissectors/packet-p_mul.c
index 589e4267b1..8e3e87c437 100644
--- a/epan/dissectors/packet-p_mul.c
+++ b/epan/dissectors/packet-p_mul.c
@@ -225,6 +225,8 @@ static const fragment_items p_mul_frag_items = {
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-pop.c b/epan/dissectors/packet-pop.c
index 6981cd8493..1fd92f3301 100644
--- a/epan/dissectors/packet-pop.c
+++ b/epan/dissectors/packet-pop.c
@@ -100,6 +100,8 @@ static const fragment_items pop_data_frag_items = {
&hf_pop_data_reassembled_in,
/* Reassembled length field */
&hf_pop_data_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"DATA fragments"
};
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index d181c0a2b2..9eb69b5413 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -136,6 +136,8 @@ static const fragment_items q931_frag_items = {
&hf_q931_segment_count,
&hf_q931_reassembled_in,
&hf_q931_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-reload.c b/epan/dissectors/packet-reload.c
index b42027dd19..8101fd7b72 100644
--- a/epan/dissectors/packet-reload.c
+++ b/epan/dissectors/packet-reload.c
@@ -656,6 +656,8 @@ static const fragment_items reload_frag_items = {
&hf_reload_fragment_count,
&hf_reload_reassembled_in,
&hf_reload_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"RELOAD fragments"
};
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index cd346be70f..fa114556b6 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -289,6 +289,8 @@ static const fragment_items rpc_frag_items = {
&hf_rpc_fragment_count,
NULL,
&hf_rpc_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index 8445cda571..ebf0d57004 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -128,6 +128,8 @@ static const fragment_items rtp_fragment_items = {
&hf_rtp_fragment_count,
&hf_rtp_reassembled_in,
&hf_rtp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"RTP fragments"
};
@@ -1182,7 +1184,7 @@ dissect_rtp_hext_rfc5215_onebyte( tvbuff_t *tvb, packet_info *pinfo,
subtvb = tvb_new_subset(tvb, ext_offset, ext_length, ext_length);
if (!dissector_try_uint (rtp_hdr_ext_rfc5285_dissector_table, ext_id, subtvb, pinfo, rtp_hext_rfc5285_tree)) {
- if (rtp_hext_tree)
+ if (rtp_hext_tree)
proto_tree_add_item(rtp_hext_rfc5285_tree, hf_rtp_ext_rfc5285_data, subtvb, 0, ext_length, ENC_NA );
}
diff --git a/epan/dissectors/packet-rtse.c b/epan/dissectors/packet-rtse.c
index c7ed0db1cb..48cf81738d 100644
--- a/epan/dissectors/packet-rtse.c
+++ b/epan/dissectors/packet-rtse.c
@@ -154,6 +154,8 @@ static const fragment_items rtse_frag_items = {
&hf_rtse_reassembled_in,
/* Reassembled length field */
&hf_rtse_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"RTSE fragments"
};
@@ -205,7 +207,7 @@ call_rtse_oid_callback(const char *oid, tvbuff_t *tvb, int offset, packet_info *
dissect_unknown_ber(pinfo, next_tvb, offset, next_tree);
}
- /*XXX until we change the #.REGISTER signature for _PDU()s
+ /*XXX until we change the #.REGISTER signature for _PDU()s
* into new_dissector_t we have to do this kludge with
* manually step past the content in the ANY type.
*/
@@ -280,7 +282,7 @@ dissect_rtse_T_open(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id);
break;
}
-
+
if(!oid) /* XXX: problem here is we haven't decoded the applicationProtocol yet - so we make assumptions! */
oid = "applicationProtocol.12";
@@ -508,7 +510,7 @@ static int
dissect_rtse_RefuseReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 148 "../../asn1/rtse/rtse.cnf"
int reason = -1;
-
+
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&reason);
@@ -540,7 +542,7 @@ dissect_rtse_T_userDataRJ(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id);
break;
}
-
+
if(!oid) /* XXX: problem here is we haven't decoded the applicationProtocol yet - so we make assumptions! */
oid = "applicationProtocol.12";
@@ -642,7 +644,7 @@ static int
dissect_rtse_AbortReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 164 "../../asn1/rtse/rtse.cnf"
int reason = -1;
-
+
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
&reason);
@@ -763,7 +765,7 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
if(parent_tree){
proto_tree_add_text(parent_tree, tvb, offset, -1,
"Internal error:can't get application context from ACSE dissector.");
- }
+ }
return ;
} else {
session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
@@ -773,22 +775,22 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RTSE");
col_clear(pinfo->cinfo, COL_INFO);
- if (rtse_reassemble &&
+ if (rtse_reassemble &&
((session->spdu_type == SES_DATA_TRANSFER) ||
(session->spdu_type == SES_MAJOR_SYNC_POINT))) {
/* Use conversation index as fragment id */
- conversation = find_conversation (pinfo->fd->num,
- &pinfo->src, &pinfo->dst, pinfo->ptype,
+ conversation = find_conversation (pinfo->fd->num,
+ &pinfo->src, &pinfo->dst, pinfo->ptype,
pinfo->srcport, pinfo->destport, 0);
- if (conversation != NULL) {
+ if (conversation != NULL) {
rtse_id = conversation->index;
- }
+ }
session->rtse_reassemble = TRUE;
}
if (rtse_reassemble && session->spdu_type == SES_MAJOR_SYNC_POINT) {
frag_msg = fragment_end_seq_next (pinfo, rtse_id, rtse_segment_table,
rtse_reassembled_table);
- next_tvb = process_reassembled_data (tvb, offset, pinfo, "Reassembled RTSE",
+ next_tvb = process_reassembled_data (tvb, offset, pinfo, "Reassembled RTSE",
frag_msg, &rtse_frag_items, NULL, parent_tree);
}
if(parent_tree){
@@ -803,7 +805,7 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
fragment_length = tvb_length_remaining (data_tvb, 0);
proto_item_append_text(asn1_ctx.created_item, " (%u byte%s)", fragment_length,
plurality(fragment_length, "", "s"));
- frag_msg = fragment_add_seq_next (data_tvb, 0, pinfo,
+ frag_msg = fragment_add_seq_next (data_tvb, 0, pinfo,
rtse_id, rtse_segment_table,
rtse_reassembled_table, fragment_length, TRUE);
if (frag_msg && pinfo->fd->num != frag_msg->reassembled_in) {
@@ -830,7 +832,7 @@ dissect_rtse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
}
pinfo->fragmented = FALSE;
data_handled = TRUE;
- }
+ }
if (!data_handled) {
while (tvb_reported_length_remaining(tvb, offset) > 0){
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index 90692bd763..8a79cdfa40 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -734,6 +734,8 @@ static const fragment_items sccp_xudt_msg_frag_items = {
&hf_sccp_xudt_msg_reassembled_in,
/* Reassembled length field */
&hf_sccp_xudt_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"SCCP XUDT Message fragments"
};
diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c
index a46027a640..31892771c9 100644
--- a/epan/dissectors/packet-scsi.c
+++ b/epan/dissectors/packet-scsi.c
@@ -390,6 +390,8 @@ static const fragment_items scsi_frag_items = {
&hf_scsi_fragment_count,
&hf_scsi_reassembled_in,
&hf_scsi_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
@@ -490,7 +492,7 @@ static const value_string scsi_evpd_pagecode_val[] = {
{SCSI_EVPD_DEVSERNUM, "Unit Serial Number Page"},
{SCSI_EVPD_OPER, "Implemented Operating Definition Page"},
{SCSI_EVPD_ASCIIOPER, "ASCII Implemented Operating Definition Page"},
- {SCSI_EVPD_DEVID, "Device Identification Page"},
+ {SCSI_EVPD_DEVID, "Device Identification Page"},
{SCSI_EVPD_BLKLIMITS, "Block Limits Page"},
{SCSI_EVPD_LBP, "Logical Block Provisioning Page"},
{0, NULL},
@@ -3561,7 +3563,7 @@ dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo,
if (spf) {
proto_tree_add_item(tree, hf_scsi_spc_subpagecode, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_scsi_modepage_plen, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
- } else {
+ } else {
proto_tree_add_item(tree, hf_scsi_modepage_plen, tvb, offset + 1, 1, ENC_BIG_ENDIAN);
}
diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c
index 0086276e96..c66a936978 100644
--- a/epan/dissectors/packet-ses.c
+++ b/epan/dissectors/packet-ses.c
@@ -204,6 +204,8 @@ static const fragment_items ses_frag_items = {
&hf_ses_reassembled_in,
/* Reassembled length field */
&hf_ses_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"SES segments"
};
diff --git a/epan/dissectors/packet-smb-pipe.c b/epan/dissectors/packet-smb-pipe.c
index c4ff7b885e..a1d555d739 100644
--- a/epan/dissectors/packet-smb-pipe.c
+++ b/epan/dissectors/packet-smb-pipe.c
@@ -90,6 +90,8 @@ static const fragment_items smb_pipe_frag_items = {
&hf_pipe_fragment_count,
NULL,
&hf_pipe_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c
index c8b505c5a2..114f0e629c 100644
--- a/epan/dissectors/packet-smb.c
+++ b/epan/dissectors/packet-smb.c
@@ -819,6 +819,8 @@ static const fragment_items smb_frag_items = {
&hf_smb_segment_count,
NULL,
&hf_smb_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-smtp.c b/epan/dissectors/packet-smtp.c
index 2575ab1d10..708ade6101 100644
--- a/epan/dissectors/packet-smtp.c
+++ b/epan/dissectors/packet-smtp.c
@@ -108,6 +108,8 @@ static const fragment_items smtp_data_frag_items = {
&hf_smtp_data_reassembled_in,
/* Reassembled length field */
&hf_smtp_data_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"DATA fragments"
};
@@ -607,7 +609,7 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else if (session_state->auth_state == SMTP_AUTH_STATE_PASSWORD_REQ) {
session_state->auth_state = SMTP_AUTH_STATE_PASSWORD_RSP;
session_state->password_frame = pinfo->fd->num;
- }
+ }
else {
/*
@@ -740,7 +742,7 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
proto_tree_add_string(smtp_tree, hf_smtp_username, tvb,
loffset, linelen, decrypt);
- col_append_str(pinfo->cinfo, COL_INFO, decrypt);
+ col_append_str(pinfo->cinfo, COL_INFO, decrypt);
} else if (session_state->password_frame == pinfo->fd->num) {
if (decrypt == NULL) {
/* This line wasn't already decrypted through the state machine */
@@ -868,7 +870,7 @@ dissect_smtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (code == 334) {
- switch(session_state->auth_state)
+ switch(session_state->auth_state)
{
case SMTP_AUTH_STATE_START:
session_state->auth_state = SMTP_AUTH_STATE_USERNAME_REQ;
diff --git a/epan/dissectors/packet-sndcp.c b/epan/dissectors/packet-sndcp.c
index 175c0bf92d..b5df2c77bc 100644
--- a/epan/dissectors/packet-sndcp.c
+++ b/epan/dissectors/packet-sndcp.c
@@ -91,6 +91,8 @@ static const fragment_items npdu_frag_items = {
&hf_npdu_fragment_count,
&hf_npdu_reassembled_in,
&hf_npdu_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c
index 28c94f4df8..144f09ec3f 100644
--- a/epan/dissectors/packet-ssl.c
+++ b/epan/dissectors/packet-ssl.c
@@ -320,6 +320,8 @@ static const fragment_items ssl_segment_items = {
&hf_ssl_segment_count,
&hf_ssl_reassembled_in,
&hf_ssl_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"Segments"
};
diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c
index a2553e42bb..3ebf58f765 100644
--- a/epan/dissectors/packet-t38.c
+++ b/epan/dissectors/packet-t38.c
@@ -44,10 +44,10 @@
* http://www.itu.int/ITU-T/asn1/database/itu-t/t/t38/2002-Amd1/T38.html (Pre-Corrigendum=FALSE)
*/
-/* TO DO:
- * - TCP desegmentation is currently not supported for T.38 IFP directly over TCP.
+/* TO DO:
+ * - TCP desegmentation is currently not supported for T.38 IFP directly over TCP.
* - H.245 dissectors should be updated to start conversations for T.38 similar to RTP.
- * - Sometimes the last octet is not high-lighted when selecting something in the tree. Bug in PER dissector?
+ * - Sometimes the last octet is not high-lighted when selecting something in the tree. Bug in PER dissector?
* - Add support for RTP payload audio/t38 (draft-jones-avt-audio-t38-03.txt), i.e. T38 in RTP packets.
*/
@@ -74,7 +74,7 @@
#include <epan/emem.h>
#include <epan/strutil.h>
-#define PORT_T38 6004
+#define PORT_T38 6004
static guint global_t38_tcp_port = PORT_T38;
static guint global_t38_udp_port = PORT_T38;
@@ -86,7 +86,7 @@ static gboolean use_pre_corrigendum_asn1_specification = TRUE;
/* dissect packets that looks like RTP version 2 packets as RTP */
/* instead of as T.38. This may result in that some T.38 UPTL */
/* packets with sequence number values higher than 32767 may be */
-/* shown as RTP packets. */
+/* shown as RTP packets. */
static gboolean dissect_possible_rtpv2_packets_as_rtp = FALSE;
@@ -214,6 +214,8 @@ static const fragment_items data_frag_items = {
&hf_t38_reassembled_in,
/* Reassembled length field */
&hf_t38_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Data fragments"
};
@@ -427,7 +429,7 @@ force_reassemble_seq(packet_info *pinfo, guint32 id,
fd_head->reassembled_in=pinfo->fd->num;
col_append_fstr(pinfo->cinfo, COL_INFO, " (t4-data Reassembled: %d pack lost, %d pack burst lost)", packet_lost, burst_lost);
-
+
p_t38_packet_conv_info->packet_lost = packet_lost;
p_t38_packet_conv_info->burst_lost = burst_lost;
@@ -739,8 +741,8 @@ dissect_t38_T_field_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_
if (!frag_msg) { /* Not last packet of reassembled */
if (Data_Field_field_type_value == 0) {
- col_append_fstr(actx->pinfo->cinfo, COL_INFO," (HDLC fragment %u)",
- seq_number + (guint32)p_t38_packet_conv_info->additional_hdlc_data_field_counter
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO," (HDLC fragment %u)",
+ seq_number + (guint32)p_t38_packet_conv_info->additional_hdlc_data_field_counter
- (guint32)p_t38_packet_conv_info->reass_start_seqnum);
} else {
col_append_fstr(actx->pinfo->cinfo, COL_INFO," (t4-data fragment %u)", seq_number - (guint32)p_t38_packet_conv_info->reass_start_seqnum);
@@ -1000,11 +1002,11 @@ init_t38_info_conv(packet_info *pinfo)
t38_info->frame_num_first_t4_data = 0;
- /*
+ /*
p_t38_packet_conv hold the conversation info in each of the packets.
p_t38_conv hold the conversation info used to reassemble the HDLC packets, and also the Setup info (e.g SDP)
- If we already have p_t38_packet_conv in the packet, it means we already reassembled the HDLC packets, so we don't
- need to use p_t38_conv
+ If we already have p_t38_packet_conv in the packet, it means we already reassembled the HDLC packets, so we don't
+ need to use p_t38_conv
*/
p_t38_packet_conv = NULL;
p_t38_conv = NULL;
@@ -1193,10 +1195,10 @@ dissect_t38_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(t38_tpkt_usage == T38_TPKT_ALWAYS){
dissect_tpkt_encap(tvb,pinfo,tree,t38_tpkt_reassembly,t38_tcp_pdu_handle);
- }
+ }
else if((t38_tpkt_usage == T38_TPKT_NEVER) || (is_tpkt(tvb,1) == -1)){
dissect_t38_tcp_pdu(tvb, pinfo, tree);
- }
+ }
else {
dissect_tpkt_encap(tvb,pinfo,tree,t38_tpkt_reassembly,t38_tcp_pdu_handle);
}
@@ -1210,13 +1212,13 @@ dissect_t38(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissect_t38_tcp(tvb, pinfo, tree);
}
else if(pinfo->ipproto == IP_PROTO_UDP)
- {
+ {
dissect_t38_udp(tvb, pinfo, tree);
}
}
/* Look for conversation info and display any setup info found */
-void
+void
show_setup_info(tvbuff_t *tvb, proto_tree *tree, t38_conv *p_t38_conversation)
{
proto_tree *t38_setup_tree;
@@ -1356,7 +1358,7 @@ proto_register_t38(void)
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{&hf_t38_fragment_multiple_tails,
{"Message has multiple tail fragments",
- "t38.fragment.multiple_tails",
+ "t38.fragment.multiple_tails",
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{&hf_t38_fragment_too_long_fragment,
{"Message fragment too long", "t38.fragment.too_long_fragment",
@@ -1429,7 +1431,7 @@ proto_register_t38(void)
prefs_register_uint_preference(t38_module, "udp.port",
"T.38 UDP Port",
"Set the UDP port for T.38 messages",
- 10, &global_t38_udp_port);
+ 10, &global_t38_udp_port);
prefs_register_bool_preference(t38_module, "reassembly",
"Reassemble T.38 PDUs over TPKT over TCP",
"Whether the dissector should reassemble T.38 PDUs spanning multiple TCP segments "
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index f6112015d6..af43f6e4e1 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -146,6 +146,7 @@ static int hf_tcp_pdu_size = -1;
static int hf_tcp_pdu_last_frame = -1;
static int hf_tcp_reassembled_in = -1;
static int hf_tcp_reassembled_length = -1;
+static int hf_tcp_reassembled_data = -1;
static int hf_tcp_segments = -1;
static int hf_tcp_segment = -1;
static int hf_tcp_segment_overlap = -1;
@@ -402,6 +403,7 @@ static const fragment_items tcp_segment_items = {
&hf_tcp_segment_count,
&hf_tcp_reassembled_in,
&hf_tcp_reassembled_length,
+ &hf_tcp_reassembled_data,
"Segments"
};
@@ -5052,6 +5054,10 @@ proto_register_tcp(void)
{ "Reassembled TCP length", "tcp.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
"The total length of the reassembled payload", HFILL }},
+ { &hf_tcp_reassembled_data,
+ { "Reassembled TCP Data", "tcp.reassembled.data", FT_BYTES, BASE_NONE, NULL, 0x0,
+ "The reassembled payload", HFILL }},
+
{ &hf_tcp_option_kind,
{ "Kind", "tcp.option_kind", FT_UINT8,
BASE_DEC, VALS(tcp_option_kind_vs), 0x0, "This TCP option's kind", HFILL }},
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c
index f950715aae..ad237a3238 100644
--- a/epan/dissectors/packet-tds.c
+++ b/epan/dissectors/packet-tds.c
@@ -546,6 +546,8 @@ static const fragment_items tds_frag_items = {
&hf_tds_fragment_count,
&hf_tds_reassembled_in,
&hf_tds_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
@@ -1732,7 +1734,7 @@ dissect_tds_done_token(tvbuff_t *tvb, guint offset, proto_tree *tree, tds_conv_i
offset += 2;
proto_tree_add_text(tree, tvb, offset, 2, "Operation");
offset += 2;
- if (TDS_PROTO_TDS7_2_OR_GREATER) {
+ if (TDS_PROTO_TDS7_2_OR_GREATER) {
proto_tree_add_text(tree, tvb, offset, 8, "row count: %" G_GINT64_MODIFIER "u",
tds_tvb_get_xxtoh64(tvb, offset, tds_little_endian));
} else {
diff --git a/epan/dissectors/packet-teamspeak2.c b/epan/dissectors/packet-teamspeak2.c
index 710d37a355..a1ccb4c636 100644
--- a/epan/dissectors/packet-teamspeak2.c
+++ b/epan/dissectors/packet-teamspeak2.c
@@ -139,6 +139,8 @@ static const fragment_items msg_frag_items = {
&hf_msg_reassembled_in,
/* Reassembled length field */
&hf_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c
index ea0438be7d..f73665e9b6 100644
--- a/epan/dissectors/packet-tipc.c
+++ b/epan/dissectors/packet-tipc.c
@@ -220,6 +220,8 @@ static const fragment_items tipc_msg_frag_items = {
&hf_tipc_msg_reassembled_in,
/* Reassembled length field */
&hf_tipc_msg_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"TIPC Message fragments"
};
diff --git a/epan/dissectors/packet-wai.c b/epan/dissectors/packet-wai.c
index 1f951a070d..286069fd6b 100644
--- a/epan/dissectors/packet-wai.c
+++ b/epan/dissectors/packet-wai.c
@@ -182,6 +182,8 @@ static const fragment_items wai_frag_items = {
&hf_wai_reassembled_in,
/* Reassembled length field */
&hf_wai_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"Message fragments"
};
diff --git a/epan/dissectors/packet-wtp.c b/epan/dissectors/packet-wtp.c
index 68bc8395f3..a4498c9c0d 100644
--- a/epan/dissectors/packet-wtp.c
+++ b/epan/dissectors/packet-wtp.c
@@ -218,6 +218,8 @@ static const fragment_items wtp_frag_items = {
&hf_wtp_fragment_count,
&hf_wtp_reassembled_in,
&hf_wtp_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"fragments"
};
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index 1bc94dc610..97d69c0a17 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -251,6 +251,8 @@ static const fragment_items x25_frag_items = {
&hf_x25_segment_count,
NULL,
&hf_x25_reassembled_length,
+ /* Reassembled data field */
+ NULL,
"segments"
};
diff --git a/epan/dissectors/packet-zbee-aps.c b/epan/dissectors/packet-zbee-aps.c
index 45174ec22d..a37b6d04a3 100644
--- a/epan/dissectors/packet-zbee-aps.c
+++ b/epan/dissectors/packet-zbee-aps.c
@@ -166,6 +166,8 @@ static const fragment_items zbee_aps_frag_items = {
&hf_zbee_aps_reassembled_in,
/* Reassembled length field */
&hf_zbee_aps_reassembled_length,
+ /* Reassembled data field */
+ NULL,
/* Tag */
"APS Message fragments"
};
diff --git a/epan/reassemble.c b/epan/reassemble.c
index c07a5c463e..5ef746dcb0 100644
--- a/epan/reassemble.c
+++ b/epan/reassemble.c
@@ -2085,6 +2085,12 @@ show_fragment_tree(fragment_data *fd_head, const fragment_items *fit,
PROTO_ITEM_SET_GENERATED(fli);
}
+ if (fit->hf_reassembled_data) {
+ proto_item *fli = proto_tree_add_item(ft, *(fit->hf_reassembled_data),
+ tvb, 0, tvb_length(tvb), ENC_NA);
+ PROTO_ITEM_SET_GENERATED(fli);
+ }
+
return show_fragment_errs_in_col(fd_head, fit, pinfo);
}
diff --git a/epan/reassemble.h b/epan/reassemble.h
index 9f6c06b6ed..f35beb7009 100644
--- a/epan/reassemble.h
+++ b/epan/reassemble.h
@@ -289,25 +289,29 @@ fragment_get_reassembled_id(const packet_info *pinfo, const guint32 id, GHashTab
extern unsigned char *
fragment_delete(const packet_info *pinfo, const guint32 id, GHashTable *fragment_table);
-/* hf_fragment, hf_fragment_error, and hf_reassembled_in should be
- FT_FRAMENUM, the others should be FT_BOOLEAN
-*/
+/* This struct holds references to all the tree and field handles used when
+ * displaying the reassembled fragment tree in the packet details view. A
+ * dissector will populate this structure with its own tree and field handles
+ * and then invoke show_fragement_tree to have those items added to the packet
+ * details tree.
+ */
typedef struct _fragment_items {
- gint *ett_fragment;
- gint *ett_fragments;
-
- int *hf_fragments;
- int *hf_fragment;
- int *hf_fragment_overlap;
- int *hf_fragment_overlap_conflict;
- int *hf_fragment_multiple_tails;
- int *hf_fragment_too_long_fragment;
- int *hf_fragment_error;
- int *hf_fragment_count;
- int *hf_reassembled_in;
- int *hf_reassembled_length;
-
- const char *tag;
+ gint *ett_fragment;
+ gint *ett_fragments;
+
+ int *hf_fragments; /* FT_BOOLEAN */
+ int *hf_fragment; /* FT_FRAMENUM */
+ int *hf_fragment_overlap; /* FT_BOOLEAN */
+ int *hf_fragment_overlap_conflict; /* FT_BOOLEAN */
+ int *hf_fragment_multiple_tails; /* FT_BOOLEAN */
+ int *hf_fragment_too_long_fragment; /* FT_BOOLEAN */
+ int *hf_fragment_error; /* FT_FRAMENUM */
+ int *hf_fragment_count; /* FT_UINT32 */
+ int *hf_reassembled_in; /* FT_FRAMENUM */
+ int *hf_reassembled_length; /* FT_UINT32 */
+ int *hf_reassembled_data; /* FT_BYTES */
+
+ const char *tag;
} fragment_items;
extern tvbuff_t *