diff --git a/cmd/network/network.go b/cmd/network/network.go index 3978aa26..03217284 100644 --- a/cmd/network/network.go +++ b/cmd/network/network.go @@ -1,11 +1,13 @@ package network import ( + "bytes" "errors" "fmt" "net" "os" "os/exec" + "strings" log "github.com/Sirupsen/logrus" @@ -48,6 +50,18 @@ func applyNetworkConfigs(cfg *config.Config) error { continue } + if len(netConf.Match) > 4 && strings.ToLower(netConf.Match[:3]) == "mac" { + haAddr, err := net.ParseMAC(netConf.Match[4:]) + if err != nil { + return err + } + if bytes.Compare(haAddr, link.Attrs().HardwareAddr) == 0 { + // MAC address match is used over all other matches + match = netConf + break + } + } + // "" means match has not been found if match.Match == "" && matches(linkName, netConf.Match) { match = netConf