From: Ben Pfaff Date: Mon, 5 Oct 2009 17:32:38 +0000 (-0700) Subject: Merge "master" into xs5.7. X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=879ce26627323e5139629985cd72ab15758b5853;p=sliver-openvswitch.git Merge "master" into xs5.7. --- 879ce26627323e5139629985cd72ab15758b5853 diff --cc xenserver/etc_xensource_scripts_vif index 1baaeecd4,dc9cb7b77..033e001cb --- a/xenserver/etc_xensource_scripts_vif +++ b/xenserver/etc_xensource_scripts_vif @@@ -12,8 -12,20 +12,10 @@@ # 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" - -TYPE=`echo ${XENBUS_PATH} | cut -f 2 -d '/'` -DOMID=`echo ${XENBUS_PATH} | cut -f 3 -d '/'` -DEVID=`echo ${XENBUS_PATH} | cut -f 4 -d '/'` - -XAPI=/xapi/${DOMID}/hotplug/${TYPE}/${DEVID} -HOTPLUG=/xapi/${DOMID}/hotplug/${TYPE}/${DEVID} -PRIVATE=/xapi/${DOMID}/private/${TYPE}/${DEVID} -BRCTL=/usr/sbin/brctl -IP=/sbin/ip - +IP="/sbin/ip" handle_promiscuous() { @@@ -85,34 -68,32 +87,32 @@@ add_to_bridge( local bridge=$(xenstore-read "${PRIVATE}/bridge") if [ $? -ne 0 -o -z "${bridge}" ]; then logger -t scripts-vif "Failed to read ${PRIVATE}/bridge from xenstore" + exit 1 fi - logger -t scripts-vif "Adding ${vif} to ${bridge} with address ${address}" + logger -t scripts-vif "Adding ${dev} 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.${dev}.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" - ${IP} link set "${vif}" arp off || logger -t scripts-vif "Failed to ip link set ${vif} arp off" - ${IP} link set "${vif}" multicast off || logger -t scripts-vif "Failed to ip link set ${vif} multicast off" - ${IP} link set "${vif}" address "${address}" || logger -t scripts-vif "Failed to ip link set ${vif} address ${address}" - ${IP} addr flush "${vif}" || logger -t scripts-vif "Failed to ip addr flush ${vif}" - - local vif_details=$($dump_vif_details $DOMID $DEVID) - if [ $? -ne 0 -o -z "${vif_details}" ]; then - logger -t scripts-vif "Failed to retrieve vif details for vswitch" + if [ "$type" = "vif" ] ; then + local vif_details=$(handle_vif_details) fi + ${IP} link set "${dev}" down || logger -t scripts-vif "Failed to ip link set ${dev} down" + ${IP} link set "${dev}" arp off || logger -t scripts-vif "Failed to ip link set ${dev} arp off" + ${IP} link set "${dev}" multicast off || logger -t scripts-vif "Failed to ip link set ${dev} multicast off" + ${IP} link set "${dev}" address "${address}" || logger -t scripts-vif "Failed to ip link set ${dev} address ${address}" + ${IP} addr flush "${dev}" || logger -t scripts-vif "Failed to ip addr flush ${dev}" + $cfg_mod -F /etc/ovs-vswitchd.conf \ - --del-match="bridge.*.port=$vif" \ - --del-match="vlan.$vif.[!0-9]*" \ - --del-match="port.$vif.[!0-9]*" \ - --add="bridge.$bridge.port=$vif" \ + --del-match="bridge.*.port=${dev}" \ + --del-match="vlan.${dev}.[!0-9]*" \ + --del-match="port.${dev}.[!0-9]*" \ + --add="bridge.$bridge.port=${dev}" \ $vid $vif_details -c $service vswitch reload