Crate path [] [src]

IP based connection identification and

tracing

This crate is highly inspired by the netfilter project, which provides connection tracking for TCP/IP based protocols. The timeout of a connection (per default 10 minutes) is handled completely internally by using the time crate.

Example usage

use path::{Path, Identifier};
use std::net::{IpAddr, Ipv4Addr};

// Create a new `Path` for tracking `u8` values as custom data
let mut path :Path<u8, u8> = Path::new();

// Build up a new identifier from IP Addresses, their ports, and a key (in this case the IP Protocol)
let identifier = Identifier::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 1)), 1234,
                                 IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443,
                                 6);

// Do the actual work
let data = path.track(&identifier).unwrap();

// Now it is possible to set/get the custom data
assert_eq!(data.custom, None);
assert_eq!(data.packet_counter, 1);

Modules

error

Basic error handling mechanisms

Structs

Connection

Connection representation

Data

Identifies the connection

Identifier

Identifies the connection

Path

Global connection tracking structure

Subscriber

Identifies the connection endpoints