From: Ben Pfaff Date: Wed, 18 Nov 2009 22:26:55 +0000 (-0800) Subject: Merge master branch into xs5.7. X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=dac3c52f893f7df16f935ef4875c5467abd4ea23;p=sliver-openvswitch.git Merge master branch into xs5.7. Conflicts: xenserver/README xenserver/automake.mk xenserver/etc_xensource_scripts_vif xenserver/usr_share_vswitch_scripts_dump-vif-details xenserver/vswitch-xen.spec --- dac3c52f893f7df16f935ef4875c5467abd4ea23 diff --cc xenserver/README index c11f447fa,ff692fd3f..9240910ef --- a/xenserver/README +++ b/xenserver/README @@@ -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..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 diff --cc xenserver/automake.mk index be0530e3a,221925cda..73cc590bf --- a/xenserver/automake.mk +++ b/xenserver/automake.mk @@@ -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 diff --cc xenserver/etc_xensource_scripts_vif index fdfc3205d,c649e926b..cede29c4d --- a/xenserver/etc_xensource_scripts_vif +++ b/xenserver/etc_xensource_scripts_vif @@@ -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 diff --cc xenserver/vswitch-xen.spec index 94920116b,d8e32e48f..e177f37f9 --- a/xenserver/vswitch-xen.spec +++ b/xenserver/vswitch-xen.spec @@@ -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