Commit acd4dd9a authored by Jamie Steiner's avatar Jamie Steiner
Browse files

added NAT traversal option and constructor test

parent 91fec896
...@@ -31,6 +31,7 @@ type Config struct { ...@@ -31,6 +31,7 @@ type Config struct {
Protector pnet.Protector Protector pnet.Protector
Reporter metrics.Reporter Reporter metrics.Reporter
DisableSecio bool DisableSecio bool
EnableNAT bool
} }
type Option func(cfg *Config) error type Option func(cfg *Config) error
...@@ -92,6 +93,13 @@ func NoEncryption() Option { ...@@ -92,6 +93,13 @@ func NoEncryption() Option {
return TransportEncryption(EncPlaintext) return TransportEncryption(EncPlaintext)
} }
func NATPortMap() Option {
return func(cfg *Config) error {
cfg.EnableNAT = true
return nil
}
}
func Muxer(m mux.Transport) Option { func Muxer(m mux.Transport) Option {
return func(cfg *Config) error { return func(cfg *Config) error {
if cfg.Muxer != nil { if cfg.Muxer != nil {
...@@ -199,7 +207,13 @@ func newWithCfg(ctx context.Context, cfg *Config) (host.Host, error) { ...@@ -199,7 +207,13 @@ func newWithCfg(ctx context.Context, cfg *Config) (host.Host, error) {
netw := (*swarm.Network)(swrm) netw := (*swarm.Network)(swrm)
return bhost.New(netw), nil hostOpts := &bhost.HostOpts{}
if cfg.EnableNAT {
hostOpts.NATManager = bhost.NewNATManager(netw)
}
return bhost.NewHost(ctx, netw, hostOpts)
} }
func DefaultMuxer() mux.Transport { func DefaultMuxer() mux.Transport {
......
package libp2p
import (
"context"
"fmt"
"testing"
crypto "github.com/libp2p/go-libp2p-crypto"
host "github.com/libp2p/go-libp2p-host"
)
func TestNewHost(t *testing.T) {
_, err := makeRandomHost(t, 9000)
if err != nil {
t.Fatal(err)
}
}
func makeRandomHost(t *testing.T, port int) (host.Host, error) {
ctx := context.Background()
priv, _, err := crypto.GenerateKeyPair(crypto.RSA, 2048)
if err != nil {
t.Fatal(err)
}
opts := []Option{
ListenAddrStrings(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", port)),
Identity(priv),
Muxer(DefaultMuxer()),
NATPortMap(),
}
return New(ctx, opts...)
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment