Merge master branch into xs5.7.
authorBen Pfaff <blp@nicira.com>
Wed, 18 Nov 2009 22:26:55 +0000 (14:26 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 18 Nov 2009 22:26:55 +0000 (14:26 -0800)
Conflicts:
xenserver/README
xenserver/automake.mk
xenserver/etc_xensource_scripts_vif
xenserver/usr_share_vswitch_scripts_dump-vif-details
xenserver/vswitch-xen.spec

1  2 
xenserver/README
xenserver/automake.mk
xenserver/etc_init.d_vswitch
xenserver/etc_xensource_scripts_vif
xenserver/vswitch-xen.spec

@@@ -48,6 -44,18 +48,12 @@@ files are
  
          vswitch-aware replacement for Citrix script of the same name.
  
 -    root_vswitch_scripts_dump-vif-details
 -
 -        Script to retrieve extended information about VIFs that are
 -        needed by the controller.  This is called by the "vif" script,
 -        which is run when virtual interfaces are added and removed.
 -
+     usr_share_vswitch_scripts_refresh-xs-network-uuids
+         Script to refresh bridge.<bridge>.xs-network-uuids keys, which
+         can get out-of-sync following a pool join.  Running this script
+         is an alternative to rebooting the host.
      root_vswitch_scripts_sysconfig.template
  
          Template for vswitch's /etc/sysconfig/vswitch configuration
@@@ -19,5 -18,6 +19,6 @@@ EXTRA_DIST += 
        xenserver/usr_sbin_brctl \
        xenserver/usr_sbin_xen-bugtool \
        xenserver/usr_share_vswitch_scripts_sysconfig.template \
 -      xenserver/usr_share_vswitch_scripts_dump-vif-details \
 +      xenserver/usr_share_vswitch_scripts_vif-on-internal-bridge \
+       xenserver/usr_share_vswitch_scripts_refresh-xs-network-uuids \
        xenserver/vswitch-xen.spec
Simple merge
@@@ -117,91 -85,62 +127,93 @@@ add_to_bridge(
      local vid=
      if [ "$VLAN_ID" -ne 0 ] ; then
        bridge=$($vsctl br-to-parent $bridge)
-       vid="--add=vlan.${dev}.tag=${VLAN_ID}"
+       vid="--add=vlan.${vif}.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.trunks=*" \
 -        --del-match="vlan.$vif.tag=*" \
 -        --del-match="port.$vif.[!0-9]*" \
 -        --add="bridge.$bridge.port=$vif" \
 +        --del-match="bridge.*.port=${dev}" \
-         --del-match="vlan.${dev}.[!0-9]*" \
++        --del-match="vlan.${dev}.trunks=*" \
++        --del-match="vlan.${dev}.tags=*" \
 +        --del-match="port.${dev}.[!0-9]*" \
 +        --add="bridge.$bridge.port=${dev}" \
          $vid $vif_details -c 
      $service vswitch reload
  
 -    ${IP} link set "${vif}" up                          || logger -t scripts-vif "Failed to ip link set ${vif} up"
 +    ${IP} link set "${dev}" up                          || logger -t scripts-vif "Failed to ip link set ${dev} up"
  }
  
 -echo Called as "$@" "$TYPE" "$DOMID" "$DEVID" | logger -t scripts-vif
 -case "$1" in
 -online)
 -      handle_ethtool rx
 -      handle_ethtool tx
 -      handle_ethtool sg
 -      handle_ethtool tso
 -      handle_ethtool ufo
 -      handle_ethtool gso
 +type=$2
  
 -      handle_mtu
 -      add_to_bridge
 -      handle_promiscuous
 +case ${type} in
 +    vif)
 +      DOMID=`echo ${XENBUS_PATH} | cut -f 3 -d '/'`
 +      DEVID=`echo ${XENBUS_PATH} | cut -f 4 -d '/'`
 +      dev=vif${DOMID}.${DEVID}
 +      ;;
 +    tap)
 +      dev=$INTERFACE
 +      DOMID=`echo ${dev#tap} | cut -f 1 -d '.'`
 +      DEVID=`echo ${dev#tap} | cut -f 2 -d '.'`
 +      ;;
 +    *)  
 +      logger -t scripts-vif "unknown interface type ${type}"
 +      exit 1
 +      ;;
 +esac
  
 -      xenstore-write "${HOTPLUG}/vif" "${vif}"
 -      xenstore-write "${HOTPLUG}/hotplug" "online"
 +XAPI=/xapi/${DOMID}/hotplug/vif/${DEVID}
 +HOTPLUG=/xapi/${DOMID}/hotplug/vif/${DEVID}
 +PRIVATE=/xapi/${DOMID}/private/vif/${DEVID}
  
 -      # xs-xen.pq.hq:91e986b8e49f netback-wait-for-hotplug
 -      xenstore-write "/local/domain/0/backend/vif/${DOMID}/${DEVID}/hotplug-status" "connected"
 +echo Called as "$@" "$DOMID" "$DEVID" | logger -t scripts-vif
 +case "$1" in
 +online)
 +      if [ "${type}" = "vif" ] ; then
 +          handle_ethtool rx
 +          handle_ethtool tx
 +          handle_ethtool sg
 +          handle_ethtool tso
 +          handle_ethtool ufo
 +          handle_ethtool gso
 +
 +          handle_mtu
 +          add_to_bridge
 +          handle_promiscuous
 +
 +          xenstore-write "${HOTPLUG}/vif" "${dev}"
 +          xenstore-write "${HOTPLUG}/hotplug" "online"
 +
 +          # xs-xen.pq.hq:91e986b8e49f netback-wait-for-hotplug
 +          xenstore-write "/local/domain/0/backend/vif/${DOMID}/${DEVID}/hotplug-status" "connected"
 +      fi
 +      ;;
  
 +add)
 +      if [ "${type}" = "tap" ] ; then
 +          add_to_bridge
 +      fi
        ;;
 +
  remove)
 -      xenstore-rm "${HOTPLUG}/hotplug"
 -      vif=vif${DOMID}.${DEVID}
 -      logger -t scripts-vif "${vif} has been removed"
 +      if [ "${type}" = "vif" ] ;then
 +          xenstore-rm "${HOTPLUG}/hotplug"
 +      fi
 +      logger -t scripts-vif "${dev} has been removed"
        $cfg_mod -vANY:console:emer -F /etc/ovs-vswitchd.conf \
 -          --del-match="bridge.*.port=${vif}" \
 -          --del-match="vlan.${vif}.trunks=*" \
 -          --del-match="vlan.${vif}.tag=*" \
 -          --del-match="port.${vif}.[!0-9]*" -c
 +          --del-match="bridge.*.port=${dev}" \
-           --del-match="vlan.${dev}.[!0-9]*" \
++          --del-match="vlan.${dev}.trunks=*" \
++          --del-match="vlan.${dev}.tag=*" \
 +          --del-match="port.${dev}.[!0-9]*" -c
        $service vswitch reload
        ;;
  esac
@@@ -71,8 -71,10 +71,10 @@@ install -m 755 xenserver/opt_xensource_
               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/interface-reconfigure
  install -m 755 xenserver/etc_xensource_scripts_vif \
               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/vif
 -install -m 755 xenserver/usr_share_vswitch_scripts_dump-vif-details \
 -               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/dump-vif-details
 +install -m 755 xenserver/usr_share_vswitch_scripts_vif-on-internal-bridge \
 +             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/vif-on-internal-bridge
+ install -m 755 xenserver/usr_share_vswitch_scripts_refresh-xs-network-uuids \
+                $RPM_BUILD_ROOT/usr/share/vswitch/scripts/refresh-xs-network-uuids
  install -m 755 xenserver/usr_sbin_xen-bugtool \
               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/xen-bugtool
  install -m 755 xenserver/usr_sbin_brctl \
@@@ -309,6 -305,8 +311,7 @@@ f
  /etc/profile.d/vswitch.sh
  /lib/modules/%{xen_version}/kernel/net/vswitch/openvswitch_mod.ko
  /lib/modules/%{xen_version}/kernel/net/vswitch/brcompat_mod.ko
 -/usr/share/vswitch/scripts/dump-vif-details
+ /usr/share/vswitch/scripts/refresh-xs-network-uuids
  /usr/share/vswitch/scripts/interface-reconfigure
  /usr/share/vswitch/scripts/vif
  /usr/share/vswitch/scripts/xen-bugtool