This change exposes the ifindex field from the underlying xdp_md
data structure to the XdpContext in Aya. The ifindex represents the
unique OS-provided index for a network interface.
Fixes#1140
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.
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.
This API doesn't make sense as the max_entries needs to be set to the
number of online CPUs by the loader.
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
Added new public API for the `XdpContext`:
- `adjust_head` : To grow the packet buffer at the beginning
- `adjist_tail` : To grow the packet buffer at the end
- `adjust_meta` : To grow metadata area
These API are handy for packet processing when additional headers etc.
are to be pushed to the packet.
Also added these APIs using `cargo xtask public-api --bless`
Refs: #948