From 84fca06c6290b0b41321d5c9559bf1a656413f59 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Tue, 21 Feb 2023 20:39:45 +0700 Subject: [PATCH] cmd/ctrld: implement allocate/deallocate ip on freebsd Updates #56 --- cmd/ctrld/os_freebsd.go | 21 +++++++++++++++++++++ cmd/ctrld/os_others.go | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmd/ctrld/os_freebsd.go b/cmd/ctrld/os_freebsd.go index b65de54..da1a05a 100644 --- a/cmd/ctrld/os_freebsd.go +++ b/cmd/ctrld/os_freebsd.go @@ -3,11 +3,32 @@ package main import ( "net" "net/netip" + "os/exec" "github.com/Control-D-Inc/ctrld/internal/dns" "github.com/Control-D-Inc/ctrld/internal/resolvconffile" ) +// allocate loopback ip +// sudo ifconfig lo0 127.0.0.53 alias +func allocateIP(ip string) error { + cmd := exec.Command("ifconfig", "lo0", ip, "alias") + if err := cmd.Run(); err != nil { + mainLog.Error().Err(err).Msg("allocateIP failed") + return err + } + return nil +} + +func deAllocateIP(ip string) error { + cmd := exec.Command("ifconfig", "lo0", ip, "-alias") + if err := cmd.Run(); err != nil { + mainLog.Error().Err(err).Msg("deAllocateIP failed") + return err + } + return nil +} + // set the dns server for the provided network interface func setDNS(iface *net.Interface, nameservers []string) error { r, err := dns.NewOSConfigurator(logf, iface.Name) diff --git a/cmd/ctrld/os_others.go b/cmd/ctrld/os_others.go index e9f9d61..3807bcc 100644 --- a/cmd/ctrld/os_others.go +++ b/cmd/ctrld/os_others.go @@ -1,4 +1,4 @@ -//go:build !linux && !darwin +//go:build !linux && !darwin && !freebsd package main