Commit Graph

1043 Commits (5fa17a192bf295c4977d4a86d64efe70d83e8d51)
 

Author SHA1 Message Date
Shenghui Ye 311ead6760 aya-obj: add integration tests against rbpf
Shenghui Ye e52497cb9c aya-obj: add basic documentation to public members
Types relevant to maps are moved into aya_obj::maps.
Some members are marked `pub(crate)` again.

Refs: 
Shenghui Ye ac49827e20 aya-obj: migrate aya::obj into a separate crate
To split the crate into two, several changes were made:
1. Most `pub(crate)` are now `pub` to allow access from Aya;
2. Parts of BpfError are merged into, for example, RelocationError;
3. BTF part of Features is moved into the new crate;
4. `#![deny(missing_docs)]` is removed temporarily;
5. Some other code gets moved into the new crate, mainly:
   - aya::{bpf_map_def, BtfMapDef, PinningType},
   - aya::programs::{CgroupSock*AttachType},

The new crate is currenly allowing missing_docs. Member visibility
will be adjusted later to minimize exposure of implementation details.

Refs: 
Shenghui Ye 81bc307dce aya-obj: migrate bindgen destination
Aya::obj depends on bindgen generated files, and we start
by migrating bindgen generated files.

This commit adds the new aya-obj crate to the workplace
and migrates generated files into the crate. We use core
instead of std in an effort to make the final crate no_std.

Bindgen was run against libbpf v1.0.1.

Refs: 
Alessandro Decina c6f93b1775 btf relocs: don't panic on failed relocation
Error out instead of panicing when we can't find a compatible target
candidate for a relocation.
Alessandro Decina aba99ea4b1 btf: make btf::RelocationError private
BpfError::RelocationError type erases the inner error so no need to
export the type.
Alessandro Decina 63bbef46da Fix lints
Alessandro Decina 12e422b211 btf: fix regression computing pointer sizes
Computing pointer sizes was broken in 
Tuetuopay 890e8c9340 bpf: fix set_mark by not copying __sk_buff
Such an assignment in two parts (first deref in `unsafe`, then field
access outside of `unsafe`) is bogus: the deref "returned" by the
`unsafe` block actually creates a copy of the `__sk_buff` struct because
it implements `Copy`. The mark value is written to the `mark` field of
the copy, and not the real `__sk_buff`.

Change it to do it all in the `unsafe` block.

The same is done for the `.len()` getter to avoid copying the whole
`__sk_buff` struct for a 32 bit field. Although such a copy should be
optimized out by the compiler, it's better to help it do so.
ajwerner 12927cf699 Don't panic in init when bpf programs don't log
This was broken in d6cb1a16ad.
ajwerner 1a22792ee7 Resolve symbol address for PIE executables
See https://github.com/foniod/redbpf/pull/308 for a similar change.
Alessandro Decina b3ae7786d3 aya: fix detaching links on drop
https://github.com/aya-rs/aya/pull/366 broke detaching links on drop for
everything but FdLink. This restores detach on drop for all links.
Michal Rostecki 9f5d157628
Merge pull request from FallingSnow/main
Add ability to iterate over LpmTrie keys and matches
Ayrton Sparling 10ac5957c1
Fix LpnTrieKeys -> LpmTrieKeys typo
Alessandro Decina d1919a83ed
Merge pull request from bpfdeploy-io/ml/cgroup-device
Add support for BPF_PROG_TYPE_CGROUP_DEVICE
Milan 925504f230 Fix doctest issue
Milan 4b6d97e4db Fix CI, clippy and feedback
Signed-off-by: Milan <milan@mdaverde.com>
Milan 8f1163a400 Add support for BPF_PROG_TYPE_CGROUP_DEVICE
Kernel 4.15 added a new eBPF program that can
be used with cgroup v2 to control & observe device
access (e.g. read, write, mknod) - `BPF_PROG_TYPE_CGROUP_DEVICE`.

We add the ability to create these programs with the `cgroup_device`
proc macro which creates the `cgroup/dev` link section. Device
details are available to the eBPF program in `DeviceContext`.

The userspace representation is provided with the `CgroupDevice`
structure.

Fixes: 
Signed-off-by: Milan <milan@mdaverde.com>
Alessandro Decina 9ce1530695 tests: skip tests that assume bpf_link based XDP on older kernels
Ayrton Sparling a44f054bec fix formatting
Alessandro Decina 66d435fc7c
Merge pull request from Tuetuopay/owned-per-cpu-hash-map
maps: add missing TryFrom<Map> for HashMap, PerCpuHashMap and LpmTrie
Ayrton Sparling 1368eb94e7 Remove old test
Ayrton Sparling 9a3682e793 Add ability to iterate over lpmtrie key matches
Ayrton Sparling 8fe64aef1f Fix lpmtrie iter returning nothing
Alexis Bauvin 51bb50ed8e maps: add missing TryFrom<Map> for HashMap, PerCpuHashMap and LpmTrie
Ayrton Sparling e4182a9eab Iterate lpmtrie
Michal Rostecki 16b029ed37
Merge pull request from dmitris/uninlined_format_args
autofix clippy uninlined_format_args issues
Dmitry Savintsev 055d94f58b fix uninlined_format_args clippy issues
Dmitry Savintsev 22340764a3 upgrade clap to 4.x
Michal Rostecki 52b9ffed60
Merge pull request from aya-rs/dependabot/cargo/bindgen-0.63
build(deps): update bindgen requirement from 0.61 to 0.63
Michal Rostecki 1ded0e61cd
Merge pull request from aya-rs/dependabot/cargo/object-0.30
build(deps): update object requirement from 0.29 to 0.30
Michal Rostecki f9bef9f8c0
Merge pull request from aya-rs/dependabot/cargo/env_logger-0.10
build(deps): update env_logger requirement from 0.9 to 0.10
dependabot[bot] 1c8088b16c
build(deps): update env_logger requirement from 0.9 to 0.10
Updates the requirements on [env_logger](https://github.com/rust-cli/env_logger) to permit the latest version.
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.9.0...v0.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot] 1fe7bba070
build(deps): update object requirement from 0.29 to 0.30
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.
- [Release notes](https://github.com/gimli-rs/object/releases)
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.29.0...0.30.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot] 9608da58a1
build(deps): update bindgen requirement from 0.61 to 0.63
Updates the requirements on [bindgen](https://github.com/rust-lang/rust-bindgen) to permit the latest version.
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.61.0...v0.63.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Michal Rostecki 9382de75cc
Merge pull request from vadorovsky/fix-lint
Fix clippy error
Michal Rostecki d2b44c1e0f github: Refresh package cache before installing pre-requisites
Signed-off-by: Michal Rostecki <vadorovsky@gmail.com>
Michal Rostecki 176d61ae23 Fix clippy error
`'local` lifetime can be elided to `'_` which triggers:

https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes

Signed-off-by: Michal Rostecki <vadorovsky@gmail.com>
Alessandro Decina 7fef833e3a
Merge pull request from anfredette/tc-handle
Support using handle in tc programs
Andre Fredette abb75ba029 Make doc fixes
Signed-off-by: Andre Fredette <afredette@redhat.com>
Alessandro Decina 88d7777553
Merge pull request from 0b01/refs
aya: use impl Borrow<T> instead of T for maps
Alessandro Decina 0b41018ee2 Revert "aya-log, aya-log-common: temporarily revert to old map API so we can release"
This reverts commit 0d040d2290.
Alessandro Decina 832bdd280c {{crate_name}}: release version 0.1.13
Alessandro Decina 0d040d2290 aya-log, aya-log-common: temporarily revert to old map API so we can release
Alessandro Decina dfb03382f6 release.toml: fix pre/post release templates
Alessandro Decina 5d0527ae51 release.toml: dev-version* are gone too
Alessandro Decina a564ab6e5b release.toml: consolidate-pushes doesn't exist anymore
0b01 76e417a474 Fix formatting
Dave Tucker 3adb9b049f
Merge pull request from vadorovsky/aya-log-mac-addr
aya-log: Add format hints for MAC addresses
tiann 49404367d8 bpf: Add bindings for uid and gid