Natpmp
NAT-PMP library in rust
Install / Use
/learn @fengyc/NatpmpREADME
natpmp
NAT-PMP client library in rust, a rust implementation of the c library libnatpmp(https://github.com/miniupnp/libnatpmp).
Versions
Version 0.2.x supports rust 2018 edition.
Version 0.3.x+ supports tokio and async-std.
Example
Create a natpmp object with system default gateway:
use natpmp::*
let n = Natpmp::new()?
Or a specified gataway:
use std::str::FromStr;
use natpmp::*;
let n = Natpmp::new("192.168.0.1").parse.unwrap())?
To determine the external address, send a public address request:
n.send_public_address_request()?;
To add a port mapping, send a port mapping request:
n.send_port_mapping_request(Protocol::UDP, 4020, 4020, 30)?;
And then read response after a few milliseconds:
use std::thread;
use std::time::Duration;
thread::sleep(Duration::from_millis(250));
let response = n.read_response_or_retry()?;
Check response type and and result:
match response {
Response::Gateway(gr) => {}
Response::UDP(ur) => {}
Response::TCP(tr) => {}
}
Async
Enable feature tokio or async-std in Cargo.toml (default feature tokio).
cargo add natpmp --features tokio
Or
cargo add natpmp --features async-std
License
MIT
Related Skills
himalaya
341.0kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
coding-agent
341.0kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
