提交 da95e9f9 作者: Kevin Atkinson

Add DisableNatPortMap option.

License: MIT
Signed-off-by: 's avatarKevin Atkinson <k@kevina.org>
上级 1fb3b68f
...@@ -214,7 +214,7 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin ...@@ -214,7 +214,7 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin
} }
peerhost, err := hostOption(ctx, n.Identity, n.Peerstore, n.Reporter, peerhost, err := hostOption(ctx, n.Identity, n.Peerstore, n.Reporter,
addrfilter, tpt, protec) addrfilter, tpt, protec, &ConstructPeerHostOpts{DisableNatPortMap: cfg.Swarm.DisableNatPortMap})
if err != nil { if err != nil {
return err return err
} }
...@@ -709,12 +709,16 @@ func listenAddresses(cfg *config.Config) ([]ma.Multiaddr, error) { ...@@ -709,12 +709,16 @@ func listenAddresses(cfg *config.Config) ([]ma.Multiaddr, error) {
return listen, nil return listen, nil
} }
type HostOption func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, tpt smux.Transport, protc ipnet.Protector) (p2phost.Host, error) type ConstructPeerHostOpts struct {
DisableNatPortMap bool
}
type HostOption func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, tpt smux.Transport, protc ipnet.Protector, opts *ConstructPeerHostOpts) (p2phost.Host, error)
var DefaultHostOption HostOption = constructPeerHost var DefaultHostOption HostOption = constructPeerHost
// isolates the complex initialization steps // isolates the complex initialization steps
func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, tpt smux.Transport, protec ipnet.Protector) (p2phost.Host, error) { func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, tpt smux.Transport, protec ipnet.Protector, opts *ConstructPeerHostOpts) (p2phost.Host, error) {
// no addresses to begin with. we'll start later. // no addresses to begin with. we'll start later.
swrm, err := swarm.NewSwarmWithProtector(ctx, nil, id, ps, protec, tpt, bwr) swrm, err := swarm.NewSwarmWithProtector(ctx, nil, id, ps, protec, tpt, bwr)
...@@ -728,7 +732,12 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr ...@@ -728,7 +732,12 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
network.Swarm().Filters.AddDialFilter(f) network.Swarm().Filters.AddDialFilter(f)
} }
host := p2pbhost.New(network, p2pbhost.NATPortMap, bwr) hostOpts := []interface{}{bwr}
if !opts.DisableNatPortMap {
hostOpts = append(hostOpts, p2pbhost.NATPortMap)
}
host := p2pbhost.New(network, hostOpts...)
return host, nil return host, nil
} }
......
...@@ -34,7 +34,7 @@ func NewMockNode() (*core.IpfsNode, error) { ...@@ -34,7 +34,7 @@ func NewMockNode() (*core.IpfsNode, error) {
} }
func MockHostOption(mn mocknet.Mocknet) core.HostOption { func MockHostOption(mn mocknet.Mocknet) core.HostOption {
return func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, _ smux.Transport, _ ipnet.Protector) (host.Host, error) { return func(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr metrics.Reporter, fs []*net.IPNet, _ smux.Transport, _ ipnet.Protector, _ *core.ConstructPeerHostOpts) (host.Host, error) {
return mn.AddPeerWithPeerstore(id, ps) return mn.AddPeerWithPeerstore(id, ps)
} }
} }
......
...@@ -216,7 +216,10 @@ See https://github.com/ipfs/go-ipfs/issues/1226#issuecomment-120494604 for more ...@@ -216,7 +216,10 @@ See https://github.com/ipfs/go-ipfs/issues/1226#issuecomment-120494604 for more
- `DisableBandwidthMetrics` - `DisableBandwidthMetrics`
A boolean value that when set to true, will cause ipfs to not keep track of A boolean value that when set to true, will cause ipfs to not keep track of
bandwidth metrics. Disabling bandwidth metrics can lead to a slight performance bandwidth metrics. Disabling bandwidth metrics can lead to a slight performance
improvement, as well as a reduction in memory usage. improvement, as well as a reduction in memory usage.
- `DisableNatPortMap`
Disable NAT discovery.
## `Tour` ## `Tour`
Unused. Unused.
...@@ -3,4 +3,5 @@ package config ...@@ -3,4 +3,5 @@ package config
type SwarmConfig struct { type SwarmConfig struct {
AddrFilters []string AddrFilters []string
DisableBandwidthMetrics bool DisableBandwidthMetrics bool
DisableNatPortMap bool
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论