|
package p2p
|
|
|
|
import (
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// for node.Config
|
|
type NetworkConfig struct {
|
|
ListenAddress string `mapstructure:"laddr"`
|
|
Seeds string `mapstructure:"seeds"`
|
|
SkipUPNP bool `mapstructure:"skip_upnp"`
|
|
AddrBookFile string `mapstructure:"addr_book_file"`
|
|
AddrBookStrict bool `mapstructure:"addr_book_strict"`
|
|
PexReactor bool `mapstructure:"pex_reactor"`
|
|
}
|
|
|
|
func NewDefaultConfig(rootDir string) *NetworkConfig {
|
|
return &NetworkConfig{
|
|
AddrBookFile: rootDir + "/addrbook.json",
|
|
AddrBookStrict: true,
|
|
}
|
|
}
|
|
|
|
const (
|
|
// Switch config keys
|
|
configKeyDialTimeoutSeconds = "dial_timeout_seconds"
|
|
configKeyHandshakeTimeoutSeconds = "handshake_timeout_seconds"
|
|
configKeyMaxNumPeers = "max_num_peers"
|
|
configKeyAuthEnc = "authenticated_encryption"
|
|
|
|
// MConnection config keys
|
|
configKeySendRate = "send_rate"
|
|
configKeyRecvRate = "recv_rate"
|
|
|
|
// Fuzz params
|
|
configFuzzEnable = "fuzz_enable" // use the fuzz wrapped conn
|
|
configFuzzMode = "fuzz_mode" // eg. drop, delay
|
|
configFuzzMaxDelayMilliseconds = "fuzz_max_delay_milliseconds"
|
|
configFuzzProbDropRW = "fuzz_prob_drop_rw"
|
|
configFuzzProbDropConn = "fuzz_prob_drop_conn"
|
|
configFuzzProbSleep = "fuzz_prob_sleep"
|
|
)
|
|
|
|
func setConfigDefaults(config *viper.Viper) {
|
|
// Switch default config
|
|
config.SetDefault(configKeyDialTimeoutSeconds, 3)
|
|
config.SetDefault(configKeyHandshakeTimeoutSeconds, 20)
|
|
config.SetDefault(configKeyMaxNumPeers, 50)
|
|
config.SetDefault(configKeyAuthEnc, true)
|
|
|
|
// MConnection default config
|
|
config.SetDefault(configKeySendRate, 512000) // 500KB/s
|
|
config.SetDefault(configKeyRecvRate, 512000) // 500KB/s
|
|
|
|
// Fuzz defaults
|
|
config.SetDefault(configFuzzEnable, false)
|
|
config.SetDefault(configFuzzMode, FuzzModeDrop)
|
|
config.SetDefault(configFuzzMaxDelayMilliseconds, 3000)
|
|
config.SetDefault(configFuzzProbDropRW, 0.2)
|
|
config.SetDefault(configFuzzProbDropConn, 0.00)
|
|
config.SetDefault(configFuzzProbSleep, 0.00)
|
|
}
|