Commit Graph

1307 Commits (79ea64ca7fd3cc1b17573b539fd8fa8e76644beb)
 

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.
1 year ago
Alessandro Decina 5c4f1d69a6 aya-obj: rework `maps` section parsing
Avoid allocations and add comments explaining how things work.
1 year ago
Alessandro Decina bc8f4ef1c8 integration-tests: rename relocations to btf_relocations
In preparation of adding actual ELF relocation tests
1 year ago
Alessandro Decina 23ce42da68
Merge pull request #573 from vadorovsky/integration-release
integration-tests: Build eBPF programs always with release profile
1 year ago
Michal Rostecki ed9c2a1780 integration-tests: Build eBPF programs always with release profile
Also, add the `codegen-unit` option to the profile.
1 year ago
vadorovsky fcc8a0d50d
Merge pull request #570 from aya-rs/dependabot/cargo/num_enum-0.6
build(deps): update num_enum requirement from 0.5 to 0.6
1 year ago
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>
1 year ago
Alessandro Decina 04f4841ede
Merge pull request #567 from Tuetuopay/tests-fedora-38
tests: use fedora 38 beta with testing repo
1 year ago
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/.
1 year ago
epompeii 85714d5cf3 review 2 years ago
epompeii 6dfb9d82af macro 2 years ago
epompeii 17f497ce42 program_section 2 years ago
epompeii 6a25d4ddec obj 2 years ago
Alessandro Decina b13070a342
Merge pull request #557 from drewvis/main
Add check for empty tracefs mounts
2 years ago
Alessandro Decina bcb2972a96 aya: make it possible to use set_global() with slices of Pod(s) 2 years ago
drewvis 8f64cf8cd5 Added code check comment 2 years ago
drewvis 3a2c0cd1dd Add check for empty tracefs mounts 2 years ago
Alessandro Decina 8ef00c4c63 Revert "aya: make it possible to use set_global() with slices of Pod(s)"
This reverts commit b614ffd603.
2 years ago
Alessandro Decina dfbe1207c1 aya-obj: fix compilation with nightly 2 years ago
Alessandro Decina b614ffd603 aya: make it possible to use set_global() with slices of Pod(s) 2 years ago
Alessandro Decina 6404108aa9
Merge pull request #554 from 0xrawsec/fix-issue-552
fix issue #552
2 years ago
Quentin JEROME d031ce78bf fix issue #552 2 years ago
Alessandro Decina d6319f95c9
Merge pull request #548 from kriomant/feature-xdp-attach-by-index
aya: Allow to attach XDP probe by interface index
2 years ago
Mikhail Trishchenkov ce60854934 Don't leak libc types 2 years ago
Mikhail Trishchenkov 896e3ab313 Fix formatting 2 years ago
Mikhail Trishchenkov 676b5cdc0d Rename method and fix comment 2 years ago
Mikhail Trishchenkov 2e3c1779be aya: Allow to attach XDP probe by interface index 2 years ago
Alessandro Decina 113e3ef018
Merge pull request #539 from marysaka/fix/map_data_clone
aya: Fix MapData Clone implementation
2 years ago
Mary 94049ec661 aya: Fix MapData Clone implementation
The Clone implementation of MapData was previously not storing the
result of the dup operation.
2 years ago
Dave Tucker 8684a5783d
Merge pull request #537 from aya-rs/codegen
Update libbpf to a41e6ef3251cba858021b90c33abb9efdb17f575
2 years ago
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
2 years ago
vadorovsky 7e4454d061
Merge pull request #532 from Tuetuopay/cpudevmap-bindings
xtask: generate userspace bindings for bpf_{cpu,dev}map_val
2 years ago
Tuetuopay 23e7c65244 xtask: generate userspace bindings for bpf_{cpu,dev}map_val 2 years ago
Dave Tucker d9878a6791
Merge pull request #524 from dave-tucker/prog_list
aya: Add loaded_programs() API to list all loaded programs
2 years ago
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>
2 years ago
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>
2 years ago
Dave Tucker 56c143831e
Merge pull request #523 from dave-tucker/fix_perf_link
aya: Fix is_perf_link_supported
2 years ago
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>
2 years ago
Alessandro Decina d7d6442671
Merge pull request #522 from dave-tucker/perf_link
Use bpf_link for perf_attach programs (Kprobe/Uprobe/Tracepoint etc...)
2 years ago
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>
2 years ago
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>
2 years ago
Dave Tucker 763b92a2e0 aya: Add probe for bpf_link_create for perf programs
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Dave Tucker ce22ca668f aya: Make features a lazy_static
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Alessandro Decina bc83f208b1
Merge pull request #519 from dave-tucker/frags
XDP Multi-Buffer Support
2 years ago
Dave Tucker 376c486400 aya-bpf: Add multibuffer support for XDP
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
vadorovsky bb1b39535c
Merge pull request #517 from dmitris/derive-debug
aya-tool: remove outdated workaround
2 years ago
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>
2 years ago
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>
2 years ago
Dave Tucker 811ab299de
Merge pull request #496 from dave-tucker/program-from-pinned3
aya: Add from_pin for Programs
2 years ago
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 #444 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>
2 years ago