xen: Correctly write VLAN key in config file.
[sliver-openvswitch.git] / xenserver / etc_xensource_scripts_vif
index fb7517a..2fcf9d4 100755 (executable)
@@ -11,8 +11,9 @@
 
 # Keep other-config/ keys in sync with device.ml:vif_udev_keys
 
-cfg_mod="/root/vswitch/bin/ovs-cfg-mod"
-dump_vif_details="/root/vswitch/scripts/dump-vif-details"
+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"
 
 TYPE=`echo ${XENBUS_PATH} | cut -f 2 -d '/'`
@@ -31,8 +32,8 @@ handle_promiscuous()
     local arg=$(xenstore-read "${PRIVATE}/other-config/promiscuous")
     if [ $? -eq 0 -a -n "${arg}" ] ; then
         case "${arg}" in 
-            true|on) echo 1 > /sys/class/net/${vif}/brport/promisc ;;
-            *) echo 0 > /sys/class/net/${vif}/brport/promisc ;;
+            true|on) logger -t script-vif "${vif}: Promiscuous ports are not supported via vSwitch." ;;
+            *) ;;
         esac
     fi
 }
@@ -70,13 +71,11 @@ add_to_bridge()
     fi
     logger -t scripts-vif "Adding ${vif} to ${bridge} with address ${address}"
 
-    vid=
-    if [ -e "/etc/openvswitch/br-$bridge" ]; then
-       . "/etc/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.${vif}.tag=${VLAN_ID}"
     fi
 
     ${IP} link set "${vif}" down                        || logger -t scripts-vif "Failed to ip link set ${vif} down"