aya-rs / aya

Aya is an eBPF library for the Rust programming language, built with a focus on developer experience and operability.
https://aya-rs.dev/book/
Apache License 2.0
3.25k stars 290 forks source link

"bpf_skb_pull_data" unknown function. #1082

Closed russeree closed 1 week ago

russeree commented 1 week ago

Hey!

Currently I am facing an issue with a member function .pull_data on a socket buffer causing a run time error.

99: (85) call bpf_skb_pull_data#39
unknown func bpf_skb_pull_data#39
verification time 56748 usec
stack depth 24+0
processed 7595 insns (limit 1000000) max_states_per_insn 4 total_states 84 peak_states 84 mark_read 82

Context

// Read payload if present
            if payload_len > 0 && payload_len <= 1500 {
                let payload = ctx.pull_data(0);
                // let key = get_next_key()?;
                // PACKET_META.insert(&key, &metadata, 0)?;
                // PACKET_PAYLOAD.insert(&key, &*scratch, 0)?;
            }

Caused by:
    Invalid argument (os error 22)

Here are my bpftool features that are enabled for that function

xxxxx@xxxxxx-xxxx-xxxxxx:~/xxx_stratum_ebpf_telemetry$ sudo bpftool feature probe | grep pull
        - bpf_skb_pull_data
        - bpf_skb_pull_data
        - bpf_skb_pull_data
        - bpf_skb_pull_data
        - bpf_skb_pull_data
        - bpf_skb_pull_data
        - bpf_msg_pull_data
        - bpf_skb_pull_data

Clang info

clang++-18 -v
Ubuntu clang version 18.1.8 (++20240731025043+3b5b5c1ec4a3-1~exp1~20240731145144.92)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Candidate multilib: .;@m64

Conclustion

Any help would be appreciated here.

russeree commented 1 week ago

The program type socket filter does not support pull_data

[socket_filter]