Home

Awesome

Nim NAT traversal using wrappers for miniupnpc and libnatpmp

Github action License: Apache License: MIT Stability: experimental

Installation

This repository uses submodules for miniupnp and libnatpmp, so either clone it all in one go with git clone --recurse-submodules <REPO_URL> or clone it normally and then run git submodule update --init --recursive.

Install it using Nimble:

nimble install

Dependencies

Usage

See the examples directory for some generic usage.

A real-world example, complete with periodic port mapping renewal in a separate thread, is available in nim-eth and nimbus.

By default, your code will be linked to bundled static libraries. If you want to dynamically link against your system libraries, pass the "-d:miniupnpcUseSystemLibs" and/or "-d:libnatpmpUseSystemLibs" flags to the Nim compiler.

Let's see both scenarios in action:

nimble buildBundledLibs

# statically linked against the bundled libminiupnpc.a:
nim c -r -f examples/miniupnpc_test.nim
# dynamically linked against the system libminiupnpc.so:
nim c -r -f -d:miniupnpcUseSystemLibs examples/miniupnpc_test.nim

# statically linked against the bundled libnatpmp.a:
nim c -r -f examples/natpmp_test.nim
# dynamically linked against the system libnatpmp.so:
nim c -r -f -d:libnatpmpUseSystemLibs examples/natpmp_test.nim

TODO

miniupnpc:

License

These wrappers are licensed and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.