mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Resolve merge conflict with platformdefaults
This commit is contained in:
		
						commit
						b24c7ffa6b
					
				
					 21 changed files with 170 additions and 106 deletions
				
			
		| 
						 | 
					@ -13,6 +13,8 @@ import (
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"sync/atomic"
 | 
						"sync/atomic"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"yggdrasil/defaults"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: Add authentication
 | 
					// TODO: Add authentication
 | 
				
			||||||
| 
						 | 
					@ -156,15 +158,15 @@ func (a *admin) init(c *Core, listenaddr string) {
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	a.addHandler("setTunTap", []string{"name", "[tap_mode]", "[mtu]"}, func(in admin_info) (admin_info, error) {
 | 
						a.addHandler("setTunTap", []string{"name", "[tap_mode]", "[mtu]"}, func(in admin_info) (admin_info, error) {
 | 
				
			||||||
		// Set sane defaults
 | 
							// Set sane defaults
 | 
				
			||||||
		iftapmode := getDefaults().defaultIfTAPMode
 | 
							iftapmode := defaults.GetDefaults().DefaultIfTAPMode
 | 
				
			||||||
		ifmtu := getDefaults().defaultIfMTU
 | 
							ifmtu := defaults.GetDefaults().DefaultIfMTU
 | 
				
			||||||
		// Has TAP mode been specified?
 | 
							// Has TAP mode been specified?
 | 
				
			||||||
		if tap, ok := in["tap_mode"]; ok {
 | 
							if tap, ok := in["tap_mode"]; ok {
 | 
				
			||||||
			iftapmode = tap.(bool)
 | 
								iftapmode = tap.(bool)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Check we have enough params for MTU
 | 
							// Check we have enough params for MTU
 | 
				
			||||||
		if mtu, ok := in["mtu"]; ok {
 | 
							if mtu, ok := in["mtu"]; ok {
 | 
				
			||||||
			if mtu.(float64) >= 1280 && ifmtu <= getDefaults().maximumIfMTU {
 | 
								if mtu.(float64) >= 1280 && ifmtu <= defaults.GetDefaults().MaximumIfMTU {
 | 
				
			||||||
				ifmtu = int(in["mtu"].(float64))
 | 
									ifmtu = int(in["mtu"].(float64))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ package config
 | 
				
			||||||
// NodeConfig defines all configuration values needed to run a signle yggdrasil node
 | 
					// NodeConfig defines all configuration values needed to run a signle yggdrasil node
 | 
				
			||||||
type NodeConfig struct {
 | 
					type NodeConfig struct {
 | 
				
			||||||
	Listen                      string   `comment:"Listen address for peer connections. Default is to listen for all\nTCP connections over IPv4 and IPv6 with a random port."`
 | 
						Listen                      string   `comment:"Listen address for peer connections. Default is to listen for all\nTCP connections over IPv4 and IPv6 with a random port."`
 | 
				
			||||||
	AdminListen                 string   `comment:"Listen address for admin connections Default is to listen for local\nconnections only on TCP port 9001."`
 | 
						AdminListen                 string   `comment:"Listen address for admin connections Default is to listen for local\nconnections either on TCP/9001 or a UNIX socket depending on your\nplatform. Use this value for yggdrasilctl -endpoint=X."`
 | 
				
			||||||
	Peers                       []string `comment:"List of connection strings for static peers in URI format, i.e.\ntcp://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j"`
 | 
						Peers                       []string `comment:"List of connection strings for static peers in URI format, i.e.\ntcp://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j"`
 | 
				
			||||||
	AllowedEncryptionPublicKeys []string `comment:"List of peer encryption public keys to allow or incoming TCP\nconnections from. If left empty/undefined then all connections\nwill be allowed by default."`
 | 
						AllowedEncryptionPublicKeys []string `comment:"List of peer encryption public keys to allow or incoming TCP\nconnections from. If left empty/undefined then all connections\nwill be allowed by default."`
 | 
				
			||||||
	EncryptionPublicKey         string   `comment:"Your public encryption key. Your peers may ask you for this to put\ninto their AllowedEncryptionPublicKeys configuration."`
 | 
						EncryptionPublicKey         string   `comment:"Your public encryption key. Your peers may ask you for this to put\ninto their AllowedEncryptionPublicKeys configuration."`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,7 @@ import (
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"yggdrasil/config"
 | 
						"yggdrasil/config"
 | 
				
			||||||
 | 
						"yggdrasil/defaults"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The Core object represents the Yggdrasil node. You should create a Core
 | 
					// The Core object represents the Yggdrasil node. You should create a Core
 | 
				
			||||||
| 
						 | 
					@ -198,26 +199,31 @@ func (c *Core) AddAllowedEncryptionPublicKey(boxStr string) error {
 | 
				
			||||||
	return c.admin.addAllowedEncryptionPublicKey(boxStr)
 | 
						return c.admin.addAllowedEncryptionPublicKey(boxStr)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Gets the default admin listen address for your platform.
 | 
				
			||||||
 | 
					func (c *Core) GetAdminDefaultListen() string {
 | 
				
			||||||
 | 
						return defaults.GetDefaults().DefaultAdminListen
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gets the default TUN/TAP interface name for your platform.
 | 
					// Gets the default TUN/TAP interface name for your platform.
 | 
				
			||||||
func (c *Core) GetTUNDefaultIfName() string {
 | 
					func (c *Core) GetTUNDefaultIfName() string {
 | 
				
			||||||
	return getDefaults().defaultIfName
 | 
						return defaults.GetDefaults().DefaultIfName
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gets the default TUN/TAP interface MTU for your platform. This can be as high
 | 
					// Gets the default TUN/TAP interface MTU for your platform. This can be as high
 | 
				
			||||||
// as 65535, depending on platform, but is never lower than 1280.
 | 
					// as 65535, depending on platform, but is never lower than 1280.
 | 
				
			||||||
func (c *Core) GetTUNDefaultIfMTU() int {
 | 
					func (c *Core) GetTUNDefaultIfMTU() int {
 | 
				
			||||||
	return getDefaults().defaultIfMTU
 | 
						return defaults.GetDefaults().DefaultIfMTU
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gets the maximum supported TUN/TAP interface MTU for your platform. This
 | 
					// Gets the maximum supported TUN/TAP interface MTU for your platform. This
 | 
				
			||||||
// can be as high as 65535, depending on platform, but is never lower than 1280.
 | 
					// can be as high as 65535, depending on platform, but is never lower than 1280.
 | 
				
			||||||
func (c *Core) GetTUNMaximumIfMTU() int {
 | 
					func (c *Core) GetTUNMaximumIfMTU() int {
 | 
				
			||||||
	return getDefaults().maximumIfMTU
 | 
						return defaults.GetDefaults().MaximumIfMTU
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gets the default TUN/TAP interface mode for your platform.
 | 
					// Gets the default TUN/TAP interface mode for your platform.
 | 
				
			||||||
func (c *Core) GetTUNDefaultIfTAPMode() bool {
 | 
					func (c *Core) GetTUNDefaultIfTAPMode() bool {
 | 
				
			||||||
	return getDefaults().defaultIfTAPMode
 | 
						return defaults.GetDefaults().DefaultIfTAPMode
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gets the current TUN/TAP interface name.
 | 
					// Gets the current TUN/TAP interface name.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								src/yggdrasil/defaults/defaults.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/yggdrasil/defaults/defaults.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TUN/TAP
 | 
				
			||||||
 | 
						MaximumIfMTU     int
 | 
				
			||||||
 | 
						DefaultIfMTU     int
 | 
				
			||||||
 | 
						DefaultIfName    string
 | 
				
			||||||
 | 
						DefaultIfTAPMode bool
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_darwin.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_darwin.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build darwin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the macOS/Darwin platform. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
					    // Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TUN/TAP
 | 
				
			||||||
 | 
					    MaximumIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfName:    "auto",
 | 
				
			||||||
 | 
					    DefaultIfTAPMode: false,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_freebsd.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_freebsd.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build freebsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the BSD platforms. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
							// Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TUN/TAP
 | 
				
			||||||
 | 
							MaximumIfMTU:     32767,
 | 
				
			||||||
 | 
							DefaultIfMTU:     32767,
 | 
				
			||||||
 | 
							DefaultIfName:    "/dev/tap0",
 | 
				
			||||||
 | 
							DefaultIfTAPMode: true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_linux.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_linux.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the Linux platform. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
					    // Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TUN/TAP
 | 
				
			||||||
 | 
					    MaximumIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfName:    "auto",
 | 
				
			||||||
 | 
					    DefaultIfTAPMode: false,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_netbsd.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_netbsd.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build netbsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the BSD platforms. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
							// Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TUN/TAP
 | 
				
			||||||
 | 
							MaximumIfMTU:     9000,
 | 
				
			||||||
 | 
							DefaultIfMTU:     9000,
 | 
				
			||||||
 | 
							DefaultIfName:    "/dev/tap0",
 | 
				
			||||||
 | 
							DefaultIfTAPMode: true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_openbsd.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_openbsd.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build openbsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the BSD platforms. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
							// Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TUN/TAP
 | 
				
			||||||
 | 
							MaximumIfMTU:     16384,
 | 
				
			||||||
 | 
							DefaultIfMTU:     16384,
 | 
				
			||||||
 | 
							DefaultIfName:    "/dev/tap0",
 | 
				
			||||||
 | 
							DefaultIfTAPMode: true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_other.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_other.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build !linux,!darwin,!windows,!openbsd,!freebsd,!netbsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the other platforms. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
					    // Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TUN/TAP
 | 
				
			||||||
 | 
					    MaximumIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfName:    "none",
 | 
				
			||||||
 | 
					    DefaultIfTAPMode: false,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/yggdrasil/defaults/defaults_windows.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/yggdrasil/defaults/defaults_windows.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					// +build windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package defaults
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Sane defaults for the Windows platform. The "default" options may be
 | 
				
			||||||
 | 
					// may be replaced by the running configuration.
 | 
				
			||||||
 | 
					func GetDefaults() platformDefaultParameters {
 | 
				
			||||||
 | 
						return platformDefaultParameters{
 | 
				
			||||||
 | 
					    // Admin
 | 
				
			||||||
 | 
							DefaultAdminListen: "tcp://localhost:9001",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TUN/TAP
 | 
				
			||||||
 | 
					    MaximumIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfMTU:     65535,
 | 
				
			||||||
 | 
					    DefaultIfName:    "auto",
 | 
				
			||||||
 | 
					    DefaultIfTAPMode: true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,8 @@ package yggdrasil
 | 
				
			||||||
// This manages the tun driver to send/recv packets to/from applications
 | 
					// This manages the tun driver to send/recv packets to/from applications
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"yggdrasil/defaults"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/songgao/packets/ethernet"
 | 
						"github.com/songgao/packets/ethernet"
 | 
				
			||||||
	"github.com/yggdrasil-network/water"
 | 
						"github.com/yggdrasil-network/water"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -20,21 +22,11 @@ type tunDevice struct {
 | 
				
			||||||
	iface  *water.Interface
 | 
						iface  *water.Interface
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Defines which parameters are expected by default for a TUN/TAP adapter on a
 | 
					 | 
				
			||||||
// specific platform. These values are populated in the relevant tun_*.go for
 | 
					 | 
				
			||||||
// the platform being targeted. They must be set.
 | 
					 | 
				
			||||||
type tunDefaultParameters struct {
 | 
					 | 
				
			||||||
	maximumIfMTU     int
 | 
					 | 
				
			||||||
	defaultIfMTU     int
 | 
					 | 
				
			||||||
	defaultIfName    string
 | 
					 | 
				
			||||||
	defaultIfTAPMode bool
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Gets the maximum supported MTU for the platform based on the defaults in
 | 
					// Gets the maximum supported MTU for the platform based on the defaults in
 | 
				
			||||||
// getDefaults().
 | 
					// defaults.GetDefaults().
 | 
				
			||||||
func getSupportedMTU(mtu int) int {
 | 
					func getSupportedMTU(mtu int) int {
 | 
				
			||||||
	if mtu > getDefaults().maximumIfMTU {
 | 
						if mtu > defaults.GetDefaults().MaximumIfMTU {
 | 
				
			||||||
		return getDefaults().maximumIfMTU
 | 
							return defaults.GetDefaults().MaximumIfMTU
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return mtu
 | 
						return mtu
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,17 +13,6 @@ import (
 | 
				
			||||||
	water "github.com/yggdrasil-network/water"
 | 
						water "github.com/yggdrasil-network/water"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sane defaults for the Darwin/macOS platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfName:    "auto",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: false,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Configures the "utun" adapter with the correct IPv6 address and MTU.
 | 
					// Configures the "utun" adapter with the correct IPv6 address and MTU.
 | 
				
			||||||
func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
					func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
				
			||||||
	if iftapmode {
 | 
						if iftapmode {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
package yggdrasil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sane defaults for the FreeBSD platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     32767,
 | 
					 | 
				
			||||||
		defaultIfMTU:     32767,
 | 
					 | 
				
			||||||
		defaultIfName:    "/dev/tap0",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: true,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -12,17 +12,6 @@ import (
 | 
				
			||||||
	water "github.com/yggdrasil-network/water"
 | 
						water "github.com/yggdrasil-network/water"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sane defaults for the Linux platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfName:    "auto",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: false,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Configures the TAP adapter with the correct IPv6 address and MTU.
 | 
					// Configures the TAP adapter with the correct IPv6 address and MTU.
 | 
				
			||||||
func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
					func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
				
			||||||
	var config water.Config
 | 
						var config water.Config
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
package yggdrasil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sane defaults for the NetBSD platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     9000,
 | 
					 | 
				
			||||||
		defaultIfMTU:     9000,
 | 
					 | 
				
			||||||
		defaultIfName:    "/dev/tap0",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: true,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
package yggdrasil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Sane defaults for the OpenBSD platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     16384,
 | 
					 | 
				
			||||||
		defaultIfMTU:     16384,
 | 
					 | 
				
			||||||
		defaultIfName:    "/dev/tap0",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: true,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -7,17 +7,6 @@ import water "github.com/yggdrasil-network/water"
 | 
				
			||||||
// This is to catch unsupported platforms
 | 
					// This is to catch unsupported platforms
 | 
				
			||||||
// If your platform supports tun devices, you could try configuring it manually
 | 
					// If your platform supports tun devices, you could try configuring it manually
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// These are sane defaults for any platform that has not been matched by one of
 | 
					 | 
				
			||||||
// the other tun_*.go files.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfName:    "none",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: false,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Creates the TUN/TAP adapter, if supported by the Water library. Note that
 | 
					// Creates the TUN/TAP adapter, if supported by the Water library. Note that
 | 
				
			||||||
// no guarantees are made at this point on an unsupported platform.
 | 
					// no guarantees are made at this point on an unsupported platform.
 | 
				
			||||||
func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
					func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) error {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,17 +10,6 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// This is to catch Windows platforms
 | 
					// This is to catch Windows platforms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Sane defaults for the Windows platform. The "default" options may be
 | 
					 | 
				
			||||||
// may be replaced by the running configuration.
 | 
					 | 
				
			||||||
func getDefaults() tunDefaultParameters {
 | 
					 | 
				
			||||||
	return tunDefaultParameters{
 | 
					 | 
				
			||||||
		maximumIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfMTU:     65535,
 | 
					 | 
				
			||||||
		defaultIfName:    "auto",
 | 
					 | 
				
			||||||
		defaultIfTAPMode: true,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Configures the TAP adapter with the correct IPv6 address and MTU. On Windows
 | 
					// Configures the TAP adapter with the correct IPv6 address and MTU. On Windows
 | 
				
			||||||
// we don't make use of a direct operating system API to do this - we instead
 | 
					// we don't make use of a direct operating system API to do this - we instead
 | 
				
			||||||
// delegate the hard work to "netsh".
 | 
					// delegate the hard work to "netsh".
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"yggdrasil"
 | 
						"yggdrasil"
 | 
				
			||||||
	"yggdrasil/config"
 | 
						"yggdrasil/config"
 | 
				
			||||||
 | 
						"yggdrasil/defaults"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type nodeConfig = config.NodeConfig
 | 
					type nodeConfig = config.NodeConfig
 | 
				
			||||||
| 
						 | 
					@ -53,7 +54,7 @@ func generateConfig(isAutoconf bool) *nodeConfig {
 | 
				
			||||||
		r1 := rand.New(rand.NewSource(time.Now().UnixNano()))
 | 
							r1 := rand.New(rand.NewSource(time.Now().UnixNano()))
 | 
				
			||||||
		cfg.Listen = fmt.Sprintf("[::]:%d", r1.Intn(65534-32768)+32768)
 | 
							cfg.Listen = fmt.Sprintf("[::]:%d", r1.Intn(65534-32768)+32768)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cfg.AdminListen = "tcp://localhost:9001"
 | 
						cfg.AdminListen = defaults.GetDefaults().DefaultAdminListen
 | 
				
			||||||
	cfg.EncryptionPublicKey = hex.EncodeToString(bpub[:])
 | 
						cfg.EncryptionPublicKey = hex.EncodeToString(bpub[:])
 | 
				
			||||||
	cfg.EncryptionPrivateKey = hex.EncodeToString(bpriv[:])
 | 
						cfg.EncryptionPrivateKey = hex.EncodeToString(bpriv[:])
 | 
				
			||||||
	cfg.SigningPublicKey = hex.EncodeToString(spub[:])
 | 
						cfg.SigningPublicKey = hex.EncodeToString(spub[:])
 | 
				
			||||||
| 
						 | 
					@ -61,9 +62,9 @@ func generateConfig(isAutoconf bool) *nodeConfig {
 | 
				
			||||||
	cfg.Peers = []string{}
 | 
						cfg.Peers = []string{}
 | 
				
			||||||
	cfg.AllowedEncryptionPublicKeys = []string{}
 | 
						cfg.AllowedEncryptionPublicKeys = []string{}
 | 
				
			||||||
	cfg.MulticastInterfaces = []string{".*"}
 | 
						cfg.MulticastInterfaces = []string{".*"}
 | 
				
			||||||
	cfg.IfName = core.GetTUNDefaultIfName()
 | 
						cfg.IfName = defaults.GetDefaults().DefaultIfName
 | 
				
			||||||
	cfg.IfMTU = core.GetTUNDefaultIfMTU()
 | 
						cfg.IfMTU = defaults.GetDefaults().DefaultIfMTU
 | 
				
			||||||
	cfg.IfTAPMode = core.GetTUNDefaultIfTAPMode()
 | 
						cfg.IfTAPMode = defaults.GetDefaults().DefaultIfTAPMode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &cfg
 | 
						return &cfg
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,12 @@ import "encoding/json"
 | 
				
			||||||
import "strconv"
 | 
					import "strconv"
 | 
				
			||||||
import "os"
 | 
					import "os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "yggdrasil/defaults"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type admin_info map[string]interface{}
 | 
					type admin_info map[string]interface{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	server := flag.String("endpoint", "tcp://localhost:9001", "Admin socket endpoint")
 | 
						server := flag.String("endpoint", defaults.GetDefaults().DefaultAdminListen, "Admin socket endpoint")
 | 
				
			||||||
	injson := flag.Bool("json", false, "Output in JSON format")
 | 
						injson := flag.Bool("json", false, "Output in JSON format")
 | 
				
			||||||
	flag.Parse()
 | 
						flag.Parse()
 | 
				
			||||||
	args := flag.Args()
 | 
						args := flag.Args()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue