mirror of
https://github.com/containers/podman.git
synced 2026-07-17 02:31:52 -04:00
Add podman network create option for bridge vlan
Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
This commit is contained in:
@@ -30,8 +30,9 @@ Driver to manage the network (default "bridge"). Currently only `bridge` is sup
|
||||
|
||||
Set driver specific options.
|
||||
|
||||
For the `bridge` driver the following options are supported: `mtu`.
|
||||
For the `bridge` driver the following options are supported: `mtu` and `vlan`.
|
||||
The `mtu` option sets the Maximum Transmission Unit (MTU) and takes an integer value.
|
||||
The `vlan` option assign VLAN tag and enables vlan\_filtering. Defaults to none.
|
||||
|
||||
#### **--gateway**
|
||||
|
||||
|
||||
@@ -92,6 +92,14 @@ func parseMTU(mtu string) (int, error) {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// parseVlan parses the vlan option
|
||||
func parseVlan(vlan string) (int, error) {
|
||||
if vlan == "" {
|
||||
return 0, nil // default
|
||||
}
|
||||
return strconv.Atoi(vlan)
|
||||
}
|
||||
|
||||
// createBridge creates a CNI network
|
||||
func createBridge(name string, options entities.NetworkCreateOptions, runtimeConfig *config.Config) (string, error) {
|
||||
var (
|
||||
@@ -170,6 +178,11 @@ func createBridge(name string, options entities.NetworkCreateOptions, runtimeCon
|
||||
return "", err
|
||||
}
|
||||
|
||||
vlan, err := parseVlan(options.Options["vlan"])
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// obtain host bridge name
|
||||
bridgeDeviceName, err := GetFreeDeviceName(runtimeConfig)
|
||||
if err != nil {
|
||||
@@ -193,7 +206,7 @@ func createBridge(name string, options entities.NetworkCreateOptions, runtimeCon
|
||||
ncList := NewNcList(name, version.Current(), options.Labels)
|
||||
var plugins []CNIPlugins
|
||||
// TODO need to iron out the role of isDefaultGW and IPMasq
|
||||
bridge := NewHostLocalBridge(bridgeDeviceName, isGateway, false, ipMasq, mtu, ipamConfig)
|
||||
bridge := NewHostLocalBridge(bridgeDeviceName, isGateway, false, ipMasq, mtu, vlan, ipamConfig)
|
||||
plugins = append(plugins, bridge)
|
||||
plugins = append(plugins, NewPortMapPlugin())
|
||||
plugins = append(plugins, NewFirewallPlugin())
|
||||
|
||||
@@ -41,13 +41,14 @@ func NewNcList(name, version string, labels NcLabels) NcList {
|
||||
}
|
||||
|
||||
// NewHostLocalBridge creates a new LocalBridge for host-local
|
||||
func NewHostLocalBridge(name string, isGateWay, isDefaultGW, ipMasq bool, mtu int, ipamConf IPAMHostLocalConf) *HostLocalBridge {
|
||||
func NewHostLocalBridge(name string, isGateWay, isDefaultGW, ipMasq bool, mtu int, vlan int, ipamConf IPAMHostLocalConf) *HostLocalBridge {
|
||||
hostLocalBridge := HostLocalBridge{
|
||||
PluginType: "bridge",
|
||||
BrName: name,
|
||||
IPMasq: ipMasq,
|
||||
MTU: mtu,
|
||||
HairpinMode: true,
|
||||
Vlan: vlan,
|
||||
IPAM: ipamConf,
|
||||
}
|
||||
if isGateWay {
|
||||
|
||||
Reference in New Issue
Block a user