summaryrefslogtreecommitdiff
path: root/libpod/network/cni/cni_conversion.go
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-09-16 14:03:49 +0200
committerPaul Holzinger <pholzing@redhat.com>2021-09-16 14:53:33 +0200
commitc20f61148cfc7c51f72bf266e154d1903db68c6a (patch)
treec12439f97a2c9ba211273cd24421964dfe5febc3 /libpod/network/cni/cni_conversion.go
parent9119a578e782b92bd344f093f5491c318bc20d69 (diff)
downloadpodman-c20f61148cfc7c51f72bf266e154d1903db68c6a.tar.gz
podman-c20f61148cfc7c51f72bf266e154d1903db68c6a.tar.bz2
podman-c20f61148cfc7c51f72bf266e154d1903db68c6a.zip
CNI: network create support macvlan modes
Support setting the macvlan mode with `podman network create -d macvlan --opt mode=bridge`. This will correctly set the specified macvlan mode in the cni conflist file. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'libpod/network/cni/cni_conversion.go')
-rw-r--r--libpod/network/cni/cni_conversion.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/libpod/network/cni/cni_conversion.go b/libpod/network/cni/cni_conversion.go
index 060794ebe..32dcc62de 100644
--- a/libpod/network/cni/cni_conversion.go
+++ b/libpod/network/cni/cni_conversion.go
@@ -94,6 +94,10 @@ func createNetworkFromCNIConfigList(conf *libcni.NetworkConfigList, confPath str
network.Options["mtu"] = strconv.Itoa(macvlan.MTU)
}
+ if macvlan.Mode != "" {
+ network.Options["mode"] = macvlan.Mode
+ }
+
err = convertIPAMConfToNetwork(&network, macvlan.IPAM, confPath)
if err != nil {
return nil, err
@@ -237,6 +241,7 @@ func (n *cniNetwork) createCNIConfigListFromNetwork(network *types.Network, writ
vlan := 0
mtu := 0
+ macvlanMode := ""
for k, v := range network.Options {
switch k {
case "mtu":
@@ -251,6 +256,12 @@ func (n *cniNetwork) createCNIConfigListFromNetwork(network *types.Network, writ
return nil, "", err
}
+ case "mode":
+ if !pkgutil.StringInSlice(v, []string{"", "bridge", "private", "vepa", "passthru"}) {
+ return nil, "", errors.Errorf("unknown macvlan mode %q", v)
+ }
+ macvlanMode = v
+
default:
return nil, "", errors.Errorf("unsupported network option %s", k)
}
@@ -281,7 +292,7 @@ func (n *cniNetwork) createCNIConfigListFromNetwork(network *types.Network, writ
}
case types.MacVLANNetworkDriver:
- plugins = append(plugins, newMacVLANPlugin(network.NetworkInterface, mtu, ipamConf))
+ plugins = append(plugins, newMacVLANPlugin(network.NetworkInterface, macvlanMode, mtu, ipamConf))
default:
return nil, "", errors.Errorf("driver %q is not supported by cni", network.Driver)