Support specifying local IP address with NewClientWithLocal and NewClientWithLocalAndTimeout (for multi-homed and VPN policy routing environments).
Added AddPortMappingWithDuration helper accepting time.Duration for mapping lifetime.
Added bounds validation to AddPortMapping for ports and lifetime.
Bug Fixes
In protocolChecks, evaluate header minimum length, version (identifying Port Control Protocol / PCP v2), opcode, and RFC 6886 result codes before checking payload length (fixes #11, fixes #14).
Add human-readable RFC 6886 error messages for result codes 1–5.
Fix unchecked net.Error type assertion panic in network.go.
Cap exponential backoff retry shift to 64s, preventing integer/bit-shift overflow on long timeouts.
Tooling & Testing
Initialized Go module (go.mod) targeting Go 1.21.
Replaced legacy Travis CI with an automated in-memory loopback UDP mock test suite in network_test.go (full socket I/O, retry, and concurrency testing without needing an external NAT-PMP router).