|
@@ -51,14 +51,18 @@ func ApplyWithoutWGQuick(node *models.Node, ifacename string, confPath string) e
|
|
ListenPort: &nodeport,
|
|
ListenPort: &nodeport,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ var address4 string
|
|
|
|
+ var address6 string
|
|
|
|
+ var mask4 string
|
|
|
|
+ var mask6 string
|
|
if node.Address != "" {
|
|
if node.Address != "" {
|
|
netmaskArr := strings.Split(node.NetworkSettings.AddressRange, "/")
|
|
netmaskArr := strings.Split(node.NetworkSettings.AddressRange, "/")
|
|
var netmask = "32"
|
|
var netmask = "32"
|
|
if len(netmaskArr) == 2 {
|
|
if len(netmaskArr) == 2 {
|
|
netmask = netmaskArr[1]
|
|
netmask = netmaskArr[1]
|
|
}
|
|
}
|
|
- setKernelDevice(ifacename, node.Address, netmask)
|
|
|
|
|
|
+ mask4 = netmask
|
|
|
|
+ address4 = node.Address
|
|
}
|
|
}
|
|
if node.Address6 != "" {
|
|
if node.Address6 != "" {
|
|
netmaskArr := strings.Split(node.NetworkSettings.AddressRange6, "/")
|
|
netmaskArr := strings.Split(node.NetworkSettings.AddressRange6, "/")
|
|
@@ -66,8 +70,11 @@ func ApplyWithoutWGQuick(node *models.Node, ifacename string, confPath string) e
|
|
if len(netmaskArr) == 2 {
|
|
if len(netmaskArr) == 2 {
|
|
netmask = netmaskArr[1]
|
|
netmask = netmaskArr[1]
|
|
}
|
|
}
|
|
- setKernelDevice(ifacename, node.Address6, netmask)
|
|
|
|
|
|
+ mask6 = netmask
|
|
|
|
+ address6 = node.Address
|
|
}
|
|
}
|
|
|
|
+ setKernelDevice(ifacename, address4, mask4, address6, mask6)
|
|
|
|
+
|
|
_, err = wgclient.Device(ifacename)
|
|
_, err = wgclient.Device(ifacename)
|
|
if err != nil {
|
|
if err != nil {
|
|
if !os.IsNotExist(err) {
|
|
if !os.IsNotExist(err) {
|
|
@@ -134,7 +141,7 @@ func RemoveWithoutWGQuick(ifacename string) error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
-func setKernelDevice(ifacename, address, mask string) error {
|
|
|
|
|
|
+func setKernelDevice(ifacename, address4, mask4, address6, mask6 string) error {
|
|
ipExec, err := exec.LookPath("ip")
|
|
ipExec, err := exec.LookPath("ip")
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
@@ -143,7 +150,11 @@ func setKernelDevice(ifacename, address, mask string) error {
|
|
// == best effort ==
|
|
// == best effort ==
|
|
ncutils.RunCmd("ip link delete dev "+ifacename, false)
|
|
ncutils.RunCmd("ip link delete dev "+ifacename, false)
|
|
ncutils.RunCmd(ipExec+" link add dev "+ifacename+" type wireguard", true)
|
|
ncutils.RunCmd(ipExec+" link add dev "+ifacename+" type wireguard", true)
|
|
- ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+address+"/"+mask, true) // this was a bug waiting to happen
|
|
|
|
-
|
|
|
|
|
|
+ if address4 != "" {
|
|
|
|
+ ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+address4+"/"+mask4, true)
|
|
|
|
+ }
|
|
|
|
+ if address6 != "" {
|
|
|
|
+ ncutils.RunCmd(ipExec+" address add dev "+ifacename+" "+address6+"/"+mask6, true)
|
|
|
|
+ }
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|