Commit Graph

1263 Commits (707c3ab49f85f625e78df9f137a1f09d3b9ce989)
 

Author SHA1 Message Date
Andrew Stoycos 707c3ab49f
update public-api
Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Andrew Stoycos 92a9eda9a9
add new programinfo constructor
Add a new ProgramInfo constructor that builds a new instance using
a raw fd.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Andrew Stoycos 58e53df2b0
add smoke test for loaded_programs()
Add a smoke test for the loaded_programs() API as well as
all the relevant methods on the ProgramInfo type.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Andrew Stoycos 4efd52cabf
add program_info API
Add a new API macro to each aya `Program` type to allow us to fetch it's
accompanying `ProgramInfo` metadata after it's been loaded.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Andrew Stoycos 728102504a
add methods to help the loaded_programs() API
Add helper methods to get useful information from the ProgramInfo
object which is returned by the `loaded_programs()` API.  Specifically
this code mirrors the bpftool program in terms of useful fields.

The methods here are not exhaustive and may expand in the future.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Andrew Stoycos 0295b63315
add map_ids field to bpf_prog_get_info_by_fd
Add an optional field (map_ids) to the syscall, this allows a pointer to
a buffer to be filled with the map_ids in use by the program.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Tamir Duberstein f334cbd86e
Merge pull request #693 from aya-rs/public-diff-backwards
xtask: reverse public API diff direction
2 years ago
Tamir Duberstein 8d7545aff8
xtask: reverse public API diff direction
This is currently producing inverse diffs.
2 years ago
Dave Tucker 41fc87c2e6
Merge pull request #691 from aya-rs/public-api-followup
public api followup
2 years ago
Tamir Duberstein 321bda7539
public-api: simplify and improve output 2 years ago
Tamir Duberstein 06d6a3e7a6
vscode: exclude public-api fixtures from search 2 years ago
ajwerner 8e144a5c29
Merge pull request #661 from ajwerner/integration-tests-in-release
integration-tests: run in release also
2 years ago
Dave Tucker e30df50fb7
Merge pull request #682 from dave-tucker/public-api
xtask: Add cargo-public-api
2 years ago
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>
2 years ago
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.
2 years ago
Tamir Duberstein 53d36a3fe0
Merge pull request #688 from aya-rs/get-fd-owned
sys: bpf_prog_get_fd_by_id returns OwnedFd
2 years ago
Tamir Duberstein eb80e6f37e
Merge pull request #689 from aya-rs/parallel-ci
github: parallel all the CI
2 years ago
Tamir Duberstein d6322d2da3
github: parallel all the CI
Human time is more precious than computer time.
2 years ago
Tamir Duberstein 76c78e3bf8
sys: bpf_prog_get_fd_by_id returns OwnedFd 2 years ago
Tamir Duberstein 51cd36378a
Merge pull request #687 from ajwerner/cargo-args
xtask: allow arbitrary flags to cargo build
2 years ago
Tamir Duberstein a6b1fb9a1e xtask: allow arbitrary flags to cargo build 2 years ago
Tamir Duberstein 5ebaf5f393
Merge pull request #683 from aya-rs/logs-wtf
Refactor log macro for readability
2 years ago
Dave Tucker 68174d7d73
Merge pull request #685 from aya-rs/dependabot/cargo/cargo_metadata-0.17.0
build(deps): update cargo_metadata requirement from 0.15.4 to 0.17.0
2 years ago
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>
2 years ago
vadorovsky aed74d5ab3
Merge pull request #669 from aya-rs/bpf-linker-hella-warnings
integration-test: shuttle linker logs to user
2 years ago
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.
2 years ago
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.
2 years ago
Dave Tucker ec5ff01e41
Merge pull request #681 from aya-rs/fix-cargo-test
test: document cargo build scripts
2 years ago
Tamir Duberstein a84bd1a95d
test: document cargo build scripts 2 years ago
Tamir Duberstein 8cec4b25f9
Revert "integration-test: add to default-members"
This reverts commit 025c76780c.

Fixes #678.
2 years ago
Dave Tucker ff11c65734
Merge pull request #680 from dave-tucker/ci-cleanup
.github: Consolidate CI workflows into one
2 years ago
Dave Tucker 3b859ba70a ci: Bump ubunutu
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
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>
2 years ago
vadorovsky f554d42105
Merge pull request #667 from vadorovsky/workspace-dependencies
cargo: Define dependencies on the workspace level
2 years ago
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.
2 years ago
Tamir Duberstein 05e782abbf
Merge pull request #677 from aya-rs/ebpf-dep-better
rebuild ebpf on bpf-linker
2 years ago
Tamir Duberstein 6fc09ca07a
integration-test: build-dep on integration-ebpf
Remove the manual dependency tracking machinery in
integration-test/build.rs in favor of a build-dependency on
integration-ebpf. This required adding an empty lib.rs to create the
library target.

This allows integration-test/build.rs to be ignorant of bpf-linker.
Remove that in favor of the logic now in integration-ebpf.
2 years ago
Tamir Duberstein e276c07f73
integration-ebpf: invalidate on bpf-linker
Extract the symlink-to-bpf-linker logic from integration-test to xtask
and use it in a new build script in integration-ebpf, causing ebpf
probes to be rebuilt when bpf-linker changes. Previously bpf-linker
changes would rebuild integration-test, but not integration-ebpf,
resulting in stale tests.

Note that this still doesn't address the possibility that a new
bpf-linker is added to the PATH ahead of the cached one. Solving this in
the general case would require rebuild-if-changed-env=PATH *and*
rebuild-if-changed={every-directory-in-PATH} which would likely mean far
too much cache invalidation.
2 years ago
Tamir Duberstein 0168396604
integration-ebpf: add cargo config
Same reasoning as the one in bpf.
2 years ago
Tamir Duberstein 025c76780c
integration-test: add to default-members
This works now that build.rs does the right thing.

Update the `miri test` command in the lint job so it has the proper
exclusions; it is now in line with the invocations in the build-test job.
2 years ago
ajwerner b28d4c34ee
Merge pull request #674 from ajwerner/use-nightly-to-build-ebpf
test/integration-test: use +nightly for ebpf
2 years ago
Andrew Werner 97eb8afeac integration-test: use nightly toolchain with ebpf
The ebpf probes require a nightly compiler. Before this change, if you
ran `cargo xtask integration-test` with a stable compiler toolchain as
default, or you ran `cargo +stable xtask integration-test`, you would
have seen an error like the one below. This is now fixed by running the
cargo build command in the integration-ebpf directory and making sure
to clear the RUSTUP_TOOLCHAIN env var.

```
  --- stderr
  /home/ajwerner/src/github.com/aya-rs/aya/test/integration-test/bpf/ring_buf_sched_tracepoint.bpf.c:18:21: warning: declaration of 'struct switch_args' will not be visible outside of this function [-Wvisibility]
  int bpf_prog(struct switch_args* ctx)
                      ^
  1 warning generated.
  error: the `-Z` flag is only accepted on the nightly channel of Cargo, but this is the `stable` channel
  See https://doc.rust-lang.org/book/appendix-07-nightly-rust.html for more information about Rust release channels.
  thread 'main' panicked at '"cargo" "build" "-p" "integration-ebpf" "-Z" "build-std=core" "--release" "--message-format=json" "--target" "bpfel-unknown-none" "--target-dir" "/home/ajwerner/src/github.com/aya-rs/aya/target/debug/build/integration-test-9bbcb3db5e9f8f57/out/integration-ebpf" exited
with status code 101:
  ', test/integration-test/build.rs:219:25
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: error while building userspace application

Caused by:
    Child { stdin: None, stdout: None, stderr: None, .. } exited with status code 101:
```
2 years ago
ajwerner 54ba471b41
Merge pull request #673 from ajwerner/update-test-readme
test: update README.md
2 years ago
Dave Tucker 7ac808cf55
Merge pull request #671 from dave-tucker/misc-fixes
Clippy fixes for latest nightly
2 years ago
Andrew Werner af747f8caa test: update README.md
A checkout of libbpf is no longer required.
2 years ago
Dave Tucker 764eb309b0 Clippy fixes for latest nightly
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
ajwerner 78ede184bd
Merge pull request #664 from ajwerner/always-initialize-submodules
xtask: ensure libbpf submodule is initialized
2 years ago
vadorovsky 2755713cf0
Merge pull request #668 from aya-rs/invalidate-bpf-linker
integration-test: invalidate on bpf-linker
2 years ago
Tamir Duberstein 55b2010f19
integration-test: invalidate on bpf-linker
It turns out that cargo ignores rerun-if-changed directives that point
into $CARGO_HOME; use a symlink to trick cargo into respecting my
authoritah.
2 years ago
Andrew Werner d5259ce789 xtask: move libbpf submodule 2 years ago