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.
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>
.
Trait Implementations
Auto Trait Implementations
impl<T, K> RefUnwindSafe for SockHash<T, K> where
K: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, K> UnwindSafe for SockHash<T, K> where
K: UnwindSafe,
T: UnwindSafe,