From 1006207fc21e4bd5d340cd9bf39e8c428de61e76 Mon Sep 17 00:00:00 2001 From: yo Date: Thu, 21 Nov 2024 18:47:55 +0100 Subject: [PATCH] v0.42h: Add static-macs option for bridged vnet setup with mac flapping --- cmd/root.go | 5 ++++- cmd/start.go | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmd/root.go b/cmd/root.go index 6a29ed7..056ed97 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -14,7 +14,7 @@ import ( ) const ( - gVersion = "0.42g" + gVersion = "0.42h" // TODO : Get from $jail_zpool/defaults.json MIN_DYN_DEVFS_RULESET = 1000 @@ -52,6 +52,7 @@ var ( gNoJailLineSep bool gNoSnapLineSep bool gNoDSLineSep bool + gBridgeStaticMac bool gHostVersion float64 @@ -519,6 +520,8 @@ func initConfig() { os.Exit(1) } + gBridgeStaticMac = viper.GetBool("static-macs") + if gDebug { log.SetLevel(log.DebugLevel) log.Debugf("Debug mode enabled\n") diff --git a/cmd/start.go b/cmd/start.go index 7cb95e9..15d7f68 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -1007,6 +1007,15 @@ func setupVnetInterfaceJailSide(jail *Jail, hostepairs []string) error { if err != nil { return fmt.Errorf("Error adding member %s to %s: %v: %s\n", nic, bridge, err, out) } + // Fix mac flapping and instabilities with bridged vnet network + if gBridgeStaticMac { + log.Debugf("Set %s as static to %s in %s address cache\n") + cmd = fmt.Sprintf("/sbin/ifconfig %s static %s %s", bridge, nic, jsmac) + out, err := executeCommand(cmd) + if err != nil { + return fmt.Errorf("Error adding member %s to %s: %v: %s\n", nic, bridge, err, out) + } + } } // Check we have an IP for the nic, and set it into jail