diff --git a/src/vnm/VirtualNetwork.cc b/src/vnm/VirtualNetwork.cc index 6b1101abf0..7387ad6062 100644 --- a/src/vnm/VirtualNetwork.cc +++ b/src/vnm/VirtualNetwork.cc @@ -605,6 +605,11 @@ int VirtualNetwork::nic_attribute( nic->replace("VLAN_ID", vlan_id); } + if (parent_vid != -1) + { + nic->replace("PARENT_NETWORK_ID", parent_vid); + } + if ( get_cluster_id() != ClusterPool::NONE_CLUSTER_ID ) { nic->replace("CLUSTER_ID", get_cluster_id()); diff --git a/src/vnm_mad/remotes/lib/vlan.rb b/src/vnm_mad/remotes/lib/vlan.rb index b59971fffe..a9ee623d70 100644 --- a/src/vnm_mad/remotes/lib/vlan.rb +++ b/src/vnm_mad/remotes/lib/vlan.rb @@ -111,7 +111,13 @@ module VNMMAD # Generate the name of the vlan device which will be added to the bridge. def get_vlan_dev_name if @nic[:vlan_id].nil? - @nic[:vlan_id] = CONF[:start_vlan] + @nic[:network_id].to_i + if @nic[:parent_network_id] + network_id = @nic[:parent_network_id].to_i + else + network_id = @nic[:network_id].to_i + end + + @nic[:vlan_id] = CONF[:start_vlan] + network_id end @nic[:vlan_dev] = "#{@nic[:phydev]}.#{@nic[:vlan_id]}" diff --git a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb index 9f076d0035..a7077f1919 100644 --- a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb +++ b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb @@ -90,9 +90,15 @@ class OpenvSwitchVLAN < VNMMAD::VNMDriver def vlan if @nic[:vlan_id] - return @nic[:vlan_id] + @nic[:vlan_id] else - return CONF[:start_vlan] + @nic[:network_id].to_i + if @nic[:parent_network_id] + network_id = @nic[:parent_network_id].to_i + else + network_id = @nic[:network_id].to_i + end + + @nic[:vlan_id] = CONF[:start_vlan] + network_id end end diff --git a/src/vnm_mad/remotes/vmware/VMware.rb b/src/vnm_mad/remotes/vmware/VMware.rb index 49a8737289..f03d9a3102 100644 --- a/src/vnm_mad/remotes/vmware/VMware.rb +++ b/src/vnm_mad/remotes/vmware/VMware.rb @@ -63,7 +63,14 @@ class OpenNebulaVMware < VNMMAD::VNMDriver if nic[:vlan_id] vlan = nic[:vlan_id] else - vlan = CONF[:start_vlan] + nic[:network_id].to_i + if nic[:parent_network_id] + network_id = nic[:parent_network_id].to_i + else + network_id = nic[:network_id].to_i + end + + vlan = CONF[:start_vlan] + network_id + end else vlan = nil