diff --git a/config/config.go b/config/config.go index 0348f191408df66e06e5c1a9ea195b464b13a1d6..520cfb9e81d6de40a620ef0bed0a68c4a8ccf280 100644 --- a/config/config.go +++ b/config/config.go @@ -56,6 +56,9 @@ type Config struct { NATManager NATManagerC Peerstore pstore.Peerstore Reporter metrics.Reporter + + PingCustom bool + Ping bool } // NewNode constructs a new libp2p Host from the Config. @@ -102,6 +105,7 @@ func (cfg *Config) NewNode(ctx context.Context) (host.Host, error) { ConnManager: cfg.ConnManager, AddrsFactory: cfg.AddrsFactory, NATManager: cfg.NATManager, + EnablePing: cfg.Ping, }) if err != nil { swrm.Close() diff --git a/defaults.go b/defaults.go index 679fd7af5a511f873a04458a3a98cc88abc12c18..f44f84d4a57aedf1f62c5699370183eee1309acb 100644 --- a/defaults.go +++ b/defaults.go @@ -75,6 +75,11 @@ var DefaultEnableRelay = func(cfg *Config) error { return cfg.Apply(EnableRelay()) } +// DefaultEnablePing enables the ping service by default +var DefaultEnablePing = func(cfg *Config) error { + return cfg.Apply(Ping(true)) +} + // Complete list of default options and when to fallback on them. // // Please *DON'T* specify default options any other way. Putting this all here @@ -111,6 +116,10 @@ var defaults = []struct { fallback: func(cfg *Config) bool { return !cfg.RelayCustom }, opt: DefaultEnableRelay, }, + { + fallback: func(cfg *Config) bool { return !cfg.PingCustom }, + opt: DefaultEnablePing, + }, } // Defaults configures libp2p to use the default options. Can be combined with diff --git a/options.go b/options.go index 224336ead6b03d08e95398077fa24c5e1a707ef8..9c69744cf96d2999cd69ac7bf84c5f8b23ffe509 100644 --- a/options.go +++ b/options.go @@ -252,6 +252,15 @@ func NATManager(nm config.NATManagerC) Option { } } +// Ping will configure libp2p to support the ping service; enable by default. +func Ping(enable bool) Option { + return func(cfg *Config) error { + cfg.PingCustom = true + cfg.Ping = enable + return nil + } +} + // NoListenAddrs will configure libp2p to not listen by default. // // This will both clear any configured listen addrs and prevent libp2p from