]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Optimise the ARP BPF filter, thanks to Nate Karstens.
authorRoy Marples <roy@marples.name>
Tue, 15 Dec 2015 14:30:39 +0000 (14:30 +0000)
committerRoy Marples <roy@marples.name>
Tue, 15 Dec 2015 14:30:39 +0000 (14:30 +0000)
bpf-filter.h

index 08df683ca80807db675e7c9bc6df12345a9fb25d..de9b277e71f3c9fd554cb2ceb26dee358cd00f55 100644 (file)
@@ -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),