You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.0 KiB

9 years ago
9 years ago
  1. package p2p
  2. import (
  3. "github.com/spf13/viper"
  4. )
  5. // for node.Config
  6. type NetworkConfig struct {
  7. ListenAddress string `mapstructure:"laddr"`
  8. Seeds string `mapstructure:"seeds"`
  9. SkipUPNP bool `mapstructure:"skip_upnp"`
  10. AddrBookFile string `mapstructure:"addr_book_file"`
  11. AddrBookStrict bool `mapstructure:"addr_book_strict"`
  12. PexReactor bool `mapstructure:"pex_reactor"`
  13. }
  14. func NewDefaultConfig(rootDir string) *NetworkConfig {
  15. return &NetworkConfig{
  16. AddrBookFile: rootDir + "/addrbook.json",
  17. AddrBookStrict: true,
  18. }
  19. }
  20. const (
  21. // Switch config keys
  22. configKeyDialTimeoutSeconds = "dial_timeout_seconds"
  23. configKeyHandshakeTimeoutSeconds = "handshake_timeout_seconds"
  24. configKeyMaxNumPeers = "max_num_peers"
  25. configKeyAuthEnc = "authenticated_encryption"
  26. // MConnection config keys
  27. configKeySendRate = "send_rate"
  28. configKeyRecvRate = "recv_rate"
  29. // Fuzz params
  30. configFuzzEnable = "fuzz_enable" // use the fuzz wrapped conn
  31. configFuzzMode = "fuzz_mode" // eg. drop, delay
  32. configFuzzMaxDelayMilliseconds = "fuzz_max_delay_milliseconds"
  33. configFuzzProbDropRW = "fuzz_prob_drop_rw"
  34. configFuzzProbDropConn = "fuzz_prob_drop_conn"
  35. configFuzzProbSleep = "fuzz_prob_sleep"
  36. )
  37. func setConfigDefaults(config *viper.Viper) {
  38. // Switch default config
  39. config.SetDefault(configKeyDialTimeoutSeconds, 3)
  40. config.SetDefault(configKeyHandshakeTimeoutSeconds, 20)
  41. config.SetDefault(configKeyMaxNumPeers, 50)
  42. config.SetDefault(configKeyAuthEnc, true)
  43. // MConnection default config
  44. config.SetDefault(configKeySendRate, 512000) // 500KB/s
  45. config.SetDefault(configKeyRecvRate, 512000) // 500KB/s
  46. // Fuzz defaults
  47. config.SetDefault(configFuzzEnable, false)
  48. config.SetDefault(configFuzzMode, FuzzModeDrop)
  49. config.SetDefault(configFuzzMaxDelayMilliseconds, 3000)
  50. config.SetDefault(configFuzzProbDropRW, 0.2)
  51. config.SetDefault(configFuzzProbDropConn, 0.00)
  52. config.SetDefault(configFuzzProbSleep, 0.00)
  53. }