4 releases
| 0.1.3 | Feb 11, 2026 |
|---|---|
| 0.1.2 | Jan 25, 2026 |
| 0.1.1 | Jan 23, 2026 |
| 0.1.0 | Jan 23, 2026 |
#1002 in Network programming
110KB
2K
SLoC
oxy-upnp-igd
Minimal UPnP Internet Gateway Device (IGD) port mapping library for Rust.
Features
- UPnP gateway discovery via SSDP (discovers ALL available gateways)
- Port mapping (Add/Delete) for TCP and UDP
- Automatic port mapping renewal
- External IP address retrieval
- Smol runtime compatible
- Minimal dependencies
CLI Tool
This package includes the oxyupnpc command-line tool for UPnP port management.
Installation
[source,bash]
cargo install oxy-upnp-igd
Or build from source:
[source,bash]
cargo build --release --bin oxyupnpc
The compiled binary will be at target/release/oxyupnpc.
Usage
[source,bash]
# Get external IP address
oxyupnpc -E
# List all port mappings
oxyupnpc -L
# Add a port mapping (external_port 8080 -> internal_port 8080 TCP)
oxyupnpc -r 8080 8080 TCP
# Add a port mapping with auto-selected external port
oxyupnpc -R 8080 TCP
# Delete a port mapping
oxyupnpc -d 8080 TCP
# Show help
oxyupnpc -h
Quick Start
[source,rust]
use oxy_upnp_igd::discover_gateways;
use std::time::Duration;
fn main() -> Result<(), Box<dyn std::error::Error>> {
smol::block_on(async {
let gateways = discover_gateways(Duration::from_secs(3)).await?;
if let Some(gateway) = gateways.first() {
let external_ip = gateway.get_external_ip().await?;
println!("External IP: {}", external_ip);
}
Ok(())
})
}
## Documentation
Full API documentation: https://docs.rs/oxy-upnp-igd
## License
AGPL-3.0-only
Dependencies
~13–29MB
~322K SLoC