aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorGilbert Ramirez <gram@alumni.rice.edu>2001-02-01 20:21:25 +0000
committerGilbert Ramirez <gram@alumni.rice.edu>2001-02-01 20:21:25 +0000
commit8f1fff2e6a5c114c6beafd2983afb55acd3d66ae (patch)
treee33c08662c708dcfe71591897fe6ffab53bce135 /gtk
parent07a925ef8b0568a2c5b8098d5734364a40eeb2f6 (diff)
Create a more modular type system for the FT_* types. Put them
into epan/ftypes. Re-write display filter routines using Lemon parser instead of yacc. Besides using a different tool, the new grammar is much simpler, while the display filter engine itself is more powerful and more easily extended. Add dftest executable, to test display filter "bytecode" generation. Add option to "configure" to build dftest or randpkt, both of which are not built by default. Implement Ed Warnicke's ideas about dranges in the new display filter and ftype code. Remove type FT_TEXT_ONLY in favor of FT_NONE, and have protocols registered as FT_PROTOCOL. Thus, FT_NONE is used only for simple labels in the proto tree, while FT_PROTOCOL is used for protocols. This was necessary for being able to make byte slices (ranges) out of protocols, like "frame[0:3]" Win32 Makefile.nmake's will be added tonight. svn path=/trunk/; revision=2967
Diffstat (limited to 'gtk')
-rw-r--r--gtk/color_dlg.c10
-rw-r--r--gtk/colors.c14
-rw-r--r--gtk/colors.h6
-rw-r--r--gtk/dfilter_expr_dlg.c94
-rw-r--r--gtk/file_dlg.c8
-rw-r--r--gtk/find_dlg.c8
-rw-r--r--gtk/help_dlg.c4
-rw-r--r--gtk/main.c190
-rw-r--r--gtk/packet_win.c3
9 files changed, 37 insertions, 300 deletions
diff --git a/gtk/color_dlg.c b/gtk/color_dlg.c
index 672c5cbb2f..7b06dca3bb 100644
--- a/gtk/color_dlg.c
+++ b/gtk/color_dlg.c
@@ -1,7 +1,7 @@
/* color_dlg.c
* Definitions for dialog boxes for color filters
*
- * $Id: color_dlg.c,v 1.8 2000/08/24 13:21:29 deniel Exp $
+ * $Id: color_dlg.c,v 1.9 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -43,7 +43,7 @@
#include "colors.h"
#include "color_dlg.h"
#include "file.h"
-#include "dfilter.h"
+#include "dfilter/dfilter.h"
#include "simple_dialog.h"
#include "dlg_utils.h"
#include "ui_util.h"
@@ -884,7 +884,7 @@ edit_color_filter_ok_cb (GtkButton *button,
gchar *filter_name;
gchar *filter_text;
color_filter_t *colorf;
- dfilter *compiled_filter;
+ dfilter_t *compiled_filter;
GtkWidget *color_filters;
dialog = (GtkWidget *)user_data;
@@ -904,7 +904,7 @@ edit_color_filter_ok_cb (GtkButton *button,
return;
}
- if(dfilter_compile(filter_text, &compiled_filter) != 0 ){
+ if(!dfilter_compile(filter_text, &compiled_filter)) {
simple_dialog(ESD_TYPE_CRIT, NULL, "Filter \"%s\" did not compile correctly.\n"
" Please try again. Filter unchanged.\n%s\n", filter_name,
dfilter_error_msg);
@@ -927,7 +927,7 @@ edit_color_filter_ok_cb (GtkButton *button,
gtk_clist_set_background(GTK_CLIST(color_filters),
cfile.colors->row_selected, &new_bg_color);
if(colorf->c_colorfilter != NULL)
- dfilter_destroy(colorf->c_colorfilter);
+ dfilter_free(colorf->c_colorfilter);
colorf->c_colorfilter = compiled_filter;
/* gtk_clist_set_text frees old text (if any) and allocates new space */
gtk_clist_set_text(GTK_CLIST(color_filters),
diff --git a/gtk/colors.c b/gtk/colors.c
index 44da72220a..6bbfe41ff3 100644
--- a/gtk/colors.c
+++ b/gtk/colors.c
@@ -1,7 +1,7 @@
/* colors.c
* Definitions for color structures and routines
*
- * $Id: colors.c,v 1.6 2000/09/28 03:16:29 gram Exp $
+ * $Id: colors.c,v 1.7 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -44,7 +44,7 @@
#include "packet.h"
#include "colors.h"
#include "file.h"
-#include "dfilter.h"
+#include "dfilter/dfilter.h"
#include "simple_dialog.h"
#include "util.h"
@@ -120,8 +120,8 @@ colfilter_new(void)
default_colors[i].proto);
colorf->bg_color = color;
- if (dfilter_compile(default_colors[i].proto,
- &colorf->c_colorfilter) != 0) {
+ if (!dfilter_compile(default_colors[i].proto,
+ &colorf->c_colorfilter)) {
simple_dialog(ESD_TYPE_WARN, NULL,
"Cannot compile default color filter %s.\n%s",
default_colors[i].proto, dfilter_error_msg);
@@ -158,7 +158,7 @@ delete_color_filter(color_filter_t *colorf)
if (colorf->filter_text != NULL)
g_free(colorf->filter_text);
if (colorf->c_colorfilter != NULL)
- dfilter_destroy(colorf->c_colorfilter);
+ dfilter_free(colorf->c_colorfilter);
filter_list = g_slist_remove(filter_list, colorf);
g_free(colorf);
}
@@ -177,7 +177,7 @@ read_filters(colfilter *filter)
FILE *f;
gchar *path;
gchar *fname = PF_DIR "/colorfilters";
- dfilter *temp_dfilter;
+ dfilter_t *temp_dfilter;
/* decide what file to open (from dfilter code) */
@@ -217,7 +217,7 @@ read_filters(colfilter *filter)
name, filter_exp, &bg_r, &bg_g, &bg_b, &fg_r, &fg_g, &fg_b) == 8){
/* we got a filter */
- if(dfilter_compile(filter_exp, &temp_dfilter) != 0){
+ if(!dfilter_compile(filter_exp, &temp_dfilter)) {
simple_dialog(ESD_TYPE_CRIT, NULL,
"Could not compile color filter %s from saved filters.\n%s",
name, dfilter_error_msg);
diff --git a/gtk/colors.h b/gtk/colors.h
index 8294e361b8..9c15030837 100644
--- a/gtk/colors.h
+++ b/gtk/colors.h
@@ -1,7 +1,7 @@
/* colors.h
* Definitions for color structures and routines
*
- * $Id: colors.h,v 1.3 2000/08/11 13:33:00 deniel Exp $
+ * $Id: colors.h,v 1.4 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -26,7 +26,7 @@
#define __COLORS_H__
#include "proto.h"
-#include "dfilter.h"
+#include "dfilter/dfilter.h"
#include <gtk/gtk.h>
#define MAXCOLORS 255
@@ -45,7 +45,7 @@ typedef struct _color_filter {
gchar *filter_text; /* text of the filter expression */
GdkColor bg_color; /* background color for packets that match */
GdkColor fg_color; /* foreground color for packets that match */
- dfilter *c_colorfilter; /* compiled filter expression */
+ dfilter_t *c_colorfilter; /* compiled filter expression */
GtkWidget *edit_dialog; /* if filter is being edited, dialog box for it */
} color_filter_t;
diff --git a/gtk/dfilter_expr_dlg.c b/gtk/dfilter_expr_dlg.c
index 657d01649c..97461259a1 100644
--- a/gtk/dfilter_expr_dlg.c
+++ b/gtk/dfilter_expr_dlg.c
@@ -7,7 +7,7 @@
* Copyright 2000, Jeffrey C. Foster<jfoste@woodward.com> and
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: dfilter_expr_dlg.c,v 1.5 2001/01/10 23:36:35 guy Exp $
+ * $Id: dfilter_expr_dlg.c,v 1.6 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -139,7 +139,7 @@ field_select_row_cb(GtkWidget *tree, GList *node, gint column,
E_DFILTER_EXPR_ACCEPT_BT_KEY);
header_field_info *hfinfo, *cur_hfinfo;
guint32 relations;
- char *value_type;
+ const char *value_type;
char value_label_string[1024+1]; /* XXX - should be large enough */
hfinfo = gtk_ctree_node_get_row_data(GTK_CTREE(tree),
@@ -246,95 +246,7 @@ field_select_row_cb(GtkWidget *tree, GList *node, gint column,
* Set the label for the value to indicate what type of value
* it is.
*/
- switch (hfinfo->type) {
-
- case FT_NONE:
- /*
- * You can only test for the field's presence; hide
- * the value stuff.
- */
- value_type = NULL;
- break;
-
- case FT_BOOLEAN:
- value_type = "Boolean";
- break;
-
- case FT_UINT8:
- value_type = "unsigned, byte";
- break;
-
- case FT_UINT16:
- value_type = "unsigned, 2 bytes";
- break;
-
- case FT_UINT24:
- value_type = "unsigned, 3 bytes";
- break;
-
- case FT_UINT32:
- value_type = "unsigned, 4 bytes";
- break;
-
- case FT_INT8:
- value_type = "signed, byte";
- break;
-
- case FT_INT16:
- value_type = "signed, 2 bytes";
- break;
-
- case FT_INT24:
- value_type = "signed, 3 bytes";
- break;
-
- case FT_INT32:
- value_type = "signed, 4 bytes";
- break;
-
- case FT_DOUBLE:
- value_type = "floating point";
- break;
-
- case FT_ABSOLUTE_TIME:
- value_type = "date and time";
- break;
-
- case FT_RELATIVE_TIME:
- value_type = "time";
- break;
-
- case FT_STRING:
- case FT_STRINGZ:
- case FT_UINT_STRING:
- value_type = "character string";
- break;
-
- case FT_ETHER:
- value_type = "Ethernet or other MAC address";
- break;
-
- case FT_BYTES:
- value_type = "sequence of bytes";
- break;
-
- case FT_IPv4:
- value_type = "IPv4 address";
- break;
-
- case FT_IPv6:
- value_type = "IPv6 address";
- break;
-
- case FT_IPXNET:
- value_type = "IPX network address";
- break;
-
- default:
- g_assert_not_reached();
- value_type = NULL;
- break;
- }
+ value_type = ftype_pretty_name(hfinfo->type);
if (value_type != NULL) {
/*
* Indicate what type of value it is.
diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c
index 757df42631..fab7d1f42d 100644
--- a/gtk/file_dlg.c
+++ b/gtk/file_dlg.c
@@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
- * $Id: file_dlg.c,v 1.35 2001/01/21 02:27:24 guy Exp $
+ * $Id: file_dlg.c,v 1.36 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -149,13 +149,13 @@ static void
file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
gchar *cf_name, *rfilter, *s;
GtkWidget *filter_te, *resolv_cb;
- dfilter *rfcode = NULL;
+ dfilter_t *rfcode = NULL;
int err;
cf_name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION (fs)));
filter_te = gtk_object_get_data(GTK_OBJECT(w), E_RFILTER_TE_KEY);
rfilter = gtk_entry_get_text(GTK_ENTRY(filter_te));
- if (dfilter_compile(rfilter, &rfcode) != 0) {
+ if (!dfilter_compile(rfilter, &rfcode)) {
simple_dialog(ESD_TYPE_CRIT, NULL, dfilter_error_msg);
return;
}
@@ -178,7 +178,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
dismiss the alert box popped up for the open error,
try again. */
if (rfcode != NULL)
- dfilter_destroy(rfcode);
+ dfilter_free(rfcode);
g_free(cf_name);
return;
}
diff --git a/gtk/find_dlg.c b/gtk/find_dlg.c
index 9203899baf..18b827f8f5 100644
--- a/gtk/find_dlg.c
+++ b/gtk/find_dlg.c
@@ -1,7 +1,7 @@
/* find_dlg.c
* Routines for "find frame" window
*
- * $Id: find_dlg.c,v 1.18 2001/01/21 02:27:24 guy Exp $
+ * $Id: find_dlg.c,v 1.19 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -37,7 +37,7 @@
#include <glib.h>
#include "proto.h"
-#include "dfilter.h"
+#include "dfilter/dfilter.h"
#include "globals.h"
#include "ui_util.h"
@@ -187,7 +187,7 @@ find_frame_ok_cb(GtkWidget *ok_bt, gpointer parent_w)
{
GtkWidget *filter_te, *backward_rb;
gchar *filter_text;
- dfilter *sfcode;
+ dfilter_t *sfcode;
filter_te = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_FIND_FILT_KEY);
backward_rb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_FIND_BACKWARD_KEY);
@@ -197,7 +197,7 @@ find_frame_ok_cb(GtkWidget *ok_bt, gpointer parent_w)
/*
* Try to compile the filter.
*/
- if (dfilter_compile(filter_text, &sfcode) != 0) {
+ if (!dfilter_compile(filter_text, &sfcode)) {
/* The attempt failed; report an error. */
simple_dialog(ESD_TYPE_CRIT, NULL, dfilter_error_msg);
return;
diff --git a/gtk/help_dlg.c b/gtk/help_dlg.c
index aa18ca99e9..03deb5ffb2 100644
--- a/gtk/help_dlg.c
+++ b/gtk/help_dlg.c
@@ -1,6 +1,6 @@
/* help_dlg.c
*
- * $Id: help_dlg.c,v 1.12 2000/11/22 04:07:00 gram Exp $
+ * $Id: help_dlg.c,v 1.13 2001/02/01 20:21:21 gram Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@@ -378,7 +378,7 @@ static void set_help_text(GtkWidget *w, help_type_t type)
nb_lines += 2;
} else {
- type_name = proto_registrar_ftype_name(hfinfo->type);
+ type_name = ftype_name(hfinfo->type);
snprintf(buffer, BUFF_LEN, "%s%s%s%s(%s)\n",
hfinfo->abbrev,
&blanks[B_LEN - (maxlen - strlen(hfinfo->abbrev)) - 2],
diff --git a/gtk/main.c b/gtk/main.c
index 649a6dfcf6..df341080b8 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.176 2001/01/28 23:56:29 guy Exp $
+ * $Id: main.c,v 1.177 2001/02/01 20:21:21 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -120,7 +120,7 @@
#include "util.h"
#include "simple_dialog.h"
#include "proto_draw.h"
-#include "dfilter.h"
+#include "dfilter/dfilter.h"
#include "keys.h"
#include "packet_win.h"
#include "gtkglobals.h"
@@ -146,7 +146,6 @@ GtkStyle *item_style;
/* Specifies the field currently selected in the GUI protocol tree */
field_info *finfo_selected = NULL;
-static char* hfinfo_numeric_format(header_field_info *hfinfo);
static void create_main_window(gint, gint, gint, e_prefs*);
/* About Ethereal window */
@@ -171,10 +170,6 @@ match_selected_cb(GtkWidget *w, gpointer data)
{
char *buf;
GtkWidget *filter_te;
- char *ptr, *format, *stringified;
- int i, dfilter_len, abbrev_len;
- guint8 *c;
- header_field_info *hfinfo;
filter_te = gtk_object_get_data(GTK_OBJECT(w), E_DFILTER_TE_KEY);
@@ -186,123 +181,7 @@ match_selected_cb(GtkWidget *w, gpointer data)
return;
}
- hfinfo = finfo_selected->hfinfo;
- g_assert(hfinfo);
- abbrev_len = strlen(hfinfo->abbrev);
-
- switch(hfinfo->type) {
-
- case FT_BOOLEAN:
- dfilter_len = abbrev_len + 2;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s%s", finfo_selected->value.numeric ? "" : "!",
- hfinfo->abbrev);
- break;
-
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- case FT_INT8:
- case FT_INT16:
- case FT_INT24:
- case FT_INT32:
- dfilter_len = abbrev_len + 20;
- buf = g_malloc0(dfilter_len);
- format = hfinfo_numeric_format(hfinfo);
- snprintf(buf, dfilter_len, format, hfinfo->abbrev, finfo_selected->value.numeric);
- break;
-
- case FT_IPv4:
- dfilter_len = abbrev_len + 4 + 15 + 1;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == %s", hfinfo->abbrev,
- ipv4_addr_str(&(finfo_selected->value.ipv4)));
- break;
-
- case FT_IPXNET:
- dfilter_len = abbrev_len + 15;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == 0x%08x", hfinfo->abbrev,
- finfo_selected->value.numeric);
- break;
-
- case FT_IPv6:
- stringified = ip6_to_str((struct e_in6_addr*) &(finfo_selected->value.ipv6));
- dfilter_len = abbrev_len + 4 + strlen(stringified) + 1;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == %s", hfinfo->abbrev,
- stringified);
- break;
-
- case FT_DOUBLE:
- dfilter_len = abbrev_len + 30;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == %f", hfinfo->abbrev,
- finfo_selected->value.floating);
- break;
-
- case FT_ETHER:
- dfilter_len = abbrev_len + 22;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == %s",
- hfinfo->abbrev,
- ether_to_str(finfo_selected->value.ether));
- break;
-#if 0
-
- case FT_ABSOLUTE_TIME:
- case FT_RELATIVE_TIME:
- memcpy(&fi->value.time, va_arg(ap, struct timeval*),
- sizeof(struct timeval));
- break;
-
- case FT_TEXT_ONLY:
- ; /* nothing */
- break;
-#endif
-
- case FT_STRING:
- dfilter_len = abbrev_len +
- strlen(finfo_selected->value.string) + 7;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == \"%s\"",
- hfinfo->abbrev,
- finfo_selected->value.string);
- break;
-
- case FT_BYTES:
- dfilter_len = finfo_selected->length*3 - 1;
- dfilter_len += abbrev_len + 7;
- buf = g_malloc0(dfilter_len);
- snprintf(buf, dfilter_len, "%s == %s",
- hfinfo->abbrev,
- bytes_to_str_punct(finfo_selected->value.bytes, finfo_selected->length,':'));
- break;
- default:
- c = cfile.pd + finfo_selected->start;
- buf = g_malloc0(32 + finfo_selected->length * 3);
- ptr = buf;
-
- sprintf(ptr, "frame[%d] == ", finfo_selected->start);
- ptr = buf+strlen(buf);
-
- if (finfo_selected->length == 1) {
- sprintf(ptr, "0x%02x", *c++);
- }
- else {
- for (i=0;i<finfo_selected->length; i++) {
- if (i == 0 ) {
- sprintf(ptr, "%02x", *c++);
- }
- else {
- sprintf(ptr, ":%02x", *c++);
- }
- ptr = buf+strlen(buf);
- }
- }
- break;
- }
+ buf = proto_alloc_dfilter_string(finfo_selected, cfile.pd);
/* create a new one and set the display filter entry accordingly */
gtk_entry_set_text(GTK_ENTRY(filter_te), buf);
@@ -313,60 +192,6 @@ match_selected_cb(GtkWidget *w, gpointer data)
/* Don't g_free(buf) here. filter_packets() will do it the next time it's called */
}
-static char*
-hfinfo_numeric_format(header_field_info *hfinfo)
-{
- char *format = NULL;
-
- /* Pick the proper format string */
- switch(hfinfo->display) {
- case BASE_DEC:
- case BASE_NONE:
- case BASE_OCT: /* I'm lazy */
- case BASE_BIN: /* I'm lazy */
- switch(hfinfo->type) {
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- format = "%s == %u";
- break;
- case FT_INT8:
- case FT_INT16:
- case FT_INT24:
- case FT_INT32:
- format = "%s == %d";
- break;
- default:
- g_assert_not_reached();
- ;
- }
- break;
- case BASE_HEX:
- switch(hfinfo->type) {
- case FT_UINT8:
- format = "%s == 0x%02x";
- break;
- case FT_UINT16:
- format = "%s == 0x%04x";
- break;
- case FT_UINT24:
- format = "%s == 0x%06x";
- break;
- case FT_UINT32:
- format = "%s == 0x%08x";
- break;
- default:
- g_assert_not_reached();
- ;
- }
- break;
- default:
- g_assert_not_reached();
- ;
- }
- return format;
-}
/* Run the current display filter on the current packet set, and
@@ -585,7 +410,8 @@ tree_view_select_row_cb(GtkCTree *ctree, GList *node, gint column, gpointer user
set_menus_for_selected_tree_row(TRUE);
- if (finfo->hfinfo && finfo->hfinfo->type != FT_TEXT_ONLY) {
+ /*if (finfo->hfinfo && finfo->hfinfo->type != FT_TEXT_ONLY) {*/
+ if (finfo->hfinfo) {
if (finfo->hfinfo->blurb != NULL &&
finfo->hfinfo->blurb[0] != '\0') {
has_blurb = TRUE;
@@ -872,7 +698,7 @@ main(int argc, char *argv[])
#endif
gint pl_size = 280, tv_size = 95, bv_size = 75;
gchar *rc_file, *cf_name = NULL, *rfilter = NULL;
- dfilter *rfcode = NULL;
+ dfilter_t *rfcode = NULL;
gboolean rfilter_parse_failed = FALSE;
e_prefs *prefs;
char *bold_font_name;
@@ -1312,7 +1138,7 @@ main(int argc, char *argv[])
up on top of us. */
if (cf_name) {
if (rfilter != NULL) {
- if (dfilter_compile(rfilter, &rfcode) != 0) {
+ if (!dfilter_compile(rfilter, &rfcode)) {
simple_dialog(ESD_TYPE_CRIT, NULL, dfilter_error_msg);
rfilter_parse_failed = TRUE;
}
@@ -1345,7 +1171,7 @@ main(int argc, char *argv[])
if (s != NULL)
last_open_dir = s;
} else {
- dfilter_destroy(rfcode);
+ dfilter_free(rfcode);
cfile.rfcode = NULL;
}
}
diff --git a/gtk/packet_win.c b/gtk/packet_win.c
index abf4e8a917..760033f8d8 100644
--- a/gtk/packet_win.c
+++ b/gtk/packet_win.c
@@ -3,7 +3,7 @@
*
* Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com>
*
- * $Id: packet_win.c,v 1.16 2000/10/06 10:11:40 gram Exp $
+ * $Id: packet_win.c,v 1.17 2001/02/01 20:21:22 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -64,7 +64,6 @@
#include "simple_dialog.h"
#include "ui_util.h"
#include "proto_draw.h"
-#include "dfilter.h"
#include "keys.h"
#include "gtkglobals.h"
#include "plugins.h"