Struct aya::maps::sock::SockHash[][src]

pub struct SockHash<T: Deref<Target = Map>, K> { /* fields omitted */ }
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>.

An iterator visiting all keys in arbitrary order. The iterator element type is Result<K, MapError>.

Inserts a socket under the given key.

Removes a socket from the map.

Trait Implementations

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.