appears as the name of a directory in /lib/modules inside the VM.
It always ends in "xen".
-Two RPMs will be output into /usr/src/redhat/RPMS/i386, whose names
-begin with "openvswitch" and "openvswitch-debuginfo".
+Three RPMs will be output into /usr/src/redhat/RPMS/i386, whose names begin
+with "openvswitch", "openvswitch-modules-xen", and "openvswitch-debuginfo".
Installing Open vSwitch for XenServer
-------------------------------------
-To install Open vSwitch on a XenServer host, or to upgrade to a newer
-version, copy the "openvswitch" RPM to that host with "scp", then install
-it with "rpm -U", e.g.:
+To install Open vSwitch on a XenServer host, or to upgrade to a newer version,
+copy the "openvswitch" and "openvswitch-modules-xen" RPMs to that host with
+"scp", then install them with "rpm -U", e.g.:
- scp openvswitch-$VERSION-1.i386.rpm root@<host>:
-(At this point you will have to enter <host>'s root password.)
+ scp openvswitch-$VERSION-1.i386.rpm \
+ openvswitch-modules-xen-$XEN_KERNEL_VERSION-$VERSION-1.i386.rpm \
+ root@<host>:
+(At this point you will have to enter <host>'s root password.)
ssh root@<host>
-(At this point you will have to enter <host>'s root password again.)
- rpm -U openvswitch-$VERSION-1.i386.rpm
+(At this point you will have to enter <host>'s root password again.)
+ rpm -U openvswitch-$VERSION-1.i386.rpm \
+ openvswitch-modules-xen-$XEN_KERNEL_VERSION-$VERSION-1.i386.rpm
-To uninstall Open vSwitch from a XenServer host, remove the package:
+To uninstall Open vSwitch from a XenServer host, remove the packages:
ssh root@<host>
-(At this point you will have to enter <host>'s root password again.)
- rpm -e openvswitch
+(At this point you will have to enter <host>'s root password again.)
+ rpm -e openvswitch openvswitch-modules-xen-$XEN_KERNEL_VERSION
After installing or uninstalling Open vSwitch, the XenServer should be
rebooted as soon as possible.
# for example:
#
# rpmbuild -D "openvswitch_version 0.8.9~1+build123" -D "xen_version 2.6.18-128.1.1.el5.xs5.1.0.483.1000xen" -D "build_number --with-build-number=123" -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
-#
+
%define version %{openvswitch_version}-%{xen_version}
+# bump this when breaking compatibility with userspace
+%define module_abi_version 0
+
+# extract kernel type (xen or kdump)
+%define binsuffix -%(echo '%{xen_version}' | sed -r 's/^.*[0-9]+//')
+# kernel version string w/o kernel type
+%define kernel_version %(echo '%{xen_version}' | sed -r 's/[a-z]+$//')
+# build-supplemental-pack.sh requires this naming for kernel module packages
+%define module_package modules%{binsuffix}-%{kernel_version}
+
Name: openvswitch
-Summary: Virtual switch
+Summary: Open vSwitch daemon/database/utilities
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Vendor: Nicira Networks, Inc.
Version: %{openvswitch_version}
-# The entire source code is ASL 2.0 except datapath/ which is GPLv2
-License: ASL 2.0 and GPLv2
+License: ASL 2.0
Release: 1
Source: openvswitch-%{openvswitch_version}.tar.gz
Buildroot: /tmp/openvswitch-xen-rpm
-Requires: kernel-xen = %(echo '%{xen_version}' | sed 's/xen$//')
+Requires: openvswitch_mod.ko.%{module_abi_version}
%description
Open vSwitch provides standard network bridging functions augmented with
support for the OpenFlow protocol for remote per-flow control of
traffic.
+%package %{module_package}
+Summary: Open vSwitch kernel module
+Group: System Environment/Kernel
+License: GPLv2
+Provides: %{name}-modules = %{kernel_version}, openvswitch_mod.ko.%{module_abi_version}
+Requires: kernel%{binsuffix} = %{kernel_version}
+
+%description %{module_package}
+Open vSwitch Linux kernel module compiled against kernel version
+%{xen_version}.
+
%prep
%setup -q -n openvswitch-%{openvswitch_version}
fi
fi
-# Ensure that modprobe will find our modules.
-depmod %{xen_version}
-
if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
cat >>/etc/sysctl.conf <<EOF
# This works around an issue in xhad, which binds to a particular
printf "\n\n"
fi
+%post %{module_package}
+# Ensure that modprobe will find our modules.
+depmod %{xen_version}
+
%preun
if [ "$1" = "0" ]; then # $1 = 1 for upgrade
for s in openvswitch openvswitch-xapi-update; do
done
fi
-
%postun
# Restore original XenServer scripts if the OVS equivalent no longer exists.
# This works both in the upgrade and erase cases.
/etc/xensource/bugtool/network-status/openvswitch.xml
/etc/logrotate.d/openvswitch
/etc/profile.d/openvswitch.sh
-/lib/modules/%{xen_version}/kernel/extra/openvswitch/openvswitch_mod.ko
/usr/share/openvswitch/python/ovs/__init__.py
/usr/share/openvswitch/python/ovs/daemon.py
/usr/share/openvswitch/python/ovs/db/__init__.py
/usr/share/man/man8/ovs-vsctl.8.gz
/usr/share/man/man8/ovs-vswitchd.8.gz
/var/lib/openvswitch
-%exclude /lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko
%exclude /usr/lib/xsconsole/plugins-base/*.py[co]
%exclude /usr/sbin/ovs-brcompatd
%exclude /usr/share/man/man8/ovs-brcompatd.8.gz
%exclude /usr/share/openvswitch/python/*.py[co]
%exclude /usr/share/openvswitch/python/ovs/*.py[co]
%exclude /usr/share/openvswitch/python/ovs/db/*.py[co]
+
+%files %{module_package}
+/lib/modules/%{xen_version}/kernel/extra/openvswitch/openvswitch_mod.ko
+%exclude /lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko