diff options
author | baude <bbaude@redhat.com> | 2021-02-01 14:42:38 -0600 |
---|---|---|
committer | baude <bbaude@redhat.com> | 2021-02-02 07:24:35 -0600 |
commit | 4b00992ac4ad3314eb100bf7d7a5aaa2c84ae303 (patch) | |
tree | b2d5a4908ca7fbac0a4afb092d755a1d0e8e8d62 /libpod | |
parent | 67d48c56a61fbdfe18e33a2f765373d581ac5724 (diff) | |
download | podman-4b00992ac4ad3314eb100bf7d7a5aaa2c84ae303.tar.gz podman-4b00992ac4ad3314eb100bf7d7a5aaa2c84ae303.tar.bz2 podman-4b00992ac4ad3314eb100bf7d7a5aaa2c84ae303.zip |
add macvlan as a supported network driver
instead of using the --macvlan to indicate that you want to make a
macvlan network, podman network create now honors the driver name of
*macvlan*. Any options to macvlan, like the parent device, should be
specified as a -o option. For example, -o parent=eth0.
the --macvlan option was marked as deprecated in the man page but is
still supported for the duration of 3.0.
Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/network/create.go | 18 | ||||
-rw-r--r-- | libpod/network/netconflist.go | 6 | ||||
-rw-r--r-- | libpod/network/network.go | 12 |
3 files changed, 27 insertions, 9 deletions
diff --git a/libpod/network/create.go b/libpod/network/create.go index 6e85f2e13..79bc47146 100644 --- a/libpod/network/create.go +++ b/libpod/network/create.go @@ -29,7 +29,7 @@ func Create(name string, options entities.NetworkCreateOptions, runtimeConfig *c return nil, err } defer l.releaseCNILock() - if len(options.MacVLAN) > 0 { + if len(options.MacVLAN) > 0 || options.Driver == MacVLANNetworkDriver { fileName, err = createMacVLAN(name, options, runtimeConfig) } else { fileName, err = createBridge(name, options, runtimeConfig) @@ -256,9 +256,17 @@ func createMacVLAN(name string, options entities.NetworkCreateOptions, runtimeCo return "", err } - // Make sure the host-device exists - if !util.StringInSlice(options.MacVLAN, liveNetNames) { - return "", errors.Errorf("failed to find network interface %q", options.MacVLAN) + // The parent can be defined with --macvlan or as an option (-o parent:device) + parentNetworkDevice := options.MacVLAN + if len(parentNetworkDevice) < 1 { + if parent, ok := options.Options["parent"]; ok { + parentNetworkDevice = parent + } + } + + // Make sure the host-device exists if provided + if len(parentNetworkDevice) > 0 && !util.StringInSlice(parentNetworkDevice, liveNetNames) { + return "", errors.Errorf("failed to find network interface %q", parentNetworkDevice) } if len(name) > 0 { netNames, err := GetNetworkNamesFromFileSystem(runtimeConfig) @@ -275,7 +283,7 @@ func createMacVLAN(name string, options entities.NetworkCreateOptions, runtimeCo } } ncList := NewNcList(name, version.Current(), options.Labels) - macvlan := NewMacVLANPlugin(options.MacVLAN) + macvlan := NewMacVLANPlugin(parentNetworkDevice) plugins = append(plugins, macvlan) ncList["plugins"] = plugins b, err := json.MarshalIndent(ncList, "", " ") diff --git a/libpod/network/netconflist.go b/libpod/network/netconflist.go index 165a9067b..ca6a4a70b 100644 --- a/libpod/network/netconflist.go +++ b/libpod/network/netconflist.go @@ -177,9 +177,13 @@ func NewMacVLANPlugin(device string) MacVLANConfig { m := MacVLANConfig{ PluginType: "macvlan", - Master: device, IPAM: i, } + // CNI is supposed to use the default route if a + // parent device is not provided + if len(device) > 0 { + m.Master = device + } return m } diff --git a/libpod/network/network.go b/libpod/network/network.go index 89f0b67ac..e61e51686 100644 --- a/libpod/network/network.go +++ b/libpod/network/network.go @@ -18,11 +18,17 @@ import ( "github.com/sirupsen/logrus" ) -// DefaultNetworkDriver is the default network type used -var DefaultNetworkDriver = "bridge" +var ( + // BridgeNetworkDriver defines the bridge cni driver + BridgeNetworkDriver = "bridge" + // DefaultNetworkDriver is the default network type used + DefaultNetworkDriver = BridgeNetworkDriver + // MacVLANNetworkDriver defines the macvlan cni driver + MacVLANNetworkDriver = "macvlan" +) // SupportedNetworkDrivers describes the list of supported drivers -var SupportedNetworkDrivers = []string{DefaultNetworkDriver} +var SupportedNetworkDrivers = []string{BridgeNetworkDriver, MacVLANNetworkDriver} // isSupportedDriver checks if the user provided driver is supported func isSupportedDriver(driver string) error { |