mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-01 19:24:14 +08:00
Add DisableNatPortMap option.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
This commit is contained in:
17
core/core.go
17
core/core.go
@ -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) {
|
|||||||
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
|
|||||||
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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
|||||||
- `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
|
|||||||
type SwarmConfig struct {
|
type SwarmConfig struct {
|
||||||
AddrFilters []string
|
AddrFilters []string
|
||||||
DisableBandwidthMetrics bool
|
DisableBandwidthMetrics bool
|
||||||
|
DisableNatPortMap bool
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user