Alexander Nasonov wrote:
> FreeBSD calls bpf_filter from bpf_mtap2 rathen than calling jit'ed
> function because their jit code doesn't support mbuf chain.
> NetBSD calls bpf_deliver from _bpf_mtap2 which in turn calls jit'ed
> function. I think it's wrong because JIT code in NetBSD doesn't support
> mbuf chain either.
Also, bpf_deliver in r1.168 passes buflen argument to bpf_filter:
bpf_filter(d->bd_filter, marg, pktlen, buflen);
// ^^^^^^
while your code doesn't use buflen argument at all:
if (bf) {
slen = (*(bf->func))(pkt, pktlen, pktlen);
// ^^^^^^
} else {
slen = bpf_filter(d->bd_filter, pkt, pktlen, pktlen);
// ^^^^^^
}
Alex