7a0c30f4bec6ad74e1e1780ba373d59317a2e771
[cascardo/ovs.git] / xenserver / openvswitch-xen.spec.in
1 # Spec file for Open vSwitch.
2
3 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
4 #
5 # Copying and distribution of this file, with or without modification,
6 # are permitted in any medium without royalty provided the copyright
7 # notice and this notice are preserved.  This file is offered as-is,
8 # without warranty of any kind.
9
10 # For XenServer version < 6.5, when building, the rpmbuild command line
11 # should define openvswitch_version, kernel_name, kernel_version and
12 # kernel_flavor using -D arguments.
13 # for example:
14 #
15 #    rpmbuild -D "openvswitch_version 1.1.0+build123"
16 #      -D "kernel_name  NAME-xen"
17 #      -D "kernel_version 2.6.32.12-0.7.1.xs5.6.100.323.170596"
18 #      -D "kernel_flavor xen"
19 #      -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
20 #
21 # For XenServer version >= 6.5, use kernel_uname which should be
22 # the `uname -r` output.
23 # for example:
24 #
25 #    rpmbuild -D "openvswitch_version 2.3.0+build123"
26 #      -D "kernel_uname  3.10.0+2"
27 #      -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
28 #
29 # If tests have to be skipped while building, specify the '--without check'
30 # option. For example:
31 # rpmbuild -bb --without check xenserver/openvswitch-xen.spec
32
33 %if %{?openvswitch_version:0}%{!?openvswitch_version:1}
34 %define openvswitch_version @VERSION@
35 %endif
36
37 %if %{?kernel_uname:1}%{!?kernel_uname:0}
38 %define kernel_name kernel
39 %define kernel_version %{kernel_uname}
40 %endif
41
42 %if %{?kernel_name:0}%{!?kernel_name:1}
43 %define kernel %(rpm -qa 'kernel*xen-devel' | head -1)
44 %define kernel_name %(rpm -q --queryformat "%%{Name}" %{kernel} | sed 's/-devel//' | sed 's/kernel-//')
45 %define kernel_version %(rpm -q --queryformat "%%{Version}-%%{Release}" %{kernel})
46 %define kernel_flavor xen
47 %endif
48
49 %if %{?xen_version:0}%{!?xen_version:1}
50 %define xen_version %{kernel_version}%{?kernel_flavor:%{kernel_flavor}}
51 %endif
52
53 # bump this when breaking compatibility with userspace
54 %define module_abi_version 0
55
56 # build-supplemental-pack.sh requires this naming for kernel module packages
57 %define module_package modules%{?kernel_flavor:-%{kernel_flavor}}-%{kernel_version}
58
59 %bcond_without check
60
61 Name: openvswitch
62 Summary: Open vSwitch daemon/database/utilities
63 Group: System Environment/Daemons
64 URL: http://www.openvswitch.org/
65 Vendor: Nicira, Inc.
66 Version: %{openvswitch_version}
67
68 License: ASL 2.0
69 Release: 1
70 Source: openvswitch-%{openvswitch_version}.tar.gz
71 Buildroot: /tmp/openvswitch-xen-rpm
72 Requires: openvswitch.ko.%{module_abi_version}
73
74 %description
75 Open vSwitch provides standard network bridging functions augmented with
76 support for the OpenFlow protocol for remote per-flow control of
77 traffic.
78
79 %package %{module_package}
80 Summary: Open vSwitch kernel module
81 Group: System Environment/Kernel
82 License: GPLv2
83 Provides: %{name}-modules%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version}, openvswitch.ko.%{module_abi_version}
84 %if %{?kernel_uname:0}%{!?kernel_uname:1}
85 Requires: kernel%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version}
86 %endif
87 %if %{?kernel_uname:1}%{!?kernel_uname:0}
88 Requires: kernel-uname-r = %{kernel_version}
89 %endif
90
91 %description %{module_package}
92 Open vSwitch Linux kernel module compiled against kernel version
93 %{kernel_version}%{?kernel_flavor:%{kernel_flavor}}.
94
95 %prep
96 %setup -q -n openvswitch-%{openvswitch_version}
97
98 %build
99 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --with-linux=/lib/modules/%{xen_version}/build --enable-ssl CFLAGS='-g -O2 -msse -msse2'
100 make %{_smp_mflags}
101
102 %install
103 rm -rf $RPM_BUILD_ROOT
104 make install DESTDIR=$RPM_BUILD_ROOT
105 install -d -m 755 $RPM_BUILD_ROOT/etc
106 install -d -m 755 $RPM_BUILD_ROOT/etc/init.d
107 install -m 755 xenserver/etc_init.d_openvswitch \
108          $RPM_BUILD_ROOT/etc/init.d/openvswitch
109 install -m 755 xenserver/etc_init.d_openvswitch-xapi-update \
110          $RPM_BUILD_ROOT/etc/init.d/openvswitch-xapi-update
111 install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
112 install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
113 install -m 755 xenserver/etc_logrotate.d_openvswitch \
114          $RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
115 install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
116 install -m 755 xenserver/etc_profile.d_openvswitch.sh \
117          $RPM_BUILD_ROOT/etc/profile.d/openvswitch.sh
118 install -d -m 755 $RPM_BUILD_ROOT/etc/xapi.d/plugins
119 install -m 755 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update \
120          $RPM_BUILD_ROOT/etc/xapi.d/plugins/openvswitch-cfg-update
121 install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
122 install -m 755 xenserver/opt_xensource_libexec_interface-reconfigure \
123              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/interface-reconfigure
124 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigure.py \
125              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigure.py
126 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py \
127              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
128 install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py \
129              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
130 install -m 755 xenserver/etc_xensource_scripts_vif \
131              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/vif
132 install -m 755 xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync \
133                $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-xapi-sync
134 install -m 755 xenserver/usr_share_openvswitch_scripts_sysconfig.template \
135          $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/sysconfig.template
136 install -d -m 755 $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base
137 install -m 644 \
138         xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
139                $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
140
141 install -d -m 755 $RPM_BUILD_ROOT/lib/modules/%{xen_version}/extra/openvswitch
142 find datapath/linux -name *.ko -exec install -m 755  \{\} $RPM_BUILD_ROOT/lib/modules/%{xen_version}/extra/openvswitch \;
143 install python/compat/uuid.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
144 install python/compat/argparse.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
145
146 install -d -m 755 $RPM_BUILD_ROOT/etc/xensource/bugtool
147 cp -rf $RPM_BUILD_ROOT/usr/share/openvswitch/bugtool-plugins/* $RPM_BUILD_ROOT/etc/xensource/bugtool
148
149 # Get rid of stuff we don't want to make RPM happy.
150 rm \
151     $RPM_BUILD_ROOT/usr/bin/ovs-benchmark \
152     $RPM_BUILD_ROOT/usr/bin/ovs-testcontroller \
153     $RPM_BUILD_ROOT/usr/bin/ovs-l3ping \
154     $RPM_BUILD_ROOT/usr/bin/ovs-pki \
155     $RPM_BUILD_ROOT/usr/bin/ovs-test \
156     $RPM_BUILD_ROOT/usr/share/man/man1/ovs-benchmark.1 \
157     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-testcontroller.8 \
158     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-l3ping.8 \
159     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-pki.8 \
160     $RPM_BUILD_ROOT/usr/share/man/man8/ovs-test.8
161 (cd "$RPM_BUILD_ROOT" && rm -f usr/lib/lib*)
162 (cd "$RPM_BUILD_ROOT" && rm -rf usr/include)
163 (cd "$RPM_BUILD_ROOT" && rm -rf usr/lib/pkgconfig)
164
165 install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
166
167 %check
168 %if %{with check}
169     if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
170        make check TESTSUITEFLAGS='--recheck'; then :;
171     else
172         cat tests/testsuite.log
173         exit 1
174     fi
175 %endif
176
177 %clean
178 rm -rf $RPM_BUILD_ROOT
179
180 %post
181 # A list of Citrix XenServer scripts that we might need to replace
182 # with our own versions.
183 scripts="
184     /etc/xensource/scripts/vif
185     /opt/xensource/libexec/InterfaceReconfigure.py
186     /opt/xensource/libexec/InterfaceReconfigureBridge.py
187     /opt/xensource/libexec/InterfaceReconfigureVswitch.py
188     /opt/xensource/libexec/interface-reconfigure"
189
190 # Calculate into $md5sums a comma-separated set of md5sums of the
191 # Citrix XenServer scripts that we might need to replace.  We might be
192 # upgrading an older version of the package that moved the files out
193 # of the way, so we need to look for the files in those out-of-the-way
194 # locations first.
195 md5sums=
196 for script in $scripts; do
197     b=$(basename "$script")
198     if test -e /usr/lib/openvswitch/xs-saved/"$b"; then
199         f=/usr/lib/openvswitch/xs-saved/"$b"
200     elif test -e /usr/lib/openvswitch/xs-original/"$b"; then
201         f=/usr/lib/openvswitch/xs-original/"$b"
202     elif test -e "$script" && test ! -h "$script"; then
203         f=$script
204     else
205         printf "\n$script: not found\n"
206         f=/dev/null
207     fi
208     md5sums="$md5sums,$(md5sum $f | awk '{print $1}')"
209 done
210 md5sums=${md5sums#,}
211
212 # Now check the md5sums against the known sets of md5sums:
213 #
214 #   - If they are known to be a version of XenServer scripts that we should
215 #     replace, we replace them (by putting $scripts into $replace_files).
216 #
217 #   - Otherwise, we guess that it's better not to replace them, because the
218 #     improvements that our versions of the scripts provide are minimal, so
219 #     it's better to avoid possibly breaking any changes made upstream by
220 #     Citrix.
221 case $md5sums in
222     cf09a68d9f8b434e79a4c83b01a3bb4b,395866df1b0b20c12c4dd2f7de0ecdb4,9d493545ae81463239d3162cbc798852,862d0939b441de9264a900628e950fe9,21f85db25599d7f026cd489385d58aa6)
223         keep_files=
224         replace_files=$scripts
225         printf "\nVerified host scripts from XenServer 6.0.0.\n"
226         ;;
227
228     c5f48246577a17cf1b971fb5ce4e920b,2e2c912f86f9c536c89adc34ff3c2b2b,28d3ff72d72bdec4f37d70699f5edb76,67e1d0af16fc1ddf10009c5c063ad2ba,f3feff30aa3b3f8b514664a96a8dc0ab)
229         keep_files=
230         replace_files=$scripts
231         printf "\nVerified host scripts from XenServer 5.6-SP2.\n"
232         ;;
233         
234     c5f48246577a17cf1b971fb5ce4e920b,2e2c912f86f9c536c89adc34ff3c2b2b,28d3ff72d72bdec4f37d70699f5edb76,67e1d0af16fc1ddf10009c5c063ad2ba,24bae6906d182ba47668174f8e480cc6)
235         keep_files=
236         replace_files=$scripts
237         printf "\nVerified host scripts from XenServer 5.6-FP1.\n"
238         ;;
239
240     *)
241         keep_files=$scripts
242         replace_files=
243         cat <<EOF
244
245 The host scripts on this machine are not those of any supported
246 version of XenServer.  On XenServer earlier than 5.6-FP1, your Open
247 vSwitch installation will not work.  On XenServer 5.6-FP1 or later,
248 Open vSwitch is not verified to work, which could lead to unexpected
249 behavior.
250
251 EOF
252         ;;
253 esac
254
255 if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
256     cat >>/etc/sysctl.conf <<EOF
257 # This works around an issue in xhad, which binds to a particular
258 # Ethernet device, which in turn causes ICMP port unreachable messages
259 # if packets are received are on the wrong interface, which in turn
260 # can happen if we send out ARP replies on every interface (as Linux
261 # does by default) instead of just on the interface that has the IP
262 # address being ARPed for, which this sysctl setting in turn works
263 # around.
264 #
265 # Bug #1378.
266 net.ipv4.conf.all.arp_filter = 1
267 EOF
268 fi
269
270 if test ! -e /etc/openvswitch/conf.db; then
271     install -d -m 755 -o root -g root /etc/openvswitch
272
273     # Create ovs-vswitchd config database
274     ovsdb-tool -vconsole:off create /etc/openvswitch/conf.db \
275             /usr/share/openvswitch/vswitch.ovsschema
276
277     # Create initial table in config database
278     ovsdb-tool -vconsole:off transact /etc/openvswitch/conf.db \
279             '[{"op": "insert", "table": "Open_vSwitch", "row": {}}]' \
280             > /dev/null
281 fi
282
283 # Create default or update existing /etc/sysconfig/openvswitch.
284 SYSCONFIG=/etc/sysconfig/openvswitch
285 TEMPLATE=/usr/share/openvswitch/scripts/sysconfig.template
286 if [ ! -e $SYSCONFIG ]; then
287     cp $TEMPLATE $SYSCONFIG
288 else
289     for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
290     do
291         if ! grep $var $SYSCONFIG >/dev/null 2>&1; then
292             echo >> $SYSCONFIG
293             sed -n "/$var:/,/$var=/p" $TEMPLATE >> $SYSCONFIG
294         fi
295     done
296 fi
297
298 # Deliberately break %postun in broken OVS builds that revert original
299 # XenServer scripts during rpm -U by moving the directory where it thinks
300 # they are saved.
301 if [ -d /usr/lib/openvswitch/xs-original ]; then
302     mkdir -p /usr/lib/openvswitch/xs-saved
303     mv /usr/lib/openvswitch/xs-original/* /usr/lib/openvswitch/xs-saved/ &&
304         rmdir /usr/lib/openvswitch/xs-original
305 fi
306
307 # Replace XenServer files by our versions.
308 mkdir -p /usr/lib/openvswitch/xs-saved \
309     || printf "Could not create script backup directory.\n"
310 for f in $replace_files; do
311     s=$(basename "$f")
312     t=$(readlink "$f")
313     if [ -f "$f" ] && [ "$t" != "/usr/share/openvswitch/scripts/$s" ]; then
314         mv "$f" /usr/lib/openvswitch/xs-saved/ \
315             || printf "Could not save original XenServer $s script\n"
316         ln -s "/usr/share/openvswitch/scripts/$s" "$f" \
317             || printf "Could not link to Open vSwitch $s script\n"
318     fi
319 done
320
321 # Clean up dangling symlinks to removed OVS replacement scripts no longer
322 # provided by OVS. Any time a replacement script is removed from OVS,
323 # it should be added here to ensure correct reversion from old versions of
324 # OVS that don't clean up dangling symlinks during the uninstall phase.
325 for orig in /usr/sbin/xen-bugtool $keep_files; do
326     saved=/usr/lib/openvswitch/xs-saved/$(basename "$orig")
327     [ -e "$saved" ] && mv -f "$saved" "$orig"
328 done
329
330 # Ensure all required services are set to run
331 for s in openvswitch openvswitch-xapi-update; do
332     if chkconfig --list $s >/dev/null 2>&1; then
333         chkconfig --del $s || printf "Could not remove $s init script.\n"
334     fi
335     chkconfig --add $s || printf "Could not add $s init script.\n"
336     chkconfig $s on || printf "Could not enable $s init script.\n"
337 done
338
339 if [ "$1" = "1" ]; then    # $1 = 1 for install
340     # Configure system to use Open vSwitch
341     /opt/xensource/bin/xe-switch-network-backend vswitch
342 else    # $1 = 2 for upgrade
343
344     mode=$(cat /etc/xensource/network.conf)
345     if [ "$mode" != "vswitch" ] && [ "$mode" != "openvswitch" ]; then
346         printf "\nThe server is not configured to run Open vSwitch.  To run in\n"
347         printf "vswitch mode, you must run the following command:\n\n"
348         printf "\txe-switch-network-backend vswitch"
349         printf "\n\n"
350     fi
351 fi
352
353 %posttrans %{module_package}
354 # Ensure that modprobe will find our modules.
355 #
356 # This has to be in %posttrans instead of %post because older versions
357 # installed modules into a different directory and "rpm -U" runs the
358 # new version's %post before removing the old version's files, so if
359 # we use %post then depmod may find the old versions that are about to
360 # be removed.
361 depmod %{xen_version}
362
363 mode=$(cat /etc/xensource/network.conf)
364 if [ "$mode" = "vswitch" ] || [ "$mode" = "openvswitch" ]; then
365     printf "\nTo use the newly installed Open vSwitch kernel module, you\n"
366     printf "will either have to reboot the hypervisor or follow any\n"
367     printf "workarounds provided by your administration guide. Failure to do\n"
368     printf "so may result in incorrect operation."
369     printf "\n\n"
370 fi
371
372 %preun
373 if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
374     # Configure system to use bridge
375     /opt/xensource/bin/xe-switch-network-backend bridge
376
377     # The "openvswitch" service should have been removed from
378     # "xe-switch-network-backend bridge".
379     for s in openvswitch openvswitch-xapi-update; do
380         if chkconfig --list $s >/dev/null 2>&1; then
381             chkconfig --del $s || printf "Could not remove $s init script."
382         fi
383     done
384 fi
385
386 %postun
387 # Restore original XenServer scripts if the OVS equivalent no longer exists.
388 # This works both in the upgrade and erase cases.
389 # This lists every file that every version of OVS has ever replaced. Never
390 # remove old files that OVS no longer replaces, or upgrades from old versions
391 # will fail to restore the XS originals, leaving the system in a broken state.
392 # Also be sure to add removed script paths to the %post scriptlet above to
393 # prevent the same problem when upgrading from old versions of OVS that lack
394 # this restore-on-upgrade logic.
395 for f in \
396     /etc/xensource/scripts/vif \
397     /usr/sbin/xen-bugtool \
398     /opt/xensource/libexec/interface-reconfigure \
399     /opt/xensource/libexec/InterfaceReconfigure.py \
400     /opt/xensource/libexec/InterfaceReconfigureBridge.py \
401     /opt/xensource/libexec/InterfaceReconfigureVswitch.py
402 do
403     # Only revert dangling symlinks.
404     if [ -h "$f" ] && [ ! -e "$f" ]; then
405         s=$(basename "$f")
406         if [ ! -f "/usr/lib/openvswitch/xs-saved/$s" ]; then
407             printf "Original XenServer $s script not present in /usr/lib/openvswitch/xs-saved\n" >&2
408             printf "Could not restore original XenServer script.\n" >&2
409         else
410             (rm -f "$f" \
411                 && mv "/usr/lib/openvswitch/xs-saved/$s" "$f") \
412                 || printf "Could not restore original XenServer $s script.\n" >&2
413         fi
414     fi
415 done
416
417 if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
418     rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyc \
419         /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyo
420
421     rm -f /usr/share/openvswitch/scripts/InterfaceReconfigure.pyc \
422         /usr/share/openvswitch/scripts/InterfaceReconfigure.pyo \
423         /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyc \
424         /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyo \
425         /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyc \
426         /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyo
427
428     # Remove all configuration files
429     rm -f /etc/openvswitch/conf.db
430     rm -f /etc/sysconfig/openvswitch
431     rm -f /etc/openvswitch/vswitchd.cacert
432
433     # Remove saved XenServer scripts directory, but only if it's empty
434     rmdir -p /usr/lib/openvswitch/xs-saved 2>/dev/null
435 fi
436
437 exit 0
438
439 %files
440 %defattr(-,root,root)
441 /etc/bash_completion.d/ovs-appctl-bashcomp.bash
442 /etc/bash_completion.d/ovs-vsctl-bashcomp.bash
443 /etc/init.d/openvswitch
444 /etc/init.d/openvswitch-xapi-update
445 /etc/xapi.d/plugins/openvswitch-cfg-update
446 /etc/xensource/bugtool/*
447 /etc/logrotate.d/openvswitch
448 /etc/profile.d/openvswitch.sh
449 /usr/share/openvswitch/python/
450 /usr/share/openvswitch/bugtool-plugins/*
451 /usr/share/openvswitch/scripts/ovs-check-dead-ifs
452 /usr/share/openvswitch/scripts/ovs-xapi-sync
453 /usr/share/openvswitch/scripts/interface-reconfigure
454 /usr/share/openvswitch/scripts/InterfaceReconfigure.py
455 /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
456 /usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
457 /usr/share/openvswitch/scripts/vif
458 /usr/share/openvswitch/scripts/sysconfig.template
459 /usr/share/openvswitch/scripts/ovs-bugtool-*
460 /usr/share/openvswitch/scripts/ovs-save
461 /usr/share/openvswitch/scripts/ovs-ctl
462 /usr/share/openvswitch/scripts/ovs-lib
463 /usr/share/openvswitch/scripts/ovs-vtep
464 /usr/share/openvswitch/vswitch.ovsschema
465 /usr/share/openvswitch/vtep.ovsschema
466 /usr/sbin/ovs-bugtool
467 /usr/sbin/ovs-vlan-bug-workaround
468 /usr/sbin/ovs-vswitchd
469 /usr/sbin/ovsdb-server
470 /usr/bin/ovs-appctl
471 /usr/bin/ovs-dpctl
472 /usr/bin/ovs-dpctl-top
473 /usr/bin/ovs-docker
474 /usr/bin/ovs-ofctl
475 /usr/bin/ovs-parse-backtrace
476 /usr/bin/ovs-pcap
477 /usr/bin/ovs-tcpundump
478 /usr/bin/ovs-vlan-test
479 /usr/bin/ovs-vsctl
480 /usr/bin/ovsdb-client
481 /usr/bin/ovsdb-tool
482 /usr/bin/vtep-ctl
483 /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
484 /usr/share/man/man1/ovsdb-client.1.gz
485 /usr/share/man/man1/ovsdb-server.1.gz
486 /usr/share/man/man1/ovsdb-tool.1.gz
487 /usr/share/man/man5/ovs-vswitchd.conf.db.5.gz
488 /usr/share/man/man5/vtep.5.gz
489 /usr/share/man/man8/ovs-appctl.8.gz
490 /usr/share/man/man8/ovs-bugtool.8.gz
491 /usr/share/man/man8/ovs-ctl.8.gz
492 /usr/share/man/man8/ovs-dpctl.8.gz
493 /usr/share/man/man8/ovs-dpctl-top.8.gz
494 /usr/share/man/man8/ovs-ofctl.8.gz
495 /usr/share/man/man8/ovs-parse-backtrace.8.gz
496 /usr/share/man/man1/ovs-pcap.1.gz
497 /usr/share/man/man1/ovs-tcpundump.1.gz
498 /usr/share/man/man8/ovs-vlan-bug-workaround.8.gz
499 /usr/share/man/man8/ovs-vlan-test.8.gz
500 /usr/share/man/man8/ovs-vsctl.8.gz
501 /usr/share/man/man8/ovs-vswitchd.8.gz
502 /usr/share/man/man8/vtep-ctl.8.gz
503 /var/lib/openvswitch
504 /var/log/openvswitch
505 %exclude /usr/lib/xsconsole/plugins-base/*.py[co]
506 %exclude /usr/share/openvswitch/scripts/*.py[co]
507 %exclude /usr/share/openvswitch/python/*.py[co]
508 %exclude /usr/share/openvswitch/python/ovs/*.py[co]
509 %exclude /usr/share/openvswitch/python/ovs/db/*.py[co]
510
511 %files %{module_package}
512 /lib/modules/%{xen_version}/extra/openvswitch/openvswitch.ko
513 /lib/modules/%{xen_version}/extra/openvswitch/vport-*.ko