From: Roy Marples Date: Tue, 15 Dec 2015 14:30:39 +0000 (+0000) Subject: Optimise the ARP BPF filter, thanks to Nate Karstens. X-Git-Tag: v6.10.0~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e15ea5a1a1ed8a592721c1cc43753ffcd3f893a;p=thirdparty%2Fdhcpcd.git Optimise the ARP BPF filter, thanks to Nate Karstens. --- diff --git a/bpf-filter.h b/bpf-filter.h index 08df683c..de9b277e 100644 --- a/bpf-filter.h +++ b/bpf-filter.h @@ -34,13 +34,12 @@ static const struct bpf_insn arp_bpf_filter [] = { #ifndef BPF_SKIPTYPE /* Make sure this is an ARP packet... */ BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 12), - BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ETHERTYPE_ARP, 0, 3), + BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ETHERTYPE_ARP, 0, 4), #endif /* Make sure this is an ARP REQUEST... */ BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 20 + BPF_ETHCOOK), - BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ARPOP_REQUEST, 2, 0), + BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ARPOP_REQUEST, 1, 0), /* or ARP REPLY... */ - BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 20 + BPF_ETHCOOK), BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ARPOP_REPLY, 0, 1), /* If we passed all the tests, ask for the whole packet. */ BPF_STMT(BPF_RET + BPF_K, BPF_WHOLEPACKET),