path

Crates.iopath
lib.rspath
version0.8.2
sourcesrc
created_at2016-12-22 15:52:08.278736
updated_at2017-02-01 13:12:20.409741
descriptionIP based connection identification and tracing
homepagehttps://github.com/saschagrunert/path
repositoryhttps://github.com/saschagrunert/path
max_upload_size
id7723
size25,090
Sascha Grunert (saschagrunert)

documentation

https://docs.rs/path

README

path

Build Status Build status Coverage Status master doc path License MIT Crates.io doc.rs

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 connection = path.track(identifier).unwrap();

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

cargo fmt