summaryrefslogtreecommitdiff
path: root/epan/dfilter/syntax-tree.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-19 12:12:41 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-19 12:12:41 +0000
commitaddf9236dc80679fb0701b3808f7d5264a9753dd (patch)
tree018fddc20b899c0af6a73b0bc39b2d10186f4867 /epan/dfilter/syntax-tree.c
parent9ee8562c32dd4bf1968247e21460bce3fb3963a7 (diff)
downloadwireshark-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.c24
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)
{