Struct aya::maps::sock::SockHash [−][src]
Expand description
A hash map of TCP or UDP sockets.
A SockHash
is used to store TCP or UDP sockets. eBPF programs can then be
attached to the map to inspect, filter or redirect network buffers on those
sockets.
A SockHash
can also be used to redirect packets to sockets contained by the
map using bpf_redirect_map()
, bpf_sk_redirect_hash()
etc.
Minimum kernel version
The minimum kernel version required to use this feature is 4.18.
Examples
use std::convert::{TryFrom, TryInto}; use std::io::Write; use std::net::TcpStream; use std::os::unix::io::AsRawFd; use aya::maps::SockHash; use aya::programs::SkMsg; let mut intercept_egress = SockHash::try_from(bpf.map_mut("INTERCEPT_EGRESS")?)?; let prog: &mut SkMsg = bpf.program_mut("intercept_egress_packet")?.try_into()?; prog.load()?; prog.attach(&intercept_egress)?; let mut client = TcpStream::connect("127.0.0.1:1234")?; intercept_egress.insert(1234, client.as_raw_fd(), 0)?; // the write will be intercepted client.write_all(b"foo")?;
Implementations
Returns the fd of the socket stored at the given key.
An iterator visiting all key-value pairs in arbitrary order. The
iterator item type is Result<(K, V), MapError>
.