aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cfile.h1
-rw-r--r--epan/dissectors/packet-frame.c15
-rw-r--r--epan/frame_data.c1
-rw-r--r--epan/frame_data.h1
-rw-r--r--epan/prefs.c35
-rw-r--r--epan/prefs.h2
-rw-r--r--file.c30
-rw-r--r--file.h16
-rw-r--r--gtk/main_packet_list.c58
-rw-r--r--gtk/main_packet_list.h10
-rw-r--r--gtk/main_statusbar.c3
-rw-r--r--gtk/menus.c2
-rw-r--r--gtk/new_packet_list.c33
-rw-r--r--gtk/new_packet_list.h18
-rw-r--r--gtk/prefs_stream.c42
15 files changed, 251 insertions, 16 deletions
diff --git a/cfile.h b/cfile.h
index eeb760519c..d46c4962ce 100644
--- a/cfile.h
+++ b/cfile.h
@@ -52,6 +52,7 @@ typedef struct _capture_file {
int count; /* Total number of frames */
int displayed_count; /* Number of displayed frames */
int marked_count; /* Number of marked frames */
+ int ignored_count; /* Number of ignored frames */
gboolean drops_known; /* TRUE if we know how many packets were dropped */
guint32 drops; /* Dropped packets */
nstime_t elapsed_time; /* Elapsed time */
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c
index a17a8a2264..fe04106a2f 100644
--- a/epan/dissectors/packet-frame.c
+++ b/epan/dissectors/packet-frame.c
@@ -60,6 +60,7 @@ static int hf_frame_p2p_dir = -1;
static int hf_frame_file_off = -1;
static int hf_frame_md5_hash = -1;
static int hf_frame_marked = -1;
+static int hf_frame_ignored = -1;
static int hf_link_number = -1;
static int hf_frame_protocols = -1;
static int hf_frame_color_filter_name = -1;
@@ -277,6 +278,9 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
ti = proto_tree_add_boolean(fh_tree, hf_frame_marked, tvb, 0, 0,pinfo->fd->flags.marked);
PROTO_ITEM_SET_GENERATED(ti);
+ ti = proto_tree_add_boolean(fh_tree, hf_frame_ignored, tvb, 0, 0,pinfo->fd->flags.ignored);
+ PROTO_ITEM_SET_GENERATED(ti);
+
if(proto_field_is_referenced(tree, hf_frame_protocols)) {
/* we are going to be using proto_item_append_string() on
* hf_frame_protocols, and we must therefore disable the
@@ -325,6 +329,13 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
}
}
+ if (pinfo->fd->flags.ignored) {
+ /* Ignored package, stop handling here */
+ col_set_str(pinfo->cinfo, COL_INFO, "<Ignored>");
+ proto_tree_add_text (tree, tvb, 0, -1, "This frame is marked as ignored");
+ return;
+ }
+
/* Portable Exception Handling to trap Wireshark specific exceptions like BoundsError exceptions */
TRY {
#ifdef _MSC_VER
@@ -596,6 +607,10 @@ proto_register_frame(void)
{ "Frame is marked", "frame.marked", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
"Frame is marked in the GUI", HFILL }},
+ { &hf_frame_ignored,
+ { "Frame is ignored", "frame.ignored", FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+ "Frame is ignored by the dissectors", HFILL }},
+
{ &hf_frame_protocols,
{ "Protocols in frame", "frame.protocols", FT_STRING, BASE_NONE, NULL, 0x0,
"Protocols carried by this frame", HFILL }},
diff --git a/epan/frame_data.c b/epan/frame_data.c
index 31038dffb7..68b383df24 100644
--- a/epan/frame_data.c
+++ b/epan/frame_data.c
@@ -207,6 +207,7 @@ frame_data_init(frame_data *fdata, guint32 num,
fdata->flags.visited = 0;
fdata->flags.marked = 0;
fdata->flags.ref_time = 0;
+ fdata->flags.ignored = 0;
fdata->color_filter = NULL;
#ifdef NEW_PACKET_LIST
fdata->col_text_len = NULL;
diff --git a/epan/frame_data.h b/epan/frame_data.h
index a9c178625f..1a4f9ff6f0 100644
--- a/epan/frame_data.h
+++ b/epan/frame_data.h
@@ -56,6 +56,7 @@ typedef struct _frame_data {
unsigned int visited : 1; /* Has this packet been visited yet? 1=Yes,0=No*/
unsigned int marked : 1; /* 1 = marked by user, 0 = normal */
unsigned int ref_time : 1; /* 1 = marked as a reference time frame, 0 = normal */
+ unsigned int ignored : 1; /* 1 = ignore this frame, 0 = normal */
} flags;
const void *color_filter; /* Per-packet matching color_filter_t object */
diff --git a/epan/prefs.c b/epan/prefs.c
index 4f9f096fb5..ab144d9f72 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -1154,6 +1154,14 @@ init_prefs(void) {
prefs.gui_marked_bg.red = 0;
prefs.gui_marked_bg.green = 0;
prefs.gui_marked_bg.blue = 0;
+ prefs.gui_ignored_fg.pixel = 32767;
+ prefs.gui_ignored_fg.red = 32767;
+ prefs.gui_ignored_fg.green = 32767;
+ prefs.gui_ignored_fg.blue = 32767;
+ prefs.gui_ignored_bg.pixel = 65535;
+ prefs.gui_ignored_bg.red = 65535;
+ prefs.gui_ignored_bg.green = 65535;
+ prefs.gui_ignored_bg.blue = 65535;
prefs.gui_colorized_fg = g_strdup("000000,000000,000000,000000,000000,000000,000000,000000,000000,000000");
prefs.gui_colorized_bg = g_strdup("ffc0c0,ffc0ff,e0c0e0,c0c0ff,c0e0e0,c0ffff,c0ffc0,ffffc0,e0e0c0,e0e0e0");
prefs.gui_geometry_save_position = FALSE;
@@ -1617,6 +1625,8 @@ prefs_is_capture_device_hidden(const char *name)
#define PRS_GUI_FONT_NAME_2 "gui.gtk2.font_name"
#define PRS_GUI_MARKED_FG "gui.marked_frame.fg"
#define PRS_GUI_MARKED_BG "gui.marked_frame.bg"
+#define PRS_GUI_IGNORED_FG "gui.ignored_frame.fg"
+#define PRS_GUI_IGNORED_BG "gui.ignored_frame.bg"
#define PRS_GUI_COLORIZED_FG "gui.colorized_frame.fg"
#define PRS_GUI_COLORIZED_BG "gui.colorized_frame.bg"
#define PRS_GUI_CONSOLE_OPEN "gui.console_open"
@@ -1987,6 +1997,18 @@ set_pref(gchar *pref_name, gchar *value, void *private_data _U_)
prefs.gui_marked_bg.red = RED_COMPONENT(cval);
prefs.gui_marked_bg.green = GREEN_COMPONENT(cval);
prefs.gui_marked_bg.blue = BLUE_COMPONENT(cval);
+ } else if (strcmp(pref_name, PRS_GUI_IGNORED_FG) == 0) {
+ cval = strtoul(value, NULL, 16);
+ prefs.gui_ignored_fg.pixel = 0;
+ prefs.gui_ignored_fg.red = RED_COMPONENT(cval);
+ prefs.gui_ignored_fg.green = GREEN_COMPONENT(cval);
+ prefs.gui_ignored_fg.blue = BLUE_COMPONENT(cval);
+ } else if (strcmp(pref_name, PRS_GUI_IGNORED_BG) == 0) {
+ cval = strtoul(value, NULL, 16);
+ prefs.gui_ignored_bg.pixel = 0;
+ prefs.gui_ignored_bg.red = RED_COMPONENT(cval);
+ prefs.gui_ignored_bg.green = GREEN_COMPONENT(cval);
+ prefs.gui_ignored_bg.blue = BLUE_COMPONENT(cval);
} else if (strcmp(pref_name, PRS_GUI_COLORIZED_FG) == 0) {
g_free(prefs.gui_colorized_fg);
prefs.gui_colorized_fg = g_strdup(value);
@@ -2895,6 +2917,17 @@ write_prefs(char **pf_path_return)
(prefs.gui_marked_bg.green * 255 / 65535),
(prefs.gui_marked_bg.blue * 255 / 65535));
+ fprintf (pf, "\n# Color preferences for a ignored frame.\n");
+ fprintf (pf, "# Each value is a six digit hexadecimal color value in the form rrggbb.\n");
+ fprintf (pf, "%s: %02x%02x%02x\n", PRS_GUI_IGNORED_FG,
+ (prefs.gui_ignored_fg.red * 255 / 65535),
+ (prefs.gui_ignored_fg.green * 255 / 65535),
+ (prefs.gui_ignored_fg.blue * 255 / 65535));
+ fprintf (pf, "%s: %02x%02x%02x\n", PRS_GUI_IGNORED_BG,
+ (prefs.gui_ignored_bg.red * 255 / 65535),
+ (prefs.gui_ignored_bg.green * 255 / 65535),
+ (prefs.gui_ignored_bg.blue * 255 / 65535));
+
/* Don't write the colors of the 10 easy-access-colorfilters to the preferences
* file until the colors can be changed in the GUI. Currently this is not really
* possible since the STOCK-icons for these colors are hardcoded.
@@ -3099,6 +3132,8 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_font_name = g_strdup(src->gui_font_name);
dest->gui_marked_fg = src->gui_marked_fg;
dest->gui_marked_bg = src->gui_marked_bg;
+ dest->gui_ignored_fg = src->gui_ignored_fg;
+ dest->gui_ignored_bg = src->gui_ignored_bg;
dest->gui_geometry_save_position = src->gui_geometry_save_position;
dest->gui_geometry_save_size = src->gui_geometry_save_size;
dest->gui_geometry_save_maximized = src->gui_geometry_save_maximized;
diff --git a/epan/prefs.h b/epan/prefs.h
index 1650e573cd..058e879912 100644
--- a/epan/prefs.h
+++ b/epan/prefs.h
@@ -119,6 +119,8 @@ typedef struct _e_prefs {
gchar *gui_font_name;
color_t gui_marked_fg;
color_t gui_marked_bg;
+ color_t gui_ignored_fg;
+ color_t gui_ignored_bg;
gchar *gui_colorized_fg;
gchar *gui_colorized_bg;
gboolean gui_geometry_save_position;
diff --git a/file.c b/file.c
index feafb226a2..d4b6a30db0 100644
--- a/file.c
+++ b/file.c
@@ -310,6 +310,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
cf->count = 0;
cf->displayed_count = 0;
cf->marked_count = 0;
+ cf->ignored_count = 0;
cf->drops_known = FALSE;
cf->drops = 0;
cf->snap = wtap_snapshot_length(cf->wth);
@@ -1273,6 +1274,9 @@ add_packet_to_packet_list(frame_data *fdata, capture_file *cf,
if (fdata->flags.marked) {
packet_list_set_colors(row, &prefs.gui_marked_fg, &prefs.gui_marked_bg);
}
+ if (fdata->flags.ignored) {
+ packet_list_set_colors(row, &prefs.gui_ignored_fg, &prefs.gui_ignored_bg);
+ }
cf->displayed_count++;
}
@@ -4072,6 +4076,32 @@ cf_unmark_frame(capture_file *cf, frame_data *frame)
}
}
+/*
+ * Ignore a particular frame.
+ */
+void
+cf_ignore_frame(capture_file *cf, frame_data *frame)
+{
+ if (! frame->flags.ignored) {
+ frame->flags.ignored = TRUE;
+ if (cf->count > cf->ignored_count)
+ cf->ignored_count++;
+ }
+}
+
+/*
+ * Un-ignore a particular frame.
+ */
+void
+cf_unignore_frame(capture_file *cf, frame_data *frame)
+{
+ if (frame->flags.ignored) {
+ frame->flags.ignored = FALSE;
+ if (cf->ignored_count > 0)
+ cf->ignored_count--;
+ }
+}
+
typedef struct {
wtap_dumper *pdh;
const char *fname;
diff --git a/file.h b/file.h
index 97c478399b..0fe0bb43f2 100644
--- a/file.h
+++ b/file.h
@@ -457,6 +457,22 @@ void cf_mark_frame(capture_file *cf, frame_data *frame);
void cf_unmark_frame(capture_file *cf, frame_data *frame);
/**
+ * Ignore a particular frame in a particular capture.
+ *
+ * @param cf the capture file
+ * @param frame the frame to be ignored
+ */
+void cf_ignore_frame(capture_file *cf, frame_data *frame);
+
+/**
+ * Unignore a particular frame in a particular capture.
+ *
+ * @param cf the capture file
+ * @param frame the frame to be unignored
+ */
+void cf_unignore_frame(capture_file *cf, frame_data *frame);
+
+/**
* Convert error number and info to a complete message.
*
* @param err the error number
diff --git a/gtk/main_packet_list.c b/gtk/main_packet_list.c
index 0ab5f03ec3..b4e0ca3707 100644
--- a/gtk/main_packet_list.c
+++ b/gtk/main_packet_list.c
@@ -499,6 +499,37 @@ set_frame_mark(gboolean set, frame_data *frame, gint row)
}
}
+/* ignore packet */
+static void
+set_frame_ignore(gboolean set, frame_data *frame, gint row)
+{
+ GdkColor fg, bg;
+
+ if (row == -1)
+ return;
+ if (set) {
+ cf_ignore_frame(&cfile, frame);
+ color_t_to_gdkcolor(&fg, &prefs.gui_ignored_fg);
+ color_t_to_gdkcolor(&bg, &prefs.gui_ignored_bg);
+ gtk_clist_set_foreground(GTK_CLIST(packet_list), row, &fg);
+ gtk_clist_set_background(GTK_CLIST(packet_list), row, &bg);
+ } else {
+ const color_filter_t *cfilter = frame->color_filter;
+
+ cf_unignore_frame(&cfile, frame);
+ /* Restore the color from the matching color filter if any */
+ if (cfilter) { /* The packet matches a color filter */
+ color_t_to_gdkcolor(&fg, &cfilter->fg_color);
+ color_t_to_gdkcolor(&bg, &cfilter->bg_color);
+ gtk_clist_set_foreground(GTK_CLIST(packet_list), row, &fg);
+ gtk_clist_set_background(GTK_CLIST(packet_list), row, &bg);
+ } else { /* No color filter match */
+ gtk_clist_set_foreground(GTK_CLIST(packet_list), row, NULL);
+ gtk_clist_set_background(GTK_CLIST(packet_list), row, NULL);
+ }
+ }
+}
+
/* call this after last set_frame_mark is done */
static void mark_frames_ready(void)
{
@@ -554,7 +585,31 @@ void packet_list_unmark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_)
mark_all_frames(FALSE);
}
-#ifndef NEW_PACKET_LIST
+void packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_)
+{
+ if (cfile.current_frame) {
+ set_frame_ignore(!cfile.current_frame->flags.ignored,
+ cfile.current_frame, cfile.current_row);
+ redissect_packets();
+ }
+}
+
+void packet_list_update_ignored_frames(void)
+{
+ frame_data *fdata;
+
+ if (cfile.plist_start == NULL) return;
+
+ /* XXX: we might need a progressbar here */
+ for (fdata = cfile.plist_start; fdata != NULL; fdata = fdata->next) {
+ if (fdata->flags.ignored)
+ set_frame_ignore(TRUE, fdata,
+ gtk_clist_find_row_from_data(GTK_CLIST(packet_list),
+ fdata));
+ }
+ mark_frames_ready();
+}
+
gboolean
packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button,
gint *row, gint *column)
@@ -563,7 +618,6 @@ packet_list_get_event_row_column(GtkWidget *w, GdkEventButton *event_button,
(gint) event_button->x, (gint) event_button->y,
row, column);
}
-#endif /* NEW_PACKET_LIST */
static gint
packet_list_button_pressed_cb(GtkWidget *w, GdkEvent *event, gpointer data _U_)
diff --git a/gtk/main_packet_list.h b/gtk/main_packet_list.h
index 0758eca40d..9bb915e06b 100644
--- a/gtk/main_packet_list.h
+++ b/gtk/main_packet_list.h
@@ -96,6 +96,16 @@ extern void packet_list_unmark_all_frames_cb(GtkWidget *widget, gpointer data);
/** Update packet marks. */
extern void packet_list_update_marked_frames(void);
+/** Ignore the currently selected packet.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
+extern void packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_);
+
+/** Update ignored packages. */
+extern void packet_list_update_ignored_frames(void);
+
/** Gdk button click appeared, get row and column number in packet list from that position.
*
* @param widget the packet list widget from packet_list_new()
diff --git a/gtk/main_statusbar.c b/gtk/main_statusbar.c
index 9d4a97224f..2ed3b1508f 100644
--- a/gtk/main_statusbar.c
+++ b/gtk/main_statusbar.c
@@ -439,6 +439,9 @@ packets_bar_update(void)
if(cfile.drops_known) {
packets_str = g_strdup_printf(" Packets: %u Displayed: %u Marked: %u Dropped: %u",
cfile.count, cfile.displayed_count, cfile.marked_count, cfile.drops);
+ } else if (cfile.ignored_count > 0) {
+ packets_str = g_strdup_printf(" Packets: %u Displayed: %u Marked: %u Ignored: %u",
+ cfile.count, cfile.displayed_count, cfile.marked_count, cfile.ignored_count);
} else {
gulong computed_elapsed = cf_get_computed_elapsed();
diff --git a/gtk/menus.c b/gtk/menus.c
index bd449d5a88..ac839560ff 100644
--- a/gtk/menus.c
+++ b/gtk/menus.c
@@ -811,8 +811,10 @@ static GtkItemFactoryEntry packet_list_menu_items[] =
{
#ifdef NEW_PACKET_LIST
{"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_mark_frame_cb), 0, NULL, NULL,},
+ {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(new_packet_list_ignore_frame_cb), 0, NULL, NULL,},
#else
{"/Mark Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_mark_frame_cb), 0, NULL, NULL,},
+ {"/Ignore Packet (toggle)", NULL, GTK_MENU_FUNC(packet_list_ignore_frame_cb), 0, NULL, NULL,},
#endif /* NEW_PACKET_LIST */
{"/Set Time Reference (toggle)", NULL, GTK_MENU_FUNC(reftime_frame_cb), REFTIME_TOGGLE, "<StockItem>", WIRESHARK_STOCK_TIME,},
diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c
index c2b155527d..9167480363 100644
--- a/gtk/new_packet_list.c
+++ b/gtk/new_packet_list.c
@@ -997,11 +997,15 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer,
g_assert(cell_text);
- if((fdata->color_filter)||(fdata->flags.marked)){
+ if((fdata->color_filter)||(fdata->flags.marked)||(fdata->flags.ignored)){
gboolean color_on = enable_color;
GdkColor fg_gdk;
GdkColor bg_gdk;
- if(fdata->flags.marked){
+ if(fdata->flags.ignored){
+ color_t_to_gdkcolor(&fg_gdk, &prefs.gui_ignored_fg);
+ color_t_to_gdkcolor(&bg_gdk, &prefs.gui_ignored_bg);
+ color_on = TRUE;
+ }else if(fdata->flags.marked){
color_t_to_gdkcolor(&fg_gdk, &prefs.gui_marked_fg);
color_t_to_gdkcolor(&bg_gdk, &prefs.gui_marked_bg);
color_on = TRUE;
@@ -1060,6 +1064,15 @@ set_frame_mark(gboolean set, frame_data *fdata)
cf_unmark_frame(&cfile, fdata);
}
+static void
+set_frame_ignored(gboolean set, frame_data *fdata)
+{
+ if (set)
+ cf_ignore_frame(&cfile, fdata);
+ else
+ cf_unignore_frame(&cfile, fdata);
+}
+
static void mark_all_frames(gboolean set)
{
frame_data *fdata;
@@ -1144,6 +1157,22 @@ void new_packet_list_mark_frame_cb(GtkWidget *w _U_, gpointer data _U_)
mark_frames_ready();
}
+void new_packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_)
+{
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ PacketListRecord *record;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view));
+ /* model is filled with the current model as a convenience. */
+ gtk_tree_selection_get_selected(selection, &model, &iter);
+ record = new_packet_list_get_record(model, &iter);
+
+ set_frame_ignored(!record->fdata->flags.ignored, record->fdata);
+ redissect_packets();
+}
+
static gboolean
get_col_text_from_record( PacketListRecord *record, gint col_num, gchar** cell_text){
diff --git a/gtk/new_packet_list.h b/gtk/new_packet_list.h
index 5b040d64d2..fec021fa59 100644
--- a/gtk/new_packet_list.h
+++ b/gtk/new_packet_list.h
@@ -62,9 +62,27 @@ extern void new_packet_list_set_font(PangoFontDescription *font);
*/
extern void new_packet_list_mark_frame_cb(GtkWidget *widget, gpointer data);
+/** Mark all packets in the list.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
void new_packet_list_mark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_);
+
+/** Unmark all packets in the list.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
void new_packet_list_unmark_all_frames_cb(GtkWidget *w _U_, gpointer data _U_);
+/** Ignore the currently selected packet.
+ *
+ * @param widget parent widget (unused)
+ * @param data unused
+ */
+extern void new_packet_list_ignore_frame_cb(GtkWidget *widget, gpointer data);
+
/* Different modes of copying summary data */
typedef enum {
CS_TEXT, /* Packet summary data (tab separated) */
diff --git a/gtk/prefs_stream.c b/gtk/prefs_stream.c
index 16a80deba4..71a9119635 100644
--- a/gtk/prefs_stream.c
+++ b/gtk/prefs_stream.c
@@ -41,16 +41,19 @@
#include "gtk/main_packet_list.h"
-#define SAMPLE_MARKED_TEXT "Sample marked packet text\n"
-#define SAMPLE_CLIENT_TEXT "Sample TCP stream client text\n"
-#define SAMPLE_SERVER_TEXT "Sample TCP stream server text\n"
+#define SAMPLE_MARKED_TEXT "Sample marked packet text\n"
+#define SAMPLE_IGNORED_TEXT "Sample ignored packet text\n"
+#define SAMPLE_CLIENT_TEXT "Sample TCP stream client text\n"
+#define SAMPLE_SERVER_TEXT "Sample TCP stream server text\n"
#define MFG_IDX 0
#define MBG_IDX 1
-#define CFG_IDX 2
-#define CBG_IDX 3
-#define SFG_IDX 4
-#define SBG_IDX 5
-#define MAX_IDX 6 /* set this to the number of IDX values */
+#define IFG_IDX 2
+#define IBG_IDX 3
+#define CFG_IDX 4
+#define CBG_IDX 5
+#define SFG_IDX 6
+#define SBG_IDX 7
+#define MAX_IDX 8 /* set this to the number of IDX values */
#define STREAM_SAMPLE_KEY "stream_entry"
#define STREAM_CS_KEY "stream_colorselection"
#define CS_RED 0
@@ -72,10 +75,12 @@ stream_prefs_show()
const gchar *mt[] = {
"Marked packet foreground", /* MFG_IDX 0*/
"Marked packet background", /* MBG_IDX 1*/
- "TCP stream client foreground", /* CFG_IDX 2*/
- "TCP stream client background", /* CBG_IDX 3*/
- "TCP stream server foreground", /* SFG_IDX 4*/
- "TCP stream server background" /* SBG_IDX 5*/
+ "Ignored packet foreground", /* IFG_IDX 2*/
+ "Ignored packet background", /* IBG_IDX 3*/
+ "TCP stream client foreground", /* CFG_IDX 4*/
+ "TCP stream client background", /* CBG_IDX 5*/
+ "TCP stream server foreground", /* SFG_IDX 6*/
+ "TCP stream server background" /* SBG_IDX 7*/
};
int mcount = sizeof(mt) / sizeof (gchar *);
GtkTextBuffer *buf;
@@ -84,6 +89,8 @@ stream_prefs_show()
color_t_to_gdkcolor(&tcolors[MFG_IDX], &prefs.gui_marked_fg);
color_t_to_gdkcolor(&tcolors[MBG_IDX], &prefs.gui_marked_bg);
+ color_t_to_gdkcolor(&tcolors[IFG_IDX], &prefs.gui_ignored_fg);
+ color_t_to_gdkcolor(&tcolors[IBG_IDX], &prefs.gui_ignored_bg);
color_t_to_gdkcolor(&tcolors[CFG_IDX], &prefs.st_client_fg);
color_t_to_gdkcolor(&tcolors[CBG_IDX], &prefs.st_client_bg);
color_t_to_gdkcolor(&tcolors[SFG_IDX], &prefs.st_server_fg);
@@ -130,6 +137,9 @@ stream_prefs_show()
gtk_text_buffer_create_tag(buf, "marked",
"foreground-gdk", &tcolors[MFG_IDX],
"background-gdk", &tcolors[MBG_IDX], NULL);
+ gtk_text_buffer_create_tag(buf, "ignored",
+ "foreground-gdk", &tcolors[IFG_IDX],
+ "background-gdk", &tcolors[IBG_IDX], NULL);
gtk_text_buffer_create_tag(buf, "client",
"foreground-gdk", &tcolors[CFG_IDX],
"background-gdk", &tcolors[CBG_IDX], NULL);
@@ -138,6 +148,8 @@ stream_prefs_show()
"background-gdk", &tcolors[SBG_IDX], NULL);
gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_MARKED_TEXT, -1,
"marked", NULL);
+ gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_IGNORED_TEXT, -1,
+ "ignored", NULL);
gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_CLIENT_TEXT, -1,
"client", NULL);
gtk_text_buffer_insert_with_tags_by_name(buf, &iter, SAMPLE_SERVER_TEXT, -1,
@@ -170,6 +182,9 @@ update_text_color(GtkWidget *w, gpointer data _U_) {
tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "marked");
g_object_set(tag, "foreground-gdk", &tcolors[MFG_IDX], "background-gdk",
&tcolors[MBG_IDX], NULL);
+ tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "ignored");
+ g_object_set(tag, "foreground-gdk", &tcolors[IFG_IDX], "background-gdk",
+ &tcolors[IBG_IDX], NULL);
tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buf), "client");
g_object_set(tag, "foreground-gdk", &tcolors[CFG_IDX], "background-gdk",
&tcolors[CBG_IDX], NULL);
@@ -195,6 +210,8 @@ stream_prefs_fetch(GtkWidget *w _U_)
{
gdkcolor_to_color_t(&prefs.gui_marked_fg, &tcolors[MFG_IDX]);
gdkcolor_to_color_t(&prefs.gui_marked_bg, &tcolors[MBG_IDX]);
+ gdkcolor_to_color_t(&prefs.gui_ignored_fg, &tcolors[IFG_IDX]);
+ gdkcolor_to_color_t(&prefs.gui_ignored_bg, &tcolors[IBG_IDX]);
gdkcolor_to_color_t(&prefs.st_client_fg, &tcolors[CFG_IDX]);
gdkcolor_to_color_t(&prefs.st_client_bg, &tcolors[CBG_IDX]);
gdkcolor_to_color_t(&prefs.st_server_fg, &tcolors[SFG_IDX]);
@@ -208,6 +225,7 @@ stream_prefs_apply(GtkWidget *w _U_)
#ifndef NEW_PACKET_LIST
packet_list_update_marked_frames();
+ packet_list_update_ignored_frames();
#endif
}