mirror of
https://github.com/PeernetOfficial/core.git
synced 2026-07-16 18:37:51 +01:00
25 lines
1.3 KiB
Markdown
25 lines
1.3 KiB
Markdown
# UPnP
|
|
|
|
There are 2 reference implementations which both are based on 'Taipei Torrent'. This UPnP code is a fork mostly from the btcd one with some changes forked from tendermint.
|
|
* https://github.com/btcsuite/btcd/blob/master/upnp.go
|
|
* https://github.com/tendermint/tendermint/tree/master/internal/p2p/upnp
|
|
|
|
This library supports only IPv4 UPnP currently. The IPv6 UPnP protocol is specified here: http://upnp.org/specs/arch/UPnP-arch-AnnexAIPv6-v1.pdf
|
|
|
|
Other UPnP libaries to investigate:
|
|
* https://github.com/huin/goupnp
|
|
* https://gitlab.com/NebulousLabs/go-upnp (which is a wrapper around huins package)
|
|
|
|
## Special Cases
|
|
|
|
FritzBox:
|
|
* Users must manually enable port sharing for the host. Otherwise the router returns XML error code 606.
|
|
* If the internal port is already forwarded under a different external port, error code 718 is returned.
|
|
* If the internal port is already forwarded under the same external port, it does not return an error.
|
|
|
|
## Troubleshooting
|
|
|
|
Using Wireshark to intercept the UPnP request and response can help.
|
|
|
|
For Windows there is a UPnP tool here http://miniupnp.free.fr/files/. The tool supports listing existing mappings which is an interesting functionality. It would make sense to implement the list function to delete or reuse any existing mappings.
|