From 55bc65533fe868666f6ea8539f2a1b30da964abf Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Mon, 5 Oct 2009 16:32:53 +0100 Subject: [PATCH] xenserver: use ovs-vsctl for VIF VLANs instead of separate state files ovs-vsctl did not exist when this code was originally written, but it provides exactly what is needed to get rid of those separate state files. The vif hotplug script diff is against the xs5.7 branch but I think is applicable to master and/or citrix with just context changes. I was thinking of using ovs-vsctl exclusively for configuration modifications from the vif hotplug script but that would need a mechanism to pass the additional vif details to ovs-vsctl add-port as well as perhaps making the bridge optional to del-port. The other option would be to use the --no-reload option and split the config mods into two parts, but I don't like that idea much. --- xenserver/etc_xensource_scripts_vif | 13 ++++++------- .../opt_xensource_libexec_interface-reconfigure | 11 ----------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/xenserver/etc_xensource_scripts_vif b/xenserver/etc_xensource_scripts_vif index 04aa2bb0..dc9cb7b7 100755 --- a/xenserver/etc_xensource_scripts_vif +++ b/xenserver/etc_xensource_scripts_vif @@ -12,6 +12,7 @@ # Keep other-config/ keys in sync with device.ml:vif_udev_keys cfg_mod="/usr/bin/ovs-cfg-mod" +vsctl="/usr/bin/ovs-vsctl" dump_vif_details="/usr/share/vswitch/scripts/dump-vif-details" service="/sbin/service" @@ -70,13 +71,11 @@ add_to_bridge() fi logger -t scripts-vif "Adding ${vif} to ${bridge} with address ${address}" - vid= - if [ -e "/var/lib/openvswitch/br-$bridge" ]; then - . "/var/lib/openvswitch/br-$bridge" - if [ -n "$VLAN_SLAVE" -a -n "$VLAN_VID" ]; then - bridge=$VLAN_SLAVE - vid="--add=vlan.$vif.tag=$VLAN_VID" - fi + local VLAN_ID=$($vsctl br-to-vlan $bridge) + local vid= + if [ "$VLAN_ID" -ne 0 ] ; then + bridge=$($vsctl br-to-parent $bridge) + vid="--add=vlan.${dev}.tag=${VLAN_ID}" fi ${IP} link set "${vif}" down || logger -t scripts-vif "Failed to ip link set ${vif} down" diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure b/xenserver/opt_xensource_libexec_interface-reconfigure index 7b0c9eff..e9f56ddf 100755 --- a/xenserver/opt_xensource_libexec_interface-reconfigure +++ b/xenserver/opt_xensource_libexec_interface-reconfigure @@ -1473,17 +1473,6 @@ def action_up(pif): cfgmod_argv += ['--add=vlan.%s.tag=%s' % (ipdev, pifrec['VLAN'])] cfgmod_argv += ['--add=iface.%s.internal=true' % (ipdev)] cfgmod_argv += ['--add=iface.%s.fake-bridge=true' % (ipdev)] - if not os.path.exists(vswitch_state_dir): - os.mkdir(vswitch_state_dir) - br = ConfigurationFile("br-%s" % ipdev, vswitch_state_dir) - br.write("VLAN_SLAVE=%s\n" % bridge) - br.write("VLAN_VID=%s\n" % pifrec['VLAN']) - br.close() - f.attach_child(br) - else: - br = ConfigurationFile("br-%s" % ipdev, vswitch_state_dir) - br.unlink() - f.attach_child(br) # Apply updated configuration. try: -- 2.30.2