]> The Tcpdump Group git mirrors - libpcap/commitdiff
Use correct size for VLAN tag load insn
authorDaniel Miller <[email protected]>
Tue, 7 Jan 2025 18:11:56 +0000 (12:11 -0600)
committerDenis Ovsienko <[email protected]>
Tue, 21 Jan 2025 16:16:31 +0000 (16:16 +0000)
Not a true bug, since Linux kernel (net/core/filter.c) forces any load
from SKF_AD_VLAN_TAG to a BPF_H width. However, this change makes
libpcap code easier to understand.

gencode.c

index ecee3755faf87c93c893624d16839b1dd7b26b80..6b0014ac38226346d805c80b33d14d45710a8ece 100644 (file)
--- a/gencode.c
+++ b/gencode.c
@@ -9258,7 +9258,7 @@ gen_vlan_patch_vid_test(compiler_state_t *cstate, struct block *b_vid)
        sjeq->s.jf = b_vid->stmts;
        sappend(s, sjeq);
 
        sjeq->s.jf = b_vid->stmts;
        sappend(s, sjeq);
 
-       s2 = new_stmt(cstate, BPF_LD|BPF_B|BPF_ABS);
+       s2 = new_stmt(cstate, BPF_LD|BPF_H|BPF_ABS);
        s2->s.k = SKF_AD_OFF + SKF_AD_VLAN_TAG;
        sappend(s, s2);
        sjeq->s.jt = s2;
        s2->s.k = SKF_AD_OFF + SKF_AD_VLAN_TAG;
        sappend(s, s2);
        sjeq->s.jt = s2;