forked from osmocom/wireshark
Have sequence analysis properly use filters from taps.
Sequence analysis has its own "filtering" system that required its tap functions to look for some "filter flags". register_tap_listener() already comes with a filter argument, so use that to simplify logic of tap functions in dissectors. Also have Qt GUI for Flow Graph look like other dialogs that have a "Limit to display filter" checkbox. Change-Id: I91d9d9599309786892f5b50c98692e52651e7174 Reviewed-on: https://code.wireshark.org/review/23659 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
parent
3c8750dfb3
commit
e7cc0279ab
|
@ -168,28 +168,25 @@ static gboolean
|
|||
frame_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_, const void *dummy _U_)
|
||||
{
|
||||
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
|
||||
if ((sainfo->all_packets) || (pinfo->fd->flags.passed_dfilter == 1)) {
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
sai->frame_number = pinfo->num;
|
||||
|
||||
sai->frame_number = pinfo->num;
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
}
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -380,38 +380,35 @@ static gboolean
|
|||
icmp_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_, const void *dummy _U_)
|
||||
{
|
||||
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
|
||||
if ((sainfo->all_packets) || (pinfo->fd->flags.passed_dfilter == 1)) {
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
sai->frame_number = pinfo->num;
|
||||
|
||||
sai->frame_number = pinfo->num;
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
if (pinfo->ptype == PT_NONE) {
|
||||
icmp_info_t *p_icmp_info = (icmp_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_icmp, 0);
|
||||
|
||||
if (pinfo->ptype == PT_NONE) {
|
||||
icmp_info_t *p_icmp_info = (icmp_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_icmp, 0);
|
||||
|
||||
if (p_icmp_info != NULL) {
|
||||
sai->port_src = 0;
|
||||
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
|
||||
}
|
||||
if (p_icmp_info != NULL) {
|
||||
sai->port_src = 0;
|
||||
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
|
||||
}
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
}
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1309,38 +1309,35 @@ static gboolean
|
|||
icmpv6_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_, const void *dummy _U_)
|
||||
{
|
||||
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
|
||||
if ((sainfo->all_packets) || (pinfo->fd->flags.passed_dfilter == 1)) {
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
sai->frame_number = pinfo->num;
|
||||
|
||||
sai->frame_number = pinfo->num;
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_color_filter(pinfo, sai);
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
|
||||
sequence_analysis_use_col_info_as_label_comment(pinfo, sai);
|
||||
if (pinfo->ptype == PT_NONE) {
|
||||
icmp_info_t *p_icmp_info = (icmp_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_icmpv6, 0);
|
||||
|
||||
if (pinfo->ptype == PT_NONE) {
|
||||
icmp_info_t *p_icmp_info = (icmp_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_icmpv6, 0);
|
||||
|
||||
if (p_icmp_info != NULL) {
|
||||
sai->port_src = 0;
|
||||
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
|
||||
}
|
||||
if (p_icmp_info != NULL) {
|
||||
sai->port_src = 0;
|
||||
sai->port_dst = p_icmp_info->type * 256 + p_icmp_info->code;
|
||||
}
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
}
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = 0;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -6088,119 +6088,116 @@ lbm_uim_seq_analysis_packet(void *ptr, packet_info *pinfo, epan_dissect_t *edt _
|
|||
char time_str[COL_MAX_LEN];
|
||||
int rc;
|
||||
|
||||
if ((sainfo->all_packets)||(pinfo->fd->flags.passed_dfilter==1))
|
||||
if (stream_info->endpoint_a.type != stream_info->endpoint_b.type)
|
||||
{
|
||||
if (stream_info->endpoint_a.type != stream_info->endpoint_b.type)
|
||||
return TRUE;
|
||||
}
|
||||
if (stream_info->endpoint_a.type == lbm_uim_instance_stream)
|
||||
{
|
||||
rc = memcmp((void *)stream_info->endpoint_a.stream_info.ctxinst.ctxinst,
|
||||
(void *)stream_info->endpoint_b.stream_info.ctxinst.ctxinst,
|
||||
LBM_CONTEXT_INSTANCE_BLOCK_SZ);
|
||||
if (rc <= 0)
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
if (stream_info->endpoint_a.type == lbm_uim_instance_stream)
|
||||
{
|
||||
rc = memcmp((void *)stream_info->endpoint_a.stream_info.ctxinst.ctxinst,
|
||||
(void *)stream_info->endpoint_b.stream_info.ctxinst.ctxinst,
|
||||
LBM_CONTEXT_INSTANCE_BLOCK_SZ);
|
||||
if (rc <= 0)
|
||||
{
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stream_info->endpoint_a.stream_info.dest.domain < stream_info->endpoint_b.stream_info.dest.domain)
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stream_info->endpoint_a.stream_info.dest.domain < stream_info->endpoint_b.stream_info.dest.domain)
|
||||
{
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else if (stream_info->endpoint_a.stream_info.dest.domain > stream_info->endpoint_b.stream_info.dest.domain)
|
||||
{
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
int compare;
|
||||
|
||||
compare = cmp_address(&(stream_info->endpoint_a.stream_info.dest.addr), &(stream_info->endpoint_b.stream_info.dest.addr));
|
||||
if (compare < 0)
|
||||
{
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else if (stream_info->endpoint_a.stream_info.dest.domain > stream_info->endpoint_b.stream_info.dest.domain)
|
||||
else if (compare > 0)
|
||||
{
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
int compare;
|
||||
|
||||
compare = cmp_address(&(stream_info->endpoint_a.stream_info.dest.addr), &(stream_info->endpoint_b.stream_info.dest.addr));
|
||||
if (compare < 0)
|
||||
if (stream_info->endpoint_a.stream_info.dest.port <= stream_info->endpoint_b.stream_info.dest.port)
|
||||
{
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else if (compare > 0)
|
||||
else
|
||||
{
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stream_info->endpoint_a.stream_info.dest.port <= stream_info->endpoint_b.stream_info.dest.port)
|
||||
{
|
||||
swap_endpoints = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
swap_endpoints = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (swap_endpoints == FALSE)
|
||||
{
|
||||
epa = stream_info->endpoint_a;
|
||||
epb = stream_info->endpoint_b;
|
||||
}
|
||||
else
|
||||
{
|
||||
epb = stream_info->endpoint_a;
|
||||
epa = stream_info->endpoint_b;
|
||||
}
|
||||
|
||||
sai = g_new0(seq_analysis_item_t, 1);
|
||||
copy_address(&(sai->src_addr), &(pinfo->src));
|
||||
copy_address(&(sai->dst_addr), &(pinfo->dst));
|
||||
sai->frame_number = pinfo->num;
|
||||
sai->port_src = pinfo->srcport;
|
||||
sai->port_dst = pinfo->destport;
|
||||
|
||||
if (stream_info->description == NULL)
|
||||
{
|
||||
sai->frame_label = g_strdup_printf("(%" G_GUINT32_FORMAT ")", stream_info->sqn);
|
||||
}
|
||||
else
|
||||
{
|
||||
sai->frame_label = g_strdup_printf("%s (%" G_GUINT32_FORMAT ")", stream_info->description, stream_info->sqn);
|
||||
}
|
||||
if (epa.type == lbm_uim_instance_stream)
|
||||
{
|
||||
ctxinst1 = bytes_to_str(pinfo->pool, epa.stream_info.ctxinst.ctxinst, sizeof(epa.stream_info.ctxinst.ctxinst));
|
||||
ctxinst2 = bytes_to_str(pinfo->pool, epb.stream_info.ctxinst.ctxinst, sizeof(epb.stream_info.ctxinst.ctxinst));
|
||||
sai->comment = g_strdup_printf("%s <-> %s [%" G_GUINT64_FORMAT "]",
|
||||
ctxinst1,
|
||||
ctxinst2,
|
||||
stream_info->channel);
|
||||
}
|
||||
else
|
||||
{
|
||||
sai->comment = g_strdup_printf("%" G_GUINT32_FORMAT ":%s:%" G_GUINT16_FORMAT " <-> %" G_GUINT32_FORMAT ":%s:%" G_GUINT16_FORMAT " [%" G_GUINT64_FORMAT "]",
|
||||
epa.stream_info.dest.domain,
|
||||
address_to_str(pinfo->pool, &(epa.stream_info.dest.addr)),
|
||||
epa.stream_info.dest.port,
|
||||
epb.stream_info.dest.domain,
|
||||
address_to_str(pinfo->pool, &(epb.stream_info.dest.addr)),
|
||||
epb.stream_info.dest.port,
|
||||
stream_info->channel);
|
||||
}
|
||||
|
||||
/* Fill in the timestamps */
|
||||
set_fd_time(pinfo->epan, pinfo->fd, time_str);
|
||||
sai->time_str = g_strdup(time_str);
|
||||
|
||||
sai->conv_num = (guint16)LBM_CHANNEL_ID(stream_info->channel);
|
||||
sai->display = TRUE;
|
||||
sai->line_style = 1;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
}
|
||||
if (swap_endpoints == FALSE)
|
||||
{
|
||||
epa = stream_info->endpoint_a;
|
||||
epb = stream_info->endpoint_b;
|
||||
}
|
||||
else
|
||||
{
|
||||
epb = stream_info->endpoint_a;
|
||||
epa = stream_info->endpoint_b;
|
||||
}
|
||||
|
||||
sai = g_new0(seq_analysis_item_t, 1);
|
||||
copy_address(&(sai->src_addr), &(pinfo->src));
|
||||
copy_address(&(sai->dst_addr), &(pinfo->dst));
|
||||
sai->frame_number = pinfo->num;
|
||||
sai->port_src = pinfo->srcport;
|
||||
sai->port_dst = pinfo->destport;
|
||||
|
||||
if (stream_info->description == NULL)
|
||||
{
|
||||
sai->frame_label = g_strdup_printf("(%" G_GUINT32_FORMAT ")", stream_info->sqn);
|
||||
}
|
||||
else
|
||||
{
|
||||
sai->frame_label = g_strdup_printf("%s (%" G_GUINT32_FORMAT ")", stream_info->description, stream_info->sqn);
|
||||
}
|
||||
if (epa.type == lbm_uim_instance_stream)
|
||||
{
|
||||
ctxinst1 = bytes_to_str(pinfo->pool, epa.stream_info.ctxinst.ctxinst, sizeof(epa.stream_info.ctxinst.ctxinst));
|
||||
ctxinst2 = bytes_to_str(pinfo->pool, epb.stream_info.ctxinst.ctxinst, sizeof(epb.stream_info.ctxinst.ctxinst));
|
||||
sai->comment = g_strdup_printf("%s <-> %s [%" G_GUINT64_FORMAT "]",
|
||||
ctxinst1,
|
||||
ctxinst2,
|
||||
stream_info->channel);
|
||||
}
|
||||
else
|
||||
{
|
||||
sai->comment = g_strdup_printf("%" G_GUINT32_FORMAT ":%s:%" G_GUINT16_FORMAT " <-> %" G_GUINT32_FORMAT ":%s:%" G_GUINT16_FORMAT " [%" G_GUINT64_FORMAT "]",
|
||||
epa.stream_info.dest.domain,
|
||||
address_to_str(pinfo->pool, &(epa.stream_info.dest.addr)),
|
||||
epa.stream_info.dest.port,
|
||||
epb.stream_info.dest.domain,
|
||||
address_to_str(pinfo->pool, &(epb.stream_info.dest.addr)),
|
||||
epb.stream_info.dest.port,
|
||||
stream_info->channel);
|
||||
}
|
||||
|
||||
/* Fill in the timestamps */
|
||||
set_fd_time(pinfo->epan, pinfo->fd, time_str);
|
||||
sai->time_str = g_strdup(time_str);
|
||||
|
||||
sai->conv_num = (guint16)LBM_CHANNEL_ID(stream_info->channel);
|
||||
sai->display = TRUE;
|
||||
sai->line_style = 1;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -869,41 +869,38 @@ tcp_seq_analysis_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_,
|
|||
{
|
||||
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
|
||||
const struct tcpheader *tcph = (const struct tcpheader *)tcp_info;
|
||||
const char* flags;
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
|
||||
if ((sainfo->all_packets)||(pinfo->fd->flags.passed_dfilter==1)){
|
||||
const char* flags;
|
||||
seq_analysis_item_t *sai = sequence_analysis_create_sai_with_addresses(pinfo, sainfo);
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
|
||||
if (!sai)
|
||||
return FALSE;
|
||||
sai->frame_number = pinfo->num;
|
||||
|
||||
sai->frame_number = pinfo->num;
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
|
||||
sai->port_src=pinfo->srcport;
|
||||
sai->port_dst=pinfo->destport;
|
||||
flags = tcp_flags_to_str(NULL, tcph);
|
||||
|
||||
flags = tcp_flags_to_str(NULL, tcph);
|
||||
|
||||
if ((tcph->th_have_seglen)&&(tcph->th_seglen!=0)){
|
||||
sai->frame_label = g_strdup_printf("%s - Len: %u",flags, tcph->th_seglen);
|
||||
}
|
||||
else{
|
||||
sai->frame_label = g_strdup(flags);
|
||||
}
|
||||
|
||||
wmem_free(NULL, (void*)flags);
|
||||
|
||||
if (tcph->th_flags & TH_ACK)
|
||||
sai->comment = g_strdup_printf("Seq = %u Ack = %u",tcph->th_seq, tcph->th_ack);
|
||||
else
|
||||
sai->comment = g_strdup_printf("Seq = %u",tcph->th_seq);
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = (guint16) tcph->th_stream;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
if ((tcph->th_have_seglen)&&(tcph->th_seglen!=0)){
|
||||
sai->frame_label = g_strdup_printf("%s - Len: %u",flags, tcph->th_seglen);
|
||||
}
|
||||
else{
|
||||
sai->frame_label = g_strdup(flags);
|
||||
}
|
||||
|
||||
wmem_free(NULL, (void*)flags);
|
||||
|
||||
if (tcph->th_flags & TH_ACK)
|
||||
sai->comment = g_strdup_printf("Seq = %u Ack = %u",tcph->th_seq, tcph->th_ack);
|
||||
else
|
||||
sai->comment = g_strdup_printf("Seq = %u",tcph->th_seq);
|
||||
|
||||
sai->line_style = 1;
|
||||
sai->conv_num = (guint16) tcph->th_stream;
|
||||
sai->display = TRUE;
|
||||
|
||||
g_queue_push_tail(sainfo->items, sai);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,6 @@ typedef struct _seq_analysis_item {
|
|||
/** defines the graph analysis structure */
|
||||
typedef struct _seq_analysis_info {
|
||||
const char* name; /**< Name of sequence analysis */
|
||||
gboolean all_packets; /**< all packets vs only displayed */
|
||||
gboolean any_addr; /**< any addr (DL+net) vs net-only */
|
||||
int nconv; /**< number of conversations in the list */
|
||||
GQueue* items; /**< list of seq_analysis_info_t */
|
||||
|
|
|
@ -2173,7 +2173,6 @@ sharkd_session_process_tap(char *buf, const jsmntok_t *tokens, int count)
|
|||
|
||||
graph_analysis = sequence_analysis_info_new();
|
||||
graph_analysis->name = tok_tap + 5;
|
||||
graph_analysis->all_packets = TRUE;
|
||||
/* TODO, make configurable */
|
||||
graph_analysis->any_addr = FALSE;
|
||||
|
||||
|
|
|
@ -103,8 +103,6 @@ flow_init(const char *opt_argp, void *userdata)
|
|||
filter = opt_argp + 1;
|
||||
}
|
||||
|
||||
flow_info->all_packets = TRUE;
|
||||
|
||||
sequence_analysis_list_free(flow_info);
|
||||
|
||||
errp = register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), flow_info, filter, sequence_analysis_get_tap_flags(analysis),
|
||||
|
|
|
@ -37,11 +37,13 @@
|
|||
#include "ui/gtk/main.h"
|
||||
#include "ui/gtk/gui_stat_menu.h"
|
||||
#include "ui/gtk/old-gtk-compat.h"
|
||||
#include "ui/gtk/gtkglobals.h"
|
||||
|
||||
void register_tap_listener_flow_graph(void);
|
||||
|
||||
static seq_analysis_info_t *graph_analysis = NULL;
|
||||
static graph_analysis_data_t *graph_analysis_data = NULL;
|
||||
static const char* display_filter = NULL;
|
||||
|
||||
static GtkWidget *flow_graph_dlg = NULL;
|
||||
|
||||
|
@ -57,7 +59,7 @@ static void
|
|||
flow_graph_data_init(void) {
|
||||
graph_analysis = sequence_analysis_info_new();
|
||||
graph_analysis->name = "any";
|
||||
graph_analysis->all_packets = TRUE;
|
||||
display_filter = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,7 +113,7 @@ toggle_select_all(GtkWidget *widget _U_, gpointer user_data _U_)
|
|||
{
|
||||
/* is the button now active? */
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_all_rb))) {
|
||||
graph_analysis->all_packets = TRUE;
|
||||
display_filter = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,7 +123,7 @@ toggle_select_displayed(GtkWidget *widget _U_, gpointer user_data _U_)
|
|||
{
|
||||
/* is the button now active? */
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_displayed_rb))) {
|
||||
graph_analysis->all_packets = FALSE;
|
||||
display_filter = gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,7 +158,7 @@ flow_graph_on_ok(GtkButton *button _U_, gpointer user_data)
|
|||
|
||||
if (analysis != NULL)
|
||||
{
|
||||
register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), graph_analysis, NULL, sequence_analysis_get_tap_flags(analysis),
|
||||
register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), graph_analysis, display_filter, sequence_analysis_get_tap_flags(analysis),
|
||||
NULL, sequence_analysis_get_packet_func(analysis), NULL);
|
||||
|
||||
cf_retap_packets(&cfile);
|
||||
|
@ -248,7 +250,7 @@ flow_graph_dlg_create(void)
|
|||
g_signal_connect(select_all_rb, "toggled", G_CALLBACK(toggle_select_all), NULL);
|
||||
ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_all_rb, 0, 0, 1, 1,
|
||||
(GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0);
|
||||
if (graph_analysis->all_packets) {
|
||||
if (display_filter == NULL) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_all_rb),TRUE);
|
||||
}
|
||||
gtk_widget_show(select_all_rb);
|
||||
|
@ -260,7 +262,7 @@ flow_graph_dlg_create(void)
|
|||
g_signal_connect(select_displayed_rb, "toggled", G_CALLBACK(toggle_select_displayed), NULL);
|
||||
ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_displayed_rb, 0, 1, 1, 1,
|
||||
(GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0);
|
||||
if (!graph_analysis->all_packets) {
|
||||
if (display_filter != NULL) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_displayed_rb),TRUE);
|
||||
}
|
||||
gtk_widget_show(select_displayed_rb);
|
||||
|
|
|
@ -90,7 +90,6 @@ SequenceDialog::SequenceDialog(QWidget &parent, CaptureFile &cf, SequenceInfo *i
|
|||
if (!info_) {
|
||||
info_ = new SequenceInfo(sequence_analysis_info_new());
|
||||
info_->sainfo()->name = "any";
|
||||
info_->sainfo()->all_packets = TRUE;
|
||||
} else {
|
||||
info_->ref();
|
||||
sequence_analysis_free_nodes(info_->sainfo());
|
||||
|
@ -159,7 +158,6 @@ SequenceDialog::SequenceDialog(QWidget &parent, CaptureFile &cf, SequenceInfo *i
|
|||
ctx_menu_.addAction(ui->actionGoToNextPacket);
|
||||
ctx_menu_.addAction(ui->actionGoToPreviousPacket);
|
||||
|
||||
ui->showComboBox->setCurrentIndex(0);
|
||||
ui->addressComboBox->setCurrentIndex(0);
|
||||
|
||||
sequence_items_t item_data;
|
||||
|
@ -434,7 +432,11 @@ void SequenceDialog::fillDiagram()
|
|||
register_analysis_t* analysis = sequence_analysis_find_by_name(info_->sainfo()->name);
|
||||
if (analysis != NULL)
|
||||
{
|
||||
register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), info_->sainfo(), NULL, sequence_analysis_get_tap_flags(analysis),
|
||||
const char *filter = NULL;
|
||||
if (ui->displayFilterCheckBox->checkState() == Qt::Checked)
|
||||
filter = cap_file_.capFile()->dfilter;
|
||||
|
||||
register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), info_->sainfo(), filter, sequence_analysis_get_tap_flags(analysis),
|
||||
NULL, sequence_analysis_get_packet_func(analysis), NULL);
|
||||
|
||||
cf_retap_packets(cap_file_.capFile());
|
||||
|
@ -603,15 +605,8 @@ void SequenceDialog::goToAdjacentPacket(bool next)
|
|||
}
|
||||
}
|
||||
|
||||
void SequenceDialog::on_showComboBox_activated(int index)
|
||||
void SequenceDialog::on_displayFilterCheckBox_toggled(bool)
|
||||
{
|
||||
if (!info_->sainfo()) return;
|
||||
|
||||
if (index == 0) {
|
||||
info_->sainfo()->all_packets = TRUE;
|
||||
} else {
|
||||
info_->sainfo()->all_packets = FALSE;
|
||||
}
|
||||
fillDiagram();
|
||||
}
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ private slots:
|
|||
void on_actionGoToPacket_triggered();
|
||||
void on_actionGoToNextPacket_triggered() { goToAdjacentPacket(true); }
|
||||
void on_actionGoToPreviousPacket_triggered() { goToAdjacentPacket(false); }
|
||||
void on_showComboBox_activated(int index);
|
||||
void on_displayFilterCheckBox_toggled(bool checked);
|
||||
void on_flowComboBox_activated(int index);
|
||||
void on_addressComboBox_activated(int index);
|
||||
void on_actionReset_triggered();
|
||||
|
|
|
@ -102,24 +102,13 @@
|
|||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Show:</string>
|
||||
<widget class="QCheckBox" name="displayFilterCheckBox">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Only show flows matching the current display filter</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="showComboBox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>All packets</string>
|
||||
<string>Limit to display filter</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Displayed packets</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
|
Loading…
Reference in New Issue