Commit Graph

1436 Commits (938f979fe7a82f6d31c3b7e926682864c507e381)
 

Author SHA1 Message Date
Ubuntu 0beb0c501f Add bpf_lpm_trie_key to aya codegen to generate bindings 3 years ago
Alessandro Decina 001348a301
Merge pull request #158 from dave-tucker/btf-fix
aya: allocate func/line_info buffers outside if
3 years ago
Dave Tucker 83cfe56fe7 aya: allocate func/line_info buffers outside if
the pointer isn't valid in the current code!

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker bca01580e7 aya: document the public api
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina c5a10f8fbe
Merge pull request #127 from dave-tucker/ext
Support for BPF_PROG_TYPE_EXT
3 years ago
Dave Tucker 877c76043a btf: Add fixup for PTR types from Rust
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker 5c6131afba Add BPF_PROG_TYPE_EXT
This requires loading the BTF to kernel when loading all programs as
well as implementing Extension program type

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker 379bb313b1 obj: Add Btf::to_bytes
This allows for parsed BTF to be re-encoded such that it could be loaded
in to the kernel. It moves bytes_of to the utils package. We could use
Object::bytes_of, but this requires the impl of the Pod trait on
generated code.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina c3cd45c6df
Merge pull request #154 from dave-tucker/release-notes
ci: Add dependencies/codegen/docs to rel notes
3 years ago
Dave Tucker d2449ca292 ci: add docs to release notes
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker fbed584f78 ci: Add dependencies/codegen to rel notes
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina 2ea6d68544
Merge pull request #152 from dave-tucker/release-notes
ci: Add autogenerated release notes
3 years ago
Dave Tucker dc16739b06 ci: Add autogenerated release notes
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina 923cd9b767
Merge pull request #142 from vadorovsky/args-mut-ptr
aya-bpf: Add bpf_probe_write_user helper
3 years ago
Michal Rostecki 1df3b17d29 aya-bpf: Add bpf_probe_write_user helper
This helper allows to write to mutable pointers in the userspace, which
come from userspace functions that uprobes attach to.

Signed-off-by: Michal Rostecki <mrostecki@opensuse.org>
3 years ago
Alessandro Decina 5836b3f1b8
Merge pull request #149 from willfindlay/program_array
bpf/maps: implement ProgramArray
3 years ago
Alessandro Decina 149fa86de7
Merge pull request #150 from willfindlay/fix-tests
bpf/macros: fix tests
3 years ago
William Findlay b28ae97053
bpf/macros: fix tests
Doctests were broken due to depencencies on a generated vmlinux, incorrect function
signatures, and a missing unsafe keyword.
3 years ago
William Findlay df26fd94a7
bpf/program_array: use never type, add unsafe flag, and document safety 3 years ago
William Findlay ff14493751
bpf/maps: implement ProgramArray
This PR implements the ProgramArray map type in aya-bpf. Includes a convenient tail_call
method that wraps the bpf_tail_call helper.
3 years ago
Alessandro Decina faa36763f7
Merge pull request #146 from dave-tucker/ro-maps
Mark .rodata maps as readonly and freeze on load
3 years ago
Michal Rostecki 54377b6140 aya-bpf: Allow to convert probe arguments to mutable pointers
Before this change, arguments fetched with `arg` from `ProbeContext`
could be only fetched as const pointers. This change allows to get mut
pointers as well.

Signed-off-by: Michal Rostecki <mrostecki@opensuse.org>
3 years ago
Michal Rostecki 5d8afc58f4 aya-bpf-macros: Fix LSM macro documentation
It was causing `cargo doc` inside bpf/ to fail.

Signed-off-by: Michal Rostecki <mrostecki@opensuse.org>
3 years ago
Dave Tucker 65a0b83205 Mark .rodata maps as readonly and freeze on load
This commit marks .rodata maps as BPF_F_RDONLY_PROG when loaded to
prevent a BPF program mutating them.

Initial map data is populated by the loader using the new
`BpfLoader::set_global()` API. The loader will mark
is marked as frozen using bpf_map_freeze to prevent map data
being changed from userspace.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina 3a4c84fe17
Merge pull request #145 from aya-rs/codegen
Update libbpf to 19656636a9b9a2de1f71fa3135709295c16701cc
3 years ago
Dave Tucker 2b7dda766f btf: Fix for rename of BPF_ -> BPF_CORE_
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
dave-tucker 05d4bc39ea Update libbpf to 19656636a9b9a2de1f71fa3135709295c16701cc 3 years ago
Dave Tucker ef42739c65 .github: force push to codegen branch
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker f8021c33fc codegen: Add bindings for BPF_F flags
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker 23d1920854 codegen: add bindings for btf structs
This adds `bpf_btf_info` which can be used to get BPF information via a
syscall. It also adds `btf_line_info` and `btf_func_info` which are
required to parse the line and func info sections of BTF

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Dave Tucker facb01f34b ci: Use crabby-the-crab
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Michal Rostecki 7e2fcd1d6d Support for fentry and fexit programs
fentry and fexit programs are similar to kprobe and kretprobe, but they
are newer and they have practically zero overhead to call before or
after kernel function. Also, fexit programs are focused on access to
arguments rather than the return value.

Those kind of programs were introduced in the following patchset:

https://lwn.net/Articles/804112/

Signed-off-by: Michal Rostecki <mrostecki@opensuse.org>
3 years ago
dependabot[bot] 54b0c67795 build(deps): update object requirement from 0.27 to 0.28
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.27.0...0.28.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
3 years ago
Alessandro Decina 317fd576b4
Merge pull request #138 from dave-tucker/nightly
github: Set toolchain override
3 years ago
Dave Tucker 7e7314ff2b github: Set toolchain override
This ensures that the cache action uses the correct Rust version

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago
Alessandro Decina 6313ddfe0c
Merge pull request #136 from nimrodshn/add_impl_pod_for_u128
Implement Pod for u128 and i128
3 years ago
Ubuntu 24a292f605 Implement Pod for u128 3 years ago
Alessandro Decina f34b76c8d3
Merge pull request #134 from aya-rs/codegen
Update libbpf to 93e89b34740c509406e948c78a404dd2fba67b8b
3 years ago
dave-tucker 17d43cd6f8 Update libbpf to 93e89b34740c509406e948c78a404dd2fba67b8b 3 years ago
Alessandro Decina 26d188c659
Merge pull request #125 from dave-tucker/btf
obj: Improve section detection
3 years ago
Alessandro Decina 32dc8a0d97
Merge pull request #132 from eero-thia/thia/safe_map
aya-bpf: remove unnecessary unsafe markers on map functions.
3 years ago
Alessandro Decina 441a660b3e
Merge pull request #131 from eero-thia/thia/safe_iter
aya: Remove unnecessary unsafe markers on map iteration.
3 years ago
Thia Wyrod b655cf973f
aya-bpf: remove unnecessary unsafe markers on map functions.
Map lookup and deletion can yield stale keys and values by virtue of
sharing a data structure with userspace programs and other BPF programs
which can modify it. However, all accesses remain perfectly safe and will
not cause memory corruption or data races.
3 years ago
Thia Wyrod 18970369e2
aya: Remove unnecessary unsafe markers on map iteration.
Map iteration can yield stale keys and values by virtue of sharing a
data structure with BPF programs which can modify it. However, all
accesses remain perfectly safe and will not cause memory corruption or
data races.
3 years ago
Alessandro Decina 07a6016ebb
Merge pull request #120 from eero-thia/thia/dedup
aya: eliminate name duplication in maps and programs.
3 years ago
Thia Wyrod f56dd0a70b
aya: eliminate name duplication in maps and programs.
Map and ProgramData objects had unnecessarily cloned strings for their
names, despite them being just as easily available to external users via
bpf.maps() and bpf.programs().
3 years ago
Alessandro Decina 8043451973 bpf: re-export Lru hash maps from aya_bpf::maps 3 years ago
Alessandro Decina a340c2a9fa
Merge pull request #130 from wg/main
aya: use correct program name when relocating
3 years ago
Will bb8a813eef aya: use correct program name when relocating 3 years ago
Dave Tucker e4d9774bf7 obj: Improve section detection
This commit improves section detection.
Previously, a section named "xdp_metadata" would be interpretted as a
program section, which is incorrect. This commit first attempts to
identify a BPF section by name, then by section.kind() ==
SectionKind::Text (executable code). The computed section kind is
stored in the Section so variants can be easily matched on later.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
3 years ago