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