From c9c9d558b2644fcd5269953367ba38e8faf82448 Mon Sep 17 00:00:00 2001 From: Silvio Gissi Date: Tue, 20 Jun 2017 00:07:49 -0400 Subject: IPv4/IPv6 display filter fixes and testing Removed 'len' from IPv4, not needed Added more test coverage for IPv6 in dftestlib Change-Id: I1ca80e2525f32f6095ad73352baba733f4694ced Reviewed-on: https://code.wireshark.org/review/22260 Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann --- epan/ftypes/ftype-ipv4.c | 8 +--- epan/ftypes/ftype-ipv6.c | 1 - tools/dftestlib/bytes_ipv6.py | 92 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 91 insertions(+), 10 deletions(-) diff --git a/epan/ftypes/ftype-ipv4.c b/epan/ftypes/ftype-ipv4.c index 3b6d5d93b8..c2b0365251 100644 --- a/epan/ftypes/ftype-ipv4.c +++ b/epan/ftypes/ftype-ipv4.c @@ -169,12 +169,6 @@ 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) { @@ -213,7 +207,7 @@ ftype_register_ipv4(void) NULL, /* cmp_contains */ NULL, /* cmp_matches */ - len, + NULL, slice, }; diff --git a/epan/ftypes/ftype-ipv6.c b/epan/ftypes/ftype-ipv6.c index 5c3dc020c1..fe51b77c29 100644 --- a/epan/ftypes/ftype-ipv6.c +++ b/epan/ftypes/ftype-ipv6.c @@ -212,7 +212,6 @@ cmp_bitwise_and(const fvalue_t *fv_a, const fvalue_t *fv_b) static void slice(fvalue_t *fv, GByteArray *bytes, guint offset, guint length) { - /* XXX needed? ipv4 doesn't support slice() */ guint8* data; data = fv->value.ipv6.addr.bytes + offset; diff --git a/tools/dftestlib/bytes_ipv6.py b/tools/dftestlib/bytes_ipv6.py index 3d2c9ee86e..d85fb6403b 100755 --- a/tools/dftestlib/bytes_ipv6.py +++ b/tools/dftestlib/bytes_ipv6.py @@ -19,10 +19,98 @@ from dftestlib import dftest class testBytesIPv6(dftest.DFTest): trace_file = "ipv6.pcap" - def test_ipv6_1(self): + def test_eq_1(self): dfilter = "ipv6.dst == ff05::9999" self.assertDFilterCount(dfilter, 1) - def test_ipv6_2(self): + def test_eq_2(self): dfilter = "ipv6.dst == ff05::9990" self.assertDFilterCount(dfilter, 0) + + def test_ne_1(self): + dfilter = "ipv6.dst != ff05::9990" + self.assertDFilterCount(dfilter, 1) + + def test_ne_2(self): + dfilter = "ipv6.dst != ff05::9999" + self.assertDFilterCount(dfilter, 0) + + def test_gt_1(self): + dfilter = "ipv6.dst > ff05::0000" + self.assertDFilterCount(dfilter, 1) + + def test_gt_2(self): + dfilter = "ipv6.dst > ff05::9999" + self.assertDFilterCount(dfilter, 0) + + def test_ge_1(self): + dfilter = "ipv6.dst >= ff05::9999" + self.assertDFilterCount(dfilter, 1) + + def test_ge_2(self): + dfilter = "ipv6.dst >= ff05::a000" + self.assertDFilterCount(dfilter, 0) + + def test_lt_1(self): + dfilter = "ipv6.dst < ff05::a000" + self.assertDFilterCount(dfilter, 1) + + def test_lt_2(self): + dfilter = "ipv6.dst < ff05::9999" + self.assertDFilterCount(dfilter, 0) + + def test_le_1(self): + dfilter = "ipv6.dst <= ff05::9999" + self.assertDFilterCount(dfilter, 1) + + def test_le_2(self): + dfilter = "ipv6.dst <= ff05::9998" + self.assertDFilterCount(dfilter, 0) + + def test_cidr_eq_1(self): + dfilter = "ipv6.dst == ff05::9999/128" + self.assertDFilterCount(dfilter, 1) + + def test_cidr_eq_2(self): + dfilter = "ipv6.dst == ff05::0/64" + self.assertDFilterCount(dfilter, 1) + + def test_cidr_eq_3(self): + dfilter = "ipv6.dst == ff05::ffff/112" + self.assertDFilterCount(dfilter, 1) + + def test_cidr_eq_4(self): + dfilter = "ipv6.dst == ff04::0/64" + self.assertDFilterCount(dfilter, 0) + + def test_cidr_ne_1(self): + dfilter = "ipv6.dst != ff05::9999/128" + self.assertDFilterCount(dfilter, 0) + + def test_cidr_ne_2(self): + dfilter = "ipv6.dst != ff05::0/64" + self.assertDFilterCount(dfilter, 0) + + def test_cidr_ne_3(self): + dfilter = "ipv6.dst != ff05::ffff/112" + self.assertDFilterCount(dfilter, 0) + + def test_cidr_ne_4(self): + dfilter = "ipv6.dst != ff04::00/64" + self.assertDFilterCount(dfilter, 1) + + def test_slice_1(self): + dfilter = "ipv6.dst[14:2] == 99:99" + self.assertDFilterCount(dfilter, 1) + + def test_slice_2(self): + dfilter = "ipv6.dst[14:2] == 00:00" + self.assertDFilterCount(dfilter, 0) + + def test_slice_3(self): + dfilter = "ipv6.dst[15:1] == 99" + self.assertDFilterCount(dfilter, 1) + + def test_slice_4(self): + dfilter = "ipv6.dst[15:1] == 00" + self.assertDFilterCount(dfilter, 0) -- cgit v1.2.1