diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-06-19 12:12:41 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-06-19 12:12:41 +0000 |
commit | addf9236dc80679fb0701b3808f7d5264a9753dd (patch) | |
tree | 018fddc20b899c0af6a73b0bc39b2d10186f4867 /epan/dfilter/syntax-tree.c | |
parent | 9ee8562c32dd4bf1968247e21460bce3fb3963a7 (diff) | |
download | wireshark-addf9236dc80679fb0701b3808f7d5264a9753dd.tar.gz |
Support multiple relation test without logic and (python-like)
Like:
a == b == c
or
a < b <= c <= d < e
Real life example:
6660 <= tcp.port <= 6669
Just syntactic sugar, this is *NOT* optimized.
svn path=/trunk/; revision=43353
Diffstat (limited to 'epan/dfilter/syntax-tree.c')
-rw-r--r-- | epan/dfilter/syntax-tree.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/epan/dfilter/syntax-tree.c b/epan/dfilter/syntax-tree.c index 43ea095899..3c580b4d54 100644 --- a/epan/dfilter/syntax-tree.c +++ b/epan/dfilter/syntax-tree.c @@ -114,6 +114,30 @@ stnode_new(sttype_id_t type_id, gpointer data) return node; } +stnode_t* +stnode_dup(const stnode_t *org) +{ + sttype_t *type; + stnode_t *node; + + if (!org) + return NULL; + + type = org->type; + + node = g_new(stnode_t, 1); + node->magic = STNODE_MAGIC; + node->deprecated_token = NULL; + node->type = type; + if (type && type->func_dup) + node->data = type->func_dup(org->data); + else + node->data = org->data; + node->value = org->value; + + return node; +} + void stnode_init(stnode_t *node, sttype_id_t type_id, gpointer data) { |