Commit Graph

1410 Commits (d7086ab132d3322ef84cc89410283f79eab2f40c)
 

Author SHA1 Message Date
Tuetuopay d7086ab132 bpf/devmap: don't expose `bpf_devmap_value`
Use our own type that:
- is stable as not from bindgen
- does not have an union inside
2 years ago
Tuetuopay f77b07ffd6 maps/xdp: use ProgramFd instead of impl AsRawFd
Not having a generic here allows to pass `None` without specifying the
actual type you don't care about.
2 years ago
Tuetuopay df51dd7ae4 maps/xdp: drop the possibly-unsafe {Cpu,Dev}MapValue conversions
Making a `From` impl that hides an unsafe with some safety guarantee is
actually unsafe, because while we know how we use this impl, we don't
know how other will. And since it's on two public types, anything can
be done.
2 years ago
Tuetuopay 545199a3da maps/xdp: improve XDP maps documentation 2 years ago
Tuetuopay 7474b6b6a0 bpf: add documentation for XDP maps 2 years ago
Tuetuopay f4d6f80342 bpf: make xdp maps functions safe
Values in those map are small enough to return copied values instead of
reference to values.
2 years ago
Tuetuopay a9c4a2f476 aya: fix docstring missing trailing period 2 years ago
Tuetuopay 96ff77d268 xdp: add support for chained xdp programs in {cpu,dev}map
set/insert functions can now take an optional bpf program fd to run once
the packet has been redirected from the main probe
2 years ago
Tuetuopay 4d06c651ae aya: add support for map-bound XDP programs
Such programs are to be bound to cpumap or devmap instead of the usual
network interfaces.
2 years ago
Tuetuopay 238bcc6e74 macros: add 'map' option to xdp macro
This option allows to place the program in the specific sections to
chain programs with devmaps and cpumaps.
2 years ago
Tuetuopay 076f2c4664 bpf: Update XDP maps implementation
The implementation changed since the original commit was written, and
some mistakes went in:
- missing bpf_redirect_map wrapper
- extra bpf_map_lookup_elem on maps for which it is forbidden
2 years ago
Tuetuopay 58f8f4aabf aya: Update XDP maps implementations
Map impls changed since this was first written.

Fixes: 2b726c8 ("aya: Implement XDP Map Types")
2 years ago
Dave Tucker decdc175cd bpf: Implement XDP maps
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Dave Tucker 75d23e7b97 aya: Implement XDP Map Types
This commit adds implementations for:
- xskmap
- devmap
- devmap_hash
- cpumap

Which can all be used to redirect XDP packets to various different
locations

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Tamir Duberstein 461c2759c5
Merge pull request #765 from aya-rs/more-utf8-fixes
aya: support non-UTF8 probing
2 years ago
Tamir Duberstein 1ccfdbc175
aya: support non-UTF8 probing
Fixes #751.
2 years ago
Tamir Duberstein 8ffd9bb236
Merge pull request #742 from aya-rs/avoid-utf-assumption
maps,programs: avoid path UTF-8 assumptions
2 years ago
Tamir Duberstein 0bba9b14b0
maps,programs: avoid path UTF-8 assumptions 2 years ago
Tamir Duberstein 572d047e37
test: avoid lossy string conversions
We can be strict in tests.
2 years ago
Tamir Duberstein ff8c124770
Merge pull request #763 from aya-rs/lints
aya: deny various allow-by-default lints
2 years ago
Tamir Duberstein fb00fa13f3
Merge pull request #762 from aya-rs/remove-workaround
integration-test: Remove cargo symlink workaround
2 years ago
Tamir Duberstein ca2e43d318
integration-test: Remove cargo symlink workaround
https://github.com/rust-lang/cargo/pull/12369 fixed this bug and was
picked up in https://github.com/rust-lang/rust/pull/114027.
2 years ago
Tamir Duberstein abda239d63
aya: deny various allow-by-default lints
Notably:
- clippy::use_self: replaced many T with Self.
- single_use_lifetimes: removed some single use lifetimes.
- unreachable_pub: removed some unreachable pub items.
- unused_crate_dependencies: removed unused futures,parking_lot deps.
- unused_qualifications: found a potential `crate` vs `$crate` bug.
- let_underscore_drop: not enabled, seems to trigger false positives.
- missing_copy_implementations: not enabled, unclear if we want this.
- unsafe_op_in_unsafe_fn: not enabled, unclear if we want this.
- unused_results: not enabled, needs many fixes (but I think wanted).
2 years ago
vadorovsky 1fa1241ccb
Merge pull request #764 from aya-rs/fix-docs
aya: fix docs build
2 years ago
Tamir Duberstein b91d90d6b9
github: build qemu from source if bad signature
See https://github.com/Homebrew/homebrew-core/issues/140244.
2 years ago
Tamir Duberstein 9ff1bf3d3b
aya: fix docs build
Appease the new lint rustdoc::redundant_explicit_links that was added in
https://github.com/rust-lang/rust/pull/113167.
2 years ago
Tamir Duberstein 47a09a4ec9
Merge pull request #761 from aya-rs/mac-broken-qemu
Fix macOS CI
2 years ago
Tamir Duberstein 756e6b979a
github: brew reinstall qemu
See https://github.com/Homebrew/homebrew-core/pull/139492.
2 years ago
Tamir Duberstein 9ba0b04207
github: use gnubin rather than bespoke symlinks 2 years ago
Tamir Duberstein 1d5f764d07
Merge pull request #758 from aya-rs/map-fd-not-option
aya: MapData::fd is non-optional
2 years ago
Tamir Duberstein a31544b6e7
maps: BloomFilter::insert takes &mut self
This is consistent with all the other maps.
2 years ago
Tamir Duberstein 89bc255f1d
aya: MapData::fd is non-optional
The primary driver of change here is that `MapData::create` is now a
factory function that returns `Result<Self, _>` rather than mutating
`&mut self`. The remaining changes are consequences of that change, the
most notable of which is the removal of several errors which are no
longer possible.
2 years ago
Tamir Duberstein c7b5cd5eb5
Merge pull request #757 from aya-rs/attach-fd-owned
programs: `ProgramData::attach_prog_fd` is owned
2 years ago
Tamir Duberstein 3d68fa32cb
aya: use RAII to close FDs 2 years ago
Tamir Duberstein ae6526e59b
programs: `ProgramData::attach_prog_fd` is owned
This prevents a file descriptor leak when extensions are used.

This is an API breaking change.

Updates #612.
2 years ago
Tamir Duberstein 8b3a93161d
xtask: bless API with new nightly 2 years ago
dependabot[bot] befa55eafc
Merge pull request #755 from aya-rs/dependabot/cargo/num_enum-0.7 2 years ago
dependabot[bot] 623cfd89bf
build(deps): update num_enum requirement from 0.6 to 0.7
Updates the requirements on [num_enum](https://github.com/illicitonion/num_enum) to permit the latest version.
- [Commits](https://github.com/illicitonion/num_enum/compare/0.6.0...0.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2 years ago
dependabot[bot] 9b72d6d260
Merge pull request #754 from aya-rs/dependabot/cargo/object-0.32 2 years ago
dependabot[bot] d0838a7688
build(deps): update object requirement from 0.31 to 0.32
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.31.0...0.31.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2 years ago
Tamir Duberstein e813a054ad
Merge pull request #744 from aya-rs/programfd-borrowed
programs: `ProgramFd` is owned
2 years ago
Tamir Duberstein 504fd1df0a
programs: `ProgramFd` is owned
`ProgramData::fd` is now a `ProgramFd`. This means that `ProgramData`
now closes the file descriptor on drop. In the future we might consider
making `ProgramFd` hold a `BorrowedFd` but this requires API design work
due to overlapping borrows.

Since `ProgramFd` is no longer `Copy`, update methods to take it by
reference to allow callers to use it multiple times as they are
accustomed to doing.

`ProgramFd` is now returned by reference and implements `try_clone` to
allow callers to avoid file descriptor cloning when desired.

This is an API breaking change.

Updates #612.
2 years ago
Tamir Duberstein 7874ad99f7
Merge pull request #756 from aya-rs/wget
github: fix CI
2 years ago
Tamir Duberstein 6740c43a02
github: update 6.4.0 URLs
Seems the previous spin was pulled.
2 years ago
Tamir Duberstein 89eafd139d
github: use gxargs on macOS
`xargs -P0` always exits 0 on macOS, even on error.
2 years ago
Tamir Duberstein 47a8a4b878
github: reduce wget verbosity, remove -q
This allows errors to be shown; -q hides *all* output, which is not what
we want.
2 years ago
Andrew Stoycos bcc9743254
Merge pull request #637 from astoycos/helpers
Add more helpful methods to `ProgramInfo`
2 years ago
Andrew Stoycos e1a556894c
aya: add helper methods for ProgramInfo
- 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 prog` command in terms of useful fields.
- Add a new API macro to each aya `Program` type to allow us to fetch
its accompanying `ProgramInfo` metadata after its been loaded.
- Add a new ProgramInfo constructor that builds a new instance using
a raw fd.
- 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
Dave Tucker 03c5012db2
Merge pull request #702 from dave-tucker/mapdata-btffd
aya: Don't store btf_fd in MapData
2 years ago
Dave Tucker 8ce1c00ad8
Merge pull request #749 from dave-tucker/clang-format
.github: Add clang-format
2 years ago