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>
This commit is contained in:
Silvio Gissi 2017-06-18 20:53:32 -04:00 committed by Michael Mann
parent e9e1b48162
commit d386a6cfb1
2 changed files with 31 additions and 2 deletions

View File

@ -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);

View File

@ -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)