Commit Graph

1828 Commits (9e3de444ecef2856fe0f37c3306e4b391f076fe7)
 

Author SHA1 Message Date
Tamir Duberstein 445cb8b463
Merge pull request from nrxus/perf-event-owned-fd
aya: Return `OwnedFd` for `perf_event_open`.
Andrés Medina dbfba18dac aya: Return `OwnedFd` for `perf_event_open`.
This fixes a file descriptor leak when creating a link of
BPF_PERF_EVENT attach type.
Dave Tucker e833a71b02
Merge pull request from dave-tucker/fix-names-once-and-for-all
aya: fix names once and for all
Tamir Duberstein 868a9b00b3
Merge pull request from aya-rs/better-panic
all: better panic messages
Dave Tucker 6d92119fbc integration-test: Add test for 2 progs in same section
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker c72aab5f7b aya-bpf-macros: Refactor for ease of testing
The aya-bpf-macros needed refactoring for:

1. Ease of testing
2. To be consistent with when we use K/V args vs. idents
3. To deprecate the use of `name` to change the exported name of a
   function - we now use the symbol table.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker bf7fdff1ce aya: Find programs using the symbol table
This makes a few changes to the way that Aya reads the ELF object
files.

1. To find programs in a section, we use the symbols table. This allows
   for cases where multiple programs could appear in the same section.
2. When parsing our ELF file we build symbols_by_section_index as an
   optimization as we use it for legacy maps, BTF maps and now programs.

As a result of theses changes the "NAME" used in `bpf.prog_mut("NAME")`
is now ALWAYS the same as the function name in the eBPF code, making the
user experience more consistent.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Tamir Duberstein 17f25a6793
all: better panic messages
Always include operands in failing assertions. Use assert_matches over
manual match + panic.
Tamir Duberstein f705eabe66
Merge pull request from Tuetuopay/tests-netns
test: add the possibility to run a test inside a network namespace
Dave Tucker 8778c4ca29
Merge pull request from aya-rs/mergify/dave-tucker/config-update
ci(Mergify): configuration update
Dave Tucker 34d1d7a9d7 ci(Mergify): configuration update
This does 3 things:

- Automatically merges Dependabot PRs that pass CI
- Labels all PRs 🙏 which was previously done manually for the release note generation
- Assigns Alessandro to review any PR for which xtask/public-api/aya.txt has changed

Signed-off-by: Dave Tucker <datucker@redhat.com>
Tuetuopay c74813f8c5 test: add the possibility to run a test inside a network namespace
For tests that do networking operations, this allows to have a
clean-state network namespace and interfaces for each test. Mainly, this
avoids "device or resource busy" errors when reusing the loopback
interface across tests.
Tamir Duberstein e95f76a5b3
Merge pull request from aya-rs/cache-again-god-damn-it
Misc testing improvements
Tamir Duberstein 8961be9526
Do not escape newlines on Err(LoadError).unwrap()
Wrap verifier logs in a newtype whose `Debug` impl emits unescaped
newlines. This improves ergonomics in tests where we `Result::unwrap()`
those load errors; when these fail today they emit the errors with
newlines escaped, making them incredibly difficult to read.
Tamir Duberstein 49cbb1366f
integration-test: rerun-if-changed=integration-ebpf
See code commentary for details.
Tamir Duberstein 13e83b24ee
Merge pull request from nrxus/use-owned-fd-for-btf
Use `OwnedFd` for BTF's file descriptor
Andrés Medina ea96c29ccb aya: Use Arc<OwnedFd> when loading BTF fd
This fixes an existing file descriptor leak when there is BTF data in
the loaded object.

To avoid lifetime issues while having minimal impact to UX the
`OwnedFd` returned from the BPF_BTF_LOAD syscall will be wrapped in an
`Arc` and shared accross the programs and maps of the loaded BPF
file.
Andrés Medina 683a1cf2e4 aya: Make SysResult generic on Ok variant
Andrés Medina c63d9904f7 Replace std::os::unix::io for std::os::fd
This is just taking https://github.com/aya-rs/aya/pull/633 to its
logical conclusion. Because `std::os::fd` was only introduced as a
module in Rust v1.66.0 I have also updated the `Cargo.toml` of the
`aya` package to reflect the true MSRV. Note that this commit is *not*
the cause for this MSRV bump, that was done by a previous commit, this
commit is just making it explicit in the `Cargo.toml`
ajwerner 1bc9a1ad04
Merge pull request from aya-rs/log-env-too
integration-test: Remove RUSTC from cargo-in-cargo
Tamir Duberstein d62ae98889
integration-test: Remove RUSTC from cargo-in-cargo
Fixes .
Tamir Duberstein f334cbd86e
Merge pull request from aya-rs/public-diff-backwards
xtask: reverse public API diff direction
Tamir Duberstein 8d7545aff8
xtask: reverse public API diff direction
This is currently producing inverse diffs.
Dave Tucker 41fc87c2e6
Merge pull request from aya-rs/public-api-followup
public api followup
Tamir Duberstein 321bda7539
public-api: simplify and improve output
Tamir Duberstein 06d6a3e7a6
vscode: exclude public-api fixtures from search
ajwerner 8e144a5c29
Merge pull request from ajwerner/integration-tests-in-release
integration-tests: run in release also
Dave Tucker e30df50fb7
Merge pull request from dave-tucker/public-api
xtask: Add cargo-public-api
Dave Tucker f833f1fc1d xtask: Add cargo-public-api
Adds cargo-public-api. This allows for public API changes to get caught
in CI, requiring new changes to be "blessed" by using:

  cargo xtask public-api --bless

When this file is changed for aya, Alessandro will need to review the PR.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Andrew Werner 7575628d1b integration-tests: run in release also
In release, the trigger functions were being optimized out and the
tests did not work. Use core::hint::black_box to ensure that the
functions are not optimized out. Also, run these integration tests
in CI to ensure that we don't regress.
Tamir Duberstein 53d36a3fe0
Merge pull request from aya-rs/get-fd-owned
sys: bpf_prog_get_fd_by_id returns OwnedFd
Tamir Duberstein eb80e6f37e
Merge pull request from aya-rs/parallel-ci
github: parallel all the CI
Tamir Duberstein d6322d2da3
github: parallel all the CI
Human time is more precious than computer time.
Tamir Duberstein 76c78e3bf8
sys: bpf_prog_get_fd_by_id returns OwnedFd
Tamir Duberstein 51cd36378a
Merge pull request from ajwerner/cargo-args
xtask: allow arbitrary flags to cargo build
Tamir Duberstein a6b1fb9a1e xtask: allow arbitrary flags to cargo build
Tamir Duberstein 5ebaf5f393
Merge pull request from aya-rs/logs-wtf
Refactor log macro for readability
Dave Tucker 68174d7d73
Merge pull request from aya-rs/dependabot/cargo/cargo_metadata-0.17.0
build(deps): update cargo_metadata requirement from 0.15.4 to 0.17.0
dependabot[bot] 4b6579e2f1
build(deps): update cargo_metadata requirement from 0.15.4 to 0.17.0
Updates the requirements on [cargo_metadata](https://github.com/oli-obk/cargo_metadata) to permit the latest version.
- [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.15.4...0.15.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
vadorovsky aed74d5ab3
Merge pull request from aya-rs/bpf-linker-hella-warnings
integration-test: shuttle linker logs to user
Tamir Duberstein b3db9161eb
Refactor log macro for readability
This happens to fix the miscompilation that occurs when bpf-linker is
moved to LLVM's new pass manager. A later commit will avoid the
miscompilation more convincingly.
Tamir Duberstein 74fc50bf7e
integration-test: shuttle stdio to user
Trampoline cargo-in-cargo stdio through cargo:warning to ensure the user
sees all the output.

Use bpf-linker from git in CI so we can see what's going on there.
Dave Tucker ec5ff01e41
Merge pull request from aya-rs/fix-cargo-test
test: document cargo build scripts
Tamir Duberstein a84bd1a95d
test: document cargo build scripts
Tamir Duberstein 8cec4b25f9
Revert "integration-test: add to default-members"
This reverts commit 025c76780c.

Fixes .
Dave Tucker ff11c65734
Merge pull request from dave-tucker/ci-cleanup
.github: Consolidate CI workflows into one
Dave Tucker 3b859ba70a ci: Bump ubunutu
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Dave Tucker cf0c866458 .github: Consolidate CI workflows into one
This gives a better view of the CI pipeline in Github.
Gives us control over what runs and when.
And finally, lets us check only a single status in mergify.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
vadorovsky f554d42105
Merge pull request from vadorovsky/workspace-dependencies
cargo: Define dependencies on the workspace level
Mike Rostecki 96fa08bd82 cargo: Define dependencies on the workspace level
This way we will avoid version mismatches and make differences in
features across our crates clearer.