From e39138c184376e57a5a80aec4a2213607a100766 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 9 Feb 2022 14:41:13 -0500 Subject: [PATCH 1/2] removed hard coded netmask --- logic/wireguard.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/logic/wireguard.go b/logic/wireguard.go index 97a4e99b..187f4d93 100644 --- a/logic/wireguard.go +++ b/logic/wireguard.go @@ -94,7 +94,9 @@ func initWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig if ncutils.IsKernel() { logger.Log(2, "setting kernel device", ifacename) - setKernelDevice(ifacename, node.Address) + network := strings.Split(node.NetworkSettings.AddressRange, "/") + mask := network[len(network)-1] + setKernelDevice(ifacename, node.Address, mask) } nodeport := int(node.ListenPort) @@ -184,7 +186,7 @@ func initWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig return err } -func setKernelDevice(ifacename string, address string) error { +func setKernelDevice(ifacename, address, mask string) error { ipExec, err := exec.LookPath("ip") if err != nil { return err @@ -193,7 +195,7 @@ func setKernelDevice(ifacename string, address string) error { // == best effort == ncutils.RunCmd("ip link delete dev "+ifacename, false) ncutils.RunCmd(ipExec+" link add dev "+ifacename+" type wireguard", true) - ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+address+"/24", true) // this is a bug waiting to happen + ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+address+"/"+mask, true) // this was a bug waiting to happen return nil } From fd6c4742def28e43d9eba0516db97e9ed9b2f605 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 9 Feb 2022 15:21:51 -0500 Subject: [PATCH 2/2] get address range from network --- logic/wireguard.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/logic/wireguard.go b/logic/wireguard.go index 187f4d93..38a887b2 100644 --- a/logic/wireguard.go +++ b/logic/wireguard.go @@ -94,8 +94,13 @@ func initWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig if ncutils.IsKernel() { logger.Log(2, "setting kernel device", ifacename) - network := strings.Split(node.NetworkSettings.AddressRange, "/") - mask := network[len(network)-1] + network, err := GetNetwork(node.Network) + if err != nil { + logger.Log(0, "failed to get network"+err.Error()) + return err + } + net := strings.Split(network.AddressRange, "/") + mask := net[len(net)-1] setKernelDevice(ifacename, node.Address, mask) }