diff --git a/libc-test/semver/linux-aarch64.txt b/libc-test/semver/linux-aarch64.txt index 9dceaeccb819b..c4bce0196f8ae 100644 --- a/libc-test/semver/linux-aarch64.txt +++ b/libc-test/semver/linux-aarch64.txt @@ -2,10 +2,12 @@ B2500000 B3000000 B3500000 B4000000 +BPF_A BPF_ABS BPF_ADD BPF_ALU BPF_B +BPF_CLASS BPF_DIV BPF_H BPF_IMM @@ -25,15 +27,21 @@ BPF_MEM BPF_MISC BPF_MISCOP BPF_MOD +BPF_MODE BPF_MSH BPF_NEG BPF_NET_OFF +BPF_OP BPF_RET BPF_RVAL +BPF_SIZE +BPF_SRC BPF_ST BPF_STMT BPF_STX BPF_SUB +BPF_TAX +BPF_TXA BPF_W BPF_X BPF_XOR diff --git a/libc-test/semver/linux-loongarch64.txt b/libc-test/semver/linux-loongarch64.txt index 1302cb68b2c8a..1b50e7248b7fe 100644 --- a/libc-test/semver/linux-loongarch64.txt +++ b/libc-test/semver/linux-loongarch64.txt @@ -2,10 +2,12 @@ B2500000 B3000000 B3500000 B4000000 +BPF_A BPF_ABS BPF_ADD BPF_ALU BPF_B +BPF_CLASS BPF_DIV BPF_H BPF_IMM @@ -25,15 +27,21 @@ BPF_MEM BPF_MISC BPF_MISCOP BPF_MOD +BPF_MODE BPF_MSH BPF_NEG BPF_NET_OFF +BPF_OP BPF_RET BPF_RVAL +BPF_SIZE +BPF_SRC BPF_ST BPF_STMT BPF_STX BPF_SUB +BPF_TAX +BPF_TXA BPF_W BPF_X BPF_XOR diff --git a/libc-test/semver/linux-x86_64.txt b/libc-test/semver/linux-x86_64.txt index f1ed29b8f299d..9d62f8cd3cd35 100644 --- a/libc-test/semver/linux-x86_64.txt +++ b/libc-test/semver/linux-x86_64.txt @@ -2,10 +2,12 @@ B2500000 B3000000 B3500000 B4000000 +BPF_A BPF_ABS BPF_ADD BPF_ALU BPF_B +BPF_CLASS BPF_DIV BPF_H BPF_IMM @@ -25,15 +27,21 @@ BPF_MEM BPF_MISC BPF_MISCOP BPF_MOD +BPF_MODE BPF_MSH BPF_NEG BPF_NET_OFF +BPF_OP BPF_RET BPF_RVAL +BPF_SIZE +BPF_SRC BPF_ST BPF_STMT BPF_STX BPF_SUB +BPF_TAX +BPF_TXA BPF_W BPF_X BPF_XOR diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index fdc17e3daf43a..9cd1f109c4d0b 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -3413,6 +3413,12 @@ pub const BPF_JSET: __u32 = 0x40; pub const BPF_K: __u32 = 0x00; pub const BPF_X: __u32 = 0x08; +// linux/filter.h + +pub const BPF_A: __u32 = 0x10; +pub const BPF_TAX: __u32 = 0x00; +pub const BPF_TXA: __u32 = 0x80; + // linux/openat2.h pub const RESOLVE_NO_XDEV: crate::__u64 = 0x01; pub const RESOLVE_NO_MAGICLINKS: crate::__u64 = 0x02; @@ -6030,6 +6036,26 @@ f! { (x + TPACKET_ALIGNMENT - 1) & !(TPACKET_ALIGNMENT - 1) } + pub fn BPF_CLASS(code: __u32) -> __u32 { + code & 0x07 + } + + pub fn BPF_SIZE(code: __u32) -> __u32 { + code & 0x18 + } + + pub fn BPF_MODE(code: __u32) -> __u32 { + code & 0xe0 + } + + pub fn BPF_OP(code: __u32) -> __u32 { + code & 0xf0 + } + + pub fn BPF_SRC(code: __u32) -> __u32 { + code & 0x08 + } + pub fn BPF_RVAL(code: __u32) -> __u32 { code & 0x18 }