Commit Graph

1357 Commits (02124002c88d7a89d6c9afd89857c4c301e09801)
 

Author SHA1 Message Date
Alessandro Decina 401ea5e848 aya, aya-obj: refactor map relocations
Clearly split the code between `.maps`, `maps` and data maps (bss, data,
rodata). Sprinkle comments.

Remove MapKind which was effectively only needed since we used to have
one variant - BpfSectionKind::Data - to represent all data maps. Instead
add explicit BpfSectionKind::{Data, Rodata, Bss} variants and match on
those when we initialize maps.
Alessandro Decina 5c4f1d69a6 aya-obj: rework `maps` section parsing
Avoid allocations and add comments explaining how things work.
Alessandro Decina bc8f4ef1c8 integration-tests: rename relocations to btf_relocations
In preparation of adding actual ELF relocation tests
Alessandro Decina 23ce42da68
Merge pull request from vadorovsky/integration-release
integration-tests: Build eBPF programs always with release profile
Michal Rostecki ed9c2a1780 integration-tests: Build eBPF programs always with release profile
Also, add the `codegen-unit` option to the profile.
vadorovsky fcc8a0d50d
Merge pull request from aya-rs/dependabot/cargo/num_enum-0.6
build(deps): update num_enum requirement from 0.5 to 0.6
dependabot[bot] b10a31183b
build(deps): update num_enum requirement from 0.5 to 0.6
Updates the requirements on [num_enum](https://github.com/illicitonion/num_enum) to permit the latest version.
- [Release notes](https://github.com/illicitonion/num_enum/releases)
- [Commits](https://github.com/illicitonion/num_enum/compare/0.5.0...0.6.0)

---
updated-dependencies:
- dependency-name: num_enum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Alessandro Decina 04f4841ede
Merge pull request from Tuetuopay/tests-fedora-38
tests: use fedora 38 beta with testing repo
Tuetuopay 3655cd1e02 tests: use fedora 38 beta with testing repo
Now that bpf-linker uses llvm 16, the easiest way is to use Fedora 38
Beta with the testing repos as they have it, without resorting to
Rawhide.

See https://packages.fedoraproject.org/pkgs/llvm/llvm/.
epompeii 85714d5cf3 review
epompeii 6dfb9d82af macro
epompeii 17f497ce42 program_section
epompeii 6a25d4ddec obj
Alessandro Decina b13070a342
Merge pull request from drewvis/main
Add check for empty tracefs mounts
Alessandro Decina bcb2972a96 aya: make it possible to use set_global() with slices of Pod(s)
drewvis 8f64cf8cd5 Added code check comment
drewvis 3a2c0cd1dd Add check for empty tracefs mounts
Alessandro Decina 8ef00c4c63 Revert "aya: make it possible to use set_global() with slices of Pod(s)"
This reverts commit b614ffd603.
Alessandro Decina dfbe1207c1 aya-obj: fix compilation with nightly
Alessandro Decina b614ffd603 aya: make it possible to use set_global() with slices of Pod(s)
Alessandro Decina 6404108aa9
Merge pull request from 0xrawsec/fix-issue-552
fix issue 
Quentin JEROME d031ce78bf fix issue
Alessandro Decina d6319f95c9
Merge pull request from kriomant/feature-xdp-attach-by-index
aya: Allow to attach XDP probe by interface index
Mikhail Trishchenkov ce60854934 Don't leak libc types
Mikhail Trishchenkov 896e3ab313 Fix formatting
Mikhail Trishchenkov 676b5cdc0d Rename method and fix comment
Mikhail Trishchenkov 2e3c1779be aya: Allow to attach XDP probe by interface index
Alessandro Decina 113e3ef018
Merge pull request from marysaka/fix/map_data_clone
aya: Fix MapData Clone implementation
Mary 94049ec661 aya: Fix MapData Clone implementation
The Clone implementation of MapData was previously not storing the
result of the dup operation.
Dave Tucker 8684a5783d
Merge pull request from aya-rs/codegen
Update libbpf to a41e6ef3251cba858021b90c33abb9efdb17f575
dave-tucker 24f15ea25f [codegen] Update libbpf to a41e6ef3251cba858021b90c33abb9efdb17f575Update libbpf to a41e6ef3251cba858021b90c33abb9efdb17f575
Files changed:
M	aya-obj/src/generated/btf_internal_bindings.rs
M	aya-obj/src/generated/linux_bindings_aarch64.rs
M	aya-obj/src/generated/linux_bindings_armv7.rs
M	aya-obj/src/generated/linux_bindings_riscv64.rs
M	aya-obj/src/generated/linux_bindings_x86_64.rs
M	bpf/aya-bpf-bindings/src/aarch64/bindings.rs
M	bpf/aya-bpf-bindings/src/armv7/bindings.rs
M	bpf/aya-bpf-bindings/src/riscv64/bindings.rs
M	bpf/aya-bpf-bindings/src/x86_64/bindings.rs
vadorovsky 7e4454d061
Merge pull request from Tuetuopay/cpudevmap-bindings
xtask: generate userspace bindings for bpf_{cpu,dev}map_val
Tuetuopay 23e7c65244 xtask: generate userspace bindings for bpf_{cpu,dev}map_val
Dave Tucker d9878a6791
Merge pull request from dave-tucker/prog_list
aya: Add loaded_programs() API to list all loaded programs
Dave Tucker de4905a24b aya: Add loaded_programs() API to list all loaded programs
This uses a Programs iterator to yield all loaded bpf programs using
bpf_prog_get_next_id.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker b1a70fc6e4 aya: MapData should be Borrow, not AsRef
We don't ever do ref-to-ref conversion for MapData so Borrow should
suffice.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker 56c143831e
Merge pull request from dave-tucker/fix_perf_link
aya: Fix is_perf_link_supported
Dave Tucker ce79de7ff6 aya: Fix is_perf_link_supported
This was mistakenly comparing the exit code of the syscall, which is
always -1 and not the corresponding error-code. Added unit tests to
ensure we don't regress.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Alessandro Decina d7d6442671
Merge pull request from dave-tucker/perf_link
Use bpf_link for perf_attach programs (Kprobe/Uprobe/Tracepoint etc...)
Dave Tucker 7479c1dd6c aya: More discrete feature logging
Just use the Debug formatter vs. printing a message for each probe.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker d0b3d3b2fa aya: Enable bpf_link for perf_attach programs
This adds support for bpf_link to PerfEvent, Tracepoint, Kprobe and
Uprobe programs.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker 763b92a2e0 aya: Add probe for bpf_link_create for perf programs
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker ce22ca668f aya: Make features a lazy_static
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Alessandro Decina bc83f208b1
Merge pull request from dave-tucker/frags
XDP Multi-Buffer Support
Dave Tucker 376c486400 aya-bpf: Add multibuffer support for XDP
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
vadorovsky bb1b39535c
Merge pull request from dmitris/derive-debug
aya-tool: remove outdated workaround
Dave Tucker a18693b42d aya: Add support for multibuffer programs
This adds support for loading XDP programs that are multi-buffer
capable, which is signalled using the xdp.frags section name. When this
is set, we should set the BPF_F_XDP_HAS_FRAGS flag when loading the
program into the kernel.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dmitry Savintsev 96b282d149 aya-tool: remove outdated workaround
The comment says that `.derive_debug` was needed as
a workaround for https://github.com/rust-lang/rust-bindgen/issues/2083.
This issue is now closed, and aya-tool compiles without derive_debug.

Additionally, update bindgen dependency to 1.64.

Signed-off-by: Dmitry Savintsev <dsavints@gmail.com>
Dave Tucker 811ab299de
Merge pull request from dave-tucker/program-from-pinned3
aya: Add from_pin for Programs
Dave Tucker 7a720ab0c1 aya: Add from_pin for Programs
This commit adds from_pin() which allows the creation of a Program
from a path on bpffs. This is useful to be able to call `attach` or
other APIs for programs that are already loaded to the kernel.

This differs from  since it implements this on the concrete program
type, not the Program enum, allowing the user to pass in any additional
context that isn't available from bpf_prog_info.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>