Support MacRequest to specify MAC address for interface

This commit is contained in:
Tomofumi Hayashi
2018-08-28 19:21:50 +09:00
committed by dougbtv
parent 6b573e8c4b
commit dae85d7781
5 changed files with 118 additions and 17 deletions

View File

@@ -22,6 +22,7 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"net"
"os"
"path/filepath"
"time"
@@ -169,6 +170,18 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon
return nil, logging.Errorf("cannot set %q ifname to %q: %v", delegate.Conf.Type, ifName, err)
}
if delegate.MacRequest != "" {
// validate Mac address
_, err := net.ParseMAC(delegate.MacRequest)
if err != nil {
return nil, logging.Errorf("failed to parse mac address %q", delegate.MacRequest)
}
if os.Setenv("MAC", delegate.MacRequest) != nil {
return nil, logging.Errorf("cannot set %q mac to %q: %v", delegate.Conf.Type, delegate.MacRequest, err)
}
}
if delegate.ConfListPlugin != false {
result, err := conflistAdd(rt, delegate.Bytes, binDir)
if err != nil {