10 个版本 (破坏性更新)

使用旧的 Rust 2015

0.8.2 2017 年 2 月 1 日
0.7.0 2017 年 1 月 5 日
0.4.0 2016 年 12 月 25 日

#19 in #identification

Download history 23/week @ 2024-03-14 18/week @ 2024-03-21 29/week @ 2024-03-28 29/week @ 2024-04-04 28/week @ 2024-04-11 18/week @ 2024-04-18 16/week @ 2024-04-25 16/week @ 2024-05-02 26/week @ 2024-05-09 25/week @ 2024-05-16 19/week @ 2024-05-23 22/week @ 2024-05-30 17/week @ 2024-06-06 19/week @ 2024-06-13 22/week @ 2024-06-20 9/week @ 2024-06-27

71 次每月下载
peel-ip 中使用

MIT 许可协议

15KB
234

path

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

IP 基于的连接识别和追踪

此 crate 受 netfilter 项目的极大启发,该项目为基于 TCP/IP 的协议提供连接跟踪。连接的超时(默认为 10 分钟)完全由使用 time crate 来处理。

示例用法

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

依赖项

~3.5–5MB
~98K SLoC