aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/libwireshark0.symbols3
-rw-r--r--epan/dissectors/packet-frame.c73
-rw-r--r--epan/dissectors/packet-tcp.c15
-rw-r--r--epan/sequence_analysis.c60
-rw-r--r--epan/sequence_analysis.h25
-rw-r--r--sharkd_session.c6
-rw-r--r--ui/gtk/lbm_uimflow_dlg.c1
-rw-r--r--ui/qt/lbm_uimflow_dialog.cpp1
-rw-r--r--ui/qt/sequence_diagram.cpp10
-rw-r--r--ui/voip_calls.c2
10 files changed, 98 insertions, 98 deletions
diff --git a/debian/libwireshark0.symbols b/debian/libwireshark0.symbols
index 220b020e5d..bd0d085c88 100644
--- a/debian/libwireshark0.symbols
+++ b/debian/libwireshark0.symbols
@@ -1365,6 +1365,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
scsi_smc_vals_ext@Base 1.12.0~rc1
scsi_ssc_vals_ext@Base 1.12.0~rc1
sctp_port_to_display@Base 1.99.2
+ sequence_analysis_create_sai_with_addresses@Base 2.5.0
sequence_analysis_find_by_name@Base 2.5.0
sequence_analysis_free_nodes@Base 2.5.0
sequence_analysis_get_name@Base 2.5.0
@@ -1378,6 +1379,8 @@ libwireshark.so.0 libwireshark0 #MINVER#
sequence_analysis_list_free@Base 2.5.0
sequence_analysis_list_sort@Base 2.5.0
sequence_analysis_table_iterate_tables@Base 2.5.0
+ sequence_analysis_use_col_info_as_label_comment@Base 2.5.0
+ sequence_analysis_use_color_filter@Base 2.5.0
serv_name_lookup@Base 2.1.0
set_actual_length@Base 1.9.1
set_column_custom_fields@Base 2.1.0
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c
index 9b9a0dbaf6..83ace71d37 100644
--- a/epan/dissectors/packet-frame.c
+++ b/epan/dissectors/packet-frame.c
@@ -170,99 +170,32 @@ frame_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
if ((sainfo->all_packets) || (pinfo->fd->flags.passed_dfilter == 1)) {
- gchar *protocol = NULL;
- gchar *colinfo = NULL;
- seq_analysis_item_t *sai = NULL;
-
- if (sainfo->any_addr) {
- if (pinfo->net_src.type!=AT_NONE && pinfo->net_dst.type!=AT_NONE) {
- sai = g_new0(seq_analysis_item_t, 1);
- copy_address(&(sai->src_addr),&(pinfo->net_src));
- copy_address(&(sai->dst_addr),&(pinfo->net_dst));
- }
-
- } else {
- if (pinfo->src.type!=AT_NONE && pinfo->dst.type!=AT_NONE) {
- sai = g_new0(seq_analysis_item_t, 1);
- copy_address(&(sai->src_addr),&(pinfo->src));
- copy_address(&(sai->dst_addr),&(pinfo->dst));
- }
- }
+ seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
if (!sai)
return FALSE;
sai->frame_number = pinfo->num;
- if (pinfo->fd->color_filter) {
- sai->bg_color = color_t_to_rgb(&pinfo->fd->color_filter->bg_color);
- sai->fg_color = color_t_to_rgb(&pinfo->fd->color_filter->fg_color);
- sai->has_color_filter = TRUE;
- }
+ sequence_analysis_use_color_filter(pinfo, sai);
sai->port_src=pinfo->srcport;
sai->port_dst=pinfo->destport;
- sai->protocol = g_strdup(port_type_to_str(pinfo->ptype));
-
- if (pinfo->cinfo) {
- col_item_t *col_item;
- int i;
-
- if (pinfo->cinfo->col_first[COL_INFO] >= 0) {
- for (i = pinfo->cinfo->col_first[COL_INFO]; i <= pinfo->cinfo->col_last[COL_INFO]; i++) {
- col_item = &pinfo->cinfo->columns[i];
- if (col_item->fmt_matx[COL_INFO]) {
- colinfo = g_strdup(col_item->col_data);
- /* break; ? or g_free(colinfo); before g_strdup() */
- }
- }
- }
-
- if (pinfo->cinfo->col_first[COL_PROTOCOL] >= 0) {
- for (i = pinfo->cinfo->col_first[COL_PROTOCOL]; i <= pinfo->cinfo->col_last[COL_PROTOCOL]; i++) {
- col_item = &pinfo->cinfo->columns[i];
- if (col_item->fmt_matx[COL_PROTOCOL]) {
- protocol = g_strdup(col_item->col_data);
- /* break; ? or g_free(protocol); before g_strdup() */
- }
- }
- }
- }
- if (colinfo != NULL) {
- sai->frame_label = g_strdup(colinfo);
- if (protocol != NULL) {
- sai->comment = g_strdup_printf("%s: %s", protocol, colinfo);
- } else {
- sai->comment = g_strdup(colinfo);
- }
- } else {
- /* This will probably never happen...*/
- if (protocol != NULL) {
- sai->frame_label = g_strdup(protocol);
- sai->comment = g_strdup(protocol);
- }
- }
+ sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
if (pinfo->ptype == PT_NONE) {
icmp_info_t *p_icmp_info;
if ((p_icmp_info = (icmp_info_t *) p_get_proto_data(wmem_file_scope(), pinfo, proto_get_id_by_short_name("ICMP"), 0))) {
- g_free(sai->protocol);
- sai->protocol = g_strdup("ICMP");
sai->port_src = 0;
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
} else if ((p_icmp_info = (icmp_info_t *) p_get_proto_data(wmem_file_scope(), pinfo, proto_get_id_by_short_name("ICMPv6"), 0))) {
- g_free(sai->protocol);
- sai->protocol = g_strdup("ICMPv6");
sai->port_src = 0;
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
}
}
- g_free(protocol);
- g_free(colinfo);
-
sai->line_style = 1;
sai->conv_num = 0;
sai->display = TRUE;
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 899326f6a6..4c6bded5ff 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -872,20 +872,15 @@ tcp_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_,
if ((sainfo->all_packets)||(pinfo->fd->flags.passed_dfilter==1)){
const char* flags;
- seq_analysis_item_t *sai;
+ seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
+
+ if (!sai)
+ return FALSE;
- sai = g_new0(seq_analysis_item_t, 1);
sai->frame_number = pinfo->num;
- if (sainfo->any_addr) {
- copy_address(&(sai->src_addr),&(pinfo->net_src));
- copy_address(&(sai->dst_addr),&(pinfo->net_dst));
- } else {
- copy_address(&(sai->src_addr),&(pinfo->src));
- copy_address(&(sai->dst_addr),&(pinfo->dst));
- }
+
sai->port_src=pinfo->srcport;
sai->port_dst=pinfo->destport;
- sai->protocol=g_strdup(port_type_to_str(pinfo->ptype));
flags = tcp_flags_to_str(NULL, tcph);
diff --git a/epan/sequence_analysis.c b/epan/sequence_analysis.c
index 7d8f03064f..e829f48746 100644
--- a/epan/sequence_analysis.c
+++ b/epan/sequence_analysis.c
@@ -28,6 +28,8 @@
#include "addr_resolv.h"
#include "proto.h"
+#include "color_filters.h"
+#include "column-info.h"
#include "tap.h"
#include "wmem/wmem.h"
@@ -105,6 +107,63 @@ void sequence_analysis_table_iterate_tables(wmem_foreach_func func, gpointer use
wmem_tree_foreach(registered_seq_analysis, func, user_data);
}
+seq_analysis_item_t* sequence_analysis_create_sai_with_addresses(packet_info *pinfo, seq_analysis_info_t *sainfo)
+{
+ seq_analysis_item_t *sai = NULL;
+
+ if (sainfo->any_addr) {
+ if (pinfo->net_src.type!=AT_NONE && pinfo->net_dst.type!=AT_NONE) {
+ sai = g_new0(seq_analysis_item_t, 1);
+ copy_address(&(sai->src_addr),&(pinfo->net_src));
+ copy_address(&(sai->dst_addr),&(pinfo->net_dst));
+ }
+
+ } else {
+ if (pinfo->src.type!=AT_NONE && pinfo->dst.type!=AT_NONE) {
+ sai = g_new0(seq_analysis_item_t, 1);
+ copy_address(&(sai->src_addr),&(pinfo->src));
+ copy_address(&(sai->dst_addr),&(pinfo->dst));
+ }
+ }
+
+ return sai;
+}
+
+void sequence_analysis_use_color_filter(packet_info *pinfo, seq_analysis_item_t *sai)
+{
+ if (pinfo->fd->color_filter) {
+ sai->bg_color = color_t_to_rgb(&pinfo->fd->color_filter->bg_color);
+ sai->fg_color = color_t_to_rgb(&pinfo->fd->color_filter->fg_color);
+ sai->has_color_filter = TRUE;
+ }
+}
+
+void sequence_analysis_use_col_info_as_label_comment(packet_info *pinfo, seq_analysis_item_t *sai)
+{
+ const gchar *protocol = NULL;
+ const gchar *colinfo = NULL;
+
+ if (pinfo->cinfo) {
+ colinfo = col_get_text(pinfo->cinfo, COL_INFO);
+ protocol = col_get_text(pinfo->cinfo, COL_PROTOCOL);
+ }
+
+ if (colinfo != NULL) {
+ sai->frame_label = g_strdup(colinfo);
+ if (protocol != NULL) {
+ sai->comment = g_strdup_printf("%s: %s", protocol, colinfo);
+ } else {
+ sai->comment = g_strdup(colinfo);
+ }
+ } else {
+ /* This will probably never happen...*/
+ if (protocol != NULL) {
+ sai->frame_label = g_strdup(protocol);
+ sai->comment = g_strdup(protocol);
+ }
+ }
+}
+
seq_analysis_info_t *
sequence_analysis_info_new(void)
{
@@ -135,7 +194,6 @@ static void sequence_analysis_item_free(gpointer data)
g_free(seq_item->frame_label);
g_free(seq_item->time_str);
g_free(seq_item->comment);
- g_free(seq_item->protocol);
free_address(&seq_item->src_addr);
free_address(&seq_item->dst_addr);
g_free(data);
diff --git a/epan/sequence_analysis.h b/epan/sequence_analysis.h
index bcebdef3a5..247b3d5fbd 100644
--- a/epan/sequence_analysis.h
+++ b/epan/sequence_analysis.h
@@ -63,7 +63,6 @@ typedef struct _seq_analysis_item {
guint src_node; /**< this is used by graph_analysis.c to identify the node */
guint dst_node; /**< a node is an IP address that will be displayed in columns */
guint16 line_style; /**< the arrow line width in pixels*/
- gchar *protocol; /**< the label of the protocol defined in the IP packet */
} seq_analysis_item_t;
/** defines the graph analysis structure */
@@ -128,6 +127,30 @@ WS_DLL_PUBLIC tap_packet_cb sequence_analysis_get_packet_func(register_analysis_
*/
WS_DLL_PUBLIC guint sequence_analysis_get_tap_flags(register_analysis_t* analysis);
+/** Helper function to create a sequence analysis item with address fields populated
+ * Allocate a seq_analysis_item_t to return and populate the src_addr and dst_addr
+ * members based on seq_analysis_info_t any_addr member
+ *
+ * @param pinfo packet info
+ * @param sainfo info determining address type
+ * @return sequence analysis tap flags
+ */
+WS_DLL_PUBLIC seq_analysis_item_t* sequence_analysis_create_sai_with_addresses(packet_info *pinfo, seq_analysis_info_t *sainfo);
+
+/** Helper function to set colors for analysis the same as Wireshark display
+ *
+ * @param pinfo packet info
+ * @param sai item to set color
+ */
+WS_DLL_PUBLIC void sequence_analysis_use_color_filter(packet_info *pinfo, seq_analysis_item_t *sai);
+
+/** Helper function to set frame label and comments to use protocol and info column data
+ *
+ * @param pinfo packet info
+ * @param sai item to set label and comments
+ */
+WS_DLL_PUBLIC void sequence_analysis_use_col_info_as_label_comment(packet_info *pinfo, seq_analysis_item_t *sai);
+
/** Find a registered sequence analysis "protocol" by name
*
* @param name Registered sequence analysis to find
diff --git a/sharkd_session.c b/sharkd_session.c
index 129fa6e5ab..2413fb6405 100644
--- a/sharkd_session.c
+++ b/sharkd_session.c
@@ -1066,12 +1066,6 @@ sharkd_session_process_tap_flow_cb(void *tapdata)
printf(",\"n\":[%u,%u]", sai->src_node, sai->dst_node);
printf(",\"pn\":[%u,%u]", sai->port_src, sai->port_dst);
- if (sai->protocol)
- {
- printf(",\"p\":");
- json_puts_string(sai->protocol);
- }
-
if (sai->comment)
{
printf(",\"c\":");
diff --git a/ui/gtk/lbm_uimflow_dlg.c b/ui/gtk/lbm_uimflow_dlg.c
index 0a5f1fbd4c..3c2dfcb32c 100644
--- a/ui/gtk/lbm_uimflow_dlg.c
+++ b/ui/gtk/lbm_uimflow_dlg.c
@@ -170,7 +170,6 @@ static int lbmc_uim_flow_graph_add_to_graph(packet_info * pinfo, const lbm_uim_s
item->frame_number = pinfo->num;
item->port_src = pinfo->srcport;
item->port_dst = pinfo->destport;
- item->protocol = g_strdup(port_type_to_str(pinfo->ptype));
if (stream_info->description == NULL)
{
item->frame_label = g_strdup_printf("(%" G_GUINT32_FORMAT ")", stream_info->sqn);
diff --git a/ui/qt/lbm_uimflow_dialog.cpp b/ui/qt/lbm_uimflow_dialog.cpp
index c355afa031..29e5020270 100644
--- a/ui/qt/lbm_uimflow_dialog.cpp
+++ b/ui/qt/lbm_uimflow_dialog.cpp
@@ -128,7 +128,6 @@ static gboolean lbm_uimflow_add_to_graph(seq_analysis_info_t * seq_info, packet_
item->frame_number = pinfo->num;
item->port_src = pinfo->srcport;
item->port_dst = pinfo->destport;
- item->protocol = g_strdup(port_type_to_str(pinfo->ptype));
if (stream_info->description == NULL)
{
item->frame_label = g_strdup_printf("(%" G_GUINT32_FORMAT ")", stream_info->sqn);
diff --git a/ui/qt/sequence_diagram.cpp b/ui/qt/sequence_diagram.cpp
index 98071b18a6..3b20d0b462 100644
--- a/ui/qt/sequence_diagram.cpp
+++ b/ui/qt/sequence_diagram.cpp
@@ -263,12 +263,10 @@ void SequenceDiagram::draw(QCPPainter *painter)
fg_pen.setColor(sel_pal.color(QPalette::HighlightedText));
bg_color = sel_pal.color(QPalette::Highlight);
selected_key_ = cur_key;
- } else if (strcmp(sainfo_->name, "any") == 0) {
- if (sai->has_color_filter) {
- fg_pen.setColor(QColor().fromRgb(sai->fg_color));
- bg_color = QColor().fromRgb(sai->bg_color);
- }
- } else { // SEQ_ANALYSIS_VOIP, SEQ_ANALYSIS_TCP
+ } else if (sai->has_color_filter) {
+ fg_pen.setColor(QColor().fromRgb(sai->fg_color));
+ bg_color = QColor().fromRgb(sai->bg_color);
+ } else {
fg_pen.setColor(Qt::black);
bg_color = ColorUtils::sequenceColor(sai->conv_num);
}
diff --git a/ui/voip_calls.c b/ui/voip_calls.c
index 25629fe0f4..7bf41b4f8f 100644
--- a/ui/voip_calls.c
+++ b/ui/voip_calls.c
@@ -342,7 +342,6 @@ add_to_graph(voip_calls_tapinfo_t *tapinfo, packet_info *pinfo, epan_dissect_t *
gai->port_src=pinfo->srcport;
gai->port_dst=pinfo->destport;
- gai->protocol = g_strdup(port_type_to_str(pinfo->ptype));
if (frame_label != NULL)
gai->frame_label = g_strdup(frame_label);
@@ -463,7 +462,6 @@ static void insert_to_graph_t38(voip_calls_tapinfo_t *tapinfo, packet_info *pinf
new_gai->port_src=pinfo->srcport;
new_gai->port_dst=pinfo->destport;
- new_gai->protocol = g_strdup(port_type_to_str(pinfo->ptype));
if (frame_label != NULL)
new_gai->frame_label = g_strdup(frame_label);
else