Merge "master" into xs5.7.
authorBen Pfaff <blp@nicira.com>
Mon, 5 Oct 2009 17:32:38 +0000 (10:32 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 5 Oct 2009 17:32:38 +0000 (10:32 -0700)
1  2 
xenserver/etc_init.d_vswitch
xenserver/etc_xensource_scripts_vif

Simple merge
  # 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