mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-28 22:25:07 +03:00
79 lines
2.2 KiB
Go
79 lines
2.2 KiB
Go
package defaults
|
|
|
|
import "github.com/RiV-chain/RiV-mesh/src/config"
|
|
|
|
type MulticastInterfaceConfig = config.MulticastInterfaceConfig
|
|
type NetworkDomainConfig = config.NetworkDomainConfig
|
|
|
|
var defaultConfig = "" // LDFLAGS='-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultConfig=/path/to/config
|
|
var defaultAdminListen = "" // LDFLAGS='-X github.com/yggdrasil-network/yggdrasil-go/src/defaults.defaultAdminListen=unix://path/to/sock'
|
|
|
|
type defaultParameters struct {
|
|
|
|
//Network domain
|
|
DefaultNetworkDomain NetworkDomainConfig
|
|
}
|
|
|
|
// Defines which parameters are expected by default for configuration on a
|
|
// specific platform. These values are populated in the relevant defaults_*.go
|
|
// for the platform being targeted. They must be set.
|
|
type platformDefaultParameters struct {
|
|
// Admin socket
|
|
DefaultAdminListen string
|
|
|
|
// Configuration (used for meshctl)
|
|
DefaultConfigFile string
|
|
|
|
// Multicast interfaces
|
|
DefaultMulticastInterfaces []MulticastInterfaceConfig
|
|
|
|
// TUN
|
|
MaximumIfMTU uint64
|
|
DefaultIfMTU uint64
|
|
DefaultIfName string
|
|
}
|
|
|
|
// Defines defaults for the all platforms.
|
|
func define() defaultParameters {
|
|
return defaultParameters{
|
|
|
|
// Network domain
|
|
DefaultNetworkDomain: NetworkDomainConfig{
|
|
Prefix: "fc",
|
|
},
|
|
}
|
|
}
|
|
|
|
func GetDefaults() platformDefaultParameters {
|
|
defaults := getDefaults()
|
|
if defaultConfig != "" {
|
|
defaults.DefaultConfigFile = defaultConfig
|
|
}
|
|
if defaultAdminListen != "" {
|
|
defaults.DefaultAdminListen = defaultAdminListen
|
|
}
|
|
return defaults
|
|
}
|
|
|
|
// Generates default configuration and returns a pointer to the resulting
|
|
// NodeConfig. This is used when outputting the -genconf parameter and also when
|
|
// using -autoconf.
|
|
func GenerateConfig() *config.NodeConfig {
|
|
// Get the defaults for the platform.
|
|
defaults := GetDefaults()
|
|
// Create a node configuration and populate it.
|
|
cfg := new(config.NodeConfig)
|
|
cfg.NewKeys()
|
|
cfg.Listen = []string{}
|
|
cfg.AdminListen = defaults.DefaultAdminListen
|
|
cfg.Peers = []string{}
|
|
cfg.InterfacePeers = map[string][]string{}
|
|
cfg.AllowedPublicKeys = []string{}
|
|
cfg.MulticastInterfaces = defaults.DefaultMulticastInterfaces
|
|
cfg.IfName = defaults.DefaultIfName
|
|
cfg.IfMTU = defaults.DefaultIfMTU
|
|
cfg.NodeInfoPrivacy = false
|
|
cfg.NetworkDomain = define().DefaultNetworkDomain
|
|
|
|
return cfg
|
|
}
|