freebsd join, checkin, and leave functional

This commit is contained in:
afeiszli
2021-11-09 23:44:39 +00:00
parent 317a639bf5
commit c4303d2499
4 changed files with 35 additions and 7 deletions

View File

@@ -19,7 +19,9 @@ func SetIPForwarding() error {
var err error var err error
switch os { switch os {
case "linux": case "linux":
err = SetIPForwardingLinux() err = SetIPForwardingUnix()
case "freebsd":
err = SetIPForwardingFreeBSD()
case "darwin": case "darwin":
err = SetIPForwardingMac() err = SetIPForwardingMac()
default: default:
@@ -29,7 +31,7 @@ func SetIPForwarding() error {
} }
// SetIPForwardingLinux - sets the ipforwarding for linux // SetIPForwardingLinux - sets the ipforwarding for linux
func SetIPForwardingLinux() error { func SetIPForwardingUnix() error {
out, err := ncutils.RunCmd("sysctl net.ipv4.ip_forward", true) out, err := ncutils.RunCmd("sysctl net.ipv4.ip_forward", true)
if err != nil { if err != nil {
log.Println("WARNING: Error encountered setting ip forwarding. This can break functionality.") log.Println("WARNING: Error encountered setting ip forwarding. This can break functionality.")
@@ -47,6 +49,25 @@ func SetIPForwardingLinux() error {
return nil return nil
} }
// SetIPForwardingLinux - sets the ipforwarding for linux
func SetIPForwardingFreeBSD() error {
out, err := ncutils.RunCmd("sysctl net.inet.ip.forwarding", true)
if err != nil {
log.Println("WARNING: Error encountered setting ip forwarding. This can break functionality.")
return err
} else {
s := strings.Fields(string(out))
if s[1] != "1" {
_, err = ncutils.RunCmd("sysctl -w net.inet.ip.forwarding=1", true)
if err != nil {
log.Println("WARNING: Error encountered setting ip forwarding. You may want to investigate this.")
return err
}
}
}
return nil
}
// SetIPForwardingMac - sets ip forwarding for mac // SetIPForwardingMac - sets ip forwarding for mac
func SetIPForwardingMac() error { func SetIPForwardingMac() error {
_, err := ncutils.RunCmd("sysctl -w net.inet.ip.forwarding=1", true) _, err := ncutils.RunCmd("sysctl -w net.inet.ip.forwarding=1", true)

View File

@@ -1,6 +1,8 @@
package ncutils package ncutils
import ( import (
"context"
"syscall"
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt" "fmt"
@@ -16,7 +18,6 @@ import (
"strconv" "strconv"
"strings" "strings"
"time" "time"
"golang.zx2c4.com/wireguard/wgctrl" "golang.zx2c4.com/wireguard/wgctrl"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes" "golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"google.golang.org/grpc" "google.golang.org/grpc"
@@ -368,8 +369,14 @@ func Copy(src, dst string) (int64, error) {
// RunCmd - runs a local command // RunCmd - runs a local command
func RunCmd(command string, printerr bool) (string, error) { func RunCmd(command string, printerr bool) (string, error) {
args := strings.Fields(command) args := strings.Fields(command)
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
cmd := exec.Command(args[0], args[1:]...) cmd := exec.Command(args[0], args[1:]...)
cmd.Wait() cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
go func() {
<- ctx.Done()
_ = syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
}()
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil && printerr { if err != nil && printerr {
log.Println("error running command:", command) log.Println("error running command:", command)

View File

@@ -279,7 +279,7 @@ func SetWGConfig(network string, peerupdate bool) error {
if err != nil { if err != nil {
return err return err
} }
if peerupdate { if peerupdate && runtime.GOOS != "freebsd"{
var iface string var iface string
iface = nodecfg.Interface iface = nodecfg.Interface
if ncutils.IsMac() { if ncutils.IsMac() {

View File

@@ -2,7 +2,6 @@ package wireguard
import ( import (
"io/ioutil" "io/ioutil"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/config"
"github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/netclient/ncutils"
@@ -50,7 +49,8 @@ func SetWGKeyConfig(network string, serveraddr string) error {
// ApplyWGQuickConf - applies wg-quick commands if os supports // ApplyWGQuickConf - applies wg-quick commands if os supports
func ApplyWGQuickConf(confPath string) error { func ApplyWGQuickConf(confPath string) error {
if _, err := ncutils.RunCmd("wg-quick up "+confPath, true); err != nil { _, _ = ncutils.RunCmd("wg-quick down "+confPath, false)
if _, err := ncutils.RunCmd("wg-quick up "+confPath, false); err != nil {
return err return err
} }
return nil return nil