diff options
author | Silvio Gissi <silvio.gissi@gmail.com> | 2017-06-18 20:53:32 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-06-19 10:08:14 +0000 |
commit | d386a6cfb1e8b69f56fabad76d1e873f56160db8 (patch) | |
tree | 8e9bc3f38418bba9706919fcebfb972c062c206e | |
parent | e9e1b4816278a131aa38dfc579ccd975fed2d7c7 (diff) |
Added IPv4 byte slicing
Change-Id: I3bdca418801305d71b33fa07396497d82ad06e33
Reviewed-on: https://code.wireshark.org/review/22212
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | epan/ftypes/ftype-ipv4.c | 19 | ||||
-rwxr-xr-x | tools/dftestlib/ipv4.py | 14 |
2 files changed, 31 insertions, 2 deletions
diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c index 8cedaa3257..3b6d5d93b8 100644 --- a/epan/ftypes/ftype-ipv4.c +++ b/epan/ftypes/ftype-ipv4.c @@ -169,6 +169,21 @@ cmp_bitwise_and(const fvalue_t *fv_a, const fvalue_t *fv_b) return ((addr_a & addr_b) != 0); } +static guint +len(fvalue_t *fv _U_) +{ + return 4; +} + +static void +slice(fvalue_t *fv, GByteArray *bytes, guint offset, guint length) +{ + guint8* data; + guint32 addr = ipv4_get_net_order_addr(&(fv->value.ipv4)); + data = ((guint8*)&addr)+offset; + g_byte_array_append(bytes, data, length); +} + void ftype_register_ipv4(void) { @@ -198,8 +213,8 @@ ftype_register_ipv4(void) NULL, /* cmp_contains */ NULL, /* cmp_matches */ - NULL, - NULL, + len, + slice, }; ftype_register(FT_IPv4, &ipv4_type); diff --git a/tools/dftestlib/ipv4.py b/tools/dftestlib/ipv4.py index 9c17e361db..6ccf4d76ce 100755 --- a/tools/dftestlib/ipv4.py +++ b/tools/dftestlib/ipv4.py @@ -120,4 +120,18 @@ class testIPv4(dftest.DFTest): dfilter = "ip.src != 200.0.0.0/8" self.assertDFilterCount(dfilter, 2) + def test_slice_1(self): + dfilter = "ip.src[0:2] == ac:19" + self.assertDFilterCount(dfilter, 1) + def test_slice_2(self): + dfilter = "ip.src[0:2] == 00:00" + self.assertDFilterCount(dfilter, 0) + + def test_slice_3(self): + dfilter = "ip.src[2:2] == 64:0e" + self.assertDFilterCount(dfilter, 1) + + def test_slice_4(self): + dfilter = "ip.src[2:2] == ff:ff" + self.assertDFilterCount(dfilter, 0) |