Since hostmask is a 32-bit unsigned int, "~0 & hostmask" stands for
"0xFFFFFFFF & hostmask", which always equals hostmask. The tests for
"ip broadcast" hold as expected.
b0 = gen_linktype(cstate, ETHERTYPE_IP);
hostmask = ~cstate->netmask;
b1 = gen_mcmp(cstate, OR_LINKPL, 16, BPF_W, 0, hostmask);
b0 = gen_linktype(cstate, ETHERTYPE_IP);
hostmask = ~cstate->netmask;
b1 = gen_mcmp(cstate, OR_LINKPL, 16, BPF_W, 0, hostmask);
- b2 = gen_mcmp(cstate, OR_LINKPL, 16, BPF_W,
- ~0 & hostmask, hostmask);
+ b2 = gen_mcmp(cstate, OR_LINKPL, 16, BPF_W, hostmask, hostmask);
gen_or(b1, b2);
gen_and(b0, b2);
return b2;
gen_or(b1, b2);
gen_and(b0, b2);
return b2;