diff options
author | Gilbert Ramirez <gram@alumni.rice.edu> | 1999-08-01 04:28:20 +0000 |
---|---|---|
committer | Gilbert Ramirez <gram@alumni.rice.edu> | 1999-08-01 04:28:20 +0000 |
commit | b2f932c1dbb6180a3b4a86c7510ef4beff814bb0 (patch) | |
tree | 4b9c007a4f6bbfa27c0c7f9cad2a1e7800c30863 /dfilter.h | |
parent | c31abd81fa1fa78b0ac19d0b1de3d492a016768c (diff) | |
download | wireshark-b2f932c1dbb6180a3b4a86c7510ef4beff814bb0.tar.gz |
Changed the display filter scanner from GLIB's GScanner to lex. The code
as it standed depends on your lex being flex, but that only matters if you're
a developer. The distribution will include the dfilter-scanner.c file, so
that if the user doesn't modify dfilter-scanner.l, he won't need flex to
re-create the *.c file.
The new lex scanner gives me better syntax checking for ether addresses. I
thought I could get by using GScanner, but it simply wasn't powerful enough.
All operands have English-like abbreviations and C-like syntax:
and, && ; or, || ; eq, == ; ne, != ; , etc.
I removed the ETHER_VENDOR type in favor of letting the user use the [x:y]
notation: ether.src[0:3] == 0:6:29 instead of ether.srcvendor == 00:06:29
I implemented the IPXNET field type; it had been there before, but was
not implemented. I chose to make it use integer values rather than byte
ranges, since an IPX Network is 4 bytes. So a display filter looks like this:
ipx.srcnet == 0xc0a82c00
rather than this:
ipx.srcnet == c0:a8:2c:00
I can supposrt the byte-range type IPXNET in the future, very trivially.
I still have more work to do on the parser though. It needs to check ranges
when extracting byte ranges ([x:y]) from packets. And I need to get rid
of those reduce/reduce errors from yacc!
svn path=/trunk/; revision=414
Diffstat (limited to 'dfilter.h')
-rw-r--r-- | dfilter.h | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -1,7 +1,7 @@ /* dfilter.h * Definitions for display filters * - * $Id: dfilter.h,v 1.3 1999/07/13 02:52:48 gram Exp $ + * $Id: dfilter.h,v 1.4 1999/08/01 04:28:08 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -68,7 +68,8 @@ enum node_type { ether, ether_vendor, bytes, - ipv4 + ipv4, + ipxnet }; typedef gboolean(*CheckRelationFunc) (gint operand, GArray *a, GArray *b); @@ -100,10 +101,11 @@ typedef struct dfilter_node { } value; /* used for byte-ranges */ - int offset; - int length; + gint offset; + guint length; } dfilter_node; - +/* lookup an abbreviation in our token hash, returing the ID # */ +int dfilter_lookup_token(char *abbrev); #endif /* ! __DFILTER_H__ */ |