diff options
author | Ethan Buchman <ethan@coinculture.info> | 2015-02-18 08:25:18 +0800 |
---|---|---|
committer | Ethan Buchman <ethan@coinculture.info> | 2015-02-18 08:25:18 +0800 |
commit | 2ba65f4fbaea49c1e0d99959b0331e09b153f931 (patch) | |
tree | add8cabb05cd7fbf0ba4b4bbaf9460dacfc2082d /p2p/natpmp.go | |
parent | 2da367a2bee84d74d1bb0ea1b42d4c22fae486dd (diff) | |
parent | 60318c96d03bcaaf731802b1080a3d87cb482124 (diff) | |
download | go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.gz go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.bz2 go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.lz go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.xz go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.tar.zst go-tangerine-2ba65f4fbaea49c1e0d99959b0331e09b153f931.zip |
Merge branch 'develop' of https://github.com/ethereum/go-ethereum into develop
Diffstat (limited to 'p2p/natpmp.go')
-rw-r--r-- | p2p/natpmp.go | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/p2p/natpmp.go b/p2p/natpmp.go deleted file mode 100644 index 6714678c4..000000000 --- a/p2p/natpmp.go +++ /dev/null @@ -1,55 +0,0 @@ -package p2p - -import ( - "fmt" - "net" - "time" - - natpmp "github.com/jackpal/go-nat-pmp" -) - -// Adapt the NAT-PMP protocol to the NAT interface - -// TODO: -// + Register for changes to the external address. -// + Re-register port mapping when router reboots. -// + A mechanism for keeping a port mapping registered. -// + Discover gateway address automatically. - -type natPMPClient struct { - client *natpmp.Client -} - -// PMP returns a NAT traverser that uses NAT-PMP. The provided gateway -// address should be the IP of your router. -func PMP(gateway net.IP) (nat NAT) { - return &natPMPClient{natpmp.NewClient(gateway)} -} - -func (*natPMPClient) String() string { - return "NAT-PMP" -} - -func (n *natPMPClient) GetExternalAddress() (net.IP, error) { - response, err := n.client.GetExternalAddress() - if err != nil { - return nil, err - } - return response.ExternalIPAddress[:], nil -} - -func (n *natPMPClient) AddPortMapping(protocol string, extport, intport int, name string, lifetime time.Duration) error { - if lifetime <= 0 { - return fmt.Errorf("lifetime must not be <= 0") - } - // Note order of port arguments is switched between our AddPortMapping and the client's AddPortMapping. - _, err := n.client.AddPortMapping(protocol, intport, extport, int(lifetime/time.Second)) - return err -} - -func (n *natPMPClient) DeletePortMapping(protocol string, externalPort, internalPort int) (err error) { - // To destroy a mapping, send an add-port with - // an internalPort of the internal port to destroy, an external port of zero and a time of zero. - _, err = n.client.AddPortMapping(protocol, internalPort, 0, 0) - return -} |