Browse Source

added NAT traversal option and constructor test

pull/293/head
Jamie Steiner 7 years ago
parent
commit
acd4dd9a89
  1. 16
      libp2p.go
  2. 34
      libp2p_test.go

16
libp2p.go

@ -31,6 +31,7 @@ type Config struct {
Protector pnet.Protector
Reporter metrics.Reporter
DisableSecio bool
EnableNAT bool
}
type Option func(cfg *Config) error
@ -92,6 +93,13 @@ func NoEncryption() Option {
return TransportEncryption(EncPlaintext)
}
func NATPortMap() Option {
return func(cfg *Config) error {
cfg.EnableNAT = true
return nil
}
}
func Muxer(m mux.Transport) Option {
return func(cfg *Config) error {
if cfg.Muxer != nil {
@ -199,7 +207,13 @@ func newWithCfg(ctx context.Context, cfg *Config) (host.Host, error) {
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 {

34
libp2p_test.go

@ -0,0 +1,34 @@
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...)
}
Loading…
Cancel
Save