From 452b0e4b4e0e14060d8bd2aec0d93c394730226f Mon Sep 17 00:00:00 2001 From: yo Date: Sat, 20 Apr 2024 20:32:51 +0200 Subject: [PATCH] BUGFIX starting jail with dhcp --- cmd/start.go | 2 +- cmd/stop.go | 33 ++++++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/cmd/start.go b/cmd/start.go index 3eb5dba..e397460 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -1448,7 +1448,7 @@ func StartJail(args []string) { fmt.Printf(" > Setup VNet network: OK\n") // Set default route, unless main network is dhcp - if ! cj.isFirstNetDhcp() { + if ! cj.isFirstNetDhcp() && !strings.EqualFold(cj.Config.Ip4_addr, "none") { fmt.Printf(" > Setup default ipv4 gateway:\n") cmd := fmt.Sprintf("/usr/sbin/setfib %s /usr/sbin/jexec %d route add default %s", cj.Config.Exec_fib, cj.JID, cj.Config.Defaultrouter) out, err := executeCommand(cmd) diff --git a/cmd/stop.go b/cmd/stop.go index c43dfba..c7f40de 100644 --- a/cmd/stop.go +++ b/cmd/stop.go @@ -83,15 +83,30 @@ func umountAndUnjailZFS(jail *Jail) error { } func destroyVNetInterfaces(jail *Jail) error { - for _, i := range strings.Split(jail.Config.Ip4_addr, ",") { - iname := fmt.Sprintf("%s.%d", strings.Split(i, "|")[0], jail.JID) - fmt.Printf("%s: ", iname) - _, err := executeCommand(fmt.Sprintf("ifconfig %s destroy", iname)) - //_, err := executeScript(fmt.Sprintf("ifconfig %s destroy >/dev/null 2>&1", iname)) - if err != nil { - return err - } else { - fmt.Printf("OK\n") + if !strings.EqualFold(jail.Config.Ip4_addr, "none") { + for _, i := range strings.Split(jail.Config.Ip4_addr, ",") { + iname := fmt.Sprintf("%s.%d", strings.Split(i, "|")[0], jail.JID) + fmt.Printf("%s: ", iname) + _, err := executeCommand(fmt.Sprintf("ifconfig %s destroy", iname)) + //_, err := executeScript(fmt.Sprintf("ifconfig %s destroy >/dev/null 2>&1", iname)) + if err != nil { + return err + } else { + fmt.Printf("OK\n") + } + } + } + if !strings.EqualFold(jail.Config.Ip6_addr, "none") { + for _, i := range strings.Split(jail.Config.Ip6_addr, ",") { + iname := fmt.Sprintf("%s.%d", strings.Split(i, "|")[0], jail.JID) + fmt.Printf("%s: ", iname) + _, err := executeCommand(fmt.Sprintf("ifconfig %s destroy", iname)) + //_, err := executeScript(fmt.Sprintf("ifconfig %s destroy >/dev/null 2>&1", iname)) + if err != nil { + return err + } else { + fmt.Printf("OK\n") + } } }