Skip to content

IP based connection identification and tracing 👟

License

Notifications You must be signed in to change notification settings

saschagrunert/path

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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);