Commit Graph

2154 Commits (29dc7755357d69d193d1bd4595ea6a35cf73d453)
 

Author SHA1 Message Date
Tamir Duberstein 29dc775535
test-distro: appease unreachable code check
See https://github.com/rust-lang/rust/commit/ff6dc928c5e33ce8e65c6911a7.
3 days ago
Altug Bozkurt fc5387c806
lsm: cgroup attachment type support 1 week ago
Tamir Duberstein 66ed37c8a9
integration-test: add LSM 1 week ago
Tamir Duberstein 8e75214815
feature_probe: properly check for LSM support
Turns out this is not supported in aarch64 until 6.4.
1 week ago
Tamir Duberstein 9ba87c661b
xtask: copy kernel config into the initramfs image
When preparing the VM initramfs detect the `config-*` file that ships alongside
the vmlinuz/modules in each kernel archive and install it under `/boot` (both
as `/boot/config` and `/boot/config-<version>`). This makes the running
kernel’s configuration available inside the guest for the integration tests.
1 week ago
Tamir Duberstein 5f046899b5
xtask: teach integration-test vm to consume kernel debs directly
Bundle handling of Debian kernel archives into xtask so callers can pipe
the raw `.deb` paths straight into `cargo xtask integration-test vm …`.
The driver now extracts each archive into `<cache>/kernel-archives`,
locates the matching `vmlinuz-*`, `lib/modules/*`, and config files, and
feeds those into the initramfs build without requiring the user to
pre-run dpkg/tar. With this in place we drop
`.github/scripts/find_kernels.py`, simplify AGENTS.md/CI instructions to
use `find test/.tmp -name '*.deb'`, remove the gnu-tar requirement we no
longer need, and add `tar` as a workspace dependency for the extractor.
1 week ago
Tamir Duberstein fab4fc44b2
xtask: reduce `fs` imports 1 week ago
Tamir Duberstein d16711b2be
xtask: avoid variables named `cmd` and `child` 1 week ago
Tamir Duberstein ffa65efb36
integration-ebpf: avoid mentioning the size 1 week ago
Tamir Duberstein d82ed60795
.cargo/config: use musl-cross on x86_64 as well
This allows us to run virtualized integration tests on macOS hosts.

Bump Ubuntu to 24.04 because we seem to be getting miscompilation on
x86_64 otherwise (when using `x86_64-linux-musl-gcc`). Add `apt install
liblzma-dev` since it doesn't seem to be present in ubuntu-24.04.
1 week ago
Tamir Duberstein 71f6176e24
xtask: ensure we actually built depmod 1 week ago
Tamir Duberstein 82750ae3b1
.github: attempt to enable KVM 1 week ago
Tamir Duberstein 9bc185a61e
aya-tool: simplify and improve error handling 1 week ago
Michal R 98e8c78376 aya-ebpf: Make use of `Borrow` and `BorrowMut` in map methods
Let callers pass either owned objects or references. We do that already
in the user-space methods.
1 week ago
Tamir Duberstein de42b80c74
aya,ebpf: add BPF_MAP_TYPE_SK_STORAGE
This map type requires BTF, and we can finally do it!
2 weeks ago
Tamir Duberstein 6babf17969
maps: use shared helpers 2 weeks ago
Tamir Duberstein c9b5f119a3
feature_probe: clarify composite logic 2 weeks ago
Tamir Duberstein 75edc3d294
*: downcase log strings 2 weeks ago
Tamir Duberstein 742f700dcc
maps: add newline between doc and imports 2 weeks ago
Tamir Duberstein 0013ff4e9e
ebpf: use null pointers at runtime
The values here do not matter, this is just to get type information.
2 weeks ago
Tamir Duberstein 275c5b6bbc
ebpf: use `ptr::from_ref`
This is consistent with other such conversions.
2 weeks ago
Tamir Duberstein a2324e6e50
Add Brewfile 2 weeks ago
Tamir Duberstein b73b9092ee
Add AGENTS.md 2 weeks ago
Tamir Duberstein fe99fa1d2e
ebpf: run clippy with target=bpf
This build warnings from integration tests and makes `aya-ebpf`'s build
script stricter.
2 weeks ago
Tamir Duberstein 552b69367f
xtask: remove outdated snippet
We handed this to QEMU in e3bfeb9dd6.
2 weeks ago
Tamir Duberstein bb45904b08
xtask: patch gen_init_cpio.c
Recent changes[0][1] have broken compatibility with macOS; add a patch
to conditionally compile these snippets.

Patch and compile the source unconditionally; caching only the network
portion is good enough and less error prone.

[0] ae18b94099
[1] 97169cd6d9
2 weeks ago
dependabot[bot] 8e31f5fa43
Merge pull request #1355 from aya-rs/dependabot/cargo/cargo-crates-7838c61200 2 weeks ago
dependabot[bot] ace02870f2
build(deps): update cargo_metadata requirement in the cargo-crates group
Updates the requirements on [cargo_metadata](https://github.com/oli-obk/cargo_metadata) to permit the latest version.

Updates `cargo_metadata` to 0.22.0
- [Release notes](https://github.com/oli-obk/cargo_metadata/releases)
- [Changelog](https://github.com/oli-obk/cargo_metadata/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oli-obk/cargo_metadata/compare/0.22.0...0.22.0)

---
updated-dependencies:
- dependency-name: cargo_metadata
  dependency-version: 0.22.0
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
2 weeks ago
Tamir Duberstein 5f5305c2a8
lint all crates; enable strict pointer lints 3 weeks ago
Tamir Duberstein ec3eacc1d8
Increase VM memory
Since 6.1.0-40 we're seeing `Initramfs unpacking failed: write error`.
3 weeks ago
Tamir Duberstein d1bb7bcc38
deny clippy::unnecessary_cast 3 weeks ago
Tamir Duberstein be4d74fd06
deny clippy::fn_to_numeric_cast{,_with_truncation} 3 weeks ago
Tamir Duberstein fa03dbdb46
deny clippy::char_lit_as_u8 3 weeks ago
Tamir Duberstein a7206b9098
deny clippy::cast_precision_loss 3 weeks ago
Tamir Duberstein 72104c4076
deny clippy::cast_lossless 3 weeks ago
Tamir Duberstein 82e72a14ad
Remove unused import
```
  error: unused import: `define_linear_ds_test`
    --> test/integration-ebpf/src/linear_data_structures.rs:59:5
     |
  59 | use define_linear_ds_test;
     |     ^^^^^^^^^^^^^^^^^^^^^
     |
     = note: `-D unused-imports` implied by `-D warnings`
     = help: to override `-D warnings` add `#[allow(unused_imports)]`

  error: could not compile `integration-ebpf` (bin "linear_data_structures") due to 1 previous error
```
3 weeks ago
Tamir Duberstein d1fdbb9930
Update to macOS 15 (#1351) 3 weeks ago
Thomas Eizinger e2a68ee384 aya-log: add `#[must_use]` attribute to `EbpfLogger` 3 weeks ago
Tamir Duberstein 30182463bd
aya-obj: explicitly enable hashbrown features 4 weeks ago
tamird 32071bdca7 public-api: regenerate 4 weeks ago
Michal R 0b2a544ddd aya-ebpf: Add BTF array definition
Before this change, Aya supported only legacy BPF map definitions, which
are instances of the `bpf_map_def` struct and end up in the `maps` ELF
section.

This change introduces a BTF map definition for arrays, with custom
structs indicating the metadata of the map, which end up in the `.maps`
section.

Co-authored-by: Tamir Duberstein <tamird@gmail.com>
4 weeks ago
Michal R e0ceb6214b aya-obj: Remove `Safety: union` comments
They serve no purpose, there are no unions no unsafe operations around.
4 weeks ago
Tamir Duberstein 658ae0fbb9 aya-obj: simplify using CStr::from_bytes_until_nul 4 weeks ago
Michal R d5e4e9270a aya-ebpf: Remove irrelevant `FIXME` comment
eBPF verifier in recent kernels should be smart enough to track map
map types and catch invalid pointer casts. Rust type system makes sure
that the `get` method can return only the same type the map was created
with. Therefore, safe usage of Aya map types shouldn't cause element
type mismatches.

Manual alignment checks (`pointer::is_aligned` or manual pointer
arithmetic operations) cause the following verifier error:

```
bitwise operator &= on pointer prohibited
```

And it extremely unlikely `bpf_map_lookup_elem` ever returns a
misaligned pointer.
4 weeks ago
Michal R 3569c9afc3 aya-ebpf: Take `c_void` instead of `bpf_map_def` in map helpers
`bpf_map_def` is a legacy map definition. To be able to introduce BTF
map definitions, make the `lookup` and `remove` helpers work with
`c_void` and let the callers cast the map types to it.
4 weeks ago
Adam Schreck 263e864cd9 aya: add Map::from_map_data() for pinned map access
Enables creation of Map enum variants directly from MapData instances,
allowing user-space handles to pinned BPF maps without requiring the
original BPF object.

Supports multiple BPF map types.

Motivation:
- Simplifies accessing pinned maps from user space applications.
- Avoids full BPF reloads and potential deadlocks.
- Matches existing ergonomic APIs like LruHashMap::try_from.
- Keeps user code safe and idiomatic.

Closes https://github.com/aya-rs/aya/issues/1305.

Includes test coverage to validate the new API.
4 weeks ago
Tamir Duberstein 214fe3c367
aya-log-common: seal Argument 1 month ago
Tamir Duberstein 353b83383d
aya-log-ebpf: zero copy! 1 month ago
Tamir Duberstein 3f60168d4b
ring_buf: add RingBufBytes for raw byte slices 1 month ago
Tamir Duberstein 8e2632921f
aya-log: add DST test 1 month ago