A MacVTap device can operate in one of four modes which are defined at creation time and determine how the tap endpoints communicate between each other. Those modes are the 'vepa', 'bridge', 'private', and the 'passthru' mode.
This patch creates a new nicparam slot named 'macvtap_mode', which will specify the operation mode of a MacVTap NIC. The macvtap_mode parameter will only be used if the network's connection mode is set to macvtap, since it does not make sense in other modes. Finally we've created a separate constant variable for each one of the four macvtap modes. Signed-off-by: Dimitris Bliablias <db...@skroutz.gr> --- src/Ganeti/Constants.hs | 33 +++++++++++++++++++++++++++++++-- src/Ganeti/Objects/Nic.hs | 1 + 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs index a0d681d..7e81446 100644 --- a/src/Ganeti/Constants.hs +++ b/src/Ganeti/Constants.hs @@ -2523,11 +2523,15 @@ nicMode = "mode" nicVlan :: String nicVlan = "vlan" +nicMacvtapMode :: String +nicMacvtapMode = "macvtap_mode" + nicsParameterTypes :: Map String VType nicsParameterTypes = Map.fromList [(nicMode, vtypeString), (nicLink, vtypeString), - (nicVlan, vtypeString)] + (nicVlan, vtypeString), + (nicMacvtapMode, vtypeString)] nicsParameters :: FrozenSet String nicsParameters = ConstantUtils.mkSet (Map.keys nicsParameterTypes) @@ -2550,6 +2554,26 @@ nicIpPool = Types.nICModeToRaw NMPool nicValidModes :: FrozenSet String nicValidModes = ConstantUtils.mkSet $ map Types.nICModeToRaw [minBound..] +nicMacvtapModeVepa :: String +nicMacvtapModeVepa = "vepa" + +nicMacvtapModeBridge :: String +nicMacvtapModeBridge = "bridge" + +nicMacvtapModePrivate :: String +nicMacvtapModePrivate = "private" + +nicMacvtapModePassthru :: String +nicMacvtapModePassthru = "passthru" + +nicMacvtapModes :: FrozenSet String +nicMacvtapModes = + ConstantUtils.mkSet [ nicMacvtapModeVepa + , nicMacvtapModeBridge + , nicMacvtapModePrivate + , nicMacvtapModePassthru + ] + releaseAction :: String releaseAction = "release" @@ -2640,6 +2664,9 @@ inicNetwork = "network" inicVlan :: String inicVlan = "vlan" +inicMacvtapMode :: String +inicMacvtapMode = "macvtap_mode" + inicParamsTypes :: Map String VType inicParamsTypes = Map.fromList [(inicBridge, VTypeMaybeString), @@ -2649,7 +2676,8 @@ inicParamsTypes = (inicMode, VTypeString), (inicName, VTypeMaybeString), (inicNetwork, VTypeMaybeString), - (inicVlan, VTypeMaybeString)] + (inicVlan, VTypeMaybeString), + (inicMacvtapMode, VTypeMaybeString)] inicParams :: FrozenSet String inicParams = ConstantUtils.mkSet (Map.keys inicParamsTypes) @@ -4316,6 +4344,7 @@ niccDefaults = [ (nicMode, PyValueEx nicModeBridged) , (nicLink, PyValueEx defaultBridge) , (nicVlan, PyValueEx "") + , (nicMacvtapMode, PyValueEx "") ] -- | All of the following values are quite arbitrary - there are no diff --git a/src/Ganeti/Objects/Nic.hs b/src/Ganeti/Objects/Nic.hs index 270151d..03a4295 100644 --- a/src/Ganeti/Objects/Nic.hs +++ b/src/Ganeti/Objects/Nic.hs @@ -46,6 +46,7 @@ $(buildParam "Nic" "nicp" [ simpleField "mode" [t| NICMode |] , simpleField "link" [t| String |] , simpleField "vlan" [t| String |] + , simpleField "macvtap_mode" [t| String |] ]) $(buildObject "PartialNic" "nic" $ -- 2.1.4