Commit Graph

1975 Commits (6252b4c9722c7c2ee2458741ae328dcc0c3c5234)
 

Author SHA1 Message Date
Andrew Werner 628b7fb022 aya::programs::uprobe: add support for cookies
Fixes .

Note that this change does not add support in the public API for kprobes
or tracepoints, but it's a trivial matter of plumbing.

Along the way, the Uprobe::attach API is cleaned up to make the
attachment location more coherent. The logic being: if we're going to be
breaking the API anyway, may as well clean it up a bit.

Furthermore, the aya::sys::bpf_link_attach function is cleaned up by
properly modeling the the union in the final field with a rust enum.
Mike Rostecki f34d355d7d bpf: Handle raw tracepoint arguments
Provide an `arg()` method in `RawTracepointArgs` wrapper of
`bpf_raw_tracepoint_args` and also in `RawTracepointContext`, so
it's directly available in raw tracepoint programs.

The methods and traits implemented here are unsafe. There is no
way to reliably check the number of available arguments, so
requesting a non-existing one leads to undefined behavior.
Tamir Duberstein 28a28c9872 aya-tool: enable clang_macro_fallback
See
https://docs.rs/bindgen/latest/bindgen/struct.Builder.html#method.clang_macro_fallback.
Tamir Duberstein be6370c7cd aya-tool: extract common helper
dependabot[bot] 1355a2094f
Merge pull request from aya-rs/dependabot/github_actions/github-actions-4fb87efe6a
dependabot[bot] e8b8467c18
build(deps): bump DavidAnson/markdownlint-cli2-action
Bumps the github-actions group with 1 update: [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action).


Updates `DavidAnson/markdownlint-cli2-action` from 18 to 19
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/v18...v19)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Tamir Duberstein f26ccde136 Allow `+bpo` kernels
Seems 6.10 is now being marked `+bpo`.

Improve error handling while I'm here.
Noah Kennedy df053f095b
docs: update docs for load to mention include_bytes_aligned ()
* docs: update docs for load to mention include_bytes_aligned

This macro is required if you are bundling programs statically into your binary, which is not an uncommon thing to do.

This change updates the documentation for the load function to mention this macro and the need for alignment.
Tamir Duberstein 78ee9a4634 Avoid useless conversions
Use native C types to avoid platform-dependent conversions.
Tamir Duberstein 4257643354 Clean up C type imports
Tamir Duberstein 41706d74e4 Narrow clippy allowances
Tamir Duberstein 1bf6a38619 Simplify `parse_param`
Michal Rostecki 4f0559f2af chore: Fix cippy errors
dependabot[bot] aea3efecd5
Merge pull request from aya-rs/dependabot/cargo/cargo-crates-f75f554572
dependabot[bot] af4254bc57
build(deps): update octorust requirement in the cargo-crates group
---
updated-dependencies:
- dependency-name: octorust
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
Tamir Duberstein d1457acc6d ci: cache downloads
We're seeing 429 from Github trying to download gen_init_cpio, so cache
it using actions cache. Since I'm here add this for kernel images as
well to save time waiting on slow Debian servers.
Tamir Duberstein cc2da4a2a4 ci: download gen_init_cpio with authentication
The raw endpoint[0] now[1] seems to return HTTP 429 on the first request
and unauthenticated API limits are exceeded after one request (so one of
ubuntu/macos builders fails). Hopefully this works with authentication.

Link: https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/usr/gen_init_cpio.c [0]
Link: https://github.com/orgs/community/discussions/146957 [1]
dependabot[bot] 1dfcfbcf90
Merge pull request from aya-rs/dependabot/cargo/cargo-crates-ab63383a63
dependabot[bot] 4f3ea551f3
build(deps): update bindgen requirement in the cargo-crates group
Updates the requirements on [bindgen](https://github.com/rust-lang/rust-bindgen) to permit the latest version.

Updates `bindgen` to 0.70.1
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.70.0...v0.70.1)

---
updated-dependencies:
- dependency-name: bindgen
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
Tamir Duberstein 5a43bedc01 Replace proc-macro-error with proc-macro2-diagnostics
proc-macro-error is unmaintained.
Tamir Duberstein dae394e199 aya-ebpf-macros: remove aya-ebpf version
The presence of this version specification causes cargo-smart-release to
trip on the circular dependency.

Fixes .
Tamir Duberstein 3d8cb08b7f aya-build: add explicit irrefutable pattern
This is required in Rust 1.80 at least.
Tamir Duberstein 015c0df0f4 aya-build: enable anyhow/std
This is needed before Rust 1.81.
Tamir Duberstein 6970353b58 aya-build: add description
Tamir Duberstein b01bc3f49b Use Result in integration-test's build script
Something of an experiment.
Tamir Duberstein 2b2af44915 Extract aya-build for building eBPF crates
We'll use this in the template and book to avoid duplicating all the
code.
Tamir Duberstein e0c4948e36 Extract integration-common for shared types
Tamir Duberstein c5172def75 Avoid reading env needlessly
Tamir Duberstein 806783c0fc Remove integration-ebp/rust-toolchain
Centralize the knowledge in build.rs instead.
Tamir Duberstein fd00b39f09 Enable unwinding in userspace
Unwinding gives us more information, so we shouldn't disable it
globally. It is already disabled for BPF targets via the target configs
in rustc itself.

This complicates the clippy invocation somewhat, so put it in a shell
script for developer as well as CI use.
Tamir Duberstein 1de7e728b6 Allow aya-ebpf to clippy with stable rust
The const-assert crate doesn't even compile with stable rust, so we
shouldn't depend on it. Instead we replicate its functionality behind
cfg(unstable) which is set at build time based on the toolchain in use.
Tamir Duberstein 964d63ab37 Remove stale comment
The panic has been fixed.
Tamir Duberstein 09eefd366f Remove long-dead travis config
Tamir Duberstein d92fc95c39 ci: remove cross toolchain
We aren't actually building for these targets, we only use this to pick
the set of generated definitions to use in BPF which is the true target.
Tamir Duberstein 0eb6d8c09e Revert "chore: Pin `libc` to `0.2.163`"
This reverts commit c6ec4f9b80.
dependabot[bot] 0bf67c3ce5
Merge pull request from aya-rs/dependabot/cargo/cargo-crates-ed849d205f
Tamir Duberstein 5ab67dce08
Use TargetKind enum and Target::is_proc_macro
These are added in cargo_metadata 0.19.0.
dependabot[bot] ea139050cf
build(deps): bump the cargo-crates group with 2 updates
Updates the requirements on [cargo_metadata](https://github.com/oli-obk/cargo_metadata) and [public-api](https://github.com/cargo-public-api/cargo-public-api) to permit the latest version.

Updates `cargo_metadata` to 0.18.1
- [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.18.0...0.18.1)

Updates `public-api` to 0.41.0
- [Release notes](https://github.com/cargo-public-api/cargo-public-api/releases)
- [Changelog](https://github.com/cargo-public-api/cargo-public-api/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cargo-public-api/cargo-public-api/compare/public-api-v0.41.0...public-api-v0.41.0)

---
updated-dependencies:
- dependency-name: cargo_metadata
  dependency-type: direct:production
  dependency-group: cargo-crates
- dependency-name: public-api
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>
Michal Rostecki c6ec4f9b80 chore: Pin `libc` to `0.2.163`
`0.2.164` and `0.2.165` are affected by . Pin the
last working version until a proper fix is released.
Tamir Duberstein 119049f2a2 Define `{detach,take_link}` in macro when possible
Michal Rostecki 85c73af1fe doc(aya): Improve the description of `take_link` methods
Don't mix the tenses.
Michal Rostecki bf2164c92f feat(aya): Add iterator program type
BPF iterators[0] are a way to dump kernel data into user-space and an
alternative to `/proc` filesystem.

This change adds support for BPF iterators on the user-space side. It
provides a possibility to retrieve the outputs of BPF iterator programs
both from sync and async Rust code.

[0] https://docs.kernel.org/bpf/bpf_iterators.html
Kursat Aktas c81f5e475e
Introducing Aya Guru on Gurubase.io ()
Introducing Aya Guru on Gurubase.io

Signed-off-by: Kursat Aktas <kursat.ce@gmail.com>
Tamir Duberstein a77db17ec8 cargo fmt
banditopazzo a16755089b Avoid warning with `allow_unsupported_maps`
Remove the warning log altogether; either it's an error or it isn't.
Michal Rostecki 0b58d3eb6d bpf: Add `bpf_strncmp` helper
The `bpf_strncmp` helper allows for better string comparison in eBPF
programs.

Added in https://github.com/torvalds/linux/commit/c5fb19937455095573a19.
Tamir Duberstein 2e4650e5a5 integration: alphabetize
dependabot[bot] 9e3de444ec build(deps): bump DavidAnson/markdownlint-cli2-action
Bumps the github-actions group with 1 update: [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action).


Updates `DavidAnson/markdownlint-cli2-action` from 17 to 18
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/v17...v18)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot] 68ec40fe12
Merge pull request from aya-rs/dependabot/cargo/cargo-crates-1611d6c133
dependabot[bot] f20a09d053
build(deps): update public-api requirement in the cargo-crates group
Updates the requirements on [public-api](https://github.com/cargo-public-api/cargo-public-api) to permit the latest version.

Updates `public-api` to 0.40.0
- [Release notes](https://github.com/cargo-public-api/cargo-public-api/releases)
- [Changelog](https://github.com/cargo-public-api/cargo-public-api/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cargo-public-api/cargo-public-api/compare/public-api-v0.40.0...public-api-v0.40.0)

---
updated-dependencies:
- dependency-name: public-api
  dependency-type: direct:production
  dependency-group: cargo-crates
...

Signed-off-by: dependabot[bot] <support@github.com>