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>
.