safing-portmaster/spn/ships/virtual_network.go

43 lines
915 B
Go

package ships
import (
"net"
"sync"
"github.com/safing/portmaster/spn/hub"
)
var (
virtNetLock sync.Mutex
virtNetConfig *hub.VirtualNetworkConfig
)
// SetVirtualNetworkConfig sets the virtual networking config.
func SetVirtualNetworkConfig(config *hub.VirtualNetworkConfig) {
virtNetLock.Lock()
defer virtNetLock.Unlock()
virtNetConfig = config
}
// GetVirtualNetworkConfig returns the virtual networking config.
func GetVirtualNetworkConfig() *hub.VirtualNetworkConfig {
virtNetLock.Lock()
defer virtNetLock.Unlock()
return virtNetConfig
}
// GetVirtualNetworkAddress returns the virtual network IP for the given Hub.
func GetVirtualNetworkAddress(dstHubID string) net.IP {
virtNetLock.Lock()
defer virtNetLock.Unlock()
// Check if we have a virtual network config.
if virtNetConfig == nil {
return nil
}
// Return mapping for given Hub ID.
return virtNetConfig.Mapping[dstHubID]
}