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:
parent
e9e1b48162
commit
d386a6cfb1
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue