aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dfilter/sttype-range.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/sttype-range.c
parent9ee8562c32dd4bf1968247e21460bce3fb3963a7 (diff)
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/sttype-range.c')
-rw-r--r--epan/dfilter/sttype-range.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/epan/dfilter/sttype-range.c b/epan/dfilter/sttype-range.c
index 98d1930cb9..1bc7bfe00a 100644
--- a/epan/dfilter/sttype-range.c
+++ b/epan/dfilter/sttype-range.c
@@ -59,6 +59,19 @@ range_new(gpointer junk)
return (gpointer) range;
}
+static gpointer
+range_dup(gconstpointer data)
+{
+ const range_t *org = data;
+ range_t *range;
+
+ range = range_new(NULL);
+ range->hfinfo = org->hfinfo;
+ range->drange = drange_dup(org->drange);
+
+ return (gpointer) range;
+}
+
static void
range_free(gpointer value)
{
@@ -116,6 +129,7 @@ sttype_register_range(void)
"RANGE",
range_new,
range_free,
+ range_dup
};
sttype_register(&range_type);