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