[pve-devel] [PATCH openvswitch 3/7] add debian sid (ovs 2.11) "debian" directory

Alexandre Derumier aderumier at odiso.com
Thu Feb 13 07:04:17 CET 2020


---
 debian/README.Debian                          |   36 +
 debian/README.source                          |    5 +
 debian/changelog                              | 1546 +++++++++++++++++
 debian/control                                |  323 ++++
 debian/copyright                              |  750 ++++++++
 debian/dkms.conf.in                           |   11 +
 debian/ifupdown.sh                            |  125 ++
 debian/openvswitch-common.dirs                |    1 +
 debian/openvswitch-common.docs                |    1 +
 debian/openvswitch-common.install             |   10 +
 debian/openvswitch-common.manpages            |   41 +
 debian/openvswitch-common.postinst            |   11 +
 debian/openvswitch-common.postrm              |   11 +
 debian/openvswitch-common.prerm               |   11 +
 debian/openvswitch-dev.install                |    4 +
 debian/openvswitch-ipsec.init                 |  181 ++
 debian/openvswitch-ipsec.install              |    1 +
 debian/openvswitch-pki.dirs                   |    1 +
 debian/openvswitch-pki.postinst               |   41 +
 debian/openvswitch-pki.postrm                 |   43 +
 debian/openvswitch-switch-dpdk.postinst       |   11 +
 debian/openvswitch-switch-dpdk.postrm         |   11 +
 debian/openvswitch-switch-dpdk.prerm          |   11 +
 debian/openvswitch-switch.README.Debian       |  246 +++
 debian/openvswitch-switch.dirs                |    2 +
 debian/openvswitch-switch.init                |  154 ++
 debian/openvswitch-switch.install             |    2 +
 debian/openvswitch-switch.links               |    2 +
 debian/openvswitch-switch.logrotate           |   16 +
 ...witch-switch.openvswitch-nonetwork.service |   15 +
 debian/openvswitch-switch.postinst            |   75 +
 debian/openvswitch-switch.postrm              |   48 +
 debian/openvswitch-switch.service             |   14 +
 debian/openvswitch-switch.template            |    8 +
 .../openvswitch-testcontroller.README.Debian  |   12 +
 debian/openvswitch-testcontroller.default     |   29 +
 debian/openvswitch-testcontroller.dirs        |    1 +
 debian/openvswitch-testcontroller.init        |  278 +++
 debian/openvswitch-testcontroller.postinst    |   52 +
 debian/openvswitch-testcontroller.postrm      |   44 +
 debian/openvswitch-vtep.default               |    4 +
 debian/openvswitch-vtep.init                  |   79 +
 debian/openvswitch-vtep.install               |    1 +
 debian/ovn-central.dirs                       |    1 +
 debian/ovn-central.init                       |   59 +
 debian/ovn-central.install                    |    2 +
 debian/ovn-central.postinst                   |   49 +
 debian/ovn-central.postrm                     |   48 +
 debian/ovn-central.template                   |    5 +
 debian/ovn-controller-vtep.init               |   53 +
 debian/ovn-host.dirs                          |    1 +
 debian/ovn-host.init                          |   53 +
 debian/ovn-host.postinst                      |   49 +
 debian/ovn-host.postrm                        |   44 +
 debian/ovn-host.template                      |    5 +
 ...e-Also-use-LIBS-from-dpkg-pkg-config.patch |  366 ++++
 ...async-msg-ctrl-of1.3-because-of-mips.patch |  135 ++
 debian/patches/disable-even-more-tests.patch  |  140 ++
 debian/patches/disable-failed-tests.patch     |   20 +
 .../patches/disable-failing-ovn-tests.patch   |  327 ++++
 debian/patches/fix-ovs-monitor-ipsec.patch    |  117 ++
 debian/patches/py3-compat.patch               |  812 +++++++++
 debian/patches/remove-bfd-decay-tests.patch   |  158 ++
 .../remove-include-debian-automake.mk.patch   |   17 +
 .../remove-non-deterministic-tests.patch      |   46 +
 ...-tests-broken-in-mips64el-and-mipsel.patch |   52 +
 ...remove-yet-another-mips-failing-test.patch |  218 +++
 ...-which-are-failing-in-mips-and-armel.patch |  305 ++++
 debian/patches/series                         |   14 +
 .../use-python3-m-sphinx-to-build-doc.patch   |   18 +
 debian/python3-openvswitch.install            |    2 +
 debian/rules                                  |  133 ++
 debian/salsa-ci.yml                           |    3 +
 debian/source/format                          |    1 +
 debian/watch                                  |    3 +
 75 files changed, 7524 insertions(+)
 create mode 100644 debian/README.Debian
 create mode 100644 debian/README.source
 create mode 100644 debian/changelog
 create mode 100644 debian/control
 create mode 100644 debian/copyright
 create mode 100644 debian/dkms.conf.in
 create mode 100755 debian/ifupdown.sh
 create mode 100644 debian/openvswitch-common.dirs
 create mode 100644 debian/openvswitch-common.docs
 create mode 100644 debian/openvswitch-common.install
 create mode 100644 debian/openvswitch-common.manpages
 create mode 100644 debian/openvswitch-common.postinst
 create mode 100644 debian/openvswitch-common.postrm
 create mode 100644 debian/openvswitch-common.prerm
 create mode 100644 debian/openvswitch-dev.install
 create mode 100755 debian/openvswitch-ipsec.init
 create mode 100644 debian/openvswitch-ipsec.install
 create mode 100644 debian/openvswitch-pki.dirs
 create mode 100755 debian/openvswitch-pki.postinst
 create mode 100755 debian/openvswitch-pki.postrm
 create mode 100644 debian/openvswitch-switch-dpdk.postinst
 create mode 100644 debian/openvswitch-switch-dpdk.postrm
 create mode 100644 debian/openvswitch-switch-dpdk.prerm
 create mode 100644 debian/openvswitch-switch.README.Debian
 create mode 100644 debian/openvswitch-switch.dirs
 create mode 100755 debian/openvswitch-switch.init
 create mode 100644 debian/openvswitch-switch.install
 create mode 100644 debian/openvswitch-switch.links
 create mode 100644 debian/openvswitch-switch.logrotate
 create mode 100644 debian/openvswitch-switch.openvswitch-nonetwork.service
 create mode 100755 debian/openvswitch-switch.postinst
 create mode 100755 debian/openvswitch-switch.postrm
 create mode 100644 debian/openvswitch-switch.service
 create mode 100644 debian/openvswitch-switch.template
 create mode 100644 debian/openvswitch-testcontroller.README.Debian
 create mode 100644 debian/openvswitch-testcontroller.default
 create mode 100644 debian/openvswitch-testcontroller.dirs
 create mode 100755 debian/openvswitch-testcontroller.init
 create mode 100755 debian/openvswitch-testcontroller.postinst
 create mode 100755 debian/openvswitch-testcontroller.postrm
 create mode 100644 debian/openvswitch-vtep.default
 create mode 100644 debian/openvswitch-vtep.init
 create mode 100644 debian/openvswitch-vtep.install
 create mode 100644 debian/ovn-central.dirs
 create mode 100755 debian/ovn-central.init
 create mode 100644 debian/ovn-central.install
 create mode 100755 debian/ovn-central.postinst
 create mode 100755 debian/ovn-central.postrm
 create mode 100644 debian/ovn-central.template
 create mode 100755 debian/ovn-controller-vtep.init
 create mode 100644 debian/ovn-host.dirs
 create mode 100755 debian/ovn-host.init
 create mode 100755 debian/ovn-host.postinst
 create mode 100755 debian/ovn-host.postrm
 create mode 100644 debian/ovn-host.template
 create mode 100644 debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
 create mode 100644 debian/patches/blacklist-ofproto-async-msg-ctrl-of1.3-because-of-mips.patch
 create mode 100644 debian/patches/disable-even-more-tests.patch
 create mode 100644 debian/patches/disable-failed-tests.patch
 create mode 100644 debian/patches/disable-failing-ovn-tests.patch
 create mode 100644 debian/patches/fix-ovs-monitor-ipsec.patch
 create mode 100644 debian/patches/py3-compat.patch
 create mode 100644 debian/patches/remove-bfd-decay-tests.patch
 create mode 100644 debian/patches/remove-include-debian-automake.mk.patch
 create mode 100644 debian/patches/remove-non-deterministic-tests.patch
 create mode 100644 debian/patches/remove-tests-broken-in-mips64el-and-mipsel.patch
 create mode 100644 debian/patches/remove-yet-another-mips-failing-test.patch
 create mode 100644 debian/patches/removed-tests-which-are-failing-in-mips-and-armel.patch
 create mode 100644 debian/patches/series
 create mode 100644 debian/patches/use-python3-m-sphinx-to-build-doc.patch
 create mode 100644 debian/python3-openvswitch.install
 create mode 100755 debian/rules
 create mode 100644 debian/salsa-ci.yml
 create mode 100644 debian/source/format
 create mode 100644 debian/watch

diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..cf0b9f0
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,36 @@
+Here's an example configuration for your /etc/network/interfaces
+using a simple ovsbr0 bridge for eth0, with dhcp for ipv4 and ipv6.
+This was taken from https://bugs.debian.org/860786.
+
+allow-ovs  ovsbr0
+iface ovsbr0 inet dhcp
+	ovs_type OVSBridge
+        ovs_ports eth0
+
+allow-ovs ovsbr0
+iface ovsbr0 inet6 dhcp
+        ovs_type OVSBridge
+        ovs_ports eth0
+
+allow-ovsbr0 eth0
+iface eth0 inet manual
+        ovs_bridge ovsbr0
+        ovs_type OVSPort
+
+However, this didn't work for me. Instead, this worked:
+
+allow-ovs br0
+iface br0 inet dhcp
+	ovs_type OVSBridge
+	ovs_port enp0s3
+
+auto enp0s3
+iface enp0s3 inet manual
+	ovs_bridge br0
+	ovs_type OVSPort
+	up ip address add 0/0 dev enp0s3
+	up ip link set enp0s3 up
+	up dhclient br0
+	down ip link set enp0s3 down
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 29 Jan 2018 11:33:40 +0100
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..e1a2e0b
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,5 @@
+This package is marked +dfsg1, because we're removing the upstream debian
+folder which is annoying when working with git-buildpackage. However, there's
+nothing non-free in openvswitch.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 20 Oct 2017 23:10:59 +0200
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..9d0196e
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,1546 @@
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-8) unstable; urgency=medium
+
+  * Removed python:any dependency (Closes: #937216).
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 20 Jan 2020 08:46:10 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-7) unstable; urgency=medium
+
+  * Fix moving ovs-vswitchd (Closes: #943990).
+
+ -- Thomas Goirand <zigo at debian.org>  Sat, 02 Nov 2019 20:01:23 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-6) unstable; urgency=medium
+
+  * Fix again moving /usr/sbin/ovs-vswitchd away.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 01 Nov 2019 11:57:30 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-5) unstable; urgency=medium
+
+  * Add || true when moving /usr/sbin/ovs-vswitchd so that it also works on
+    arch all.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 01 Nov 2019 11:42:17 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-4) unstable; urgency=medium
+
+  * Fix installing vtep/vtep-ctl (Closes: #866319).
+  * Fix moving /usr/sbin/ovs-vswitchd around on non-dpdk arch, fixing FTBFS on
+    these.
+  * Removed SYSTEMCTL_SKIP_REDIRECT from:
+    - openvswitch-switch init scripts (Closes: #910474.
+    - ovn-central.init (Closes: #910472).
+    - ovn-host.init (Closes: #910475).
+    - ovn-controller-vtep.init (Closes: #910476).
+  * Added mkdir -p /var/run in ovs startup (Closes: #930843).
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 31 Oct 2019 11:38:08 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-3) unstable; urgency=medium
+
+  [ Ondřej Nový ]
+  * Run wrap-and-sort -bastk.
+  * Use debhelper-compat instead of debian/compat.
+
+  [ Thomas Goirand ]
+  * Rebuilt source-only.
+
+ -- Thomas Goirand <zigo at debian.org>  Tue, 29 Oct 2019 15:17:29 +0100
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-2) unstable; urgency=medium
+
+  [ Jakub Safarik ]
+  * Reintroduce the openvswitch-ipsec package.
+  * Fix lintian errors:
+    - openvswitch-switch: init.d-script-not-included-in-package.
+    - openvswitch source: python-depends-but-no-python-helper.
+    - openvswitch source: missing-notice-file-for-apache-license.
+
+  [ Thomas Goirand ]
+  * Fixed d/copyright (Closes: #942056).
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 10 Oct 2019 09:13:37 +0200
+
+openvswitch (2.11.0+2019.06.25+git.9ebe795035+ds1-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Rebased patches.
+  * Removed patch applied upstream:
+    - ovs-dev-ovs-macros-Make-tests-log-how-long-they-waited-when-they-s...diff
+  * Ran wrap-and-sort -bast.
+  * Add dpdk support.
+  * Converge with Ubuntu package.
+  * Add 0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch.
+  * Add disable-failing-ovn-tests.patch.
+  * Removed Python 2 support (Closes: #937216).
+  * Fixed debian/ifupdown.sh typo: ovs_vsctl -> ovs-vsctl.
+  * Remove --parallel when calling dh.
+  * Temporarily remove bugtools from openvswitch-common.install (it's
+    currently broken, and need a fix).
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 11 Jul 2019 22:31:36 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-13) unstable; urgency=medium
+
+  * Some fixups in debian/ifupdown.sh to allow setting-up the MTU.
+  * Document how to do Bond + Bridge + VLAN + MTU.
+  * Correct dependency on python3-six instead of python-six (Closes: #931104).
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 24 Jun 2019 08:53:33 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-12) unstable; urgency=medium
+
+  * Add --may-exist in debian/ifupdown.sh as per upstream commit. Without it,
+    networking service may fail (Closes: #926942).
+
+ -- Thomas Goirand <zigo at debian.org>  Sun, 14 Apr 2019 00:25:19 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-11) unstable; urgency=medium
+
+  * Removes network.service from openvswitch-switch.service to avoid a
+    dependency loop in systemd, leading to removal of networking.service.
+    Also use "ip link set DEVNAME up" instead of ifconfig, and runtime
+    depend on iproute2.
+    Thanks to Benjamin Drung for the bug report (Closes: #924562) and to
+    Jonathan Dupart for the patch as a merge request in Salsa.
+
+ -- Thomas Goirand <zigo at debian.org>  Sun, 31 Mar 2019 00:50:26 +0100
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-10) unstable; urgency=medium
+
+  * Add remove-non-deterministic-tests.patch.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 14 Dec 2018 08:47:15 +0100
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-9) unstable; urgency=medium
+
+  [ Michal Arbet ]
+  * Fix load ovs stuff from /etc/network/interfaces (Closes: #910297)
+  * Add me to uploaders field
+
+ -- Michal Arbet <michal.arbet at ultimum.io>  Tue, 11 Dec 2018 11:23:11 +0100
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-8) unstable; urgency=medium
+
+  * Add remove-yet-another-mips-failing-test.patch
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 25 Oct 2018 11:10:50 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-7) unstable; urgency=medium
+
+  * Blacklist "ofproto - asynchronous message control (OpenFlow 1.3)" which
+    fails on Mips arch.
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 22 Oct 2018 15:04:46 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-6) unstable; urgency=medium
+
+  * Fixed files present in 2 binaries (Closes: #907952).
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 15 Oct 2018 09:31:42 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-5) unstable; urgency=medium
+
+  * Disable even more tests that are unfortunately failing under mipsel and
+    mips64el.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 12 Oct 2018 12:00:36 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-4) unstable; urgency=medium
+
+  [ Ondřej Nový ]
+  * Running wrap-and-sort -bast
+
+  [ Thomas Goirand ]
+  * Add patch to remove tests failing in all mips arch and armel
+    (Closes: #908978).
+  * Fix python3 dependency in openvswitch-switch and openvswitch-vtep.
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 10 Oct 2018 19:49:44 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-3) unstable; urgency=medium
+
+  * Fixed files installed in both openvswitch-switch and openvswitch-common
+    (Closes: #907952).
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 10 Sep 2018 12:40:31 +0000
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-2) unstable; urgency=medium
+
+  * Add upstream patch to investigate failures:
+    - ovs-dev-ovs-macros-Make-tests-log-how-long-they-waited-when-they-su..diff
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 05 Sep 2018 13:10:46 +0200
+
+openvswitch (2.10.0+2018.08.28+git.8ca7c82b7d+ds1-1) unstable; urgency=medium
+
+  * New upstream release:
+    - Fix unit test with OpenSSL 1.1.1 (Closes: #900153).
+  * Using +ds1 convention for upstream without debian folder tag.
+  * Removed tests_stp_Use_long_warps_instead_of_multiple_calls.patch.
+  * Rebased remove-tests-broken-in-mips64el-and-mipsel.patch.
+  * Add py3-compat.patch, taken from Ubuntu.
+  * Added disable-failed-tests.patch.
+  * Add use-python3-m-sphinx-to-build-doc.patch
+  * Fix debian/openstack-dev.install.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 31 Aug 2018 08:25:45 +0000
+
+openvswitch (2.8.1+dfsg1-7) unstable; urgency=medium
+
+  [ Ondřej Nový ]
+  * d/control: Set Vcs-* to salsa.debian.org
+  * d/changelog: Remove trailing whitespaces
+
+  [ Thomas Goirand ]
+  * Set team+openstack at tracker.debian.org as maintainer email.
+  * Create folders before copying files into it, fixing FTBFS (Closes: #901112)
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 18 Jun 2018 07:32:58 +0000
+
+openvswitch (2.8.1+dfsg1-6) unstable; urgency=medium
+
+  * Re-install systemd units to start OVS (Closes: #743635, #766435, #858418,
+    #870001, #884319, #823532, #857178, #865616).
+
+ -- Thomas Goirand <zigo at debian.org>  Mon, 29 Jan 2018 09:33:58 +0100
+
+openvswitch (2.8.1+dfsg1-5) unstable; urgency=medium
+
+  * Removed deprecated openvswitch-ipsec (Closes: #887031).
+  * Document /etc/network/interfaces (Closes: #860786).
+  * Remove bfd decay tests: they are failing on armhf, probably because the
+    platform is too slow.
+  * Add SYSTEMCTL_SKIP_REDIRECT=yes in openvswitch-switch.init.
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 24 Jan 2018 09:20:12 +0100
+
+openvswitch (2.8.1+dfsg1-4) unstable; urgency=medium
+
+  * Remove tests broken in mips64el and mipsel (Closes: #880508, 880509).
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 30 Nov 2017 11:37:36 +0100
+
+openvswitch (2.8.1+dfsg1-3) unstable; urgency=medium
+
+  * Remove .service files until better (Closes: #880498).
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 01 Nov 2017 20:36:15 +0000
+
+openvswitch (2.8.1+dfsg1-2) unstable; urgency=medium
+
+  * Uploading to unstable.
+  * Add tests_stp_Use_long_warps_instead_of_multiple_calls.patch, which
+    according to Ben will fix some build failures.
+
+ -- Thomas Goirand <zigo at debian.org>  Wed, 01 Nov 2017 01:32:47 +0000
+
+openvswitch (2.8.1+dfsg1-1) experimental; urgency=medium
+
+  * New upstream release (Closes: #878249):
+    - Fixes CVE-2017-9214 (Closes: #863228).
+    - Fixes CVE-2017-14970 (Closes: #877543).
+    - Fixes CVE-2017-9263 (Closes: #863655).
+    - Fixes CVE-2017-9264 (Closes: #863661).
+    - Fixes CVE-2017-9265 (Closes: #863662).
+  * Ran wrap-and-sort -bast.
+  * Add libopenvswitch and libopenvswitch-dev.
+  * Updated VCS URLs.
+  * Switched to debhelper 10.
+  * Added openstack-pkg-tools as build-depends.
+  * Standards-Version is now 4.1.1.
+  * Added dh-python as build-depends.
+  * Added 2 debian/*.service files (Closes: #878757, #771507).
+  * Added Python 3 support.
+  * Added debian/README.source explaining why we're marking the version as
+    +dfsg1 (ie: because we remove the upstream debian folder).
+  * Removed patches.
+  * Patch upstream Makefile.am to not include debian/automake.mk.
+  * Remove openvswitch-test package.
+  * Simplify packaging by installing all binaries in openvswitch-common.
+  * Removed build-depends on dh-autoreconf, satisfied by debhelper >= 10.
+  * Fixed build-depends on automake.
+  * Fixed runtime depends on openvswitch-common in openvswitch-pki.
+  * Removed openvswitch-test package, now provided by openvswitch-common.
+  * Switch debian/copyright to parsable format.
+  * Add export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow in debian/rules.
+  * Removed ovn-docker package, now provided by openvswitch-common.
+  * Manually correctly installs ovs-vsctl-bashcomp.bash.
+  * Add myself as uploader.
+  * Added a watch file.
+  * Init scripts now sourcing LSB functions.
+  * Change priority from extra to optional, as per policy 4.0.1.
+  * Remove ovn-common package, now provided by openvswitch-common.
+  * Change Maintainer: to be Debian OpenStack.
+
+ -- Thomas Goirand <zigo at debian.org>  Fri, 20 Oct 2017 22:06:41 +0200
+
+openvswitch (2.6.2~pre+git20161223-3) unstable; urgency=medium
+
+  * Avoid installing ovs-vswitchd.conf.db.5 manpage into directory for
+    language "db".  Closes: #850631.  Thanks to Michael Stapelberg
+    <stapelberg at debian.org> for reporting this bug.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 09 Jan 2017 14:46:48 -0800
+
+openvswitch (2.6.2~pre+git20161223-2) unstable; urgency=medium
+
+  * Apply upstream patches:
+    - c8ad60e debian: Also restrict ovn-docker package to Linux.
+    - 90c25ef tests: Fix race in "ovn -- vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS".
+    - 6fe9954 rconn: Avoid abort for ill-behaved remote.
+  * Builds fine with OpenSSL 1.1.  Closes: #828478.
+  * Upstream bug fixes from this and previous upload fix endianness issues.
+    Closes: #840770.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 23 Dec 2016 16:35:11 -0800
+
+openvswitch (2.6.2~pre+git20161223-1) unstable; urgency=medium
+
+  * Bug fixes from upstream Git repository.
+  * Fix arch-independent build.  Thanks to Santiago Vila <sanvila at unex.es>
+    and nickcooper-zhangtonghao <nic at opencloud.tech> for the fix.  Closes:
+    #831924.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 23 Dec 2016 09:43:56 -0800
+
+openvswitch (2.6.1+git20161123-1) unstable; urgency=medium
+
+  * New snapshot from the upstream Git repository.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Wed, 23 Nov 2016 15:19:43 -0800
+
+openvswitch (2.6.1-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+   - Fedora packaging:
+     * A package upgrade does not automatically restart OVS service.
+   - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Tue, 01 Nov 2016 15:40:17 -0700
+
+openvswitch (2.6.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+   - First supported release of OVN.  See ovn-architecture(7) for more
+     details.
+   - ovsdb-server:
+     * New "monitor_cond" "monitor_cond_update" and "update2" extensions to
+       RFC 7047.
+   - OpenFlow:
+     * OpenFlow 1.3+ bundles are now supported for group mods as well as
+       flow mods and port mods.  Both 'atomic' and 'ordered' bundle
+       flags are supported for group mods as well as flow mods.
+     * OpenFlow 1.1+ OFPT_QUEUE_GET_CONFIG_REQUEST now supports OFPP_ANY.
+     * OpenFlow 1.4+ OFPMP_QUEUE_DESC is now supported.
+     * OpenFlow 1.4+ OFPT_TABLE_STATUS is now supported.
+     * New property-based packet-in message format NXT_PACKET_IN2 with support
+       for arbitrary user-provided data and for serializing flow table
+       traversal into a continuation for later resumption.
+     * New extension message NXT_SET_ASYNC_CONFIG2 to allow OpenFlow 1.4-like
+       control over asynchronous messages in earlier versions of OpenFlow.
+     * OpenFlow 1.3 Extension 230, adding OpenFlow Bundles support, is
+       now implemented.  Only flow mod and port mod messages are supported
+       in bundles.
+     * New OpenFlow extension NXM_NX_MPLS_TTL to provide access to MPLS TTL.
+     * New output option, output(port=N,max_len=M), to allow truncating a
+       packet to size M bytes when outputting to port N.
+     * New command OFPGC_ADD_OR_MOD for OFPT_GROUP_MOD message that adds a
+       new group or modifies an existing groups
+     * The optional OpenFlow packet buffering feature is deprecated in
+       this release, and will be removed in the next OVS release
+       (2.7).  After the change OVS always sends the 'buffer_id' as
+       0xffffffff in packet-in messages and will send an error
+       response if any other value of this field is included in
+       packet-out and flow mod sent by a controller.  Controllers are
+       already expected to work properly in cases where the switch can
+       not buffer packets, so this change should not affect existing
+       users.
+     * New OpenFlow extension NXT_CT_FLUSH_ZONE to flush conntrack zones.
+   - Improved OpenFlow version compatibility for actions:
+     * New OpenFlow extension to support the "group" action in OpenFlow 1.0.
+     * OpenFlow 1.0 "enqueue" action now properly translated to OpenFlow 1.1+.
+     * OpenFlow 1.1 "mod_nw_ecn" and OpenFlow 1.1+ "mod_nw_ttl" actions now
+       properly translated to OpenFlow 1.0.
+   - ovs-ofctl:
+     * queue-get-config command now allows a queue ID to be specified.
+     * '--bundle' option can now be used with OpenFlow 1.3 and with group mods.
+     * New "bundle" command allows executing a mixture of flow and group mods
+       as a single atomic transaction.
+     * New option "--color" to produce colorized output for some commands.
+     * New option '--may-create' to use OFPGC_ADD_OR_MOD in mod-group command.
+   - IPFIX:
+     * New "sampling_port" option for "sample" action to allow sampling
+       ingress and egress tunnel metadata with IPFIX.
+     * New ovs-ofctl commands "dump-ipfix-bridge" and "dump-ipfix-flow" to
+       dump bridge IPFIX statistics and flow based IPFIX statistics.
+     * New setting other-config:virtual_obs_id to add an arbitrary string
+       to IPFIX records.
+   - Linux:
+     * New QoS type "linux-noop" that prevents Open vSwitch from trying to
+       manage QoS for a given port (useful when other software manages QoS).
+   - DPDK:
+     * New option "n_rxq" for PMD interfaces.
+       Old 'other_config:n-dpdk-rxqs' is no longer supported.
+       Not supported by vHost interfaces. For them number of rx and tx queues
+       is applied from connected virtio device.
+     * New 'other_config:pmd-rxq-affinity' field for PMD interfaces, that
+       allows to pin port's rx queues to desired cores.
+     * New appctl command 'dpif-netdev/pmd-rxq-show' to check the port/rxq
+       assignment.
+     * Type of log messages from PMD threads changed from INFO to DBG.
+     * QoS functionality with sample egress-policer implementation.
+     * The mechanism for configuring DPDK has changed to use database
+     * Sensible defaults have been introduced for many of the required
+       configuration options
+     * DB entries have been added for many of the DPDK EAL command line
+       arguments. Additional arguments can be passed via the dpdk-extra
+       entry.
+     * Add ingress policing functionality.
+     * PMD threads servicing vHost User ports can now come from the NUMA
+       node that device memory is located on if CONFIG_RTE_LIBRTE_VHOST_NUMA
+       is enabled in DPDK.
+     * Basic connection tracking for the userspace datapath (no ALG,
+       fragmentation or NAT support yet)
+     * Support for DPDK 16.07
+     * Optional support for DPDK pdump enabled.
+     * Jumbo frame support
+     * Remove dpdkvhostcuse port type.
+     * OVS client mode for vHost and vHost reconnect (Requires QEMU 2.7)
+   - Increase number of registers to 16.
+   - ovs-benchmark: This utility has been removed due to lack of use and
+     bitrot.
+   - ovs-appctl:
+     * New "vlog/close" command.
+   - ovs-ctl:
+     * Added the ability to selectively start the forwarding and database
+       functions (ovs-vswitchd and ovsdb-server, respectively).
+   - ovsdb-server:
+     * Remove max number of sessions limit, to enable connection scaling
+       testing.
+   - python:
+     * Added support for Python 3.4+ in addition to existing support
+       for 2.7+.
+   - SELinux:
+     * Introduced SELinux policy package.
+   - Datapath Linux kernel compatibility.
+     * Dropped support for kernel older than 3.10.
+     * Removed VLAN splinters feature.
+     * Support for truncate action.
+     * Datapath supports kernel upto 4.6.
+   - Tunnels:
+     * Flow based tunnel match and action can be used for IPv6 address using
+       tun_ipv6_src, tun_ipv6_dst fields.
+     * Added support for IPv6 tunnels, for details checkout FAQ.
+     * Deprecated support for IPsec tunnels ports.
+   - A wrapper script, 'ovs-tcpdump', to easily port-mirror an OVS port and
+     watch with tcpdump
+   - Introduce --no-self-confinement flag that allows daemons to work with
+     sockets outside their run directory.
+   - ovs-pki: Changed message digest algorithm from SHA-1 to SHA-512 because
+     SHA-1 is no longer secure and some operating systems have started to
+     disable it in OpenSSL.
+   - Add 'mtu_request' column to the Interface table. It can be used to
+     configure the MTU of non-internal ports.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Tue, 27 Sep 2016 10:13:47 -0700
+
+openvswitch (2.5.1~pre+git20160626-2) unstable; urgency=medium
+
+  * debian/control: Change build dependency from python-twisted-conch to
+    python-twisted, for two reasons.  First, the former is just a
+    documentation package and is going to be removed.  Second, the former
+    depends on python-crypto, which according to buildd.debian.org is
+    uninstallable except on i386 due to a long chain of dependencies.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 01 Jul 2016 15:05:32 -0700
+
+openvswitch (2.5.1~pre+git20160626-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Sun, 26 Jun 2016 15:13:56 -0700
+
+openvswitch (2.5.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+   - Dropped support for Python older than version 2.7.  As a consequence,
+     using Open vSwitch 2.5 or later on XenServer 6.5 or earlier (which
+     have Python 2.4) requires first installing Python 2.7.
+   - OpenFlow:
+     * Group chaining (where one OpenFlow group triggers another) is
+       now supported.
+     * OpenFlow 1.4+ "importance" is now considered for flow eviction.
+     * OpenFlow 1.4+ OFPTC_EVICTION is now implemented.
+     * OpenFlow 1.4+ OFPTC_VACANCY_EVENTS is now implemented.
+     * OpenFlow 1.4+ OFPMP_TABLE_DESC is now implemented.
+     * Allow modifying the ICMPv4/ICMPv6 type and code fields.
+     * OpenFlow 1.4+ OFPT_SET_ASYNC_CONFIG and OFPT_GET_ASYNC_CONFIG are
+       now implemented.
+   - ovs-ofctl:
+     * New "out_group" keyword for OpenFlow 1.1+ matching on output group.
+   - Tunnels:
+     * Geneve tunnels can now match and set options and the OAM bit.
+     * The nonstandard GRE64 tunnel extension has been dropped.
+   - Support Multicast Listener Discovery (MLDv1 and MLDv2).
+   - Add 'symmetric_l3l4' and 'symmetric_l3l4+udp' hash functions.
+   - sFlow agent now reports tunnel and MPLS structures.
+   - New 'check-system-userspace', 'check-kmod' and 'check-kernel' Makefile
+     targets to run a new system testsuite.  These tests can be run inside
+     a Vagrant box.  See INSTALL.md for details
+   - Mark --syslog-target argument as deprecated.  It will be removed in
+     the next OVS release.
+   - Added --user option to all daemons
+   - Add support for connection tracking through the new "ct" action
+     and "ct_state"/"ct_zone"/"ct_mark"/"ct_label" match fields.  Only
+     available on Linux kernels with the connection tracking module loaded.
+   - Add experimental version of OVN.  OVN, the Open Virtual Network, is a
+     system to support virtual network abstraction.  OVN complements the
+     existing capabilities of OVS to add native support for virtual network
+     abstractions, such as virtual L2 and L3 overlays and security groups.
+   - RHEL packaging:
+     * DPDK ports may now be created via network scripts (see README.RHEL).
+   - DPDK:
+     * Requires DPDK 2.2
+     * Added multiqueue support to vhost-user
+     * Note: QEMU 2.5+ required for multiqueue support
+   - SELinux:
+     * Introduced SELinux policy package.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Fri, 26 Feb 2016 17:23:21 -0700
+
+openvswitch (2.4.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+   - Flow table modifications are now atomic, meaning that each packet
+     now sees a coherent version of the OpenFlow pipeline.  For
+     example, if a controller removes all flows with a single OpenFlow
+     "flow_mod", no packet sees an intermediate version of the OpenFlow
+     pipeline where only some of the flows have been deleted.
+   - Added support for SFQ, FQ_CoDel and CoDel qdiscs.
+   - Add bash command-line completion support for ovs-vsctl Please check
+     utilities/ovs-command-compgen.INSTALL.md for how to use.
+   - The MAC learning feature now includes per-port fairness to mitigate
+     MAC flooding attacks.
+   - New support for a "conjunctive match" OpenFlow extension, which
+     allows constructing OpenFlow matches of the form "field1 in
+     {a,b,c...} AND field2 in {d,e,f...}" and generalizations.  For details,
+     see documentation for the "conjunction" action in ovs-ofctl(8).
+   - Add bash command-line completion support for ovs-appctl/ovs-dpctl/
+     ovs-ofctl/ovsdb-tool commands.  Please check
+     utilities/ovs-command-compgen.INSTALL.md for how to use.
+   - The "learn" action supports a new flag "delete_learned" that causes
+     the learned flows to be deleted when the flow with the "learn" action
+     is deleted.
+   - Basic support for the Geneve tunneling protocol. It is not yet
+     possible to generate or match options. This is planned for a future
+     release. The protocol is documented at
+     http://tools.ietf.org/html/draft-gross-geneve-00
+   - The OVS database now reports controller rate limiting statistics.
+   - sflow now exports information about LACP-based bonds, port names, and
+     OpenFlow port numbers, as well as datapath performance counters.
+   - ovs-dpctl functionality is now available for datapaths integrated
+     into ovs-vswitchd, via ovs-appctl.  Some existing ovs-appctl
+     commands are now redundant and will be removed in a future
+     release.  See ovs-vswitchd(8) for details.
+   - OpenFlow:
+     * OpenFlow 1.4 bundles are now supported for flow mods and port
+       mods.  For flow mods, both 'atomic' and 'ordered' bundle flags
+       are trivially supported, as all bundled messages are executed
+       in the order they were added and all flow table modifications
+       are now atomic to the datapath.  Port mods may not appear in
+       atomic bundles, as port status modifications are not atomic.
+     * IPv6 flow label and neighbor discovery fields are now modifiable.
+     * OpenFlow 1.5 extended registers are now supported.
+     * The OpenFlow 1.5 actset_output field is now supported.
+     * OpenFlow 1.5 Copy-Field action is now supported.
+     * OpenFlow 1.5 masked Set-Field action is now supported.
+     * OpenFlow 1.3+ table features requests are now supported (read-only).
+     * Nicira extension "move" actions may now be included in action sets.
+     * "resubmit" actions may now be included in action sets.  The resubmit
+       is executed last, and only if the action set has no "output" or "group"
+       action.
+     * OpenFlow 1.4+ flow "importance" is now maintained in the flow table.
+     * A new Netronome extension to OpenFlow 1.5+ allows control over the
+       fields hashed for OpenFlow select groups.  See "selection_method" and
+       related options in ovs-ofctl(8) for details.
+   - ovs-ofctl has a new '--bundle' option that makes the flow mod commands
+     ('add-flow', 'add-flows', 'mod-flows', 'del-flows', and 'replace-flows')
+     use an OpenFlow 1.4 bundle to operate the modifications as a single
+     atomic transaction.  If any of the flow mods in a transaction fail, none
+     of them are executed.  All flow mods in a bundle appear to datapath
+     lookups simultaneously.
+   - ovs-ofctl 'add-flow' and 'add-flows' commands now accept arbitrary flow
+     mods as an input by allowing the flow specification to start with an
+     explicit 'add', 'modify', 'modify_strict', 'delete', or 'delete_strict'
+     keyword.  A missing keyword is treated as 'add', so this is fully
+     backwards compatible.  With the new '--bundle' option all the flow mods
+     are executed as a single atomic transaction using an OpenFlow 1.4 bundle.
+   - ovs-pki: Changed message digest algorithm from MD5 to SHA-1 because
+     MD5 is no longer secure and some operating systems have started to disable
+     it in OpenSSL.
+   - ovsdb-server: New OVSDB protocol extension allows inequality tests on
+     "optional scalar" columns.  See ovsdb-server(1) for details.
+   - ovs-vsctl now permits immutable columns in a new row to be modified in
+     the same transaction that creates the row.
+   - test-controller has been renamed ovs-testcontroller at request of users
+     who find it useful for testing basic OpenFlow setups.  It is still not
+     a necessary or desirable part of most Open vSwitch deployments.
+   - Support for travis-ci.org based continuous integration builds has been
+     added. Build failures are reported to build at openvswitch.org. See INSTALL.md
+     file for additional details.
+   - Support for the Rapid Spanning Tree Protocol (IEEE 802.1D-2004).
+     The implementation has been tested successfully against the Ixia Automated
+     Network Validation Library (ANVL).
+   - Stats are no longer updated on fake bond interface.
+   - Keep active bond slave selection across OVS restart.
+   - A simple wrapper script, 'ovs-docker', to integrate OVS with Docker
+     containers. If and when there is a native integration of Open vSwitch
+     with Docker, the wrapper script will be retired.
+   - Added support for DPDK Tunneling. VXLAN, GRE, and Geneve are supported
+     protocols. This is generic tunneling mechanism for userspace datapath.
+   - Support for multicast snooping (IGMPv1, IGMPv2 and IGMPv3)
+   - Support for Linux kernels up to 4.0.x
+   - The documentation now use the term 'destination' to mean one of syslog,
+     console or file for vlog logging instead of the previously used term
+     'facility'.
+   - Support for VXLAN Group Policy extension
+   - Initial support for the IETF Auto-Attach SPBM draft standard. This
+     contains rudimentary support for the LLDP protocol as needed for
+     Auto-Attach.
+   - The default OpenFlow and OVSDB ports are now the IANA-assigned
+     numbers.  OpenFlow is 6653 and OVSDB is 6640.
+   - Support for DPDK vHost.
+   - Support for outer UDP checksums in Geneve and VXLAN.
+   - The kernel vports with dependencies are no longer part of the overall
+     openvswitch.ko but built and loaded automatically as individual kernel
+     modules (vport-*.ko).
+   - Support for STT tunneling.
+   - Support to configure method (--syslog-method argument) that determines
+     how daemons will talk with syslog.
+   - Support for "ovs-appctl vlog/list-pattern" command that lets to query
+     logging message format for each destination.
+   - GRE64 and ipsec_gre64 tunnel protocol is deprecated and will be removed
+     from OVS v2.5 release.
+   * The openvswitch-testcontroller package is new.  It reintroduces the
+     simple OpenFlow controller that was packaged with Open vSwitch prior to
+     version 2.1, at request of users who find it useful for testing basic
+     OpenFlow setups.  It is still not a necessary or desirable part of most
+     Open vSwitch deployments.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Thu, 20 Aug 2015 17:23:43 -0700
+
+openvswitch (2.3.0+git20140819-4) unstable; urgency=high
+
+  * Apply patch to fix a buffer overflow for crafted MPLS packets.  Fixes
+    CVE-2016-2074.  Thanks to the upstream reporters of this
+    vulnerability, Kashyap Thimmaraju
+    <kashyap.thimmaraju at sec.t-labs.tu-berlin.de> and Bhargava Shastry
+    <bshastry at sec.t-labs.tu-berlin.de>.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 28 Mar 2016 17:05:38 -0700
+
+openvswitch (2.3.0+git20140819-3) unstable; urgency=medium
+
+  * Don't depened on $RUNLEVEL at startup to create bridges.
+    This should allow Open vSwitch configuration through
+    /etc/network/interfaces where $RUNLEVEL is not set.
+    This change is upstream commit 238324bd73b031635
+    ("debian: Don't depened on $RUNLEVEL at startup to create bridges.")
+    Closes: #771863
+  *
+
+ -- Simon Horman <horms at debian.org>  Fri, 19 Dec 2014 10:54:08 +0900
+
+openvswitch (2.3.0+git20140819-2) unstable; urgency=low
+
+  * debian/rules: Rerun checks on tests that fail the first time.  Skip
+    tests 711, 712, and 713 that seem to fail due to races on buildds.
+  * debian/patches/cfm-avoid-long-delay: Upstream patch to avoid
+    test failures in CFM tests due to "long delay" log messages at WARN level.
+  * debian/patches/ovs-appctl-log-options.patch,
+    debian/patches/disable-poll-loop-logging-for-long-output.patch:
+    Upstream patches to avoid test failures in tests that generate a ton
+    of output.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Wed, 20 Aug 2014 08:31:11 -0700
+
+openvswitch (2.3.0+git20140819-1) unstable; urgency=low
+
+  * New upstream release:
+   - OpenFlow 1.1, 1.2, and 1.3 are now enabled by default in
+     ovs-vswitchd.
+   - Linux kernel datapath now has an exact match cache optimizing the
+     flow matching process.
+   - Datapath flows now have partially wildcarded tranport port field
+     matches.  This reduces userspace upcalls, but increases the
+     number of different masks in the datapath.  The kernel datapath
+     exact match cache removes the overhead of matching the incoming
+     packets with the larger number of masks, but when paired with an
+     older kernel module, some workloads may perform worse with the
+     new userspace.
+  * Removed datapath packages because Linux 3.16 has adequate built-in
+    support.  Closes: #740983.
+    - debian/control: Remove datapath package references.  Add build
+      dependency on dh-autoreconf.
+    - debian/rules: Don't build datapath packages.
+    - debian/openvswitch-datapath-*: Removed.
+    - debian/control.modules.in: Removed.
+    - debian/dkms.conf.in: Removed.
+    - debian/rules.modules: Removed.
+    - debian/openvswitch-switch.README.Debian: Removed references to kernel
+      packages.
+    - debian/openvswitch-switch.init: Removed references to kernel packages.
+    - debian/automake.mk: Remov references to deleted files.
+    - debian/rules: Adopt use of dh-autoreconf.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Tue, 19 Aug 2014 08:19:21 -0700
+
+openvswitch (2.2.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+   - Internal ports are no longer brought up by default, because it
+     should be an administrator task to bring up devices as they are
+     configured properly.
+   - ovs-vsctl now reports when ovs-vswitchd fails to create a new port or
+     bridge.
+   - The "ovsdbmonitor" graphical tool has been removed, because it was
+     poorly maintained and not widely used.
+   - New "check-ryu" Makefile target for running Ryu tests for OpenFlow
+     controllers against Open vSwitch.  See INSTALL for details.
+   - Added IPFIX support for SCTP flows and templates for ICMPv4/v6 flows.
+   - Upon the receipt of a SIGHUP signal, ovs-vswitchd no longer reopens its
+     log file (it will terminate instead). Please use 'ovs-appctl vlog/reopen'
+     instead.
+   - Support for Linux kernels up to 3.14. From Kernel 3.12 onwards OVS uses
+     tunnel API for GRE and VXLAN.
+   - Added experimental DPDK support.
+   - Added support for custom vlog patterns in Python
+
+ -- Open vSwitch team <dev at openvswitch.org>  Wed, 19 Mar 2014 16:08:38 -0700
+
+openvswitch (2.1.0+git20140411-3) unstable; urgency=low
+
+  * debian/rules: Disable some tests that tend to fail on Debian buildds
+    due to race conditions.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 13 Jun 2014 06:07:31 -0700
+
+openvswitch (2.1.0+git20140411-2) unstable; urgency=low
+
+  * debian/openvswitch-switch.postinst: Add back mysteriously deleted
+    "mkdir" line.  Closes: #744769.  Thanks to Joshua Powers for reporting
+    this bug.
+  * debian/rules: Try rechecking in serial any tests that fail in
+    parallel, as an experiment to see whether this fixes remaining buildd
+    test failures.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 14 Apr 2014 08:29:33 -0700
+
+openvswitch (2.1.0+git20140411-1) unstable; urgency=low
+
+  * New upstream release:
+    - Removed ovsdbmonitor package.  Closes: #744136.
+    - Fix misaligned data accesses that caused test failures.
+  * tests/ofproto-macros.at: Disable scanning logs for WARN and ERR messages,
+    as an experiment to see whether this fixes all the buildd test failures.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 11 Apr 2014 08:35:10 -0700
+
+openvswitch (2.1.0+git20140325-1) unstable; urgency=low
+
+  * New upstream release.
+    - Included kernel module builds against Linux 3.11.  Closes: #732260.
+    - Log rotation bug fixed.  Closes: #729304.
+    - Bridge compatibility feature removed.  Closes: #680538, #681954.
+    - Controller package removed.  Closes: #731133.
+  * Shut down OVS after libvirt guests to allow those guests to remove
+    their interfaces gracefully. Closes: #701760.  Reported by Ernesto
+    Domato <edomat at gmail.com>.  Fix from Lukasz Szotek
+    <szotman at gmail.com>.
+  * debian/control: Depend on kmod instead of module-init-tools.  Closes:
+    #733696.  Reported by md at Linux.IT (Marco d'Itri).
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 31 Mar 2014 09:31:10 -0700
+
+openvswitch (1.9.3+git20131029-1) unstable; urgency=low
+
+  * New upstream release.
+    - Fixes opening Unix sockets with very long names from Python.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Tue, 29 Oct 2013 08:31:55 -0700
+
+openvswitch (1.9.3+git20131028-1) unstable; urgency=low
+
+  * New upstream release.
+    - Fixes "make check" with non-ASCII characters in present working
+      directory.  Closes: #719736.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 28 Oct 2013 08:40:31 -0700
+
+openvswitch (1.9.3+git20131021-1) unstable; urgency=low
+
+  * New upstream version:
+    - Fixes unaligned access issues in bug #719736.
+    - Other bug fixes.
+  * Other half of bug #719736 has probably not been addressed.  I don't
+    understand it and want to see if it recurs in the autobuilders with
+    the unaligned accesses fixed.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 21 Oct 2013 08:53:11 -0700
+
+openvswitch (1.9.3-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+    - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Thu, 29 Aug 2013 17:02:33 -0700
+
+openvswitch (1.9.2+git20130813-1) unstable; urgency=low
+
+  * New upstream version.  Closes: #701758.
+    - debian/patches: All patches dropped because they have been
+      incorporated upstream.
+    - Supports kernels up to 3.8.  Closes: #710125.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 07 Jun 2013 14:15:01 -0700
+
+openvswitch (1.9.2-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+    - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Fri, 05 Apr 2013 18:37:19 -0700
+
+openvswitch (1.9.1-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+    - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Tue, 14 Mar 2013 17:27:19 -0700
+
+openvswitch (1.9.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+    - Datapath:
+      - Support for ipv6 set action.
+      - SKB mark matching and setting.
+      - support for Linux kernels up to 3.8
+    - FreeBSD is now a supported platform, thanks to code contributions from
+      Gaetano Catalli, Ed Maste, and Giuseppe Lettieri.
+    - ovs-bugtool: New --ovs option to report only OVS related information.
+    - New %t and %T log escapes to identify the subprogram within a
+      cooperating group of processes or threads that emitted a log message.
+      The default log patterns now include this information.
+    - OpenFlow:
+      - Allow bitwise masking for SHA and THA fields in ARP, SLL and TLL
+        fields in IPv6 neighbor discovery messages, and IPv6 flow label.
+      - Adds support for writing to the metadata field for a flow.
+    - Tunneling:
+      - The tunneling code no longer assumes input and output keys are
+        symmetric.  If they are not, PMTUD needs to be disabled for
+        tunneling to work. Note this only applies to flow-based keys.
+      - New support for a nonstandard form of GRE that supports a 64-bit key.
+      - Tunnel Path MTU Discovery default value was set to 'disabled'.
+        This feature is deprecated and will be removed soon.
+      - Tunnel header caching removed.
+    - ovs-ofctl:
+      - Commands and actions that accept port numbers now also accept keywords
+        that represent those ports (such as LOCAL, NONE, and ALL).  This is
+        also the recommended way to specify these ports, for compatibility
+        with OpenFlow 1.1 and later (which use the OpenFlow 1.0 numbers
+        for these ports for different purposes).
+    - ovs-dpctl:
+      - Support requesting the port number with the "port_no" option in
+        the "add-if" command.
+    - ovs-pki: The "online PKI" features have been removed, along with
+      the ovs-pki-cgi program that facilitated it, because of some
+      alarmist insecurity claims.  We do not believe that these claims
+      are true, but because we do not know of any users for this
+      feature it seems better on balance to remove it.  (The ovs-pki-cgi
+      program was not included in distribution packaging.)
+    - ovsdb-server now enforces the immutability of immutable columns.  This
+      was not enforced in earlier versions due to an oversight.
+    - The following features are now deprecated.  They will be removed no
+      earlier than February 2013.  Please email dev at openvswitch.org with
+      concerns.
+        - Bridge compatibility.
+        - Stable bond mode.
+        - The autopath action.
+        - Interface type "null".
+        - Numeric values for reserved ports (see "ovs-ofctl" note above).
+        - Tunnel Path MTU Discovery.
+        - CAPWAP tunnel support.
+    - The data in the RARP packets can now be matched in the same way as the
+      data in ARP packets.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Tue, 26 Feb 2013 11:23:19 -0700
+
+openvswitch (1.8.0-1) unstable; urgency=low
+   [ Open vSwitch team ]
+   * New upstream version
+    *** Internal only release ***
+    - New FAQ.  Please send updates and additions!
+    - Authors of controllers, please read the new section titled "Action
+      Reproduction" in DESIGN, which describes an Open vSwitch change in
+      behavior in corner cases that may affect some controllers.
+    - ovs-l3ping:
+        - A new test utility that can create L3 tunnel between two Open
+          vSwitches and detect connectivity issues.
+    - ovs-ofctl:
+        - New --sort and --rsort options for "dump-flows" command.
+        - "mod-port" command can now control all OpenFlow config flags.
+    - OpenFlow:
+      - Allow general bitwise masking for IPv4 and IPv6 addresses in
+        IPv4, IPv6, and ARP packets.  (Previously, only CIDR masks
+        were allowed.)
+      - Allow support for arbitrary Ethernet masks.  (Previously, only
+        the multicast bit in the destination address could be individually
+        masked.)
+      - New field OXM_OF_METADATA, to align with OpenFlow 1.1.
+      - The OFPST_QUEUE request now reports an error if a specified port or
+        queue does not exist, or for requests for a specific queue on all
+        ports, if the specified queue does not exist on any port.  (Previous
+        versions generally reported an empty set of results.)
+      - New "flow monitor" feature to allow controllers to be notified of
+        flow table changes as they happen.
+    - Additional protocols are not mirrored and dropped when forward-bpdu is
+      false.  For a full list, see the ovs-vswitchd.conf.db man page.
+    - Open vSwitch now sends RARP packets in situations where it previously
+      sent a custom protocol, making it consistent with behavior of QEMU and
+      VMware.
+    - All Open vSwitch programs and log files now show timestamps in UTC,
+      instead the local timezone, by default.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 16 Jul 2012 16:44:52 +0900
+
+openvswitch (1.7.0-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - kernel modules are renamed. openvswitch_mod.ko is now
+      openvswitch.ko and brcompat_mod.ko is now brcompat.ko.
+    - Increased the number of NXM registers to 8.
+    - Added ability to configure dscp setting for manager and controller
+      connections.  By default, these connections have a DSCP value of
+      Internetwork Control (0xc0).
+    - Added the granular link health statistics, 'cfm_health', to an
+      interface.
+    - OpenFlow:
+        - Added support to mask nd_target for ICMPv6 neighbor discovery flows.
+        - Added support for OpenFlow 1.3 port description (OFPMP_PORT_DESC)
+          multipart messages.
+    - ovs-ofctl:
+        - Added the "dump-ports-desc" command to retrieve port
+          information using the new port description multipart messages.
+    - ovs-test:
+        - Added support for spawning ovs-test server from the client.
+        - Now ovs-test is able to automatically create test bridges and ports.
+    - "ovs-dpctl dump-flows" now prints observed TCP flags in TCP flows.
+    - Tripled flow setup performance.
+    - The "coverage/log" command previously available through ovs-appctl
+      has been replaced by "coverage/show".  The new command replies with
+      coverage counter values, instead of logging them.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 30 Jul 2012 17:23:57 +0900
+
+openvswitch (1.6.1-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - Allow OFPP_CONTROLLER as the in_port for packet-out messages.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 25 Jun 2012 13:52:17 +0900
+
+openvswitch (1.6.0-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - bonding
+        - LACP bonds no longer fall back to balance-slb when negotiations fail.
+          Instead they drop traffic.
+        - The default bond_mode changed from SLB to active-backup, to protect
+          unsuspecting users from the significant risks of SLB bonds (which are
+          documented in vswitchd/INTERNALS).
+        - Load balancing can be disabled by setting the bond-rebalance-interval
+          to zero.
+    - OpenFlow:
+        - Added support for bitwise matching on TCP and UDP ports.
+          See ovs-ofctl(8) for more information.
+        - NXM flow dumps now include times elapsed toward idle and hard
+          timeouts.
+        - Added an OpenFlow extension NXT_SET_ASYNC_CONFIG that allows
+          controllers more precise control over which OpenFlow messages they
+          receive asynchronously.
+        - New "fin_timeout" action.
+        - Added "fin_timeout" support to "learn" action.
+    - The default MAC learning timeout has been increased from 60 seconds
+      to 300 seconds.  The MAC learning timeout is now configurable.
+    - When QoS settings for an interface do not configure a default queue
+      (queue 0), Open vSwitch now uses a default configuration for that
+      queue, instead of dropping all packets as in previous versions.
+    - Logging to console and file will have UTC timestamp as a default for all
+      the daemons. An example of the default format is 2012-01-27T16:35:17Z.
+      ovs-appctl can be used to change the default format as before.
+    - New support for limiting the number of flows in an OpenFlow flow
+      table, with configurable policy for evicting flows upon
+      overflow.  See the Flow_Table table in ovs-vswitch.conf.db(5)
+      for more information.
+    - New "enable-async-messages" column in the Controller table.  If set to
+      false, OpenFlow connections to the controller will initially have all
+      asynchronous messages disabled, overriding normal OpenFlow behavior.
+    - ofproto-provider interface:
+        - "struct rule" has a new member "used" that ofproto implementations
+          should maintain by updating with ofproto_rule_update_used().
+    - ovsdb-client:
+        - The new option --timestamp causes the "monitor" command to print
+          a timestamp with every update.
+    - CFM module CCM broadcasts can now be tagged with an 802.1p priority.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Fri, 24 Feb 2012 11:12:48 +0900
+
+openvswitch (1.5.0-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - OpenFlow:
+        - Added support for querying, modifying, and deleting flows
+          based on flow cookie when using NXM.
+        - Added new NXM_PACKET_IN format.
+    - ovs-ofctl:
+        - Added daemonization support to the monitor and snoop commands.
+    - ovs-vsctl:
+        - The "find" command supports new set relational operators
+          {=}, {!=}, {<}, {>}, {<=}, and {>=}.
+    - ovsdb-tool now uses the typical database and schema installation
+      directories as defaults.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Fri, 01 June 2012 13:06:00 +0900
+
+openvswitch (1.4.2+git20120612-9) unstable; urgency=low
+
+  * Apply bug-684057-ovs-ctl-Add-support-for-newer-module-name.patch to
+    allow use of the openvswitch kernel module integrated into 3.3 and
+    later.  Closes: #684057.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 06 Aug 2012 16:59:01 -0700
+
+openvswitch (1.4.2+git20120612-8) unstable; urgency=low
+
+  * Apply further patches to fix bugs resulting from moving
+    /etc/openvswitch/conf.db to /var/lib/openvswitch in -7.
+
+    This required applying the following bug fix patches:
+
+    bug-681880-3-Make-the-location-of-the-database-separately-configu.patch
+    bug-681880-4-tests-Slightly-generalize-utility-function-tests.patch
+    bug-681880-5-util-New-function-follow_symlinks.patch
+    bug-681880-6-lockfile-Be-more-forgiving-about-lockfiles-for-symli.patch
+    bug-681880-7-ovsdb-Do-not-replace-symlinks-by-regular-files-durin.patch
+    bug-681880-8-Fix-a-typo-in-commit-f973f2af2.patch
+    bug-681880-9-dirs-dbdir-default-must-be-based-on-sysconfdir.patch
+
+  * debian/rules: Configure /var/lib/openvswitch as the database directory
+    instead of working through symlinks.  (The symlinks are still created
+    for compatibility with people and existing software that are
+    accustomed to seeing the database in its original location, but the
+    Debian packages themselves never use the symlinks.)
+
+  * debian/openvswitch-switch.postrm: Also remove
+    /ec/openvswitch/system-id.conf and conf.db backups on purge.
+
+  * utilities/ovs-pki.in: Use mode 0700 instead of 0733 for
+    openvswitch-pki "incoming" directory, by applying
+    bug-683665-use-mode-700-for-pki-incoming-dir.patch.  See the patch for
+    complete rationale.  Closes: #683665.  Thanks to Andreas Beckmann
+    <debian at abeckmann.de> for reporting this bug.
+
+  * debian/openvswitch-pki.postinst: Change mode of existing "incoming"
+    directories to 0700 at configure time (see above).
+
+ -- Ben Pfaff <pfaffben at debian.org>  Wed, 01 Aug 2012 11:20:21 -0700
+
+openvswitch (1.4.2+git20120612-7) unstable; urgency=low
+
+  * Move /etc/openvswitch/conf.db to /var/lib/openvswitch, using symlinks.
+    Closes: #681880.  Thanks to Bastian Blank <waldi at debian.org> for
+    reporting this bug.
+
+    This required applying the following bug fix patches:
+
+    bug-681880-1-lockfile-Fix-hang-locking-through-a-dangling-symlink.patch
+    bug-681880-2-ovsdb-Make-ovsdb-tool-create-work-through-a-dangling.patch
+
+  * Start the rest of OVS if bridge compatibility is enabled but the
+    kernel bridge module cannot be loaded.  Closes: #681955.  Thanks to
+    Bastian Blank <waldi at debian.org> for reporting this bug.
+
+    This was fixed by applying the following bug fix patch:
+
+    bug-681955-ovs-ctl-Start-the-rest-of-Open-vSwitch.patch
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 27 Jul 2012 12:36:03 -0700
+
+openvswitch (1.4.2+git20120612-6) unstable; urgency=low
+
+  * utilities/automake.mk: Fix duplicate mention of ovs-vsctl in
+    bin_PROGRAMS and bin_SCRIPTS; it should only have been in the former.
+    Closes: #682384.  Thanks to Bastian Blank <waldi at debian.org> for
+    reporting this bug.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 23 Jul 2012 09:46:41 -0700
+
+openvswitch (1.4.2+git20120612-5) unstable; urgency=low
+
+  * debian/openvswitch-controller.postrm: Remove configuration files in
+    /etc/openvswitch-controller on purge.  Closes: #682187.  Thanks to
+    Andreas Beckmann <debian at abeckmann.de> for reporting this bug.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Fri, 20 Jul 2012 22:33:19 -0700
+
+openvswitch (1.4.2+git20120612-4) unstable; urgency=low
+
+  * debian/openvswitch-switch.init: Do not modify iptables rules.  Closes:
+    #680537.  Thanks to Bastian Blank <waldi at debian.org> for reporting
+    this bug.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 16 Jul 2012 12:56:37 -0700
+
+openvswitch (1.4.2+git20120612-3) unstable; urgency=low
+
+  * debian/control: Add "netbase" dependency to ensure that /etc/protocols
+    is available.  Closes: #680537.  Thanks to Bastian Blank <waldi at debian.org>
+    for reporting this bug.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Mon, 09 Jul 2012 09:50:03 -0700
+
+openvswitch (1.4.2+git20120612-2) unstable; urgency=low
+
+  * Apply upstream commit that enables DKMS to automatically build for the
+    running kernel, which seems to be common practice in DMS packaging
+    (launchpad bug #962189)
+
+ -- Ben Pfaff <pfaffben at debian.org>  Tue, 19 Jun 2012 09:40:53 -0700
+
+openvswitch (1.4.2+git20120612-1) unstable; urgency=low
+
+  * New upstream version fixing the following bugs:
+    o Crash fixes:
+      - ofproto: Fix use after free in ofoperation_complete().
+      - odp-util: Update ODPUTIL_FLOW_KEY_BYTES for current kernel flow format.
+      - datapath: Check correct return value from skb_gso_segment().
+    o Possible serious malfunctions:
+      - dpif-netdev: allow for proper destruction of netdev datapaths.
+      - datapath: Validation of IPv6 set port action uses IPv4 header.
+    o Rare annoying corner case:
+      - odp-util: Fix parsing of actions encapsulated within "sample" actions.
+    o Bugs with unknown impact:
+      - Correctly set destination MAC in mf_set_flow_value().
+    o OpenFlow controller compatibility:
+      - Allow OFPP_CONTROLLER as the in_port for packet-out messages.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Tue, 12 Jun 2012 10:25:08 -0700
+
+openvswitch (1.4.0+git20120426-1) unstable; urgency=low
+
+  * New upstream release fixing the following bugs:
+    o Broken log rotation.
+    o Use-after-free error when ports disappear.
+    o Minor memory leaks.
+    o Testsuite failures on big-endian architectures.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Thu, 26 Apr 2012 13:46:55 -0700
+
+openvswitch (1.4.0+git20120321-1) unstable; urgency=low
+
+  * New upstream version including:
+    o Features:
+      - ovs-vsctl: Allow "fake bridges" to be created for VLAN 0.
+      - vswitchd: Make the MAC entry aging time configurable.
+      - mac-learning: Increase MAC learning timeout to 300 seconds.
+    o Bug fixes:
+      - netdev-linux: Fix use-after-free when netdev_dump_queues() deletes
+        queues.
+      - netlink-socket: Increase Netlink socket receive buffer size.
+      - ofproto: Fix code that keeps track of MTU.
+      - ovs-monitor-ipsec: Detect correctly IPSEC configuration changes
+      - bond: Incorrectly reported an error in appctl.
+      - socket-util: Unlink Unix domain sockets that bind but fail to connect.
+      - bridge: Remove unwanted ports at time of ofproto creation.
+      - dpif-linux: Make dpif_linux_port_query_by_name() query only one
+        datapath.
+      - ofproto-dpif: Cleanup STP on ports when disabled on their bridge.
+      - configure: Try to extract kernel source directory from build Makefile.
+      - vswitchd: Always configure a default queue for QoS.
+      - ofproto-dpif: Don't output to in_port even if in_port is OFPP_LOCAL.
+      - sflow_agent: Use snprintf() in place of sprintf().
+    o Packaging:
+      - Move PKI directory to FHS-compliant location.  Closes: #661090.
+        Thanks to Andreas Beckmann <debian at abeckmann.de> for reporting
+        this bug.
+      - Use a different way to avoid failing install without kernel module.
+      - Avoid unit test failure when doing "unofficial" builds.
+      - Bump standards-version to 3.9.3.
+      - Remove some useless files from the dkms package.
+      - Clean .pyc files in "clean" target.
+      - Remove po-debconf build dependency.
+      - Build-depend on python-all to pull in all Python versions.
+      - Add missing ${python:Depends} to openvswitch-test package.
+      - Improve long descriptions so as to better describe the packages.
+      - Bump debhelper compat level to 8 and make build-depends consistent.
+      - Fix exit status of openvswitch-switch init script "status" command.
+      - Use provided kernel source dir instead of host kernel version.
+      - Do not run "make" if "configure" fails during DKMS build.
+      - Look in /lib/modules instead of /usr/src for DKMS kernel sources.
+      - Fix dependencies for openvswitch-datapath-dkms package.
+      - Don't install Python modules for obsolete Python versions.
+      - Add dependency on ${misc:Depends} to openvswitch-test
+    o Documentation improvements:
+      - ovsdb-doc: Use minus sign in negative numbers in nroff output.
+      - ovsdb-doc: Convert '-' preceding a number as a minus sign, not a
+        hyphen.
+      - ovsdb-doc: Put NAME section into generated manpage.
+      - Fix typo in manpage.
+      - vswitchd: Document behavior of 802.1p priorities with VLAN splinters.
+      - netdev: Fix typo in error message.
+      - INSTALL.Linux: minor typo
+
+  * Many thanks to Thomas Goirand <zigo at debian.org> for contributing many
+    of the packaging fixes listed above.
+
+  * This version fixes most of the lintian errors described in bug
+    #663051, but a few remain, so this upload does not close that bug.  I
+    believe that this upload should be suitable for downgrading that bug's
+    severity.
+
+ -- Ben Pfaff <pfaffben at debian.org>  Wed, 21 Mar 2012 10:00:28 -0700
+
+openvswitch (1.4.0-2+nmu1) unstable; urgency=low
+
+  * Non maintainer upload.
+  * Removes all patches in debian/patches, because they are patching stuff
+  inconditionally in debian/*, and this should be applied by default.
+  * Uses the correct ${kernel_source_dir} in debian/dkms.conf.in, so that
+  the kernel module builds as expected (Closes: #659685).
+
+ -- Thomas Goirand <zigo at debian.org>  Thu, 08 Mar 2012 08:46:24 +0000
+
+openvswitch (1.4.0-2) unstable; urgency=low
+
+  * Use explicit DKMS variable for kernel source directory
+    - 0001-debian-Fix-dependencies-for-openvswitch-datapath-dkm.patch
+    - 0002-debian-Look-in-lib-modules-instead-of-usr-src-for-DK.patch
+    - 0001-debian-Use-provided-kernel-source-dir.patch
+    - 0001-debian-Do-not-run-make-if-configure-fails-during-DKM.patch
+    - (closes: #659685)
+  * Don't install Python modules for obsolete Python versions
+    - 0001-debian-Don-t-install-Python-modules-for-obsolete-Pyt.patch
+
+ -- Simon Horman <horms at debian.org>  Tue, 14 Feb 2012 11:43:13 +0900
+
+openvswitch (1.4.0-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - Compatible with Open vSwitch kernel module included in Linux 3.3.
+    - New "VLAN splinters" feature to work around buggy device drivers
+      in old Linux versions.  (This feature is deprecated.  When
+      broken device drivers are no longer in widespread use, we will
+      delete this feature.)  See ovs-vswitchd.conf.db(5) for more
+      information.
+    - OpenFlow:
+       - Added ability to match on IPv6 flow label through NXM.
+       - Added ability to match on ECN bits in IPv4 and IPv6 through NXM.
+       - Added ability to match on TTL in IPv4 and IPv6 through NXM.
+       - Added ability to modify ECN bits in IPv4.
+       - Added ability to modify TTL in IPv4.
+    - ovs-vswitchd:
+       - Don't require the "normal" action to use mirrors.  Traffic will
+         now be properly mirrored for any flows, regardless of their
+         actions.
+       - Track packet and byte statistics sent on mirrors.
+    - ovs-appctl:
+      - New "fdb/flush" command to flush bridge's MAC learning table.
+    - ovs-test:
+      - A new distributed testing tool that allows one to diagnose performance
+        and connectivity issues. This tool currently is not included in RH or
+        Xen packages.
+    - RHEL packaging now supports integration with Red Hat network scripts.
+    - Debian: Depend on python (>= 2.7) | python-argparse instead of
+              python-argparse to avoid pulling in python2.6
+              (closes: #653645)
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 30 Jan 2012 23:36:00 +0000
+
+openvswitch (1.3.0-1) unstable; urgency=low
+  [ Open vSwitch team ]
+  * New upstream version
+    - OpenFlow:
+      - Added an OpenFlow extension which allows the "output" action to accept
+        NXM fields.
+      - Added an OpenFlow extension for flexible learning.
+      - Bumped number of NXM registers from four to five.
+    - ovs-appctl:
+      - New "version" command to determine version of running daemon.
+      - If no argument is provided for "cfm/show", displays detailed
+        information about all interfaces with CFM enabled.
+      - If no argument is provided for "lacp/show", displays detailed
+        information about all ports with LACP enabled.
+    - ovs-vswitchd:
+      - The software switch now supports 255 OpenFlow tables, instead
+        of just one.  By default, only table 0 is consulted, but the
+        new NXAST_RESUBMIT_TABLE action can look up in additional
+        tables.  Tables 128 and above are reserved for use by the
+        switch itself; please use only tables 0 through 127.
+      - Add support for 802.1D spanning tree (STP).
+    - Fragment handling extensions:
+      - New OFPC_FRAG_NX_MATCH fragment handling mode, in which L4
+        fields are made available for matching in fragments with
+        offset 0.
+      - New NXM_NX_IP_FRAG match field for matching IP fragments (usable
+        via "ip_frag" in ovs-ofctl).
+      - New ovs-ofctl "get-frags" and "set-frags" commands to get and set
+        fragment handling policy.
+    - CAPWAP tunneling now supports an extension to transport a 64-key.  By
+      default it remains compatible with the old version and other
+      standards-based implementations.
+    - Flow setups are now processed in a round-robin manner across ports
+      to prevent any single client from monopolizing the CPU and conducting
+      a denial of service attack.
+    - Added support for native VLAN tagging.  A new "vlan_mode"
+      parameter can be set for "port". Possible values: "access",
+      "trunk", "native-tagged" and "native-untagged".
+    - test-openflowd has been removed.  Please use ovs-vswitchd instead.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 09 Dec 2011 23:36:00 +0000
+
+openvswitch (1.2.0-1) unstable; urgency=low
+
+  [ Open vSwitch team ]
+  * New upstream version
+    - New "ofproto" abstraction layer to ease porting to hardware
+      switching ASICs.
+    - Packaging for Red Hat Enterprise Linux 5.6 and 6.0.
+    - Datapath support for Linux kernels up to 3.0.
+    - OpenFlow:
+      - New "bundle" and "bundle_load" action extensions.
+    - Database:
+      - Implement table unique constraints.
+      - Support cooperative locking between callers.
+    - ovs-dpctl:
+      - New "-s" option for "show" command prints packet and byte
+        counters for each port.
+    - ovs-ofctl:
+      - New "--readd" option for "replace-flows".
+    - ovs-vsctl:
+      - New "show" command to print an overview of configuration.
+      - New "comment" command to add remark that explains intentions.
+    - ovs-brcompatd has been rewritten to fix long-standing bugs.
+    - ovs-openflowd has been renamed test-openflowd and moved into the
+      tests directory.  Its presence confused too many users.  Please
+      use ovs-vswitchd instead.
+    - New ovs-benchmark utility to test flow setup performance.
+    - A new log level "off" has been added.  Configuring a log facility
+      "off" prevents any messages from being logged to it.  Previously,
+      "emer" was effectively "off" because no messages were ever logged at
+      level "emer".  Now, errors that cause a process to exit are logged
+      at "emer" level.
+    - "configure" option --with-l26 has been renamed --with-linux, and
+      --with-l26-source has been renamed --with-linux-source.  The old
+      names will be removed after the next release, so please update
+      your scripts.
+    - The "-2.6" suffix has been dropped from the datapath/linux-2.6 and
+      datapath/linux-2.6/compat-2.6 directories.
+    - Feature removals:
+      - Dropped support for "tun_id_from_cookie" OpenFlow extension.
+        Please use the extensible match extensions instead.
+      - Removed the Maintenance_Point and Monitor tables in an effort
+        to simplify 802.1ag configuration.
+    - Performance and scalability improvements
+    - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Wed, 03 Aug 2011 14:43:00 +0000
+
+openvswitch (1.1.1-1) unstable; urgency=low
+
+  [ Open vSwitch team ]
+  * Bug fixes.
+
+  [ Simon Horman ]
+  * docs: Suppress warning marcro DD not defined
+    (upstream commit 58f870d0)
+  * debian: Make openvswitch depend on Python
+    (upstream commit aa41cb61)
+  * debian: Don't begin openvswitch-pki description with article.
+    (upstream commit bc6bb66)
+  * Debian: Add ${misc:Depends} dependency to python-openvswitch
+  * Debian: Update standards version from 3.9.1 to 3.9.2
+  * Debian: ${source:Version} dependency on python openvswitch
+  * Debian: ${source:Version} dependency for python openvswitch
+  * Switch to dpkg-source 3.0 (quilt) format
+    - For local non-debian/ patches (above)
+
+ -- Simon Horman <horms at debian.org>  Wed, 15 Jun 2011 10:46:15 +0900
+
+openvswitch (1.1.0-1) unstable; urgency=low
+
+  [ Open vSwitch team ]
+  * New upstream version
+    - Ability to define policies over IPv6
+    - LACP
+    - 802.1ag CCM
+    - Support for extensible match extensions to OpenFlow
+    - QoS:
+      - Support for HFSC qdisc.
+      - Queue used by in-band control can now be configured.
+    - Kernel:
+      - Kernel<->userspace interface has been reworked and should be
+        close to a stable ABI now.
+      - "Port group" concept has been dropped.
+    - GRE over IPSEC tunnels
+    - Bonding:
+      - New active backup bonding mode.
+      - New L4 hashing support when LACP is enabled.
+      - Source MAC hash now includes VLAN field also.
+      - miimon support.
+    - Greatly improved handling of large flow tables
+    - ovs-dpctl:
+      - "show" command now prints full vport configuration.
+      - "dump-groups" command removed since kernel support for
+        port groups was dropped.
+    - ovs-vsctl:
+      - New commands for working with the new Managers table.
+      - "list" command enhanced with new formatting options and --columns
+        option.
+      - "get" command now accepts new --id option.
+      - New "find" command.
+    - ovs-ofctl:
+      - New "queue-stats" command for printing queue stats.
+      - New commands "replace-flows" and "diff-flows".
+      - Commands to add and remove flows can now read from files.
+      - New --flow-format option to enable or disable NXM.
+      - New --more option to increase OpenFlow message verbosity.
+      - Removed "tun-cookie" command, which is no longer useful.
+    - ovs-controller enhancements for testing various features.
+    - New ovs-vlan-test command for testing for Linux kernel driver VLAN
+      bugs.  New ovs-vlan-bug-workaround command for enabling and
+      disabling a workaround for these driver bugs.
+    - OpenFlow support:
+      - "Resubmit" actions now update flow statistics.
+      - New "register" extension for use in matching and actions, via NXM.
+      - New "multipath" experimental action extension.
+      - New support for matching multicast Ethernet frames, via NXM.
+      - New extension for OpenFlow vendor error codes.
+      - New extension to set the QoS output queue without actually
+        sending to an output port.
+      - Open vSwitch now reports a single flow table, instead of
+        separate hash and wildcard tables.  This better models the
+        current implementation.
+      - New experimental "note" action.
+      - New "ofproto/trace" ovs-appctl command and associated utilities
+        to ease debugging complex flow tables.
+    - Database:
+      - Schema documentation now includes an entity-relationship diagram.
+      - The database is now garbage collected.  In most tables,
+        unreferenced rows will be deleted automatically.
+      - Many tables now include statistics updated periodically by
+        ovs-vswitchd or ovsdb-server.
+      - Every table now has an "external-ids" column for use by OVS
+        integrators.
+      - There is no default controller anymore.  Each bridge must have its
+        controller individually specified.
+      - The "fail-mode" is now a property of a Bridge instead of a Controller.
+      - New versioning and checksum features.
+      - New Managers table and manager_options column in Open_vSwitch table
+        for specifying managers.  The old "managers" column in the
+        Open_vSwitch table has been removed.
+      - Many "name" columns are now immutable.
+    - Feature removals:
+      - Dropped support for XenServer pre-5.6.100.
+      - Dropped support for Linux pre-2.6.18.
+      - Dropped controller discovery support.
+      - Dropped "ovs-ofctl status" and the OpenFlow extension that it used.
+        Statistics reporting in the database is a rough equivalent.
+      - Dropped the "corekeeper" package (now separate, at
+        http://openvswitch.org/cgi-bin/gitweb.cgi?p=corekeeper).
+    - Performance and scalability improvements
+    - Bug fixes
+
+  [ Simon Horman ]
+  * Add the following fixes from upstream branch-1.1
+    - 7f1aca9 dpif-linux: Avoid logging error on ENOENT in
+              dpif_linux_is_internal_device().
+    - 8996f83 dpif-linux: Avoid segfault on netdev_get_stats() without kernel
+              module.
+    - 002d4a3 vswitch: Improve schema documentation.
+    - 58bd294 cfm: Fix broken fault logic.
+    - c042664 bridge: Run once before configuring CFM.
+   * Switch to dpkg-source 3.0 (quilt) format
+
+ -- Simon Horman <horms at debian.org>  Wed, 27 Apr 2011 17:11:10 +0900
+
+openvswitch (1.1.0~pre2.g2.ea763e0e-1) unstable; urgency=low
+
+  * Git snapshot, including
+    - tests: Fix Y2011 bug in testsuite
+      (closes: #609506)
+
+ -- Simon Horman <horms at debian.org>  Wed, 12 Jan 2011 08:34:35 +0900
+
+openvswitch (1.1.0~pre2.g1.bbe8d06e-1) unstable; urgency=low
+
+  * Git snaptshot
+
+ -- Simon Horman <horms at debian.org>  Thu, 06 Jan 2011 11:11:55 +0900
+
+openvswitch (1.1.0~pre2-5) unstable; urgency=low
+
+  * Open vSwitch only works on Linux so set
+    the Architecture of binary packages to linux-any accordingly
+
+ -- Simon Horman <horms at debian.org>  Tue, 23 Nov 2010 07:55:19 +0900
+
+openvswitch (1.1.0~pre2-4) unstable; urgency=low
+
+  * Add procps to Build-Depends
+    (closes: #602891)
+
+ -- Simon Horman <horms at debian.org>  Tue, 16 Nov 2010 06:46:17 +0900
+
+openvswitch (1.1.0~pre2-3) unstable; urgency=low
+
+  * Remove the corekeeper package as it isn't strongly related
+    to Open vSwitch. It has subsequently been broken off into
+    a separate source repository and may be uploaded as its
+    own debian source package.
+    http://openvswitch.org/cgi-bin/gitweb.cgi?p=corekeeper;a=summary
+    (closes: #602946)
+  * Avoid the use of long socket names.
+    (closes: #602891, closes: #602911)
+
+ -- Simon Horman <horms at debian.org>  Thu, 11 Nov 2010 06:35:05 +0900
+
+openvswitch (1.1.0~pre2-2) unstable; urgency=low
+
+  * Clarify licensing of files in xenserver/
+
+ -- Simon Horman <horms at debian.org>  Thu, 23 Sep 2010 10:56:18 +0900
+
+openvswitch (1.1.0~pre2-1) unstable; urgency=low
+
+  * New upstream version
+    - Bug fixes
+
+ -- Simon Horman <horms at debian.org>  Wed, 15 Sep 2010 18:28:59 +0900
+
+openvswitch (1.1.0~pre1-1) unstable; urgency=low
+
+  * New upstream version
+    - OpenFlow 1.0 slicing (QoS) functionality
+    - Python bindings for configuration database (no write support)
+    - Performance and scalability improvements
+    - Bug fixes
+
+ -- Open vSwitch team <dev at openvswitch.org>  Tue, 31 Aug 2010 23:20:00 +0000
+
+openvswitch (1.0.1-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Open vSwitch team <dev at openvswitch.org>  Mon, 17 May 2010 10:36:00 +0000
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..dc0eaee
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,323 @@
+Source: openvswitch
+Section: net
+Priority: optional
+Maintainer: Debian OpenStack <team+openstack at tracker.debian.org>
+Uploaders:
+ Ben Pfaff <pfaffben at debian.org>,
+ Simon Horman <horms at debian.org>,
+ Thomas Goirand <zigo at debian.org>,
+ Michal Arbet <michal.arbet at ultimum.io>,
+Build-Depends:
+ autoconf,
+ automake,
+ bzip2,
+ debhelper-compat (= 10),
+ dh-python,
+ graphviz,
+ libcap-ng-dev,
+ libdpdk-dev (>= 18.11.2) [amd64 i386 ppc64el arm64],
+ libnuma-dev [amd64 i386 ppc64el arm64],
+ libpcap-dev [amd64 i386 ppc64el arm64],
+ libssl-dev,
+ libtool,
+ libunbound-dev,
+ openssl,
+ openstack-pkg-tools,
+ pkg-config,
+ procps,
+ python3-all-dev,
+ python3-setuptools,
+ python3-six,
+ python3-sortedcontainers,
+ python3-sphinx,
+ python3-zope.interface,
+Standards-Version: 4.1.1
+Vcs-Browser: https://salsa.debian.org/openstack-team/third-party/openvswitch
+Vcs-Git: https://salsa.debian.org/openstack-team/third-party/openvswitch.git
+Homepage: http://openvswitch.org/
+
+Package: openvswitch-common
+Architecture: linux-any
+Depends:
+ iproute2,
+ openssl,
+ python3-six,
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Suggests:
+ ethtool,
+Replaces:
+ openvswitch-switch (<< 2.10.0+2018.08.28+git.8ca7c82b7d+ds1),
+ openvswitch-test (<< 2.8.0),
+ openvswitch-testcontroller (<< 2.8.0),
+ openvswitch-vtep (<< 2.10.0+2018.08.28+git.8ca7c82b7d+ds1),
+ ovn-central (<< 2.8.0),
+ ovn-common (<< 2.8.0),
+ ovn-controller-vtep (<< 2.8.0),
+ ovn-docker (<< 2.8.0),
+ ovn-host (<< 2.8.0),
+Breaks:
+ openvswitch-switch (<< 2.10.0+2018.08.28+git.8ca7c82b7d+ds1),
+ openvswitch-test (<< 2.8.0),
+ openvswitch-testcontroller (<< 2.8.0),
+ openvswitch-vtep (<< 2.10.0+2018.08.28+git.8ca7c82b7d+ds1),
+ ovn-central (<< 2.8.0),
+ ovn-common (<< 2.8.0),
+ ovn-controller-vtep (<< 2.8.0),
+ ovn-docker (<< 2.8.0),
+ ovn-host (<< 2.8.0),
+Provides:
+ openvswitch-test,
+ ovn-common,
+ ovn-docker,
+Description: Open vSwitch common components
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ openvswitch-common provides components required by both openvswitch-switch
+ and openvswitch-testcontroller.
+
+Package: openvswitch-dbg
+Section: debug
+Architecture: linux-any
+Depends:
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-switch (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Conflicts:
+ openvswitch-testcontroller (<< ${binary:Version}),
+ openvswitch-testcontroller (>> ${binary:Version}),
+Description: Debug symbols for Open vSwitch packages
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ This package contains the debug symbols for all the other openvswitch-*
+ packages.  Install it to debug one of them or to examine a core dump
+ produced by one of them.
+
+Package: openvswitch-dev
+Architecture: linux-any
+Depends:
+ openvswitch-common (>= ${binary:Version}),
+ ${misc:Depends},
+Description: Open vSwitch development package
+ Open vSwitch is a production quality, multilayer, software-based, Ethernet
+ virtual switch. It is designed to enable massive network automation through
+ programmatic extension, while still supporting standard management interfaces
+ and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
+ addition, it is designed to support distribution across multiple physical
+ servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
+ 1000V.
+ .
+ This package provides openvswitch headers and libopenvswitch for developers.
+
+Package: openvswitch-ipsec
+Architecture: linux-any
+Depends:
+ iproute2,
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-switch (= ${binary:Version}),
+ python3-openvswitch (= ${source:Version}),
+ strongswan,
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: Open vSwitch IPsec tunneling support
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ This package provides IPsec tunneling support for OVS tunnels.
+
+Package: openvswitch-pki
+Architecture: all
+Depends:
+ openvswitch-common (<< ${source:Version}.1~),
+ openvswitch-common (>= ${source:Version}),
+ ${misc:Depends},
+Description: Open vSwitch public key infrastructure dependency package
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ openvswitch-pki provides PKI (public key infrastructure) support for
+ Open vSwitch switches and controllers, reducing the risk of
+ man-in-the-middle attacks on the Open vSwitch network infrastructure.
+
+Package: openvswitch-switch
+Architecture: linux-any
+Depends:
+ kmod,
+ lsb-base,
+ netbase,
+ openvswitch-common (= ${binary:Version}),
+ procps,
+ uuid-runtime,
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Description: Open vSwitch switch implementations
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ openvswitch-switch provides the userspace components and utilities for
+ the Open vSwitch kernel-based switch.
+
+Package: openvswitch-switch-dpdk
+Architecture: amd64 arm64 i386 ppc64el
+Depends:
+ dpdk,
+ openvswitch-switch (= ${binary:Version}),
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Enhances:
+ openvswitch-switch,
+Description: DPDK enabled Open vSwitch switch implementation
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ openvswitch-switch provides the userspace components and utilities for
+ the Open vSwitch kernel-based switch.
+ .
+ DPDK is a set of libraries for fast packet processing. Applications run
+ in user-space and communicate directly with dedicated network interfaces.
+ .
+ This package provides a DPDK enabled implementation of the ovs-vswitchd
+ binary.
+
+Package: openvswitch-testcontroller
+Architecture: linux-any
+Depends:
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-pki (<< ${source:Version}.1~),
+ openvswitch-pki (>= ${source:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: Simple controller for testing OpenFlow setups
+ This controller enables OpenFlow switches that connect to it to act
+ as MAC-learning Ethernet switches.  It can be used for initial
+ testing of OpenFlow networks.  It is not a necessary or desirable
+ part of a production OpenFlow deployment.
+
+Package: openvswitch-vtep
+Architecture: linux-any
+Depends:
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-switch (= ${binary:Version}),
+ python3-openvswitch (<< ${source:Version}.1~),
+ python3-openvswitch (>= ${source:Version}),
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Description: Open vSwitch VTEP utilities
+ Open vSwitch is a production quality, multilayer, software-based, Ethernet
+ virtual switch. It is designed to enable massive network automation through
+ programmatic extension, while still supporting standard management interfaces
+ and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
+ addition, it is designed to support distribution across multiple physical
+ servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
+ 1000V.
+ .
+ This package provides utilities that are useful to interact with a
+ VTEP-configured database and a VTEP emulator.
+
+Package: ovn-central
+Architecture: linux-any
+Depends:
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-switch (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN central components
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction.  OVN complements the existing capabilities of OVS to add
+ native support for virtual network abstractions, such as virtual L2 and L3
+ overlays and security groups.
+ .
+ ovn-central provides the userspace daemons, utilities and
+ databases for OVN that is run at a central location.
+
+Package: ovn-controller-vtep
+Architecture: linux-any
+Depends:
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN vtep controller
+ ovn-controller-vtep is the local controller daemon in
+ OVN, the Open Virtual Network, for VTEP enabled physical switches.
+ It connects up to the OVN Southbound database over the OVSDB protocol,
+ and down to the VTEP database over the OVSDB protocol.
+ .
+ ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
+ vtep gateways.
+
+Package: ovn-host
+Architecture: linux-any
+Depends:
+ lsb-base,
+ openvswitch-common (= ${binary:Version}),
+ openvswitch-switch (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN host components
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction.  OVN complements the existing capabilities of OVS to add
+ native support for virtual network abstractions, such as virtual L2 and L3
+ overlays and security groups.
+ .
+ ovn-host provides the userspace components and utilities for
+ OVN that can be run on every host/hypervisor.
+
+Package: python3-openvswitch
+Architecture: all
+Section: python
+Depends:
+ python3-six,
+ ${misc:Depends},
+ ${python3:Depends},
+Description: Python 3 bindings for Open vSwitch
+ Open vSwitch is a production quality, multilayer, software-based,
+ Ethernet virtual switch. It is designed to enable massive network
+ automation through programmatic extension, while still supporting
+ standard management interfaces and protocols (e.g. NetFlow, IPFIX,
+ sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed
+ to support distribution across multiple physical servers similar to
+ VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V.
+ .
+ This package contains the full Python 3 bindings for Open vSwitch database.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..02e8869
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,750 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: OpenVSwitch
+Source: http://openvswitch.org/
+
+Files: *
+Copyright: (c) 2007-2019 Nicira, Inc.
+           (c) 2010 Jean Tourrilhes - HP-Labs.
+           (c) 2008,2009,2010 Citrix Systems, Inc.
+           (c) 2011 Gaetano Catalli
+           (c) 2000-2003 Geoffrey Wossum <gwossum at acm.org>
+           (c) 2000 The NetBSD Foundation, Inc.
+           (c) 1995, 1996, 1997, and 1998 USAGI/WIDE Project.
+           (c) 1982, 1986, 1990, 1993 The Regents of the University of California.
+           (c) 2008, 2012 Vincent Bernat <bernat at luffy.cx>
+           (c) 2014 Michael Chapman
+           (c) 2014 WindRiver, Inc.
+	   (c) 2014 Avaya, Inc.
+	   (c) 2001 Daniel Hartmeier
+	   (c) 2002 - 2008 Henning Brauer
+	   (c) 2012 Gleb Smirnoff <glebius at FreeBSD.org>
+           (c) 6WIND S.A.
+           (c) Alexandru Copot <alex.mihai.c at gmail.com>, with support from IXIA.
+           (c) Alexey I. Froloff.
+           (c) Amir Vadai <amir at vadai.me>
+           (c) Arm Limited
+           (c) Benjamin Kosnik <bkoz at redhat.com>
+           (c) Cisco Systems, Inc
+           (c) Cloudbase Solutions Srl
+           (c) Cumulus Netowkrs
+           (c) Daniel Baluta <dbaluta at ixiacom.com>
+           (c) Dan Nicholson <dbn.lists at gmail.com>
+           (c) Dustin J. Mitchell <dustin at zmanda.com>
+           (c) Ed Maste
+           (c) Eelco Chaudron
+           (c) Ericsson AB
+           (c) Free Software Foundation, Inc.,
+           (c) Gary S. Brown.
+           (c) Grant Jenks
+           (c) Hewlett Packard Enterprise Development LP
+           (c) Horms Solutions Ltd.
+           (c) IBM
+           (c) Ilya Maximets <i.maximets at samsung.com>
+           (c) Javier Fernandez-Sanguino <jfs at debian.org>
+           (c) Jiri Pirko <jiri at resnulli.us>
+           (c) Kmindg <kmindg at gmail.com>
+           (c) Krzesimir Nowak <qdlacz at gmail.com>
+           (c) M3S, Srl - Italy
+           (c) Mark Pilgrim
+           (c) Mellanox Technologies, Ltd.
+           (c) Moritz Klammler
+           (c) Netronome
+           (c) Open Networking Foundation
+           (c) Paolo Abeni <pabeni at redhat.com>
+           (c) Paul Norman <penorman at mac.com>
+           (c) Red Hat, Inc.
+           (c) Roy Stogner <roystgnr at ices.utexas.edu>
+           (c) Samsung Electronics Co.,Ltd.
+           (c) Scott James Remnant <scott at netsplit.com>
+           (c) Scott Pakin <pakin at uiuc.edu>
+           (c) Siemens AG
+           (c) Sten Spans <sten at blinkenlights.nl>
+           (c) Stephen Finucane <stephen at that.guru>
+           (c) The Board of Trustees of The Leland Stanford Junior University
+           (c) The University of Waikato
+           (c) VMware, Inc.
+           (c) WIDE Project.
+           (c) YAMAMOTO Takashi
+           (c) Zack Weinberg <zackw at panix.com>
+           (c) Zmanda Inc. <http://www.zmanda.com/>
+License: Apache-2.0
+
+Files:
+ include/windows/netinet/icmp6.h
+ include/windows/netinet/ip6.h
+ lib/strsep.c
+Copyright: (c) 1990,1993, The Regents of the University of California
+License: BSD-3-clause
+
+Files: datapath/*
+ build-aux/cccl
+Copyright: (C) 2000-2003 Geoffrey Wossum <gwossum at acm.org>
+License: GPL-2
+
+Files:
+ datapath/linux/compat/include/linux/openvswitch.h
+Copyright: (c) 2007-2017 Nicira, Inc.
+License: Apache-2.0-or-GPL-2.0
+
+Files: lib/getopt_long.c
+ include/windows/getopt.h
+ datapath-windows/ovsext/Conntrack-tcp.c
+ lib/conntrack-tcp.c
+Copyright: (c) 2001 Daniel Hartmeier
+ (c) 2002 - 2008 Henning Brauer
+ (c) 2012 Gleb Smirnoff <glebius at FreeBSD.org>
+ (c) 2015, 2016 Nicira, Inc.
+License: BSD-2-clause
+
+Files:
+ utilities/bugtool/ovs-bugtool-*
+ utilities/bugtool/plugins/kernel-info/openvswitch.xml
+ utilities/bugtool/plugins/network-status/openvswitch.xml
+ utilities/bugtool/plugins/system-configuration.xml
+ utilities/bugtool/plugins/system-configuration/openvswitch.xml
+Copyright: (c) 2011 Nicira, Inc.
+License: LGPL-2.1
+
+Files: xenserver/etc_xensource_scripts_vif
+ xenserver/opt_xensource_libexec_InterfaceReconfigure.py
+ xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py
+ xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
+ xenserver/opt_xensource_libexec_interface-reconfigure
+ xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
+Copyright: (c) 2008,2009 Citrix Systems, Inc.
+License: LGPL-2.1-with-exception
+
+Files:
+ lib/sflow.h
+ lib/sflow_agent.c
+ lib/sflow_api.h
+ lib/sflow_poller.c
+ lib/sflow_receiver.c
+ lib/sflow_sampler.c
+Copyright: (c) 2002-2009 InMon Corp.
+License: Sun-Industry-Standard-or-InMon-sFlow-License
+
+Files: lib/crc32c.c
+Copyright: (c) 1986 Gary S. Brown.
+License: without-restriction
+ You may use this program, or code or tables extracted from it, as desired
+ without restriction.
+
+Files: lib/ovs.tmac
+Copyright: (c) 2007, Eric S. Raymond <esr at thyrsus.com>
+ (c) 2007, Werner Lemberg <wl at gnu.org>
+ (c) 2007, 2009, 2011 Free Software Foundation, Inc.
+License: freely-use-modify-distribute
+ You may freely use, modify and/or distribute this file.
+
+Files: m4/absolute-header.m4
+ m4/include_next.m4
+Copyright: (c) Derek Price
+ (c) Paul Eggert
+ (c) 2006-2013 Free Software Foundation, Inc.
+License: file-is-free-software
+ This file is free software; the Free Software Foundation
+ gives unlimited permission to copy and/or distribute it,
+ with or without modifications, as long as this notice is preserved.
+
+Files:
+    lib/lldp/aa-structs.h
+    lib/lldp/lldpd.c
+    lib/lldp/lldpd.h
+    lib/lldp/lldpd-structs.c
+    lib/lldp/lldpd-structs.h
+    lib/lldp/lldp.c
+    lib/lldp/lldp-tlv.h
+    lib/lldp/lldp-const.h
+Copyright: (c) 2015 Nicira, Inc.
+ (c) 2008 Vincent Bernat <bernat at luffy.cx>
+License: ISC-license
+
+License: Sun-Industry-Standard-or-InMon-sFlow-License
+ Retrieved from http://host-sflow.sourceforge.net/sissl.html, 2011-12-12:
+ .
+ Sun Industry Standards Source License - Version 1.1
+ .
+ 1.0 DEFINITIONS
+ .
+ 1.1 "Commercial Use" means distribution or otherwise making the
+ Original Code available to a third party.
+ .
+ 1.2 "Contributor Version" means the combination of the Original Code,
+ and the Modifications made by that particular Contributor.
+ .
+ 1.3 "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+ .
+ 1.4 "Executable" means Original Code in any form other than Source
+ Code.
+ .
+ 1.5 "Initial Developer" means the individual or entity identified as
+ the Initial Developer in the Source Code notice required by Exhibit A.
+ .
+ 1.6 "Larger Work" means a work which combines Original Code or portions
+ thereof with code not governed by the terms of this License.
+ .
+ 1.7 "License" means this document.
+ .
+ 1.8 "Licensable" means having the right to grant, to the maximum extent
+ possible, whether at the time of the initial grant or subsequently
+ acquired, any and all of the rights conveyed herein.
+ .
+ 1.9 "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. A Modification is:
+ .
+ A. Any addition to or deletion from the contents of a file containing
+ Original Code or previous Modifications.
+ .
+ B. Any new file that contains any part of the Original Code or previous
+ Modifications.
+ .
+ 1.10 "Original Code" means Source Code of computer software code which
+ is described in the Source Code notice required by Exhibit A as
+ Original Code.
+ .
+ 1.11 "Patent Claims" means any patent claim(s), now owned or hereafter
+ acquired, including without limitation, method, process, and apparatus
+ claims, in any patent Licensable by grantor.
+ .
+ 1.12 "Source Code" means the preferred form of the Original Code for
+ making modifications to it, including all modules it contains, plus any
+ associated interface definition files, or scripts used to control
+ compilation and installation of an Executable.
+ .
+ 1.13 "Standards" means the standards identified in Exhibit B.
+ .
+ 1.14 "You" (or "Your") means an individual or a legal entity exercising
+ rights under, and complying with all of the terms of, this License or a
+ future version of this License issued under Section 6.1. For legal
+ entities, "You'' includes any entity which controls, is controlled by,
+ or is under common control with You. For purposes of this definition,
+ "control'' means (a) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+ .
+ 2.0 SOURCE CODE LICENSE
+ .
+ 2.1 The Initial Developer Grant
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ .
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by Initial Developer to use, reproduce, modify, display,
+ perform, sublicense and distribute the Original Code (or portions
+ thereof) with or without Modifications, and/or as part of a Larger
+ Work; and
+ .
+ (b) under Patents Claims infringed by the making, using or selling of
+ Original Code, to make, have made, use, practice, sell, and offer for
+ sale, and/or otherwise dispose of the Original Code (or portions
+ thereof).
+ .
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective
+ on the date Initial Developer first distributes Original Code under the
+ terms of this License.
+ .
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
+ 1) for code that You delete from the Original Code; 2) separate from
+ the Original Code; or 3) for infringements caused by: i) the
+ modification of the Original Code or ii) the combination of the
+ Original Code with other software or devices, including but not limited
+ to Modifications.
+ 3.0 DISTRIBUTION OBLIGATIONS
+ .
+ 3.1 Application of License.
+ The Source Code version of Original Code may be distributed only under
+ the terms of this License or a future version of this License released
+ under Section 6.1, and You must include a copy of this License with
+ every copy of the Source Code You distribute. You may not offer or
+ impose any terms on any Source Code version that alters or restricts
+ the applicable version of this License or the recipients' rights
+ hereunder. Your license for shipment of the Contributor Version is
+ conditioned upon Your full compliance with this Section. The
+ Modifications which You create must comply with all requirements set
+ out by the Standards body in effect one hundred twenty (120) days
+ before You ship the Contributor Version. In the event that the
+ Modifications do not meet such requirements, You agree to publish
+ either (i) any deviation from the Standards protocol resulting from
+ implementation of Your Modifications and a reference implementation of
+ Your Modifications or (ii) Your Modifications in Source Code form, and
+ to make any such deviation and reference implementation or
+ Modifications available to all third parties under the same terms as
+ this license on a royalty free basis within thirty (30) days of Your
+ first customer shipment of Your Modifications.
+ .
+ 3.2 Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely to
+ look for such a notice. If You created one or more Modification(s) You
+ may add Your name as a Contributor to the notice described in Exhibit
+ A. You must also duplicate this License in any documentation for the
+ Source Code where You describe recipients' rights or ownership rights
+ relating to Initial Code. You may choose to offer, and to charge a fee
+ for, warranty, support, indemnity or liability obligations to one or
+ more recipients of Your version of the Code. However, You may do so
+ only on Your own behalf, and not on behalf of the Initial Developer.
+ You must make it absolutely clear than any such warranty, support,
+ indemnity or liability obligation is offered by You alone, and You
+ hereby agree to indemnify the Initial Developer for any liability
+ incurred by the Initial Developer as a result of warranty, support,
+ indemnity or liability terms You offer.
+ .
+ 3.3 Distribution of Executable Versions.
+ You may distribute Original Code in Executable and Source form only if
+ the requirements of Sections 3.1 and 3.2 have been met for that
+ Original Code, and if You include a notice stating that the Source Code
+ version of the Original Code is available under the terms of this
+ License. The notice must be conspicuously included in any notice in an
+ Executable or Source versions, related documentation or collateral in
+ which You describe recipients' rights relating to the Original Code.
+ You may distribute the Executable and Source versions of Your version
+ of the Code or ownership rights under a license of Your choice, which
+ may contain terms different from this License, provided that You are in
+ compliance with the terms of this License. If You distribute the
+ Executable and Source versions under a different license You must make
+ it absolutely clear that any terms which differ from this License are
+ offered by You alone, not by the Initial Developer. You hereby agree to
+ indemnify the Initial Developer for any liability incurred by the
+ Initial Developer as a result of any such terms You offer.
+ .
+ 3.4 Larger Works.
+ You may create a Larger Work by combining Original Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Original Code.
+ .
+ 4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION
+ .
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Original Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.2 and must be
+ included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+ .
+ 5.0 APPLICATION OF THIS LICENSE
+ .
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Modifications as set
+ out in Section 3.1.
+ .
+ 6.0 VERSIONS OF THE LICENSE
+ .
+ 6.1 New Versions.
+ Sun may publish revised and/or new versions of the License from time to
+ time. Each version will be given a distinguishing version number.
+ .
+ 6.2 Effect of New Versions.
+ Once Original Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Original Code under the terms
+ of any subsequent version of the License published by Sun. No one other
+ than Sun has the right to modify the terms applicable to Original Code.
+ .
+ 7.0 DISCLAIMER OF WARRANTY
+ .
+ ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE
+ IS WITH YOU. SHOULD ANY ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
+ CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL
+ CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+ .
+ 8.0 TERMINATION
+ .
+ 8.1 This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Original Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+ .
+ 8.2 In the event of termination under Section 8.1 above, all end user
+ license agreements (excluding distributors and resellers) which have
+ been validly granted by You or any distributor hereunder prior to
+ termination shall survive termination.
+ .
+ 9.0 LIMIT OF LIABILITY
+ .
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF ORIGINAL CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
+ EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+ .
+ 10.0 U.S. GOVERNMENT END USERS
+ .
+ U.S. Government: If this Software is being acquired by or on behalf of
+ the U.S. Government or by a U.S. Government prime contractor or
+ subcontractor (at any tier), then the Government's rights in the
+ Software and accompanying documentation shall be only as set forth in
+ this license; this is in accordance with 48 C.F.R. 227.7201 through
+ 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48
+ C.F.R. 2.101 and 12.212 (for non-DoD acquisitions).
+ .
+ 11.0 MISCELLANEOUS
+ .
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if any,
+ provides otherwise), excluding its conflict-of-law provisions. With
+ respect to disputes in which at least one party is a citizen of, or an
+ entity chartered or registered to do business in the United States of
+ America, any litigation relating to this License shall be subject to
+ the jurisdiction of the Federal Courts of the Northern District of
+ California, with venue lying in Santa Clara County, California, with
+ the losing party responsible for costs, including without limitation,
+ court costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall be
+ construed against the drafter shall not apply to this License.
+ .
+ Retrieved from http://www.inmon.com/technology/sflowlicense.txt, 2011-12-12:
+ .
+ LICENSE AGREEMENT
+ .
+ PLEASE READ THIS LICENSE AGREEMENT ("AGREEMENT") CAREFULLY BEFORE REPRODUCING OR IN ANY WAY
+ UTILIZING THE sFlow(R) SOFTWARE ("SOFTWARE") AND/OR ANY ACCOMPANYING DOCUMENTATION
+ ("DOCUMENTATION") AND/OR THE RELATED SPECIFICATIONS ("SPECIFICATIONS").  YOUR REPRODUCTION
+ OR USE OF THE SOFTWARE AND/OR THE DOCUMENTATION AND/OR THE SPECIFICATIONS CONSTITUTES YOUR
+ ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT.  IF YOU DO NOT AGREE TO BE BOUND
+ BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MAY NOT REPRODUCE OR IN ANY WAY UTILIZE
+ THE SOFTWARE OR THE DOCUMENTATION OR THE SPECIFICATIONS.
+ .
+ 1.	Definitions.
+ .
+ "Documentation" means the user manuals, training materials, and operating materials, if any,
+ InMon provides to Licensee under this Agreement.
+ .
+ "InMon" means InMon Corporation, its affiliates and subsidiaries.
+ .
+ "Intellectual Property Rights" means any trade secrets, patents, including without
+ limitation any patents covering the Software, copyrights, know-how, moral rights and
+ similar rights of any type under the laws of any governmental authority, domestic or
+ foreign, including all applications and registrations relating to any of the foregoing.
+ .
+ "Licensee Hardware" means all computers, routers, or other equipment owned or controlled by
+ or on behalf of Licensee.
+ .
+ "Products" means any and all software applications, computers, routers, or other equipment
+ manufactured by or on behalf of Licensee for the purpose of resale or lease to any other
+ third party, or otherwise made available by Licensee free of charge.
+ .
+ "Software" means the sFlow(R) software programs, in source or binary code format, that
+ Licensee licenses from InMon under this Agreement and any bug fixes or error corrections
+ which InMon may provide to Licensee.
+ .
+ "Specifications" means the published specifications provided or otherwise made available by
+ InMon at: http://www.sflow.org.
+ .
+ "Trademark" means InMon's "sFlow(R)" trademark.
+ .
+ 2. License Grant.
+ .
+ 2.1	Software, Documentation and Specifications License Grant.  InMon hereby grants to
+ Licensee, under all of InMon's Intellectual Property Rights therein, a perpetual (subject
+ to InMon's termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
+ transferable, sublicensable license, to:  (i) use and reproduce the Software, the
+ Documentation, and the Specifications; (ii) modify the Software; (iii) implement the
+ Specifications in the Products; (iv) install the Software, or software in which the
+ Specifications have been implemented, on Licensee Hardware and Products, and (v) distribute
+ any Products that include the Software, the Documentation, or software in which the
+ Specifications have been implemented.
+ .
+ 2.2	Trademark License.  InMon hereby grants to Licensee a perpetual (subject to InMon's
+ termination rights under Section 7 below), nonexclusive, royalty-free, worldwide,
+ transferable, sublicensable license to use the Trademark on or in connection with the
+ Software, the Documentation, the Specifications and any software that implements the
+ Specifications.
+ .
+ 2.3	Restrictions.  Licensee agrees that it will not use the Software in a way
+ inconsistent with the license granted in Section 2.1.  Further, Licensee agrees that, in
+ exercising its rights under the license granted to it in this Agreement, Licensee will:
+ (i) strictly adhere to and fully comply with the Specifications; (ii) use the Trademark,
+ and no other mark, to identify the Software, the Documentation, the Specifications and any
+ Products that implement the Specifications; (iii) place, in a font or graphic design
+ designated by InMon,  the phrase "sFlow(R)" on any technical documentation,
+ sales/marketing materials, catalogs, or other such materials relating to products it
+ manufactures or markets which it has configured to be compatible with the Software or
+ otherwise implement the Specifications; (iv) in connection with any Products shipped to or
+ sold in other countries that include the Software or any software that implements the
+ Specifications, comply with the patent and trademark laws and practice of such other
+ country; and (v) not alter or impair any acknowledgment of copyright or trademark rights of
+ InMon that may appear in or on the Software, the Documentation or the Specifications.  In
+ the event InMon determines that Licensee is not complying with its obligations under
+ clauses (i)-(v) above, InMon shall notify Licensee of such non-compliance, and if Licensee
+ fails to correct such non-compliance within three (3) months, InMon may immediately
+ terminate this Agreement as provided under paragraph 7 below and pursue any and all
+ actions and remedies as it deems necessary, including, but not limited to breach of
+ contract.
+ .
+ 3.	Ownership.  Except for the license expressly granted in Section 2, Inmon hereby
+ retains all right, title, and interest in and to the Trademark and all its Intellectual
+ Property Rights in the Software, the Documentation and the Specifications.  Licensee
+ obtains no rights hereunder in the Trademark, Software, Documentation or Specifications by
+ implication, estoppel or otherwise.  Licensee acknowledges that the Trademark, Software,
+ Documentation and Specifications are being licensed and not sold under this Agreement, and
+ that this Agreement does not transfer title in the Trademark, Software, Documentation or
+ Specifications, or any copy thereof, to Licensee.
+ .
+ 4.	Support.  Inmon shall have no obligation under this Agreement to (a) supply
+ maintenance or support, bug fixes or error corrections to the Licensed Software,
+ (b) supply future versions of the Licensed Software or (c) provide Licensed Software
+ development tools to Licensee.
+ .
+ 5.	Warranty.  INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR
+ STATUTORY, WITH RESPECT TO THE TRADEMARK, THE SOFTWARE, THE DOCUMENTATION, THE
+ SPECIFICATIONS. OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF ANY INTELLECTUAL
+ PROPERTY RIGHTS.
+ .
+ 6.	Limitation of Liability.  IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE
+ LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT OR EXEMPLARY DAMAGES WHATSOEVER,
+ WHETHER RELATED TO OR ARISING OUT OF THIS AGREEMENT, THE TRADEMARK, THE SOFTWARE, THE
+ DOCUMENTATION, THE SPECIFICATIONS, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, DAMAGES FOR
+ LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA, COSTS OF PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES OR FOR ANY CLAIM OR DEMAND AGAINST LICENSEE BY ANY OTHER PARTY, OR OTHER
+ PECUNIARY LOSS, EVEN IF INMON HAS BEEN ADVISED OF OR KNOWS OF THE POSSIBILITY OF SUCH
+ DAMAGES.
+ .
+ 7.	Term and Termination.  The term of this Agreement will begin on the Effective Date,
+ which shall be deemed to be the date of delivery of the Software and/or Documentation and/or
+ Specifications to Licensee, and shall continue indefinitely unless and until terminated by
+ Licensee's giving written notice of termination to InMon, or by InMon pursuant to InMon's
+ termination rights as set forth in Section 2.3 above.  Upon any termination of this
+ Agreement, Licensee shall cease exercising its license rights under this Agreement,
+ including the right to distribute Products that incorporate the Software or Documentation
+ or that implement the Specifications.  The rights and obligations contained in Sections 1,
+ 3, 5, 6, 7, and 8 shall survive any termination of this Agreement.
+ .
+ 8.	General Provisions.
+ .
+ 8.1	Assignment.  This Agreement shall be binding upon and inure to the benefit of the
+ parties hereto and their permitted successors and permitted assigns.  InMon will have the
+ right to assign this Agreement without notice to Licensee.  Licensee may assign or transfer
+ (whether by merger, operation of law or in any other manner) any of its rights or delegate
+ any of its obligations hereunder without the prior written consent of InMon, provided the
+ assignee assumes in writing all of Licensee's obligations hereunder.
+ .
+ 8.2	Notices.  All notices permitted or required under this Agreement shall be in
+ writing and shall be delivered in person or mailed by first class, registered or certified
+ mail, postage prepaid, to the address of the party specified in this Agreement or such
+ other address as either party may specify in writing.  Such notice shall be deemed to have
+ been given upon receipt.
+ .
+ 8.3	Non-Waiver.  No term or provision hereof shall be deemed waived, and no breach
+ excused, unless such waiver or consent shall be in writing and signed by the party claimed
+ to have waived or consented.  Any consent or waiver, whether express or implied, shall not
+ constitute a consent or waiver of, or excuse for any separate, different or subsequent
+ breach.
+ .
+ 8.4	Independent Contractor.  The parties' relationship shall be solely that of
+ independent contractors, and nothing contained in this Agreement shall be construed to make
+ either party an agent, partner, representative or principal of the other for any purpose.
+ .
+ 8.5	Choice of Law and Forum.  This Agreement shall be governed by and construed under
+ the laws of the State of California, without giving effect to such state's conflict of laws
+ principles.  The parties hereby submit to the personal jurisdiction of, and agree that any
+ legal proceeding with respect to or arising under this Agreement shall be brought in, the
+ United States District Court for the Northern District of California or the state courts
+ of the State of California for the County of San Francisco.
+ .
+ 8.6	U.S. Government Licenses.  The Software and Documentation are considered a
+ "commercial item" as that term is defined at 48 C.F.R 2.101, or "commercial computer
+ software" and "commercial computer software documentation" as such terms are used in
+ 48 C.F.R 12.212 of the Federal Acquisition Regulations and its successors, and
+ 48 C.F.R. 227.7202 of the DoD FAR Supplement and its successors.
+ .
+ 8.7	Severability.  If any provision of this Agreement is held to be unenforceable under
+ applicable law, then such provision shall be excluded from this Agreement and the balance
+ of this Agreement shall be interpreted as if such provision were so excluded and shall be
+ enforceable in accordance with its terms.  The court in its discretion may substitute for
+ the excluded provision an enforceable provision which in economic substance reasonably
+ approximates the excluded provision.
+ .
+ 8.8	Compliance With Law.  Licensee shall comply with all applicable laws and
+ regulations (including privacy laws and regulations) having application to or governing its
+  use and/or operation of the Software and agrees to indemnify and hold InMon harmless from
+ and against any claims, damages, losses or obligations suffered or incurred by InMon
+ arising from its failure to so comply.
+ .
+ 8.9	Entire Agreement; Amendment.  This Agreement constitutes the final, complete and
+ entire agreement between the parties with respect to the subject matter hereof, and
+ supersedes any previous proposals, negotiations, agreements, or arrangements, whether
+ verbal or written, made between the parties with respect to such subject matter.  This
+ Agreement shall control over any additional or conflicting terms in any of Licensee's
+ purchase orders or other business forms.  This Agreement may only be amended or modified
+ by mutual agreement of authorized representatives of the parties in writing.
+
+License: BSD-3-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+License: GPL-2
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+ .
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the complete text of the GNU General Public License v2
+ (GPL) can be found in /usr/share/common-licenses/GPL-2.
+
+License: Apache-2.0-or-GPL-2.0
+ This file is offered under your choice of two licenses: Apache 2.0 or GNU
+ GPL 2.0 or later.  The permission statements for each of these licenses is
+ given below.  You may license your modifications to this file under either
+ of these licenses or both.  If you wish to license your modifications under
+ only one of these licenses, delete the permission text for the other
+ license.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ version 2 can be found in `/usr/share/common-licenses/GPL-2'.
+ On Debian systems, the complete text of the Apache License version 2.0
+ can be found in '/usr/share/common-licenses/Apache-2.0'.
+
+License: BSD-2-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+License: LGPL-2.1
+ This library is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 2.1 of the License.
+ .
+ This library is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU Lesser General Public License along
+ with this library; if not, write to the Free Software Foundation, Inc., 51
+ Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the complete text of the GNU Lesser General Public License
+ (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
+
+License: LGPL-2.1-with-exception
+ On Debian systems, the complete text of the
+ GNU Lesser General Public License version 2.1 can be found in
+ `/usr/share/common-licenses/LGPL-2.1'
+ .
+ The exception clause pre-amble reads:
+ .
+ As a special exception to the GNU Lesser General Public License, you
+ may link, statically or dynamically, a "work that uses the Library"
+ with a publicly distributed version of the Library to produce an
+ executable file containing portions of the Library, and distribute
+ that executable file under terms of your choice, without any of the
+ additional requirements listed in clause 6 of the GNU Lesser General
+ Public License.  By "a publicly distributed version of the Library",
+ we mean either the unmodified Library as distributed, or a
+ modified version of the Library that is distributed under the
+ conditions defined in clause 3 of the GNU Library General Public
+ License.  This exception does not however invalidate any other reasons
+ why the executable file might be covered by the GNU Lesser General
+ Public License.
+
+License: ISC-license
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+    http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --git a/debian/dkms.conf.in b/debian/dkms.conf.in
new file mode 100644
index 0000000..2c90b4d
--- /dev/null
+++ b/debian/dkms.conf.in
@@ -0,0 +1,11 @@
+MODULES=( __MODULES__ )
+
+PACKAGE_NAME="openvswitch"
+PACKAGE_VERSION="__VERSION__"
+MAKE="./configure --with-linux='${kernel_source_dir}' && make -C datapath/linux"
+for __idx in ${!MODULES[@]}; do
+    BUILT_MODULE_NAME[__idx]=${MODULES[__idx]}
+    BUILT_MODULE_LOCATION[__idx]=datapath/linux/
+    DEST_MODULE_LOCATION[__idx]=/kernel/drivers/net/openvswitch/
+done
+AUTOINSTALL=yes
diff --git a/debian/ifupdown.sh b/debian/ifupdown.sh
new file mode 100755
index 0000000..8c39b4d
--- /dev/null
+++ b/debian/ifupdown.sh
@@ -0,0 +1,125 @@
+#! /bin/sh
+
+# Copyright (c) 2012, 2013 Nicira, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Have a look at /usr/share/doc/openvswitch-switch/README.Debian
+# for more information about configuring the /etc/network/interfaces.
+
+if [ -z "${IF_OVS_TYPE}" ]; then
+    exit 0
+fi
+
+ovs_vsctl() {
+    ovs-vsctl --timeout=5 "$@"
+}
+
+if_up() {
+    if [ -x /bin/ip ] ; then
+        /bin/ip link set up dev "$1"
+    else
+        ifconfig "${1}" up
+    fi
+}
+
+if (ovs_vsctl --version) > /dev/null 2>&1; then :; else
+    exit 0
+fi
+
+SERVICE_UNIT=/usr/lib/systemd/system/openvswitch-nonetwork.service
+if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
+    if ! systemctl --quiet is-active openvswitch-nonetwork.service; then
+        systemctl start openvswitch-nonetwork.service
+    fi
+else
+    if service openvswitch-switch status > /dev/null 2>&1; then
+        service openvswitch-switch start
+    fi
+fi
+
+if [ "${MODE}" = "start" ]; then
+    eval OVS_EXTRA=\"${IF_OVS_EXTRA}\"
+
+    case "${IF_OVS_TYPE}" in
+        OVSBridge)
+                ovs_vsctl -- --may-exist add-br "${IFACE}" ${IF_OVS_OPTIONS}\
+                         ${OVS_EXTRA+-- $OVS_EXTRA}
+
+                if [ ! -z "${IF_OVS_PORTS}" ]; then
+                    ifup --allow="${IFACE}" ${IF_OVS_PORTS}
+                fi
+                ;;
+        OVSPort)
+                ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+                    "${IFACE}" ${IF_OVS_OPTIONS} \
+                    ${OVS_EXTRA+-- $OVS_EXTRA}
+
+                if_up "${IFACE}"
+                ;;
+        OVSIntPort)
+                ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+                    "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}"\
+                    type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
+
+                if_up "${IFACE}"
+                ;;
+        OVSBond)
+                ovs_vsctl -- --may-exist --fake-iface add-bond "${IF_OVS_BRIDGE}"\
+                    "${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
+                    ${OVS_EXTRA+-- $OVS_EXTRA}
+
+                if_up "${IFACE}"
+                for slave in ${IF_OVS_BONDS}
+                do
+                    if_up "${slave}"
+                done
+                ;;
+        OVSPatchPort)
+                ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+                    "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}" \
+                    type=patch options:peer="${IF_OVS_PATCH_PEER}" \
+                    ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        OVSTunnel)
+                ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+                    "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}" \
+                    type=${IF_OVS_TUNNEL_TYPE} ${IF_OVS_TUNNEL_OPTIONS} \
+                    ${OVS_EXTRA+-- $OVS_EXTRA}
+                ;;
+        *)
+                exit 0
+                ;;
+    esac
+    if [ -n "${IF_OVS_MTU}" ] ; then
+        ovs-vsctl set Interface ${IFACE} mtu_request=${IF_OVS_MTU}
+    fi
+elif [ "${MODE}" = "stop" ]; then
+    case "${IF_OVS_TYPE}" in
+        OVSBridge)
+                if [ ! -z "${IF_OVS_PORTS}" ]; then
+                    ifdown --allow="${IFACE}" ${IF_OVS_PORTS}
+                fi
+
+                ovs-vsctl -- --if-exists del-br "${IFACE}"
+                ;;
+        OVSPort|OVSIntPort|OVSBond|OVSPatchPort|OVSTunnel)
+                ovs-vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IFACE}"
+                ;;
+        *)
+                exit 0
+                ;;
+    esac
+fi
+
+exit 0
diff --git a/debian/openvswitch-common.dirs b/debian/openvswitch-common.dirs
new file mode 100644
index 0000000..be9ed2f
--- /dev/null
+++ b/debian/openvswitch-common.dirs
@@ -0,0 +1 @@
+var/log/openvswitch
diff --git a/debian/openvswitch-common.docs b/debian/openvswitch-common.docs
new file mode 100644
index 0000000..6d5ee1d
--- /dev/null
+++ b/debian/openvswitch-common.docs
@@ -0,0 +1 @@
+NOTICE
diff --git a/debian/openvswitch-common.install b/debian/openvswitch-common.install
new file mode 100644
index 0000000..2770725
--- /dev/null
+++ b/debian/openvswitch-common.install
@@ -0,0 +1,10 @@
+#usr/share/openvswitch/bugtool-plugins
+#usr/share/openvswitch/scripts/ovs-bugtool-*
+/usr/share/openvswitch/scripts
+etc/bash_completion.d/ovs-appctl-bashcomp.bash	usr/share/bash-completion/completions
+etc/bash_completion.d/ovs-vsctl-bashcomp.bash	usr/share/bash-completion/completions
+usr/bin/*
+usr/lib/*/lib*.so.*
+usr/sbin/*
+usr/share/openvswitch/scripts/ovn-ctl
+usr/share/openvswitch/scripts/ovs-lib
diff --git a/debian/openvswitch-common.manpages b/debian/openvswitch-common.manpages
new file mode 100644
index 0000000..78eeed9
--- /dev/null
+++ b/debian/openvswitch-common.manpages
@@ -0,0 +1,41 @@
+#debian/tmp/usr/share/man/man8/ovs-bugtool.8
+debian/tmp/usr/share/man/man1/ovn-detrace.1
+debian/tmp/usr/share/man/man1/ovs-pcap.1
+debian/tmp/usr/share/man/man1/ovs-tcpundump.1
+debian/tmp/usr/share/man/man1/ovsdb-client.1
+debian/tmp/usr/share/man/man1/ovsdb-server.1
+debian/tmp/usr/share/man/man1/ovsdb-tool.1
+debian/tmp/usr/share/man/man5/ovn-nb.5
+debian/tmp/usr/share/man/man5/ovn-sb.5
+debian/tmp/usr/share/man/man5/ovs-vswitchd.conf.db.5
+debian/tmp/usr/share/man/man5/ovsdb-server.5
+debian/tmp/usr/share/man/man5/ovsdb.5
+debian/tmp/usr/share/man/man5/vtep.5
+debian/tmp/usr/share/man/man7/ovn-architecture.7
+debian/tmp/usr/share/man/man7/ovs-fields.7
+debian/tmp/usr/share/man/man7/ovsdb-server.7
+debian/tmp/usr/share/man/man7/ovsdb.7
+debian/tmp/usr/share/man/man8/ovn-controller-vtep.8
+debian/tmp/usr/share/man/man8/ovn-controller.8
+debian/tmp/usr/share/man/man8/ovn-ctl.8
+debian/tmp/usr/share/man/man8/ovn-nbctl.8
+debian/tmp/usr/share/man/man8/ovn-northd.8
+debian/tmp/usr/share/man/man8/ovn-sbctl.8
+debian/tmp/usr/share/man/man8/ovn-trace.8
+debian/tmp/usr/share/man/man8/ovs-appctl.8
+debian/tmp/usr/share/man/man8/ovs-ctl.8
+debian/tmp/usr/share/man/man8/ovs-dpctl-top.8
+debian/tmp/usr/share/man/man8/ovs-dpctl.8
+debian/tmp/usr/share/man/man8/ovs-kmod-ctl.8
+debian/tmp/usr/share/man/man8/ovs-l3ping.8
+debian/tmp/usr/share/man/man8/ovs-ofctl.8
+debian/tmp/usr/share/man/man8/ovs-parse-backtrace.8
+debian/tmp/usr/share/man/man8/ovs-pki.8
+debian/tmp/usr/share/man/man8/ovs-tcpdump.8
+debian/tmp/usr/share/man/man8/ovs-test.8
+debian/tmp/usr/share/man/man8/ovs-testcontroller.8
+debian/tmp/usr/share/man/man8/ovs-vlan-bug-workaround.8
+debian/tmp/usr/share/man/man8/ovs-vlan-test.8
+debian/tmp/usr/share/man/man8/ovs-vsctl.8
+debian/tmp/usr/share/man/man8/ovs-vswitchd.8
+debian/tmp/usr/share/man/man8/vtep-ctl.8
diff --git a/debian/openvswitch-common.postinst b/debian/openvswitch-common.postinst
new file mode 100644
index 0000000..823dd62
--- /dev/null
+++ b/debian/openvswitch-common.postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "${1}" = "configure" ] ; then
+	update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd /usr/lib/openvswitch-common/ovs-vswitchd 100
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-common.postrm b/debian/openvswitch-common.postrm
new file mode 100644
index 0000000..50957b4
--- /dev/null
+++ b/debian/openvswitch-common.postrm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ] || [ "$1" = "disappear" ] ; then
+	update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-common/ovs-vswitchd
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-common.prerm b/debian/openvswitch-common.prerm
new file mode 100644
index 0000000..4cb2fe9
--- /dev/null
+++ b/debian/openvswitch-common.prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ] ; then
+	update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-common/ovs-vswitchd
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-dev.install b/debian/openvswitch-dev.install
new file mode 100644
index 0000000..d7a6feb
--- /dev/null
+++ b/debian/openvswitch-dev.install
@@ -0,0 +1,4 @@
+/usr/include
+usr/lib/*/lib*.a
+usr/lib/*/lib*.so
+usr/lib/*/pkgconfig
diff --git a/debian/openvswitch-ipsec.init b/debian/openvswitch-ipsec.init
new file mode 100755
index 0000000..aa68384
--- /dev/null
+++ b/debian/openvswitch-ipsec.init
@@ -0,0 +1,181 @@
+#!/bin/sh
+#
+# Copyright (c) 2007, 2009 Javier Fernandez-Sanguino <jfs at debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL;  if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides:          openvswitch-ipsec
+# Required-Start:    $network $local_fs $remote_fs openvswitch-switch
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Open vSwitch GRE-over-IPsec daemon
+# Description:       The ovs-monitor-ipsec script provides support for
+#                    encrypting GRE tunnels with IPsec.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/share/openvswitch/scripts/ovs-monitor-ipsec # Daemon's location
+NAME=ovs-monitor-ipsec          # Introduce the short server's name here
+LOGDIR=/var/log/openvswitch     # Log directory to use
+DATADIR=/usr/share/openvswitch
+
+PIDFILE=/var/run/openvswitch/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+DODTIME=10              # Time to wait for the server to die, in seconds
+                        # If this value is set too low you might not
+                        # let some servers to die gracefully and
+                        # 'restart' will not work
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" " "|cut -d " " -f 2`
+    # Is this the expected server
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+start_server() {
+    ${DATADIR}/scripts/ovs-ctl --ike-daemon=strongswan start-ovs-ipsec
+    return 0
+}
+
+stop_server() {
+    ${DATADIR}/scripts/ovs-ctl stop-ovs-ipsec
+    return 0
+}
+
+force_stop() {
+# Force the process to die killing it manually
+    [ ! -e "$PIDFILE" ] && return
+    if running ; then
+        kill -15 $pid
+        # Is it really dead?
+        sleep "$DODTIME"
+        if running ; then
+            kill -9 $pid
+            sleep "$DODTIME"
+            if running ; then
+                echo "Cannot kill $NAME (pid=$pid)!"
+                exit 1
+            fi
+        fi
+    fi
+    rm -f $PIDFILE
+}
+
+
+case "$1" in
+  start)
+        log_daemon_msg "Starting $NAME"
+        # Check if it's running first
+        if running ;  then
+            log_progress_msg "apparently already running"
+            log_end_msg 0
+            exit 0
+        fi
+        if start_server && running ;  then
+            # It's ok, the server started and is running
+            log_end_msg 0
+        else
+            # Either we could not start it or it is not running
+            # after we did
+            # NOTE: Some servers might die some time after they start,
+            # this code does not try to detect this and might give
+            # a false positive (use 'status' for that)
+            log_end_msg 1
+        fi
+        ;;
+  stop)
+        log_daemon_msg "Stopping $NAME"
+        if running ; then
+            # Only stop the server if we see it running
+            stop_server
+            log_end_msg $?
+        else
+            # If it's not running don't do anything
+            log_progress_msg "apparently not running"
+            log_end_msg 0
+            exit 0
+        fi
+        ;;
+  force-stop)
+        # First try to stop gracefully the program
+        $0 stop
+        if running; then
+            # If it's still running try to kill it more forcefully
+            log_daemon_msg "Stopping (force) $NAME"
+            force_stop
+            log_end_msg $?
+        fi
+        ;;
+  restart|force-reload)
+        log_daemon_msg "Restarting $NAME"
+        stop_server
+        # Wait some sensible amount, some server need this
+        [ -n "$DODTIME" ] && sleep $DODTIME
+        start_server
+        running
+        log_end_msg $?
+        ;;
+  status)
+        log_daemon_msg "Checking status of $NAME"
+        if running ;  then
+            log_progress_msg "running"
+            log_end_msg 0
+        else
+            log_progress_msg "apparently not running"
+            log_end_msg 1
+            exit 1
+        fi
+        ;;
+  # Use this if the daemon cannot reload
+  reload)
+        log_warning_msg "Reloading $NAME daemon: not implemented, as the"
+        log_warning_msg "deamon cannot re-read the config file (use restart)."
+        ;;
+  *)
+        N=/etc/init.d/openvswitch-ipsec
+        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" \
+             >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/openvswitch-ipsec.install b/debian/openvswitch-ipsec.install
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/debian/openvswitch-ipsec.install
@@ -0,0 +1 @@
+
diff --git a/debian/openvswitch-pki.dirs b/debian/openvswitch-pki.dirs
new file mode 100644
index 0000000..84f7b37
--- /dev/null
+++ b/debian/openvswitch-pki.dirs
@@ -0,0 +1 @@
+/var/lib/openvswitch
diff --git a/debian/openvswitch-pki.postinst b/debian/openvswitch-pki.postinst
new file mode 100755
index 0000000..75b4777
--- /dev/null
+++ b/debian/openvswitch-pki.postinst
@@ -0,0 +1,41 @@
+#!/bin/sh
+# postinst script for openvswitch-pki
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+    configure)
+        # Create certificate authorities.
+        if test ! -e /var/lib/openvswitch/pki; then
+            ovs-pki init
+        fi
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/openvswitch-pki.postrm b/debian/openvswitch-pki.postrm
new file mode 100755
index 0000000..5db4d6b
--- /dev/null
+++ b/debian/openvswitch-pki.postrm
@@ -0,0 +1,43 @@
+#!/bin/sh
+# postrm script for openvswitch-pki
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /var/log/openvswitch/ovs-pki.log* || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/openvswitch-switch-dpdk.postinst b/debian/openvswitch-switch-dpdk.postinst
new file mode 100644
index 0000000..af18f3a
--- /dev/null
+++ b/debian/openvswitch-switch-dpdk.postinst
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "${1}" = "configure" ] ; then
+	update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 200
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-switch-dpdk.postrm b/debian/openvswitch-switch-dpdk.postrm
new file mode 100644
index 0000000..bf3bbab
--- /dev/null
+++ b/debian/openvswitch-switch-dpdk.postrm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ] || [ "$1" = "disappear" ] ; then
+	update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-switch-dpdk.prerm b/debian/openvswitch-switch-dpdk.prerm
new file mode 100644
index 0000000..b982fdf
--- /dev/null
+++ b/debian/openvswitch-switch-dpdk.prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ] ; then
+	update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-switch.README.Debian b/debian/openvswitch-switch.README.Debian
new file mode 100644
index 0000000..2bd6681
--- /dev/null
+++ b/debian/openvswitch-switch.README.Debian
@@ -0,0 +1,246 @@
+Debian network scripts integration
+----------------------------------
+This package lets a user to optionally configure Open vSwitch bridges
+and ports from /etc/network/interfaces. Please refer to the interfaces(5)
+manpage for more details regarding /etc/network/interfaces.
+
+The stanzas that configure the OVS bridges should begin with "allow-ovs"
+followed by name of the bridge. Here is an example.
+allow-ovs br0
+
+The stanzas that configure the OVS ports should begin with
+"allow-${bridge-name}" followed by name of the port. Here is an example.
+allow-br0 eth0
+
+The following OVS specific "command" options are supported:
+
+    - ovs_type: This can either be OVSBridge, OVSPort, OVSIntPort, OVSBond,
+      OVSPatchPort or OVSTunnel depending on whether you configure a bridge,
+      port, an internal port, a bond, a patch port or a tunnel. This is a
+      required option.
+
+    - ovs_ports: This option specifies all the ports that belong to a bridge.
+
+    - ovs_bridge: This options specifies a bridge to which a port belongs.
+      This is a required option for a port.
+
+    - ovs_bonds: This option specifies the list of physical interfaces to be
+      bonded together.
+
+    - ovs_patch_peer: For "OVSPatchPort" interfaces, this field specifies
+      the patch's peer on the other bridge.
+
+    - ovs_tunnel_type: For "OVSTunnel" interfaces, the type of the tunnel.
+      For example, "gre", "vxlan", etc.
+
+    - ovs_tunnel_options: For "OVSTunnel" interfaces, this field should be
+      used to specify the tunnel options like remote_ip, key, etc.
+
+    - ovs_options: This option lets you add extra arguments to a ovs-vsctl
+      command. See examples.
+
+    - ovs_extra: This option lets you run additional ovs-vsctl commands,
+      separated by "--" (double dash). Variables can be part of the "ovs_extra"
+      option. You can provide all the standard environmental variables
+      described in the interfaces(5) man page. You can also pass shell
+      commands.
+
+More implementation specific details can be seen in the examples.
+
+Examples:
+--------
+ex 1: A standalone bridge.
+
+allow-ovs br0
+iface br0 inet static
+    address 192.168.1.1
+    netmask 255.255.255.0
+    ovs_type OVSBridge
+
+ex 2: A bridge with one port.
+
+allow-ovs br0
+iface br0 inet dhcp
+    ovs_type OVSBridge
+    ovs_ports eth0
+
+allow-br0 eth0
+iface eth0 inet manual
+    ovs_bridge br0
+    ovs_type OVSPort
+
+ex 3: A bridge with multiple physical ports.
+
+allow-ovs br0
+iface br0 inet dhcp
+    ovs_type OVSBridge
+    ovs_ports eth0 eth1
+
+allow-br0 eth0
+iface eth0 inet manual
+    ovs_bridge br0
+    ovs_type OVSPort
+
+allow-br0 eth1
+iface eth1 inet manual
+    ovs_bridge br0
+    ovs_type OVSPort
+
+ex 4: A bridge with an OVS internal port.
+
+allow-ovs br1
+iface br1 inet static
+    address 192.168.1.1
+    netmask 255.255.255.0
+    ovs_type OVSBridge
+    ovs_ports vlan100
+
+allow-br1 vlan100
+iface vlan100 inet manual
+    ovs_bridge br1
+    ovs_type OVSIntPort
+    ovs_options tag=100
+    ovs_extra set interface ${IFACE} external-ids:iface-id=$(hostname -s)
+
+ex 5: Bonding.
+
+allow-ovs br2
+iface br2 inet static
+    address 192.170.1.1
+    netmask 255.255.255.0
+    ovs_type OVSBridge
+    ovs_ports bond0
+
+allow-br2 bond0
+iface bond0 inet manual
+    ovs_bridge br2
+    ovs_type OVSBond
+    ovs_bonds eth2 eth3
+    ovs_options bond_mode=balance-tcp lacp=active
+
+ex 6: Patch ports.
+
+allow-ovs br0
+iface br0 inet manual
+    ovs_type OVSBridge
+    ovs_ports patch0
+
+allow-br0 patch0
+iface patch0 inet manual
+    ovs_bridge br0
+    ovs_type OVSPatchPort
+    ovs_patch_peer patch1
+
+allow-ovs br1
+iface br1 inet manual
+    ovs_type OVSBridge
+    ovs_ports patch1
+
+allow-br1 patch1
+iface patch1 inet manual
+    ovs_bridge br1
+    ovs_type OVSPatchPort
+    ovs_patch_peer patch0
+
+ex 7: Tunnel.
+
+allow-ovs br1
+iface br1 inet static
+    address 192.168.1.1
+    netmask 255.255.255.0
+    ovs_type OVSBridge
+    ovs_ports gre1
+
+allow-br1 gre1
+iface gre1 inet manual
+    ovs_bridge br1
+    ovs_type OVSTunnel
+    ovs_tunnel_type gre
+    ovs_tunnel_options options:remote_ip=182.168.1.2 options:key=1
+
+ex 8: Create and destroy bridges.
+
+ifup --allow=ovs $list_of_bridges
+ifdown --allow=ovs $list_of_bridges
+
+ex 9: Bond + Bridge + VLAN + MTU
+
+allow-bond0 eth2
+iface eth2 inet manual
+    ovs_type OVSPort
+    ovs_bonds bond0
+    ovs_mtu 9000
+
+# Interface eth3
+#auto eth3
+allow-bond0 eth3
+iface eth3 inet manual
+    ovs_type OVSPort
+    ovs_bonds bond0
+    ovs_mtu 9000
+
+# Interface bond0
+auto bond0
+allow-br-ex bond0
+iface bond0 inet manual
+    ovs_bridge br-ex 
+    ovs_type OVSBond
+    ovs_bonds eth2 eth3
+    ovs_options bond_mode=balance-tcp lacp=active other_config:lacp-time=fast
+    ovs_mtu 9000
+    up ifup eth2
+    up ifup eth3
+    up ovs-vsctl set Interface ${IFACE} mtu_request=${IF_OVS_MTU}
+
+# Interface vlan81
+auto vlan871
+allow-br-ex vlan81
+iface vlan81 inet static
+    ovs_type OVSIntPort
+    ovs_bridge br-ex
+    ovs_options tag=81
+    ovs_extra set interface ${IFACE} external-ids:iface-id=$(hostname -s)-${IFACE}-vif
+    ovs_mtu 9000
+    address 192.168.100.2
+    network 192.168.100.0
+    netmask 255.255.255.0
+    broadcast 192.168.100.255
+    gateway 192.168.100.1
+
+# Interface br-ex
+auto br-ex
+allow-ovs br-ex
+iface br-ex inet manual
+        ovs_type OVSBridge
+        ovs_ports bond0 vlan81
+        ovs_mtu 9000
+
+
+Notes on dependencies:
+---------------------
+
+openvswitch-switch depends on $network, $named $remote_fs and $syslog to start.
+This creates some startup dependency issues.
+
+* Since openvswitch utilities are placed in /usr and /usr can be mounted
+through NFS, openvswitch has to start after it.  But if a user uses openvswitch
+for all his networking needs and hence to mount NFS, there will be a deadlock.
+So, if /usr is mounted through NFS and openvswitch is used for all networking,
+the administrator should figure out a way to mount NFS before starting OVS.
+One way to do this is in initramfs.
+
+* Since openvswitch starts after $network, $remote_fs and $syslog, any startup
+script that depends on openvswitch but starts before it, needs to be changed
+to depend on openvswitch-switch too.
+
+* Ideally, an admin should not add openvswitch bridges in the 'auto'
+section of the 'interfaces' file.  This is because, when ifupdown starts
+working on bridges listed in 'auto', openvswitch has not yet started.
+
+But, if the admin wants to go down this route and adds openvswitch bridges
+in the 'auto' section, openvswitch-switch will forcefully be started when
+ifupdown kicks in. In a case like this, the admin needs to make sure that /usr
+has already been mounted and that a remote $syslog (if used) is ready to
+receive openvswitch logs.
+
+ -- Ben Pfaff <pfaffben at debian.org>, Fri, 23 Dec 2016 09:45:56 -0800
diff --git a/debian/openvswitch-switch.dirs b/debian/openvswitch-switch.dirs
new file mode 100644
index 0000000..0b1f281
--- /dev/null
+++ b/debian/openvswitch-switch.dirs
@@ -0,0 +1,2 @@
+/etc/openvswitch
+/usr/share/openvswitch/switch
diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
new file mode 100755
index 0000000..5897052
--- /dev/null
+++ b/debian/openvswitch-switch.init
@@ -0,0 +1,154 @@
+#! /bin/sh
+#
+# Copyright (C) 2011, 2012 Nicira, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+### BEGIN INIT INFO
+# Provides:          openvswitch-switch
+# Required-Start:    $network $named $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Open vSwitch switch
+# Description:       openvswitch-switch provides the userspace components and utilities for
+#                    the Open vSwitch kernel-based switch.
+### END INIT INFO
+
+(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0
+
+. /lib/lsb/init-functions
+
+. /usr/share/openvswitch/scripts/ovs-lib
+test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
+
+mkdir -p /run/openvswitch
+
+network_interfaces () {
+    INTERFACES="/etc/network/interfaces"
+    [ -e "${INTERFACES}" ] || return
+    bridges=`ifquery --allow ovs --list`
+    [ -n "${bridges}" ] && $1 --allow=ovs ${bridges}
+}
+
+load_kmod () {
+    ovs_ctl load-kmod || exit $?
+}
+
+start () {
+    if ovs_ctl load-kmod; then
+	:
+    else
+	echo "Module has probably not been built for this kernel."
+	echo "Please install Linux 3.3 or later with openvswitch kernel support."
+
+	if test X"$OVS_MISSING_KMOD_OK" = Xyes; then
+	    # We're being invoked by the package postinst.  Do not
+	    # fail package installation just because the kernel module
+	    # is not available.
+	    exit 0
+	fi
+    fi
+    set ovs_ctl ${1-start} --system-id=random
+    if test X"$FORCE_COREFILES" != X; then
+	set "$@" --force-corefiles="$FORCE_COREFILES"
+    fi
+    set "$@" $OVS_CTL_OPTS
+    "$@" || exit $?
+    if [ "$2" = "start" ] && [ "$READ_INTERFACES" != "no" ]; then
+        network_interfaces ifup
+    fi
+}
+
+stop () {
+    [ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown
+    ovs_ctl stop
+}
+
+restart () {
+    # OVS_FORCE_RELOAD_KMOD can be set by package postinst script.
+    if [ "$1" = "--save-flows=yes" ] || \
+        [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then
+        start restart
+    elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then
+        depmod -a
+
+        if [ -e /sys/module/openvswitch ]; then
+            LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion \
+                               2>/dev/null`
+            LOADED_VERSION=`cat /sys/module/openvswitch/version \
+                            2>/dev/null`
+        elif [ -e /sys/module/openvswitch_mod ]; then
+            LOADED_SRCVERSION=`cat /sys/module/openvswitch_mod/srcversion \
+                               2>/dev/null`
+            LOADED_VERSION=`cat /sys/module/openvswitch_mod/version \
+                            2>/dev/null`
+        fi
+        SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null`
+        VERSION=`modinfo -F version openvswitch 2>/dev/null`
+
+        ovs_ctl_log "Package upgrading:\n"\
+                    "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\
+                    "Version on disk: ${VERSION} ${SRCVERSION}."
+
+        # If the kernel module was previously loaded and it is different than
+        # the kernel module on disk, then do a 'force-reload-kmod'.
+        if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \
+            [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then
+            start force-reload-kmod
+        else
+            start restart
+        fi
+    else
+        READ_INTERFACES="no" stop
+        READ_INTERFACES="no" start
+    fi
+}
+
+case $1 in
+    start)
+        start
+	;;
+    stop | force-stop)
+        stop
+        ;;
+    systemd-start)
+        start
+        ;;
+    systemd-stop)
+        stop
+        ;;
+    reload | force-reload)
+        # The OVS daemons keep up-to-date.
+        ;;
+    restart)
+        shift
+        restart "$@"
+        ;;
+    status)
+        ovs_ctl status
+        exit $?
+        ;;
+    force-reload-kmod)
+        start force-reload-kmod
+        ;;
+    load-kmod)
+        load_kmod
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/openvswitch-switch.install b/debian/openvswitch-switch.install
new file mode 100644
index 0000000..7076694
--- /dev/null
+++ b/debian/openvswitch-switch.install
@@ -0,0 +1,2 @@
+debian/ifupdown.sh usr/share/openvswitch/scripts
+usr/share/openvswitch/vswitch.ovsschema
diff --git a/debian/openvswitch-switch.links b/debian/openvswitch-switch.links
new file mode 100644
index 0000000..cf58073
--- /dev/null
+++ b/debian/openvswitch-switch.links
@@ -0,0 +1,2 @@
+usr/share/openvswitch/scripts/ifupdown.sh etc/network/if-post-down.d/openvswitch
+usr/share/openvswitch/scripts/ifupdown.sh etc/network/if-pre-up.d/openvswitch
diff --git a/debian/openvswitch-switch.logrotate b/debian/openvswitch-switch.logrotate
new file mode 100644
index 0000000..a7a71bd
--- /dev/null
+++ b/debian/openvswitch-switch.logrotate
@@ -0,0 +1,16 @@
+/var/log/openvswitch/*.log {
+    daily
+    compress
+    create 640 root adm
+    delaycompress
+    missingok
+    rotate 30
+    postrotate
+    # Tell Open vSwitch daemons to reopen their log files
+    if [ -d /var/run/openvswitch ]; then
+        for pidfile in `cd /var/run/openvswitch && echo *.pid`; do
+            ovs-appctl -t "${pidfile%%.pid}" vlog/reopen
+        done
+    fi
+    endscript
+}
diff --git a/debian/openvswitch-switch.openvswitch-nonetwork.service b/debian/openvswitch-switch.openvswitch-nonetwork.service
new file mode 100644
index 0000000..190fa0e
--- /dev/null
+++ b/debian/openvswitch-switch.openvswitch-nonetwork.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Open vSwitch Internal Unit
+PartOf=openvswitch-switch.service
+DefaultDependencies=no
+After=apparmor.service local-fs.target systemd-tmpfiles-setup.service
+Wants=network-pre.target openvswitch-switch.service
+Before=network-pre.target openvswitch-switch.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+EnvironmentFile=-/etc/default/openvswitch-switch
+ExecStart=/usr/share/openvswitch/scripts/ovs-ctl start \
+          --system-id=random $OVS_CTL_OPTS
+ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop
diff --git a/debian/openvswitch-switch.postinst b/debian/openvswitch-switch.postinst
new file mode 100755
index 0000000..58c2aca
--- /dev/null
+++ b/debian/openvswitch-switch.postinst
@@ -0,0 +1,75 @@
+#!/bin/sh
+# postinst script for openvswitch-switch
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        mkdir -p /var/lib/openvswitch
+	DEFAULT=/etc/default/openvswitch-switch
+	TEMPLATE=/usr/share/openvswitch/switch/default.template
+	if ! test -e $DEFAULT; then
+	    cp $TEMPLATE $DEFAULT
+	else
+            for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
+            do
+                if ! grep $var $DEFAULT >/dev/null 2>&1; then
+	            echo >> $DEFAULT
+	            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+                fi
+            done
+	fi
+
+	# Ensure that /etc/openvswitch/conf.db links to /var/lib/openvswitch,
+	# moving an existing file if there is one.
+	#
+	# Ditto for .conf.db.~lock~.
+	for base in conf.db .conf.db.~lock~; do
+	    new=/var/lib/openvswitch/$base
+	    old=/etc/openvswitch/$base
+	    if test -f $old && test ! -e $new; then
+		mv $old $new
+	    fi
+	    if test ! -e $old && test ! -h $old; then
+		ln -s $new $old
+	    fi
+	done
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# Do not fail package installation just because the kernel module
+# is not available.
+OVS_MISSING_KMOD_OK=yes
+export OVS_MISSING_KMOD_OK
+
+# force-reload-kmod during upgrade. If a user wants to override this,
+# they can set the variable OVS_FORCE_RELOAD_KMOD=no while installing.
+[ -z "${OVS_FORCE_RELOAD_KMOD}" ] && OVS_FORCE_RELOAD_KMOD=yes || true
+export OVS_FORCE_RELOAD_KMOD
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-switch.postrm b/debian/openvswitch-switch.postrm
new file mode 100755
index 0000000..88bf9fc
--- /dev/null
+++ b/debian/openvswitch-switch.postrm
@@ -0,0 +1,48 @@
+#!/bin/sh
+# postrm script for openvswitch-switch
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /etc/openvswitch/conf.db
+        rm -f /etc/openvswitch/.conf.db.~lock~
+        rm -f /etc/default/openvswitch-switch
+        rm -f /var/log/openvswitch/ovs-vswitchd.log* || true
+        rm -f /var/log/openvswitch/ovsdb-server.log* || true
+        rm -f /etc/openvswitch/system-id.conf
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/openvswitch-switch.service b/debian/openvswitch-switch.service
new file mode 100644
index 0000000..bcfdbe0
--- /dev/null
+++ b/debian/openvswitch-switch.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Open vSwitch
+After=openvswitch-nonetwork.service
+Requires=openvswitch-nonetwork.service
+Before=networking.service
+
+[Service]
+Type=oneshot
+ExecStart=/etc/init.d/openvswitch-switch systemd-start
+ExecStop=/etc/init.d/openvswitch-switch systemd-stop
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/openvswitch-switch.template b/debian/openvswitch-switch.template
new file mode 100644
index 0000000..d7c7796
--- /dev/null
+++ b/debian/openvswitch-switch.template
@@ -0,0 +1,8 @@
+# This is a POSIX shell fragment                -*- sh -*-
+
+# FORCE_COREFILES: If 'yes' then core files will be enabled.
+# FORCE_COREFILES=yes
+
+# OVS_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
+# a suitable place to specify --ovs-vswitchd-wrapper=valgrind.
+# OVS_CTL_OPTS=
diff --git a/debian/openvswitch-testcontroller.README.Debian b/debian/openvswitch-testcontroller.README.Debian
new file mode 100644
index 0000000..0548826
--- /dev/null
+++ b/debian/openvswitch-testcontroller.README.Debian
@@ -0,0 +1,12 @@
+README.Debian for openvswitch-testcontroller
+--------------------------------------------
+
+The controller in this package enables OpenFlow switches that connect
+to it to act as MAC-learning Ethernet switches.  It can be used for
+initial testing of OpenFlow networks.  It is not a necessary or
+desirable part of a production OpenFlow deployment.
+
+To (re)configure the controller, edit /etc/default/openvswitch-testcontroller
+and run "/etc/init.d/openvswitch-testcontroller restart".
+
+ -- Ben Pfaff <pfaffben at debian.org>, Thu, 14 Aug 2014 10:49:34 -0700
diff --git a/debian/openvswitch-testcontroller.default b/debian/openvswitch-testcontroller.default
new file mode 100644
index 0000000..c6db595
--- /dev/null
+++ b/debian/openvswitch-testcontroller.default
@@ -0,0 +1,29 @@
+# This is a POSIX shell fragment                -*- sh -*-
+
+# LISTEN: What OpenFlow connection methods should the controller listen on?
+#
+# This is a space-delimited list of connection methods:
+#
+# * "pssl:[PORT]": Listen for SSL connections on the specified PORT
+#   (default: 6653).  The private key, certificate, and CA certificate
+#   must be specified below.
+#
+# * "ptcp:[PORT]": Listen for TCP connections on the specified PORT
+#   (default: 6653).  Not recommended for security reasons.
+#
+LISTEN="pssl:"
+
+# PRIVKEY: Name of file containing controller's private key.
+# Required if SSL enabled.
+PRIVKEY=/etc/openvswitch-testcontroller/privkey.pem
+
+# CERT: Name of file containing certificate for private key.
+# Required if SSL enabled.
+CERT=/etc/openvswitch-testcontroller/cert.pem
+
+# CACERT: Name of file containing switch CA certificate.
+# Required if SSL enabled.
+CACERT=/etc/openvswitch-testcontroller/cacert.pem
+
+# Additional options to pass to ovs-testcontroller, e.g. "--hub"
+DAEMON_OPTS=""
diff --git a/debian/openvswitch-testcontroller.dirs b/debian/openvswitch-testcontroller.dirs
new file mode 100644
index 0000000..d8d4f77
--- /dev/null
+++ b/debian/openvswitch-testcontroller.dirs
@@ -0,0 +1 @@
+etc/openvswitch-testcontroller
diff --git a/debian/openvswitch-testcontroller.init b/debian/openvswitch-testcontroller.init
new file mode 100755
index 0000000..67b7a99
--- /dev/null
+++ b/debian/openvswitch-testcontroller.init
@@ -0,0 +1,278 @@
+#!/bin/sh
+#
+# Copyright (c) 2011, 2014 Nicira, Inc.
+# Copyright (c) 2007, 2009 Javier Fernandez-Sanguino <jfs at debian.org>
+#
+# This is free software; you may redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2,
+# or (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License with
+# the Debian operating system, in /usr/share/common-licenses/GPL;  if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides:          openvswitch-testcontroller
+# Required-Start:    $network $local_fs $remote_fs
+# Required-Stop:     $remote_fs
+# Should-Start:      $named
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Simple OpenFlow controller for testing
+# Description:       This controller enables OpenFlow switches that connect to
+#                    it to act as MAC-learning Ethernet switches.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/bin/ovs-testcontroller # Introduce the server's location here
+NAME=ovs-testcontroller         # Introduce the short server's name here
+DESC=ovs-testcontroller         # Introduce a short description here
+LOGDIR=/var/log/openvswitch	# Log directory to use
+
+PIDFILE=/var/run/openvswitch/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/openvswitch-testcontroller
+DAEMON_OPTS=""          # Additional options given to the server
+
+DODTIME=10              # Time to wait for the server to die, in seconds
+                        # If this value is set too low you might not
+                        # let some servers to die gracefully and
+                        # 'restart' will not work
+
+LOGFILE=$LOGDIR/$NAME.log  # Server logfile
+#DAEMONUSER=            # User to run the daemons as. If this value
+                        # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+default=/etc/default/openvswitch-testcontroller
+if [ -f $default ] ; then
+    . $default
+fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+    if getent passwd | grep -q "^$DAEMONUSER:"; then
+        # Obtain the uid and gid
+        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+    else
+        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+        exit 1
+    fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected server
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+start_server() {
+    if [ -z "$LISTEN" ]; then
+        echo "$default: No connection methods configured, controller disabled" >&2
+        exit 0
+    fi
+
+    if [ ! -d /var/run/openvswitch ]; then
+        install -d -m 755 -o root -g root /var/run/openvswitch
+    fi
+
+    SSL_OPTS=
+    case $LISTEN in
+        *ssl*)
+            : ${PRIVKEY:=/etc/openvswitch-testcontroller/privkey.pem}
+            : ${CERT:=/etc/openvswitch-testcontroller/cert.pem}
+            : ${CACERT:=/etc/openvswitch-testcontroller/cacert.pem}
+            if test ! -e "$PRIVKEY" || test ! -e "$CERT" ||
+                test ! -e "$CACERT"; then
+                if test ! -e "$PRIVKEY"; then
+                    echo "$PRIVKEY: private key missing" >&2
+                fi
+                if test ! -e "$CERT"; then
+                    echo "$CERT: certificate for private key missing" >&2
+                fi
+                if test ! -e "$CACERT"; then
+                    echo "$CACERT: CA certificate missing" >&2
+                fi
+                exit 1
+            fi
+            SSL_OPTS="--private-key=$PRIVKEY --certificate=$CERT --ca-cert=$CACERT"
+            ;;
+    esac
+
+# Start the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            start-stop-daemon --start --pidfile $PIDFILE \
+                        --exec $DAEMON -- --detach --pidfile=$PIDFILE \
+                        $LISTEN $DAEMON_OPTS $SSL_OPTS
+            errcode=$?
+        else
+# if we are using a daemonuser then change the user id
+            start-stop-daemon --start --quiet --pidfile $PIDFILE \
+                        --chuid $DAEMONUSER --exec $DAEMON -- \
+                        --detach --pidfile=$PIDFILE $LISTEN $DAEMON_OPTS \
+                        $SSL_OPTS
+            errcode=$?
+        fi
+        return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+                        --exec $DAEMON
+            errcode=$?
+        else
+# if we are using a daemonuser then look for process that match
+            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+                        --user $DAEMONUSER --exec $DAEMON
+            errcode=$?
+        fi
+
+        return $errcode
+}
+
+reload_server() {
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=`cat $PIDFILE` # This is the daemon's pid
+    # Send a SIGHUP
+    kill -1 $pid
+    return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+    [ ! -e "$PIDFILE" ] && return
+    if running ; then
+        kill -15 $pid
+        # Is it really dead?
+        sleep "$DODTIME"
+        if running ; then
+            kill -9 $pid
+            sleep "$DODTIME"
+            if running ; then
+                echo "Cannot kill $NAME (pid=$pid)!"
+                exit 1
+            fi
+        fi
+    fi
+    rm -f $PIDFILE
+}
+
+
+case "$1" in
+  start)
+        log_daemon_msg "Starting $DESC " "$NAME"
+        # Check if it's running first
+        if running ;  then
+            log_progress_msg "apparently already running"
+            log_end_msg 0
+            exit 0
+        fi
+        if start_server && running ;  then
+            # It's ok, the server started and is running
+            log_end_msg 0
+        else
+            # Either we could not start it or it is not running
+            # after we did
+            # NOTE: Some servers might die some time after they start,
+            # this code does not try to detect this and might give
+            # a false positive (use 'status' for that)
+            log_end_msg 1
+        fi
+        ;;
+  stop)
+        log_daemon_msg "Stopping $DESC" "$NAME"
+        if running ; then
+            # Only stop the server if we see it running
+            stop_server
+            log_end_msg $?
+        else
+            # If it's not running don't do anything
+            log_progress_msg "apparently not running"
+            log_end_msg 0
+            exit 0
+        fi
+        ;;
+  force-stop)
+        # First try to stop gracefully the program
+        $0 stop
+        if running; then
+            # If it's still running try to kill it more forcefully
+            log_daemon_msg "Stopping (force) $DESC" "$NAME"
+            force_stop
+            log_end_msg $?
+        fi
+        ;;
+  restart|force-reload)
+        log_daemon_msg "Restarting $DESC" "$NAME"
+        if running; then
+            stop_server
+            # Wait some sensible amount, some server need this.
+            [ -n "$DODTIME" ] && sleep $DODTIME
+        fi
+        start_server
+        running
+        log_end_msg $?
+        ;;
+  status)
+
+        log_daemon_msg "Checking status of $DESC" "$NAME"
+        if running ;  then
+            log_progress_msg "running"
+            log_end_msg 0
+        else
+            log_progress_msg "apparently not running"
+            log_end_msg 1
+            exit 1
+        fi
+        ;;
+  # Use this if the daemon cannot reload
+  reload)
+        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+        log_warning_msg "cannot re-read the config file (use restart)."
+        ;;
+  *)
+        N=/etc/init.d/openvswitch-testcontroller
+        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/openvswitch-testcontroller.postinst b/debian/openvswitch-testcontroller.postinst
new file mode 100755
index 0000000..7a25083
--- /dev/null
+++ b/debian/openvswitch-testcontroller.postinst
@@ -0,0 +1,52 @@
+#!/bin/sh
+# postinst script for openvswitch-testcontroller
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        cd /etc/openvswitch-testcontroller
+        if ! test -e cacert.pem; then
+            ln -s /var/lib/openvswitch/pki/switchca/cacert.pem cacert.pem
+        fi
+        if ! test -e privkey.pem || ! test -e cert.pem; then
+            oldumask=$(umask)
+            umask 077
+            ovs-pki req+sign tmp controller >/dev/null
+            mv tmp-privkey.pem privkey.pem
+            mv tmp-cert.pem cert.pem
+            mv tmp-req.pem req.pem
+            chmod go+r cert.pem req.pem
+            umask $oldumask
+        fi
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/openvswitch-testcontroller.postrm b/debian/openvswitch-testcontroller.postrm
new file mode 100755
index 0000000..afca1bb
--- /dev/null
+++ b/debian/openvswitch-testcontroller.postrm
@@ -0,0 +1,44 @@
+#!/bin/sh
+# postrm script for openvswitch-testcontroller
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        if cd /etc/openvswitch-testcontroller; then
+            rm -f cacert.pem cert.pem privkey.pem req.pem
+            rm -f tmp-privkey.pem tmp-cert.pem tmp-req.pem
+        fi
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/openvswitch-vtep.default b/debian/openvswitch-vtep.default
new file mode 100644
index 0000000..2e888e7
--- /dev/null
+++ b/debian/openvswitch-vtep.default
@@ -0,0 +1,4 @@
+# This is a POSIX shell fragment                -*- sh -*-
+
+# ENABLE_OVS_VTEP: Whether to start ovs-vtep.
+ENABLE_OVS_VTEP="false"
diff --git a/debian/openvswitch-vtep.init b/debian/openvswitch-vtep.init
new file mode 100644
index 0000000..6200029
--- /dev/null
+++ b/debian/openvswitch-vtep.init
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          openvswitch-vtep
+# Required-Start:    $network $named $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Open vSwitch VTEP emulator
+# Description:       Initializes the Open vSwitch VTEP emulator
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+# Include defaults if available
+default=/etc/default/openvswitch-vtep
+if [ -f $default ] ; then
+    . $default
+fi
+
+start () {
+    if [ "$ENABLE_OVS_VTEP" = "false" ]; then
+        exit 0
+    fi
+
+    update-rc.d -f openvswitch-switch remove >/dev/null 2>&1
+    /etc/init.d/openvswitch-switch stop
+
+    mkdir -p "/var/run/openvswitch"
+
+    if [ ! -e "/etc/openvswitch/conf.db" ]; then
+        ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema
+    fi
+
+    if [ ! -e "/etc/openvswitch/vtep.db" ]; then
+        ovsdb-tool create /etc/openvswitch/vtep.db /usr/share/openvswitch/vtep.ovsschema
+    fi
+
+    if [ ! -e "/etc/openvswitch/ovsclient-cert.pem" ]; then
+        export RANDFILE="/root/.rnd"
+        cd /etc/openvswitch && ovs-pki req ovsclient && ovs-pki self-sign ovsclient
+    fi
+
+    ovsdb-server --pidfile --detach --log-file --remote \
+        punix:/var/run/openvswitch/db.sock \
+        --remote=db:hardware_vtep,Global,managers \
+        --private-key=/etc/openvswitch/ovsclient-privkey.pem \
+        --certificate=/etc/openvswitch/ovsclient-cert.pem \
+        --bootstrap-ca-cert=/etc/openvswitch/vswitchd.cacert \
+        /etc/openvswitch/conf.db /etc/openvswitch/vtep.db
+
+    modprobe openvswitch
+
+    ovs-vswitchd --pidfile --detach --log-file \
+        unix:/var/run/openvswitch/db.sock
+}
+
+stop () {
+    /etc/init.d/openvswitch-switch stop
+}
+
+case $1 in
+    start)
+        start
+        ;;
+    stop)
+        stop
+        ;;
+    restart|force-reload)
+        stop
+        start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/openvswitch-vtep.install b/debian/openvswitch-vtep.install
new file mode 100644
index 0000000..978ce11
--- /dev/null
+++ b/debian/openvswitch-vtep.install
@@ -0,0 +1 @@
+usr/share/openvswitch/vtep.ovsschema
diff --git a/debian/ovn-central.dirs b/debian/ovn-central.dirs
new file mode 100644
index 0000000..6394883
--- /dev/null
+++ b/debian/ovn-central.dirs
@@ -0,0 +1 @@
+/usr/share/ovn/central
diff --git a/debian/ovn-central.init b/debian/ovn-central.init
new file mode 100755
index 0000000..af4c5b2
--- /dev/null
+++ b/debian/ovn-central.init
@@ -0,0 +1,59 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides:          ovn-central
+# Required-Start:    openvswitch-switch $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: OVN central components
+# Description:       ovn-central provides the userspace daemons,
+#                    utilities and databases for OVN that is run at a central
+#                    location.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+test -x /usr/bin/ovn-northd  || exit 0
+test -x /usr/share/openvswitch/scripts/ovn-ctl || exit 0
+
+. /usr/share/openvswitch/scripts/ovs-lib
+if [ -e /etc/default/ovn-central ]; then
+    . /etc/default/ovn-central
+fi
+
+start () {
+    set /usr/share/openvswitch/scripts/ovn-ctl ${1-start_northd}
+    set "$@" $OVN_CTL_OPTS
+    "$@" || exit $?
+}
+
+stop_northd () {
+    set /usr/share/openvswitch/scripts/ovn-ctl ${1-stop_northd}
+    set "$@" $OVN_CTL_OPTS
+    "$@" || exit $?
+}
+
+case $1 in
+    start)
+        start
+        ;;
+    stop)
+        stop_northd
+        ;;
+    restart)
+        start restart_northd
+        ;;
+    reload | force-reload)
+        ;;
+    status)
+        /usr/share/openvswitch/scripts/ovn-ctl status_northd
+        exit $?
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|reload|force-reload|restart|status}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/ovn-central.install b/debian/ovn-central.install
new file mode 100644
index 0000000..2d58ccd
--- /dev/null
+++ b/debian/ovn-central.install
@@ -0,0 +1,2 @@
+usr/share/openvswitch/ovn-nb.ovsschema
+usr/share/openvswitch/ovn-sb.ovsschema
diff --git a/debian/ovn-central.postinst b/debian/ovn-central.postinst
new file mode 100755
index 0000000..bdf5c4a
--- /dev/null
+++ b/debian/ovn-central.postinst
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postinst script for ovn-central
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+	DEFAULT=/etc/default/ovn-central
+	TEMPLATE=/usr/share/ovn/central/default.template
+	if ! test -e $DEFAULT; then
+	    cp $TEMPLATE $DEFAULT
+	else
+            for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
+            do
+                if ! grep $var $DEFAULT >/dev/null 2>&1; then
+	            echo >> $DEFAULT
+	            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+                fi
+            done
+	fi
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
new file mode 100755
index 0000000..0e654a3
--- /dev/null
+++ b/debian/ovn-central.postrm
@@ -0,0 +1,48 @@
+#!/bin/sh
+# postrm script for ovn-central
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /etc/default/ovn-central
+        rm -f /etc/openvswitch/ovnnb.db*
+        rm -f /etc/openvswitch/.ovnnb.db.~lock~
+        rm -f /etc/openvswitch/ovnsb.db*
+        rm -f /etc/openvswitch/.ovnsb.db.~lock~
+        rm -f /var/log/openvswitch/ovn-northd.log* || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/ovn-central.template b/debian/ovn-central.template
new file mode 100644
index 0000000..7cea13e
--- /dev/null
+++ b/debian/ovn-central.template
@@ -0,0 +1,5 @@
+# This is a POSIX shell fragment                -*- sh -*-
+
+# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
+# a suitable place to specify --ovn-northd-wrapper=valgrind.
+# OVN_CTL_OPTS=
diff --git a/debian/ovn-controller-vtep.init b/debian/ovn-controller-vtep.init
new file mode 100755
index 0000000..49a5741
--- /dev/null
+++ b/debian/ovn-controller-vtep.init
@@ -0,0 +1,53 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides:          ovn-controller-vtep
+# Required-Start:    openvswitch-switch $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: OVN Controller for VTEP enabled devices
+# Description:       ovn-controller-vtep provides the userspace
+#                    components and utilities for OVN that can be run on
+#                    hosts taht connect to VTEP enabled devices.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+test -x /usr/bin/ovn-controller-vtep  || exit 0
+test -x /usr/share/openvswitch/scripts/ovn-ctl || exit 0
+
+. /usr/share/openvswitch/scripts/ovs-lib
+if [ -e /etc/default/ovn-controller-vtep ]; then
+    . /etc/default/ovn-controller-vtep
+fi
+
+start () {
+    set /usr/share/openvswitch/scripts/ovn-ctl ${1-start_controller_vtep}
+    set "$@" $OVN_CTL_OPTS
+    "$@" || exit $?
+}
+
+case $1 in
+    start)
+        start
+        ;;
+    stop | force-stop)
+        /usr/share/openvswitch/scripts/ovn-ctl stop_controller_vtep
+        ;;
+    restart)
+        start restart_controller_vtep
+        ;;
+    status)
+        /usr/share/openvswitch/scripts/ovn-ctl status_controller_vtep
+        exit $?
+        ;;
+    reload | force-reload)
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|reload|force-reload|restart|status}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/ovn-host.dirs b/debian/ovn-host.dirs
new file mode 100644
index 0000000..7d3c761
--- /dev/null
+++ b/debian/ovn-host.dirs
@@ -0,0 +1 @@
+/usr/share/ovn/host
diff --git a/debian/ovn-host.init b/debian/ovn-host.init
new file mode 100755
index 0000000..e0297c1
--- /dev/null
+++ b/debian/ovn-host.init
@@ -0,0 +1,53 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides:          ovn-host
+# Required-Start:    openvswitch-switch $remote_fs $syslog
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: OVN host components
+# Description:       ovn-host provides the userspace
+#                    components and utilities for OVN that can be run on
+#                    every host/hypervisor.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+test -x /usr/bin/ovn-controller  || exit 0
+test -x /usr/share/openvswitch/scripts/ovn-ctl || exit 0
+
+. /usr/share/openvswitch/scripts/ovs-lib
+if [ -e /etc/default/ovn-host ]; then
+    . /etc/default/ovn-host
+fi
+
+start () {
+    set /usr/share/openvswitch/scripts/ovn-ctl ${1-start_controller}
+    set "$@" $OVN_CTL_OPTS
+    "$@" || exit $?
+}
+
+case $1 in
+    start)
+        start
+        ;;
+    stop | force-stop)
+        /usr/share/openvswitch/scripts/ovn-ctl stop_controller
+        ;;
+    restart)
+        start restart_controller
+        ;;
+    status)
+        /usr/share/openvswitch/scripts/ovn-ctl status_controller
+        exit $?
+        ;;
+    reload | force-reload)
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|reload|force-reload|restart|status}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/ovn-host.postinst b/debian/ovn-host.postinst
new file mode 100755
index 0000000..05e80ad
--- /dev/null
+++ b/debian/ovn-host.postinst
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postinst script for ovn-host
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+	DEFAULT=/etc/default/ovn-host
+	TEMPLATE=/usr/share/ovn/host/default.template
+	if ! test -e $DEFAULT; then
+	    cp $TEMPLATE $DEFAULT
+	else
+            for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
+            do
+                if ! grep $var $DEFAULT >/dev/null 2>&1; then
+	            echo >> $DEFAULT
+	            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $DEFAULT
+                fi
+            done
+	fi
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
new file mode 100755
index 0000000..4cceb90
--- /dev/null
+++ b/debian/ovn-host.postrm
@@ -0,0 +1,44 @@
+#!/bin/sh
+# postrm script for ovn-host
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /etc/default/ovn-host
+        rm -f /var/log/openvswitch/ovn-controller.log* || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/ovn-host.template b/debian/ovn-host.template
new file mode 100644
index 0000000..7fd54ef
--- /dev/null
+++ b/debian/ovn-host.template
@@ -0,0 +1,5 @@
+# This is a POSIX shell fragment                -*- sh -*-
+
+# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
+# a suitable place to specify --ovn-controller-wrapper=valgrind.
+# OVN_CTL_OPTS=
diff --git a/debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch b/debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
new file mode 100644
index 0000000..af649da
--- /dev/null
+++ b/debian/patches/0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
@@ -0,0 +1,366 @@
+From 5b5aa2d8a54c006b6c5239d04b7a751ca5ff5d44 Mon Sep 17 00:00:00 2001
+From: Christian Ehrhardt <christian.ehrhardt at canonical.com>
+Date: Tue, 12 Feb 2019 07:29:58 +0100
+Subject: [PATCH] acinclude: Also use LIBS from dpkg pkg-config
+
+DPDK 18.11 builds using the more modern meson build system no more
+provide the -ldpdk linker script. Instead it is expected to use
+pkgconfig for linker options as well.
+
+This change will set DPDK_LIB from pkg-config (if pkg-config was
+available) and since that already carries the whole-archive flags
+around the PMDs skips the further wrapping in more whole-archive
+if that is already part of DPDK_LIB.
+
+To work reliable in all environments this needs pkg-config 0.29.1.
+We want to be able to use PKG_CHECK_MODULES_STATIC which
+is not yet available in 0.24. Therefore update pkg.m4
+to pkg-config 0.29.1.
+
+This should be backport-safe as these macro files are all versioned.
+autoconf is smart enough to check the version if you have it locally,
+and if the system's is higher, it will use that one instead.
+
+Acked-by: Luca Boccassi <bluca at debian.org>
+Acked-by: Aaron Conole <aconole at redhat.com>
+Signed-off-by: Christian Ehrhardt <christian.ehrhardt at canonical.com>
+Signed-off-by: Ian Stokes <ian.stokes at intel.com>
+
+Origin: backport, https://github.com/openvswitch/ovs/commit/5b5aa2d8a54c006b6c5239d04b7a751ca5ff5d44
+Last-Update: 2019-02-14
+
+---
+ acinclude.m4 |  20 +++--
+ m4/pkg.m4    | 217 +++++++++++++++++++++++++++++++++------------------
+ 2 files changed, 153 insertions(+), 84 deletions(-)
+
+Index: openvswitch/acinclude.m4
+===================================================================
+--- openvswitch.orig/acinclude.m4
++++ openvswitch/acinclude.m4
+@@ -223,9 +223,11 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+     case "$with_dpdk" in
+       yes)
+         DPDK_AUTO_DISCOVER="true"
+-        PKG_CHECK_MODULES([DPDK], [libdpdk],
+-                          [DPDK_INCLUDE="$DPDK_CFLAGS"],
+-                          [DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"])
++        PKG_CHECK_MODULES_STATIC([DPDK], [libdpdk], [
++            DPDK_INCLUDE="$DPDK_CFLAGS"
++            DPDK_LIB="$DPDK_LIBS"], [
++            DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"
++            DPDK_LIB="-ldpdk"])
+         ;;
+       *)
+         DPDK_AUTO_DISCOVER="false"
+@@ -238,11 +240,10 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+            DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH/dpdk"
+         fi
+         DPDK_LIB_DIR="$with_dpdk/lib"
++        DPDK_LIB="-ldpdk"
+         ;;
+     esac
+ 
+-    DPDK_LIB="-ldpdk"
+-
+     ovs_save_CFLAGS="$CFLAGS"
+     ovs_save_LDFLAGS="$LDFLAGS"
+     CFLAGS="$CFLAGS $DPDK_INCLUDE"
+@@ -377,7 +378,14 @@ AC_DEFUN([OVS_CHECK_DPDK], [
+     #
+     # These options are specified inside a single -Wl directive to prevent
+     # autotools from reordering them.
+-    DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
++    #
++    # OTOH newer versions of dpdk pkg-config (generated with Meson)
++    # will already have flagged just the right set of libs with
++    # --whole-archive - in those cases do not wrap it once more.
++    case "$DPDK_LIB" in
++      *whole-archive*) DPDK_vswitchd_LDFLAGS=$DPDK_LIB;;
++      *) DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
++    esac
+     AC_SUBST([DPDK_vswitchd_LDFLAGS])
+     AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
+   fi
+Index: openvswitch/m4/pkg.m4
+===================================================================
+--- openvswitch.orig/m4/pkg.m4
++++ openvswitch/m4/pkg.m4
+@@ -1,29 +1,60 @@
+-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+-# serial 1 (pkg-config-0.24)
+-# 
+-# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful, but
+-# WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-# General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+-# ----------------------------------
++dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
++dnl serial 11 (pkg-config-0.29.1)
++dnl
++dnl Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
++dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists at gmail.com>
++dnl
++dnl This program is free software; you can redistribute it and/or modify
++dnl it under the terms of the GNU General Public License as published by
++dnl the Free Software Foundation; either version 2 of the License, or
++dnl (at your option) any later version.
++dnl
++dnl This program is distributed in the hope that it will be useful, but
++dnl WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++dnl General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU General Public License
++dnl along with this program; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++dnl 02111-1307, USA.
++dnl
++dnl As a special exception to the GNU General Public License, if you
++dnl distribute this file as part of a program that contains a
++dnl configuration script generated by Autoconf, you may include it under
++dnl the same distribution terms that you use for the rest of that
++dnl program.
++
++dnl PKG_PREREQ(MIN-VERSION)
++dnl -----------------------
++dnl Since: 0.29
++dnl
++dnl Verify that the version of the pkg-config macros are at least
++dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
++dnl installed version of pkg-config, this checks the developer's version
++dnl of pkg.m4 when generating configure.
++dnl
++dnl To ensure that this macro is defined, also add:
++dnl m4_ifndef([PKG_PREREQ],
++dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
++dnl
++dnl See the "Since" comment for each macro you use to see what version
++dnl of the macros you require.
++m4_defun([PKG_PREREQ],
++[m4_define([PKG_MACROS_VERSION], [0.29.1])
++m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
++    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
++])dnl PKG_PREREQ
++
++dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
++dnl ----------------------------------
++dnl Since: 0.16
++dnl
++dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
++dnl first found in the path. Checks that the version of pkg-config found
++dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
++dnl used since that's the first version where most current features of
++dnl pkg-config existed.
+ AC_DEFUN([PKG_PROG_PKG_CONFIG],
+ [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+ m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+@@ -45,18 +76,19 @@ if test -n "$PKG_CONFIG"; then
+ 		PKG_CONFIG=""
+ 	fi
+ fi[]dnl
+-])# PKG_PROG_PKG_CONFIG
++])dnl PKG_PROG_PKG_CONFIG
+ 
+-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-#
+-# Check to see whether a particular set of modules exists.  Similar
+-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+-#
+-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+-# only at the first occurence in configure.ac, so if the first place
+-# it's called might be skipped (such as if it is within an "if", you
+-# have to call PKG_CHECK_EXISTS manually
+-# --------------------------------------------------------------
++dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------------------------------
++dnl Since: 0.18
++dnl
++dnl Check to see whether a particular set of modules exists. Similar to
++dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
++dnl
++dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++dnl only at the first occurence in configure.ac, so if the first place
++dnl it's called might be skipped (such as if it is within an "if", you
++dnl have to call PKG_CHECK_EXISTS manually
+ AC_DEFUN([PKG_CHECK_EXISTS],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ if test -n "$PKG_CONFIG" && \
+@@ -66,8 +98,10 @@ m4_ifvaln([$3], [else
+   $3])dnl
+ fi])
+ 
+-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+-# ---------------------------------------------
++dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
++dnl ---------------------------------------------
++dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
++dnl pkg_failed based on the result.
+ m4_define([_PKG_CONFIG],
+ [if test -n "$$1"; then
+     pkg_cv_[]$1="$$1"
+@@ -79,10 +113,11 @@ m4_define([_PKG_CONFIG],
+  else
+     pkg_failed=untried
+ fi[]dnl
+-])# _PKG_CONFIG
++])dnl _PKG_CONFIG
+ 
+-# _PKG_SHORT_ERRORS_SUPPORTED
+-# -----------------------------
++dnl _PKG_SHORT_ERRORS_SUPPORTED
++dnl ---------------------------
++dnl Internal check to see if pkg-config supports short errors.
+ AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+@@ -90,19 +125,17 @@ if $PKG_CONFIG --atleast-pkgconfig-versi
+ else
+         _pkg_short_errors_supported=no
+ fi[]dnl
+-])# _PKG_SHORT_ERRORS_SUPPORTED
++])dnl _PKG_SHORT_ERRORS_SUPPORTED
+ 
+ 
+-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+-# [ACTION-IF-NOT-FOUND])
+-#
+-#
+-# Note that if there is a possibility the first call to
+-# PKG_CHECK_MODULES might not happen, you should be sure to include an
+-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+-#
+-#
+-# --------------------------------------------------------------
++dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl --------------------------------------------------------------
++dnl Since: 0.4.0
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
++dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+ AC_DEFUN([PKG_CHECK_MODULES],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+@@ -156,16 +189,40 @@ else
+         AC_MSG_RESULT([yes])
+ 	$3
+ fi[]dnl
+-])# PKG_CHECK_MODULES
++])dnl PKG_CHECK_MODULES
+ 
+ 
+-# PKG_INSTALLDIR(DIRECTORY)
+-# -------------------------
+-# Substitutes the variable pkgconfigdir as the location where a module
+-# should install pkg-config .pc files. By default the directory is
+-# $libdir/pkgconfig, but the default can be changed by passing
+-# DIRECTORY. The user can override through the --with-pkgconfigdir
+-# parameter.
++dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl ---------------------------------------------------------------------
++dnl Since: 0.29
++dnl
++dnl Checks for existence of MODULES and gathers its build flags with
++dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
++dnl and VARIABLE-PREFIX_LIBS from --libs.
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
++dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
++dnl configure.ac.
++AC_DEFUN([PKG_CHECK_MODULES_STATIC],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++_save_PKG_CONFIG=$PKG_CONFIG
++PKG_CONFIG="$PKG_CONFIG --static"
++PKG_CHECK_MODULES($@)
++PKG_CONFIG=$_save_PKG_CONFIG[]dnl
++])dnl PKG_CHECK_MODULES_STATIC
++
++
++dnl PKG_INSTALLDIR([DIRECTORY])
++dnl -------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable pkgconfigdir as the location where a module
++dnl should install pkg-config .pc files. By default the directory is
++dnl $libdir/pkgconfig, but the default can be changed by passing
++dnl DIRECTORY. The user can override through the --with-pkgconfigdir
++dnl parameter.
+ AC_DEFUN([PKG_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+@@ -176,16 +233,18 @@ AC_ARG_WITH([pkgconfigdir],
+ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+-]) dnl PKG_INSTALLDIR
++])dnl PKG_INSTALLDIR
+ 
+ 
+-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
+-# -------------------------
+-# Substitutes the variable noarch_pkgconfigdir as the location where a
+-# module should install arch-independent pkg-config .pc files. By
+-# default the directory is $datadir/pkgconfig, but the default can be
+-# changed by passing DIRECTORY. The user can override through the
+-# --with-noarch-pkgconfigdir parameter.
++dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
++dnl --------------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable noarch_pkgconfigdir as the location where a
++dnl module should install arch-independent pkg-config .pc files. By
++dnl default the directory is $datadir/pkgconfig, but the default can be
++dnl changed by passing DIRECTORY. The user can override through the
++dnl --with-noarch-pkgconfigdir parameter.
+ AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+ [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+ m4_pushdef([pkg_description],
+@@ -196,13 +255,15 @@ AC_ARG_WITH([noarch-pkgconfigdir],
+ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+ m4_popdef([pkg_default])
+ m4_popdef([pkg_description])
+-]) dnl PKG_NOARCH_INSTALLDIR
++])dnl PKG_NOARCH_INSTALLDIR
+ 
+ 
+-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+-# -------------------------------------------
+-# Retrieves the value of the pkg-config variable for the given module.
++dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
++dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------
++dnl Since: 0.28
++dnl
++dnl Retrieves the value of the pkg-config variable for the given module.
+ AC_DEFUN([PKG_CHECK_VAR],
+ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+ AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+@@ -211,4 +272,4 @@ _PKG_CONFIG([$1], [variable="][$3]["], [
+ AS_VAR_COPY([$1], [pkg_cv_][$1])
+ 
+ AS_VAR_IF([$1], [""], [$5], [$4])dnl
+-])# PKG_CHECK_VAR
++])dnl PKG_CHECK_VAR
diff --git a/debian/patches/blacklist-ofproto-async-msg-ctrl-of1.3-because-of-mips.patch b/debian/patches/blacklist-ofproto-async-msg-ctrl-of1.3-because-of-mips.patch
new file mode 100644
index 0000000..b9e29c9
--- /dev/null
+++ b/debian/patches/blacklist-ofproto-async-msg-ctrl-of1.3-because-of-mips.patch
@@ -0,0 +1,135 @@
+Description: Remove broken test on Mips.
+ Blacklist "ofproto - asynchronous message control (OpenFlow 1.3)" which
+    fails on Mips arch.
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: not-needed
+Last-Update: 2018-10-22
+
+--- openvswitch-2.10.0+2018.08.28+git.8ca7c82b7d+ds1.orig/tests/ofproto.at
++++ openvswitch-2.10.0+2018.08.28+git.8ca7c82b7d+ds1/tests/ofproto.at
+@@ -3546,125 +3546,6 @@
+ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+-AT_SETUP([ofproto - asynchronous message control (OpenFlow 1.3)])
+-OVS_VSWITCHD_START([dnl
+-    add-port br0 p1 -- set Interface p1 type=dummy ofport_request=10
+-])
+-AT_CHECK([ovs-ofctl -O OpenFlow13 -P standard monitor br0 --detach --no-chdir --pidfile])
+-check_async () {
+-    printf '\n\n--- check_async %d ---\n\n\n' $1
+-    INDEX=$1
+-    shift
+-
+-    ovs-appctl -t ovs-ofctl ofctl/barrier
+-    ovs-appctl -t ovs-ofctl ofctl/set-output-file monitor.log
+-    : > expout
+-
+-    # OFPT_PACKET_IN, OFPR_ACTION (controller_id=0)
+-    # OFPR_ACTION_SET is treated as OFPR_ACTION in OpenFlow 1.3
+-    ovs-ofctl -O OpenFlow13 -v packet-out br0 none controller '0001020304050010203040501234'
+-    ovs-ofctl -O OpenFlow13 add-flow br0 'in_port=10 actions=write_actions(output(CONTROLLER))'
+-    ovs-appctl netdev-dummy/receive p1 'in_port(10),eth(src=00:10:20:30:40:50,dst=00:01:02:03:04:05),eth_type(0x1234)'
+-    if test X"$1" = X"OFPR_ACTION"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.3): total_len=14 in_port=ANY (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-        echo >>expout "OFPT_PACKET_IN (OF1.3): cookie=0x0 total_len=14 in_port=10 (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-    fi
+-
+-    # OFPT_PACKET_IN, OFPR_NO_MATCH (controller_id=123)
+-    ovs-ofctl -O OpenFlow13 -v packet-out br0 none 'controller(reason=no_match,id=123)' '0001020304050010203040501234'
+-    if test X"$1" = X"OFPR_NO_MATCH"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.3): total_len=14 in_port=ANY (via no_match) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-    fi
+-
+-    # OFPT_PACKET_IN, OFPR_INVALID_TTL (controller_id=0)
+-    ovs-ofctl -O OpenFlow13 packet-out br0 none dec_ttl '002583dfb4000026b98cb0f908004500003eb7e200000011339bac11370dac100002d7730035002b8f6d86fb0100000100000000000006626c702d7873066e696369726103636f6d00000f00'
+-    if test X"$1" = X"OFPR_INVALID_TTL"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.3): total_len=76 in_port=ANY (via invalid_ttl) data_len=76 (unbuffered)
+-udp,vlan_tci=0x0000,dl_src=00:26:b9:8c:b0:f9,dl_dst=00:25:83:df:b4:00,nw_src=172.17.55.13,nw_dst=172.16.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=55155,tp_dst=53 udp_csum:8f6d"
+-    fi
+-
+-    # OFPT_PORT_STATUS, OFPPR_ADD
+-    ovs-vsctl add-port br0 test -- set Interface test type=dummy
+-    if test X"$1" = X"OFPPR_ADD"; then shift;
+-        echo >>expout "OFPT_PORT_STATUS (OF1.3): ADD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     0
+-     state:      0
+-     speed: 0 Mbps now, 0 Mbps max
+-OFPT_PORT_STATUS (OF1.3): MOD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     0
+-     state:      LIVE
+-     speed: 0 Mbps now, 0 Mbps max"
+-    fi
+-
+-    # OFPT_PORT_STATUS, OFPPR_DELETE
+-    ovs-vsctl del-port br0 test
+-    if test X"$1" = X"OFPPR_DELETE"; then shift;
+-        echo >>expout "OFPT_PORT_STATUS (OF1.3): DEL: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     0
+-     state:      LIVE
+-     speed: 0 Mbps now, 0 Mbps max"
+-    fi
+-
+-    # OFPT_FLOW_REMOVED, OFPRR_DELETE
+-    ovs-ofctl -O OpenFlow13 add-flow br0 send_flow_rem,actions=drop
+-    ovs-ofctl -O OpenFlow13 --strict del-flows br0 ''
+-    if test X"$1" = X"OFPRR_DELETE"; then shift;
+-        echo >>expout "OFPT_FLOW_REMOVED (OF1.3):  reason=delete table_id=0"
+-    fi
+-
+-    # OFPT_FLOW_REMOVED, OFPRR_GROUP_DELETE
+-    ovs-ofctl -O OpenFlow13 add-group br0 group_id=1234,type=all,bucket=output:10
+-    ovs-ofctl -O OpenFlow13 add-flow br0 send_flow_rem,actions=group:1234
+-    ovs-ofctl -O OpenFlow13 --strict del-groups br0 group_id=1234
+-    if test X"$1" = X"OFPRR_GROUP_DELETE"; then shift;
+-        echo >>expout "OFPT_FLOW_REMOVED (OF1.3):  reason=group_delete table_id=0"
+-    fi
+-
+-    AT_FAIL_IF([test X"$1" != X])
+-
+-    OVS_WAIT_UNTIL([test `wc -l < "monitor.log"` -ge `wc -l < "expout"`])
+-
+-    AT_CHECK(
+-      [[sed '
+-s/ (xid=0x[0-9a-fA-F]*)//
+-s/ *duration.*//
+-s/00:0.$/00:0x/' < monitor.log]],
+-      [0], [expout])
+-}
+-
+-# It's a service connection so initially there should be no async messages.
+-check_async 1
+-
+-# Set miss_send_len to 128, turning on packet-ins for our service connection.
+-ovs-appctl -t ovs-ofctl ofctl/send 0409000c0123456700000080
+-check_async 2 OFPR_ACTION OFPPR_ADD OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE
+-
+-# Become slave (OF 1.3), which should disable everything except port status.
+-ovs-appctl -t ovs-ofctl ofctl/send 041800180000000200000003000000000000000000000001
+-check_async 3 OFPPR_ADD OFPPR_DELETE
+-
+-# Use OF 1.3 OFPT_SET_ASYNC to enable a patchwork of asynchronous messages.
+-ovs-appctl -t ovs-ofctl ofctl/send 041c00200000000200000002000000050000000500000002000000020000000d
+-check_async 4 OFPR_INVALID_TTL OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE
+-
+-# Set controller ID 123.
+-ovs-appctl -t ovs-ofctl ofctl/send 04040018000000030000232000000014000000000000007b
+-check_async 5 OFPR_NO_MATCH OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE
+-
+-# Restore controller ID 0.
+-ovs-appctl -t ovs-ofctl ofctl/send 040400180000000300002320000000140000000000000000
+-
+-# Become master (OF 1.3).
+-ovs-appctl -t ovs-ofctl ofctl/send 041800180000000400000002000000000000000000000002
+-check_async 6 OFPR_ACTION OFPPR_ADD
+-
+-OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+ AT_SETUP([ofproto - asynchronous message control (OpenFlow 1.5)])
+ OVS_VSWITCHD_START
+ AT_CHECK([ovs-ofctl -O OpenFlow15 -P standard monitor br0 --detach --no-chdir --pidfile])
diff --git a/debian/patches/disable-even-more-tests.patch b/debian/patches/disable-even-more-tests.patch
new file mode 100644
index 0000000..39f4d05
--- /dev/null
+++ b/debian/patches/disable-even-more-tests.patch
@@ -0,0 +1,140 @@
+Description: Disable even more tests
+ These are failing in mipsel and mips64el
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: no
+Last-Update: 2018-10-12
+
+Index: openvswitch/tests/ofproto-dpif.at
+===================================================================
+--- openvswitch.orig/tests/ofproto-dpif.at
++++ openvswitch/tests/ofproto-dpif.at
+@@ -483,80 +483,6 @@ recirc_id(0x1),dp_hash(0xXXXX/0xf),in_po
+ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+-AT_SETUP([ofproto-dpif - select group with weights])
+-
+-# Helper function to check the accuracy of distribution of packets over buckets
+-check_group_stats () {
+-    buckets=`grep -o 'packet_count=[[0-9]]*' | cut -d'=' -f2 | tail -n +2`
+-    i=0
+-    for bucket in $buckets; do
+-        min=$1
+-        shift
+-        if [[ $bucket -ge $min ]]; then
+-            echo "bucket$i >= $min"
+-        else
+-            echo "bucket$i < $min"
+-        fi
+-        i=`expr $i + 1`
+-        if [[ $i -ge 4 ]]; then break; fi
+-    done
+-}
+-
+-OVS_VSWITCHD_START
+-add_of_ports br0 1 10 11 12 13 14
+-
+-ovs-appctl vlog/set ofproto_dpif:file:dbg
+-AT_CHECK([ovs-ofctl -O OpenFlow13 add-group br0 'group_id=1234,type=select,bucket=weight:5,output:10,bucket=weight:10,output:11,bucket=weight:25,output:12,bucket=weight:60,output:13,bucket=weight:0,output:14'])
+-AT_CHECK([grep -A9 "Constructing select group 1234" ovs-vswitchd.log | sed 's/^.*ofproto_dpif/ofproto_dpif/'], [0], [dnl
+-ofproto_dpif|DBG|Constructing select group 1234
+-ofproto_dpif|DBG|No selection method specified. Trying dp_hash.
+-ofproto_dpif|DBG|  Minimum weight: 5, total weight: 100
+-ofproto_dpif|DBG|  Using 32 hash values:
+-ofproto_dpif|DBG|  Bucket 0: weight=5, target=1.60 hits=2
+-ofproto_dpif|DBG|  Bucket 1: weight=10, target=3.20 hits=3
+-ofproto_dpif|DBG|  Bucket 2: weight=25, target=8.00 hits=8
+-ofproto_dpif|DBG|  Bucket 3: weight=60, target=19.20 hits=19
+-ofproto_dpif|DBG|  Bucket 4: weight=0, target=0.00 hits=0
+-ofproto_dpif|DBG|Use dp_hash with 32 hash values using algorithm 1.
+-])
+-AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=write_actions(group:1234)'])
+-
+-# Try 1000 different flows and make sure that they get distributed according to weights
+-for d1 in 0 1 2 3 4 5 6 7 8 9 ; do
+-  for d2 in 0 1 2 3 4 5 6 7 8 9 ; do
+-    for s in 0 1 2 3 4 5 6 7 8 9 ; do
+-      pkt="in_port(1),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:1),eth_type(0x0800),ipv4(src=192.168.1.$s,dst=192.168.$d1.$d2,proto=6,tos=0,ttl=128,frag=no),tcp(src=1000$s,dst=1000)"
+-      AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt])
+-    done
+-  done
+-done
+-
+-# Check balanced distribution over 32 dp_hash values
+-AT_CHECK([ovs-appctl dpctl/dump-flows | sort | strip_ufid | strip_used | check_dpflow_stats 32 4 dp_hash], [0], [dnl
+-recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:999, bytes:117882, used:0.0s, actions:hash(sym_l4(0)),recirc(0x1)
+-n_flows=ok n_buckets=ok
+-])
+-
+-# Check that actual distribution over the buckets is reasonably accurate:
+-                ideal weights       dp_hash values
+-#   bucket0:    5%*1000 = 50        2/32*1000 = 63
+-#   bucket1:    10%*1000 = 100      3/32*1000 = 94
+-#   bucket2:    25%*1000 = 250      8/32*1000 = 250
+-#   bucket3:    60%*1000 = 600      19/32*1000 = 594
+-#   bucket4:    0                   0
+-
+-ovs-appctl time/warp 1000
+-AT_CHECK([ovs-ofctl -O OpenFlow13 dump-group-stats br0 | sed 's/duration=[[0-9]]\.[[0-9]]*s,//' | check_group_stats 40 80 200 500],
+-[0], [dnl
+-bucket0 >= 40
+-bucket1 >= 80
+-bucket2 >= 200
+-bucket3 >= 500
+-])
+-
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+ AT_SETUP([ofproto-dpif - select group with explicit dp_hash selection method])
+ 
+ OVS_VSWITCHD_START
+Index: openvswitch/tests/ofproto.at
+===================================================================
+--- openvswitch.orig/tests/ofproto.at
++++ openvswitch/tests/ofproto.at
+@@ -752,44 +752,6 @@ AT_CHECK([ovs-ofctl -O OpenFlow11 -vwarn
+ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+-AT_SETUP([ofproto - bundle del group (OpenFlow 1.3)])
+-OVS_VSWITCHD_START
+-AT_DATA([groups.txt], [dnl
+-group_id=1234,type=all,bucket=output:10
+-group_id=1235,type=all,bucket=actions=output:10
+-])
+-AT_CHECK([ovs-ofctl --bundle -O OpenFlow13 -vwarn add-groups br0 groups.txt])
+-AT_CHECK([ovs-ofctl -O OpenFlow13 -vwarn dump-groups br0 ], [0], [stdout])
+-AT_CHECK([strip_xids < stdout | sort], [0], [dnl
+- group_id=1234,type=all,bucket=actions=output:10
+- group_id=1235,type=all,bucket=actions=output:10
+-OFPST_GROUP_DESC reply (OF1.3):
+-])
+-AT_CHECK([ovs-ofctl --bundle -O OpenFlow13 -vwarn del-groups br0 group_id=1234])
+-AT_CHECK([ovs-ofctl -O OpenFlow13 -vwarn dump-groups br0], [0], [stdout])
+-AT_CHECK([strip_xids < stdout], [0], [dnl
+-OFPST_GROUP_DESC reply (OF1.3):
+- group_id=1235,type=all,bucket=actions=output:10
+-])
+-AT_CHECK([ovs-ofctl --bundle -O OpenFlow13 -vwarn del-groups br0 group_id=1234])
+-AT_CHECK([ovs-ofctl -O OpenFlow13 -vwarn dump-groups br0], [0], [stdout])
+-AT_CHECK([strip_xids < stdout], [0], [dnl
+-OFPST_GROUP_DESC reply (OF1.3):
+- group_id=1235,type=all,bucket=actions=output:10
+-])
+-AT_CHECK([ovs-ofctl --bundle -O OpenFlow13 -vwarn del-groups br0], [0])
+-AT_CHECK([ovs-ofctl -O OpenFlow13 -vwarn dump-groups br0], [0], [stdout])
+-AT_CHECK([strip_xids < stdout], [0], [dnl
+-OFPST_GROUP_DESC reply (OF1.3):
+-])
+-
+-# Negative test.
+-AT_CHECK([ovs-ofctl --bundle -O OpenFlow13 -vwarn del-groups br0 group_id=0xfffffff0],
+-  [1], [], [ovs-ofctl: invalid group id 4294967280
+-])
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+ AT_SETUP([ofproto - bundle add indirect group])
+ OVS_VSWITCHD_START
+ dnl indirect group must have exactly one bucket
diff --git a/debian/patches/disable-failed-tests.patch b/debian/patches/disable-failed-tests.patch
new file mode 100644
index 0000000..0500714
--- /dev/null
+++ b/debian/patches/disable-failed-tests.patch
@@ -0,0 +1,20 @@
+Description: Disable tests that are currently failing
+ The issue was reported upstream.
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: not-needed
+Last-Update: 2018-08-31
+
+Index: openvswitch/tests/ovn.at
+===================================================================
+--- openvswitch.orig/tests/ovn.at
++++ openvswitch/tests/ovn.at
+@@ -6688,9 +6688,6 @@ n_acl1=$(grep -c 'http-acl1' hv/ovn-cont
+ n_acl2=$(grep -c 'http-acl2' hv/ovn-controller.log)
+ n_acl3=$(grep -c 'http-acl3' hv/ovn-controller.log)
+ 
+-AT_CHECK([ test $n_acl3 -gt $n_acl1 ], [0], [])
+-AT_CHECK([ test $n_acl1 -gt $n_acl2 ], [0], [])
+-
+ OVN_CLEANUP([hv])
+ AT_CLEANUP
+ 
diff --git a/debian/patches/disable-failing-ovn-tests.patch b/debian/patches/disable-failing-ovn-tests.patch
new file mode 100644
index 0000000..ace0283
--- /dev/null
+++ b/debian/patches/disable-failing-ovn-tests.patch
@@ -0,0 +1,327 @@
+Description: OVN tests failing...
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: no
+Last-Update: 2019-07-11
+
+--- openvswitch-2.11.0+2019.06.25+git.9ebe795035+ds1.orig/tests/ovn.at
++++ openvswitch-2.11.0+2019.06.25+git.9ebe795035+ds1/tests/ovn.at
+@@ -7667,227 +7667,6 @@ OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
+ OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+ AT_CLEANUP
+ 
+-AT_SETUP([ovn -- 4 HV, 1 LS, 1 LR, packet test with HA distributed router gateway port])
+-AT_SKIP_IF([test $HAVE_PYTHON = no])
+-ovn_start
+-
+-net_add n1
+-
+-sim_add hv1
+-as hv1
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.1
+-ovs-vsctl -- add-port br-int hv1-vif1 -- \
+-    set interface hv1-vif1 external-ids:iface-id=foo1 \
+-    options:tx_pcap=hv1/vif1-tx.pcap \
+-    options:rxq_pcap=hv1/vif1-rx.pcap \
+-    ofport-request=1
+-
+-sim_add gw1
+-as gw1
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.2
+-
+-sim_add gw2
+-as gw2
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.4
+-
+-sim_add ext1
+-as ext1
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.3
+-ovs-vsctl -- add-port br-int ext1-vif1 -- \
+-    set interface ext1-vif1 external-ids:iface-id=outside1 \
+-    options:tx_pcap=ext1/vif1-tx.pcap \
+-    options:rxq_pcap=ext1/vif1-rx.pcap \
+-    ofport-request=1
+-
+-# Pre-populate the hypervisors' ARP tables so that we don't lose any
+-# packets for ARP resolution (native tunneling doesn't queue packets
+-# for ARP resolution).
+-OVN_POPULATE_ARP
+-
+-ovn-nbctl create Logical_Router name=R1
+-
+-ovn-nbctl ls-add foo
+-ovn-nbctl ls-add alice
+-ovn-nbctl ls-add outside
+-
+-# Connect foo to R1
+-ovn-nbctl lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24
+-ovn-nbctl lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \
+-    type=router options:router-port=foo \
+-    -- lsp-set-addresses rp-foo router
+-
+-# Connect alice to R1 as distributed router gateway port on gw1
+-ovn-nbctl lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24
+-
+-ovn-nbctl \
+-    --id=@gc0 create Gateway_Chassis name=alice_gw1 \
+-                                     chassis_name=gw1 \
+-                                     priority=20 -- \
+-    --id=@gc1 create Gateway_Chassis name=alice_gw2 \
+-                                     chassis_name=gw2 \
+-                                     priority=10 -- \
+-    set Logical_Router_Port alice 'gateway_chassis=[@gc0, at gc1]'
+-
+-ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \
+-    type=router options:router-port=alice \
+-    -- lsp-set-addresses rp-alice router
+-
+-# Create logical port foo1 in foo
+-ovn-nbctl lsp-add foo foo1 \
+--- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2"
+-
+-# Create logical port outside1 in outside
+-ovn-nbctl lsp-add outside outside1 \
+--- lsp-set-addresses outside1 "f0:00:00:01:02:04 172.16.1.3"
+-
+-# Create localnet port in alice
+-ovn-nbctl lsp-add alice ln-alice
+-ovn-nbctl lsp-set-addresses ln-alice unknown
+-ovn-nbctl lsp-set-type ln-alice localnet
+-ovn-nbctl lsp-set-options ln-alice network_name=phys
+-
+-# Create localnet port in outside
+-ovn-nbctl lsp-add outside ln-outside
+-ovn-nbctl lsp-set-addresses ln-outside unknown
+-ovn-nbctl lsp-set-type ln-outside localnet
+-ovn-nbctl lsp-set-options ln-outside network_name=phys
+-
+-# Create bridge-mappings on gw1, gw2 and ext1, hv1 doesn't need
+-# mapping to the external network, is the one generating packets
+-as gw1 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
+-as gw2 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
+-as ext1 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
+-
+-AT_CHECK([ovn-nbctl --timeout=3 --wait=sb sync], [0], [ignore])
+-
+-# Allow some time for ovn-northd and ovn-controller to catch up.
+-# XXX This should be more systematic.
+-sleep 2
+-
+-ip_to_hex() {
+-    printf "%02x%02x%02x%02x" "$@"
+-}
+-
+-reset_pcap_file() {
+-    local iface=$1
+-    local pcap_file=$2
+-    ovs-vsctl -- set Interface $iface options:tx_pcap=dummy-tx.pcap \
+-options:rxq_pcap=dummy-rx.pcap
+-    rm -f ${pcap_file}*.pcap
+-    ovs-vsctl -- set Interface $iface options:tx_pcap=${pcap_file}-tx.pcap \
+-options:rxq_pcap=${pcap_file}-rx.pcap
+-}
+-
+-test_ip_packet()
+-{
+-    local active_gw=$1
+-    local backup_gw=$2
+-    local backup_vswitchd_dead=$3
+-
+-    # Send ip packet between foo1 and outside1
+-    src_mac="f00000010203" # foo1 mac
+-    dst_mac="000001010203" # rp-foo mac (internal router leg)
+-    src_ip=`ip_to_hex 192 168 1 2`
+-    dst_ip=`ip_to_hex 172 16 1 3`
+-    packet=${dst_mac}${src_mac}08004500001c0000000040110000${src_ip}${dst_ip}0035111100080000
+-
+-    # ARP request packet to expect at outside1
+-    #arp_request=ffffffffffff${src_mac}08060001080006040001${src_mac}${src_ip}000000000000${dst_ip}
+-
+-    as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet
+-
+-    # Send ARP reply from outside1 back to the router
+-    # XXX: note, we could avoid this if we plug this port into a netns
+-    # and setup the IP address into the port, so the kernel would simply reply
+-    src_mac="000002010203"
+-    reply_mac="f00000010204"
+-    dst_ip=`ip_to_hex 172 16 1 3`
+-    src_ip=`ip_to_hex 172 16 1 1`
+-    arp_reply=${src_mac}${reply_mac}08060001080006040002${reply_mac}${dst_ip}${src_mac}${src_ip}
+-
+-    as ext1 ovs-appctl netdev-dummy/receive ext1-vif1 $arp_reply
+-
+-    OVS_WAIT_UNTIL([
+-        test `as $active_gw ovs-ofctl dump-flows br-int | grep table=66 | \
+-grep actions=mod_dl_dst:f0:00:00:01:02:04 | wc -l` -eq 1
+-    ])
+-
+-    # Packet to Expect at ext1 chassis, outside1 port
+-    src_mac="000002010203"
+-    dst_mac="f00000010204"
+-    src_ip=`ip_to_hex 192 168 1 2`
+-    dst_ip=`ip_to_hex 172 16 1 3`
+-    expected=${dst_mac}${src_mac}08004500001c000000003f110100${src_ip}${dst_ip}0035111100080000
+-    echo $expected > ext1-vif1.expected
+-
+-    as $active_gw reset_pcap_file br-phys_n1 $active_gw/br-phys_n1
+-
+-    if test $backup_vswitchd_dead != 1; then
+-        # Reset the file only if vswitchd in backup gw is alive
+-        as $backup_gw reset_pcap_file br-phys_n1 $backup_gw/br-phys_n1
+-    fi
+-    as ext1 reset_pcap_file ext1-vif1 ext1/vif1
+-
+-    # Resend packet from foo1 to outside1
+-    as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet
+-
+-    sleep 1
+-
+-    OVN_CHECK_PACKETS([ext1/vif1-tx.pcap], [ext1-vif1.expected])
+-    $PYTHON "$top_srcdir/utilities/ovs-pcap.in" $active_gw/br-phys_n1-tx.pcap  > packets
+-    AT_CHECK([grep $expected packets | sort], [0], [expout])
+-    if test $backup_vswitchd_dead != 1; then
+-        # Check for backup gw only if vswitchd is alive
+-        $PYTHON "$top_srcdir/utilities/ovs-pcap.in" $backup_gw/br-phys_n1-tx.pcap  > packets
+-        AT_CHECK([grep $expected packets | sort], [0], [])
+-    fi
+-}
+-
+-test_ip_packet gw1 gw2 0
+-
+-ovn-nbctl --timeout=3 --wait=hv \
+-    --id=@gc0 create Gateway_Chassis name=alice_gw1 \
+-                                     chassis_name=gw1 \
+-                                     priority=10 -- \
+-    --id=@gc1 create Gateway_Chassis name=alice_gw2 \
+-                                     chassis_name=gw2 \
+-                                     priority=20 -- \
+-    set Logical_Router_Port alice 'gateway_chassis=[@gc0, at gc1]'
+-
+-test_ip_packet gw2 gw1 0
+-
+-# Get the claim count of both gw1 and gw2.
+-gw1_claim_ct=`grep "cr-alice: Claiming" gw1/ovn-controller.log | wc -l`
+-gw2_claim_ct=`grep "cr-alice: Claiming" gw2/ovn-controller.log | wc -l`
+-
+-# Stop ovs-vswitchd in gw2. gw1 should claim the gateway port.
+-as gw2
+-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
+-
+-# gw1 should claim the cr-alice and the claim count of gw1 should be
+-# incremented by 1.
+-gw1_claim_ct=$((gw1_claim_ct+1))
+-
+-OVS_WAIT_UNTIL([test $gw1_claim_ct = `cat gw1/ovn-controller.log \
+-| grep -c "cr-alice: Claiming"`])
+-
+-AT_CHECK([test $gw2_claim_ct = `cat gw2/ovn-controller.log | \
+-grep -c "cr-alice: Claiming"`])
+-
+-test_ip_packet gw1 gw2 1
+-
+-as gw2
+-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+-
+-OVN_CLEANUP([hv1],[gw1],[ext1])
+-
+-AT_CLEANUP
+-
+ AT_SETUP([ovn -- 4 HV, 3 LS, 2 LR, packet test with HA distributed router gateway port])
+ AT_SKIP_IF([test $HAVE_PYTHON = no])
+ ovn_start
+@@ -9727,91 +9506,6 @@ OVN_CLEANUP([hv1],[hv2],[hv3])
+ 
+ AT_CLEANUP
+ 
+-AT_SETUP([ovn -- ensure one gw controller restart in HA doesn't bounce the master])
+-AT_SKIP_IF([test $HAVE_PYTHON = no])
+-ovn_start
+-
+-net_add n1
+-
+-# create two gateways with external network connectivity
+-for i in 1 2; do
+-    sim_add gw$i
+-    as gw$i
+-    ovs-vsctl add-br br-phys
+-    ovn_attach n1 br-phys 192.168.0.$i
+-    ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
+-done
+-
+-ovn-nbctl ls-add inside
+-ovn-nbctl ls-add outside
+-
+-# create one hypervisors with a vif port the internal network
+-sim_add hv1
+-as hv1
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.11
+-ovs-vsctl -- add-port br-int hv1-vif1 -- \
+-    set interface hv1-vif1 external-ids:iface-id=inside1 \
+-    options:tx_pcap=hv1/vif1-tx.pcap \
+-    options:rxq_pcap=hv1/vif1-rx.pcap \
+-    ofport-request=1
+-
+-ovn-nbctl lsp-add inside inside1 \
+-        -- lsp-set-addresses inside1 "f0:00:00:01:22:01 192.168.1.101"
+-
+-
+-OVN_POPULATE_ARP
+-
+-ovn-nbctl create Logical_Router name=R1
+-
+-# Connect inside to R1
+-ovn-nbctl lrp-add R1 inside 00:00:01:01:02:03 192.168.1.1/24
+-ovn-nbctl lsp-add inside rp-inside -- set Logical_Switch_Port rp-inside \
+-    type=router options:router-port=inside \
+-    -- lsp-set-addresses rp-inside router
+-
+-# Connect outside to R1 as distributed router gateway port on gw1+gw2
+-ovn-nbctl lrp-add R1 outside 00:00:02:01:02:04 192.168.0.101/24
+-
+-ovn-nbctl --id=@gc0 create Gateway_Chassis \
+-                    name=outside_gw1 chassis_name=gw1 priority=20 -- \
+-          --id=@gc1 create Gateway_Chassis \
+-                    name=outside_gw2 chassis_name=gw2 priority=10 -- \
+-          set Logical_Router_Port outside 'gateway_chassis=[@gc0, at gc1]'
+-
+-ovn-nbctl lsp-add outside rp-outside -- set Logical_Switch_Port rp-outside \
+-    type=router options:router-port=outside \
+-    -- lsp-set-addresses rp-outside router
+-
+-# Create localnet port in outside
+-ovn-nbctl lsp-add outside ln-outside
+-ovn-nbctl lsp-set-addresses ln-outside unknown
+-ovn-nbctl lsp-set-type ln-outside localnet
+-ovn-nbctl lsp-set-options ln-outside network_name=phys
+-
+-# Allow some time for ovn-northd and ovn-controller to catch up.
+-ovn-nbctl --wait=hv --timeout=3 sync
+-
+-# currently when ovn-controller is restarted, the old entry is deleted
+-# and a new one is created, which leaves the Gateway_Chassis with
+-# an empty chassis for a while. NOTE: restarting ovn-controller in tests
+-# doesn't have the same effect because "name" is conserved, and the
+-# Chassis entry is not replaced.
+-
+-> gw1/ovn-controller.log
+-
+-gw2_chassis=$(ovn-sbctl --bare --columns=_uuid find Chassis name=gw2)
+-ovn-sbctl destroy Chassis $gw2_chassis
+-
+-# Ensure ovn-controller has processed latest sbdb update
+-# ovn-nbctl --wait=hv sync
+-
+-AT_CHECK([grep "Releasing lport" gw1/ovn-controller.log], [1], [])
+-
+-OVN_CLEANUP([gw1],[gw2],[hv1])
+-
+-AT_CLEANUP
+-
+ AT_SETUP([ovn -- IPv6 Neighbor Solicitation for unknown MAC])
+ AT_KEYWORDS([ovn-nd_ns for unknown mac])
+ AT_SKIP_IF([test $HAVE_PYTHON = no])
diff --git a/debian/patches/fix-ovs-monitor-ipsec.patch b/debian/patches/fix-ovs-monitor-ipsec.patch
new file mode 100644
index 0000000..2d2b2e8
--- /dev/null
+++ b/debian/patches/fix-ovs-monitor-ipsec.patch
@@ -0,0 +1,117 @@
+Description: Fix ovs-monitor-ipsec
+ Open subprocesses in the text mode.
+ Use valid strongSwan configuration.
+ Use python3 dictionary iterators.
+Forwarded: no
+Author: Jakub Safarik <jsfrk at protonmail.com>
+Last-Update: 2019-09-29
+--- a/ipsec/ovs-monitor-ipsec.in
++++ b/ipsec/ovs-monitor-ipsec.in
+@@ -99,7 +99,8 @@
+         the IPsec policy."""
+         policies = {}
+         proc = subprocess.Popen([self.IP, 'xfrm', 'policy'],
+-                                stdout=subprocess.PIPE)
++                                stdout=subprocess.PIPE,
++                                universal_newlines=True)
+         while True:
+             line = proc.stdout.readline().strip()
+             if line == '':
+@@ -122,7 +123,8 @@
+         is SELECTOR."""
+         securities = {}
+         proc = subprocess.Popen([self.IP, 'xfrm', 'state'],
+-                                stdout=subprocess.PIPE)
++                                stdout=subprocess.PIPE,
++                                universal_newlines=True)
+         while True:
+             line = proc.stdout.readline().strip()
+             if line == '':
+@@ -145,10 +147,18 @@
+     """This class does StrongSwan specific configurations."""
+ 
+     STRONGSWAN_CONF = """%s
+-charon.plugins.kernel-netlink.set_proto_port_transport_sa = yes
+-charon.plugins.kernel-netlink.xfrm_ack_expires = 10
+-charon.load_modular = yes
+-charon.plugins.gcm.load = yes
++charon {
++    plugins {
++        kernel-netlink {
++            set_proto_port_transport_sa = yes
++            xfrm_ack_expires = 10
++        }
++        gcm {
++            load = yes
++        }
++    }
++    load_modular = yes
++}
+ """ % (FILE_HEADER)
+ 
+     CONF_HEADER = """%s
+@@ -243,7 +253,9 @@
+         sample line from the parsed outpus as <value>. """
+ 
+         conns = {}
+-        proc = subprocess.Popen([self.IPSEC, 'status'], stdout=subprocess.PIPE)
++        proc = subprocess.Popen([self.IPSEC, 'status'],
++                                stdout=subprocess.PIPE,
++                                universal_newlines=True)
+ 
+         while True:
+             line = proc.stdout.readline().strip()
+@@ -340,7 +352,7 @@
+         # about possibility of ovs-monitor-ipsec to block for each tunnel
+         # while strongSwan sends IKE messages over Internet.
+         conns_dict = self.get_active_conns()
+-        for ifname, conns in conns_dict.iteritems():
++        for ifname, conns in conns_dict.items():
+             tunnel = monitor.tunnels.get(ifname)
+             for conn in conns:
+                 # IPsec "connection" names that we choose in strongswan
+@@ -536,7 +548,7 @@
+ 
+         # Delete old connections
+         conns_dict = self.get_active_conns()
+-        for ifname, conns in conns_dict.iteritems():
++        for ifname, conns in conns_dict.items():
+             tunnel = monitor.tunnels.get(ifname)
+ 
+             for conn in conns:
+@@ -989,7 +1001,7 @@
+         skb_mark = None
+         is_valid = False
+ 
+-        for row in data["Open_vSwitch"].rows.itervalues():
++        for row in data["Open_vSwitch"].rows.values():
+             pki[0] = row.other_config.get("certificate")
+             pki[1] = row.other_config.get("private_key")
+             pki[2] = row.other_config.get("ca_cert")
+@@ -1016,7 +1028,7 @@
+         table."""
+         ifaces = set()
+ 
+-        for row in data["Interface"].rows.itervalues():
++        for row in data["Interface"].rows.values():
+             if not self.is_tunneling_type_supported(row.type):
+                 continue
+             if not self.is_ipsec_required(row.options):
+@@ -1047,7 +1059,7 @@
+             return
+         s = ""
+         conns = self.ike_helper.get_active_conns()
+-        for name, tunnel in self.tunnels.iteritems():
++        for name, tunnel in self.tunnels.items():
+             s += tunnel.show(policies, securities, conns)
+         unix_conn.reply(s)
+ 
+@@ -1064,7 +1076,7 @@
+         if self.ike_helper.config_global(self):
+             needs_refresh = True
+ 
+-        for name, tunnel in self.tunnels.iteritems():
++        for name, tunnel in self.tunnels.items():
+             if tunnel.last_refreshed_version != tunnel.version:
+                 tunnel.last_refreshed_version = tunnel.version
+                 needs_refresh = True
diff --git a/debian/patches/py3-compat.patch b/debian/patches/py3-compat.patch
new file mode 100644
index 0000000..c758e79
--- /dev/null
+++ b/debian/patches/py3-compat.patch
@@ -0,0 +1,812 @@
+From 9f2edcde382b2de1f2b49c8fbfb0497385395a8c Mon Sep 17 00:00:00 2001
+From: James Page <james.page at ubuntu.com>
+Date: Thu, 8 Feb 2018 09:46:46 +0000
+Subject: [PATCH] Python 3 support
+
+Misc fixes to Python based tooling for compatibility with
+Python 2 and 3.
+
+Signed-off-by: James Page <james.page at ubuntu.com>
+---
+ ovn/utilities/ovn-detrace.in     | 20 ++++++++--------
+ python/ovstest/rpcserver.py      | 16 ++++---------
+ python/ovstest/tcp.py            |  4 ++--
+ python/ovstest/util.py           |  4 +---
+ python/ovstest/vswitch.py        |  5 +++-
+ utilities/bugtool/ovs-bugtool.in | 22 +++++++++---------
+ utilities/ovs-check-dead-ifs.in  |  8 ++++---
+ utilities/ovs-dpctl-top.in       | 18 ++++++++-------
+ utilities/ovs-l3ping.in          | 12 ++++++----
+ utilities/ovs-parse-backtrace.in | 14 +++++++-----
+ utilities/ovs-tcpdump.in         |  2 ++
+ utilities/ovs-tcpundump.in       |  2 ++
+ utilities/ovs-test.in            | 39 +++++++++++++++++---------------
+ utilities/ovs-vlan-test.in       | 25 +++++++++++---------
+ 14 files changed, 102 insertions(+), 89 deletions(-)
+
+Index: openvswitch/ovn/utilities/ovn-detrace.in
+===================================================================
+--- openvswitch.orig/ovn/utilities/ovn-detrace.in
++++ openvswitch/ovn/utilities/ovn-detrace.in
+@@ -14,6 +14,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ 
++from __future__ import print_function
++
+ import getopt
+ import os
+ import re
+@@ -37,7 +39,7 @@ argv0 = sys.argv[0]
+ 
+ 
+ def usage():
+-    print """\
++    print("""\
+ %(argv0)s:
+ usage: %(argv0)s < FILE
+ where FILE is output from ovs-appctl ofproto/trace.
+@@ -47,7 +49,7 @@ The following options are also available
+   -V, --version               display version information
+   --ovnsb=DATABASE            use DATABASE as southbound DB
+   --ovnnb=DATABASE            use DATABASE as northbound DB\
+-""" % {'argv0': argv0}
++""" % {'argv0': argv0})
+     sys.exit(0)
+ 
+ 
+@@ -107,17 +109,17 @@ def print_lflow(lflow, prefix):
+     ldp_uuid = lflow.logical_datapath.uuid
+     ldp_name = str(lflow.logical_datapath.external_ids.get('name'))
+ 
+-    print '%sLogical datapath: "%s" (%s) [%s]' % (prefix,
++    print('%sLogical datapath: "%s" (%s) [%s]' % (prefix,
+                                                   ldp_name,
+                                                   ldp_uuid,
+-                                                  lflow.pipeline)
+-    print "%sLogical flow: table=%s (%s), priority=%s, " \
++                                                  lflow.pipeline))
++    print("%sLogical flow: table=%s (%s), priority=%s, " \
+           "match=(%s), actions=(%s)" % (prefix,
+                                         lflow.table_id,
+                                         lflow.external_ids.get('stage-name'),
+                                         lflow.priority,
+                                         str(lflow.match).strip('"'),
+-                                        str(lflow.actions).strip('"'))
++                                        str(lflow.actions).strip('"')))
+ 
+ 
+ def print_lflow_nb_hint(lflow, prefix, ovnnb_db):
+@@ -138,7 +140,7 @@ def print_lflow_nb_hint(lflow, prefix, o
+                                      acl.action)
+         if acl.log:
+             output += ' (log)'
+-        print output
++        print(output)
+ 
+ 
+ def main():
+@@ -156,7 +158,7 @@ def main():
+         if key in ['-h', '--help']:
+             usage()
+         elif key in ['-V', '--version']:
+-            print "%s (Open vSwitch) @VERSION@" % argv0
++            print("%s (Open vSwitch) @VERSION@" % argv0)
+         elif key in ['--ovnsb']:
+             ovnsb_db = value
+         elif key in ['--ovnnb']:
+@@ -196,7 +198,7 @@ def main():
+                 print_lflow_nb_hint(lflow, "    * ", ovsdb_ovnnb)
+                 cookie = None
+ 
+-        print line.strip()
++        print(line.strip())
+         if line == "":
+             break
+ 
+Index: openvswitch/python/ovstest/rpcserver.py
+===================================================================
+--- openvswitch.orig/python/ovstest/rpcserver.py
++++ openvswitch/python/ovstest/rpcserver.py
+@@ -16,26 +16,18 @@
+ rpcserver is an XML RPC server that allows RPC client to initiate tests
+ """
+ 
+-from __future__ import print_function
++from __future__ import print_function, absolute_import
+ 
+ import sys
+ 
+-import exceptions
+-
+ import six.moves.xmlrpc_client
+ 
+-import tcp
+-
+ from twisted.internet import reactor
+ from twisted.internet.error import CannotListenError
+ from twisted.web import server
+ from twisted.web import xmlrpc
+ 
+-import udp
+-
+-import util
+-
+-import vswitch
++from . import tcp, udp, util, vswitch
+ 
+ 
+ class TestArena(xmlrpc.XMLRPC):
+@@ -213,7 +205,7 @@ class TestArena(xmlrpc.XMLRPC):
+             (_, port) = self.__get_handle_resources(handle)
+             port.loseConnection()
+             self.__delete_handle(handle)
+-        except exceptions.KeyError:
++        except KeyError:
+             return -1
+         return 0
+ 
+@@ -225,7 +217,7 @@ class TestArena(xmlrpc.XMLRPC):
+             (_, connector) = self.__get_handle_resources(handle)
+             connector.disconnect()
+             self.__delete_handle(handle)
+-        except exceptions.KeyError:
++        except KeyError:
+             return -1
+         return 0
+ 
+Index: openvswitch/python/ovstest/tcp.py
+===================================================================
+--- openvswitch.orig/python/ovstest/tcp.py
++++ openvswitch/python/ovstest/tcp.py
+@@ -21,7 +21,7 @@ import time
+ from twisted.internet import interfaces
+ from twisted.internet.protocol import ClientFactory, Factory, Protocol
+ 
+-from zope.interface import implements
++from zope.interface.declarations import implementer
+ 
+ 
+ class TcpListenerConnection(Protocol):
+@@ -55,8 +55,8 @@ class TcpListenerFactory(Factory):
+         return str(self.stats)
+ 
+ 
++ at implementer(interfaces.IPushProducer)
+ class Producer(object):
+-    implements(interfaces.IPushProducer)
+     """
+     This producer class generates infinite byte stream for a specified time
+     duration
+Index: openvswitch/python/ovstest/util.py
+===================================================================
+--- openvswitch.orig/python/ovstest/util.py
++++ openvswitch/python/ovstest/util.py
+@@ -26,8 +26,6 @@ import socket
+ import struct
+ import subprocess
+ 
+-import exceptions
+-
+ import six.moves.xmlrpc_client
+ from six.moves import range
+ 
+@@ -89,7 +87,7 @@ def start_process(args):
+                              stderr=subprocess.PIPE)
+         out, err = p.communicate()
+         return (p.returncode, out, err)
+-    except exceptions.OSError:
++    except OSError:
+         return (-1, None, None)
+ 
+ 
+Index: openvswitch/python/ovstest/vswitch.py
+===================================================================
+--- openvswitch.orig/python/ovstest/vswitch.py
++++ openvswitch/python/ovstest/vswitch.py
+@@ -15,7 +15,10 @@
+ """
+ vswitch module allows its callers to interact with OVS DB.
+ """
+-import util
++
++from __future__ import absolute_import
++
++from . import util
+ 
+ 
+ def ovs_vsctl_add_bridge(bridge):
+Index: openvswitch/utilities/bugtool/ovs-bugtool.in
+===================================================================
+--- openvswitch.orig/utilities/bugtool/ovs-bugtool.in
++++ openvswitch/utilities/bugtool/ovs-bugtool.in
+@@ -35,8 +35,6 @@
+ 
+ from __future__ import print_function
+ 
+-import StringIO
+-import commands
+ import fcntl
+ import getopt
+ import hashlib
+@@ -50,11 +48,13 @@ import warnings
+ import zipfile
+ from select import select
+ from signal import SIGTERM
+-from subprocess import PIPE, Popen
++from subprocess import PIPE, Popen, check_output
+ 
+ from xml.dom.minidom import getDOMImplementation, parse
+ 
+ from six.moves import input
++from six.moves import StringIO
++
+ warnings.filterwarnings(action="ignore", category=DeprecationWarning)
+ 
+ OS_RELEASE = platform.release()
+@@ -785,7 +785,7 @@ def dump_scsi_hosts(cap):
+ 
+ 
+ def module_info(cap):
+-    output = StringIO.StringIO()
++    output = StringIO()
+     modules = open(PROC_MODULES, 'r')
+     procs = []
+ 
+@@ -809,7 +809,7 @@ def multipathd_topology(cap):
+ 
+ 
+ def dp_list():
+-    output = StringIO.StringIO()
++    output = StringIO()
+     procs = [ProcOutput([OVS_DPCTL, 'dump-dps'],
+              caps[CAP_NETWORK_STATUS][MAX_TIME], output)]
+ 
+@@ -831,7 +831,7 @@ def collect_ovsdb():
+             if os.path.isfile(OPENVSWITCH_COMPACT_DB):
+                 os.unlink(OPENVSWITCH_COMPACT_DB)
+ 
+-            output = StringIO.StringIO()
++            output = StringIO()
+             max_time = 5
+             procs = [ProcOutput(['ovsdb-tool', 'compact',
+                                 OPENVSWITCH_CONF_DB, OPENVSWITCH_COMPACT_DB],
+@@ -874,7 +874,7 @@ def fd_usage(cap):
+ 
+ 
+ def dump_rdac_groups(cap):
+-    output = StringIO.StringIO()
++    output = StringIO()
+     procs = [ProcOutput([MPPUTIL, '-a'], caps[cap][MAX_TIME], output)]
+ 
+     run_procs([procs])
+@@ -1098,7 +1098,7 @@ def make_inventory(inventory, subdir):
+     s.setAttribute('date', time.strftime('%c'))
+     s.setAttribute('hostname', platform.node())
+     s.setAttribute('uname', ' '.join(platform.uname()))
+-    s.setAttribute('uptime', commands.getoutput(UPTIME))
++    s.setAttribute('uptime', check_output([UPTIME]))
+     document.getElementsByTagName(INVENTORY_XML_ROOT)[0].appendChild(s)
+ 
+     map(lambda k_v: inventory_entry(document, subdir, k_v[0], k_v[1]),
+@@ -1394,13 +1394,13 @@ def get_free_disk_space(path):
+     return s.f_frsize * s.f_bfree
+ 
+ 
+-class StringIOmtime(StringIO.StringIO):
++class StringIOmtime(StringIO):
+     def __init__(self, buf=''):
+-        StringIO.StringIO.__init__(self, buf)
++        StringIO.__init__(self, buf)
+         self.mtime = time.time()
+ 
+     def write(self, s):
+-        StringIO.StringIO.write(self, s)
++        StringIO.write(self, s)
+         self.mtime = time.time()
+ 
+ 
+Index: openvswitch/utilities/ovs-check-dead-ifs.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-check-dead-ifs.in
++++ openvswitch/utilities/ovs-check-dead-ifs.in
+@@ -1,5 +1,7 @@
+ #! @PYTHON@
+ 
++from __future__ import print_function
++
+ import os
+ import re
+ import stat
+@@ -37,7 +39,7 @@ for ifname in os.listdir("/sys/class/net
+     except IOError:
+         pass
+     except ValueError:
+-        print "%s: unexpected format\n" % fn
++        print("%s: unexpected format\n" % fn)
+ 
+ # Get inodes for all packet sockets whose ifindexes don't exist.
+ invalid_inodes = set()
+@@ -95,8 +97,8 @@ for pid in os.listdir("/proc"):
+             bad_pids.add(pid)
+ 
+ if bad_pids:
+-    print """
++    print("""
+ The following processes are listening for packets to arrive on network devices
+-that no longer exist. You may want to restart them."""
++that no longer exist. You may want to restart them.""")
+     sys.stdout.flush()
+     os.execvp("ps", ["ps"] + ["%s" % pid for pid in bad_pids])
+Index: openvswitch/utilities/ovs-dpctl-top.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-dpctl-top.in
++++ openvswitch/utilities/ovs-dpctl-top.in
+@@ -131,6 +131,8 @@ $ ovs-dpctl-top --script --flow-file dum
+ # pylint: disable-msg=R0913
+ # pylint: disable-msg=R0914
+ 
++from __future__ import print_function
++
+ import sys
+ import os
+ try:
+@@ -418,7 +420,7 @@ def flow_line_iter(line):
+             rc.append(element)
+             element = ""
+         else:
+-            element += ch
++            element += str(ch)
+ 
+     if (paren_count):
+         raise ValueError(line)
+@@ -467,7 +469,7 @@ def flow_line_split(line):
+ 
+     """
+ 
+-    results = re.split(', ', line)
++    results = re.split(b', ', line)
+ 
+     (field, stats, action) = (results[0], results[1:-1], results[-1])
+ 
+@@ -591,7 +593,7 @@ def flows_read(ihdl, flow_db):
+ 
+         try:
+             flow_db.flow_line_add(line)
+-        except ValueError, arg:
++        except ValueError as arg:
+             logging.error(arg)
+ 
+     return flow_db
+@@ -957,7 +959,7 @@ class FlowDB:
+         change order of fields of the same flow.
+         """
+ 
+-        line = line.rstrip("\n")
++        line = line.rstrip(b"\n")
+         (fields, stats, _) = flow_line_split(line)
+ 
+         try:
+@@ -987,7 +989,7 @@ class FlowDB:
+ 
+             self.flow_event(fields_dict, stats_old_dict, stats_dict)
+ 
+-        except ValueError, arg:
++        except ValueError as arg:
+             logging.error(arg)
+             self._error_count += 1
+             raise
+@@ -1191,7 +1193,7 @@ def flows_top(args):
+                         flows_read(ihdl, flow_db)
+                     finally:
+                         ihdl.close()
+-                except OSError, arg:
++                except OSError as arg:
+                     logging.critical(arg)
+                     break
+ 
+@@ -1219,7 +1221,7 @@ def flows_top(args):
+ 
+     # repeat output
+     for (count, line) in lines:
+-        print line
++        print(line)
+ 
+ 
+ def flows_script(args):
+@@ -1248,7 +1250,7 @@ def flows_script(args):
+     render = Render(console_width, Render.FIELD_SELECT_SCRIPT)
+ 
+     for line in render.format(flow_db):
+-        print line
++        print(line)
+ 
+ 
+ def main():
+Index: openvswitch/utilities/ovs-l3ping.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-l3ping.in
++++ openvswitch/utilities/ovs-l3ping.in
+@@ -18,8 +18,10 @@ opening holes in the firewall for the XM
+ achieved by tunneling the control connection inside the tunnel itself.
+ """
+ 
++from __future__ import print_function
++
+ import socket
+-import xmlrpclib
++from six.moves import xmlrpc_client as xmlrpclib
+ 
+ import ovstest.args as args
+ import ovstest.tests as tests
+@@ -64,13 +66,13 @@ if __name__ == '__main__':
+             ps = get_packet_sizes(me, he, args.client[0])
+             tests.do_direct_tests(me, he, bandwidth, interval, ps)
+     except KeyboardInterrupt:
+-        print "Terminating"
++        print("Terminating")
+     except xmlrpclib.Fault:
+-        print "Couldn't contact peer"
++        print("Couldn't contact peer")
+     except socket.error:
+-        print "Couldn't contact peer"
++        print("Couldn't contact peer")
+     except xmlrpclib.ProtocolError:
+-        print "XMLRPC control channel was abruptly terminated"
++        print("XMLRPC control channel was abruptly terminated")
+     finally:
+         if local_server is not None:
+             local_server.terminate()
+Index: openvswitch/utilities/ovs-parse-backtrace.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-parse-backtrace.in
++++ openvswitch/utilities/ovs-parse-backtrace.in
+@@ -14,6 +14,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ 
++from __future__ import print_function
++
+ import optparse
+ import os
+ import re
+@@ -70,7 +72,7 @@ result.  Expected usage is for ovs-appct
+         if os.path.exists(debug):
+             binary = debug
+ 
+-    print "Binary: %s\n" % binary
++    print("Binary: %s\n" % binary)
+ 
+     stdin = sys.stdin.read()
+ 
+@@ -88,15 +90,15 @@ result.  Expected usage is for ovs-appct
+     for lines, count in traces:
+         longest = max(len(l) for l in lines)
+ 
+-        print "Backtrace Count: %d" % count
++        print("Backtrace Count: %d" % count)
+         for line in lines:
+             match = re.search(r'\[(0x.*)]', line)
+             if match:
+-                print "%s %s" % (line.ljust(longest),
+-                                 addr2line(binary, match.group(1)))
++                print("%s %s" % (line.ljust(longest),
++                                 addr2line(binary, match.group(1))))
+             else:
+-                print line
+-        print
++                print(line)
++        print()
+ 
+ 
+ if __name__ == "__main__":
+Index: openvswitch/utilities/ovs-tcpdump.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-tcpdump.in
++++ openvswitch/utilities/ovs-tcpdump.in
+@@ -14,6 +14,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ 
++from __future__ import print_function
++
+ import fcntl
+ 
+ import os
+Index: openvswitch/utilities/ovs-tcpundump.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-tcpundump.in
++++ openvswitch/utilities/ovs-tcpundump.in
+@@ -14,6 +14,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ 
++from __future__ import print_function
++
+ import getopt
+ import re
+ import sys
+Index: openvswitch/utilities/ovs-test.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-test.in
++++ openvswitch/utilities/ovs-test.in
+@@ -16,6 +16,8 @@
+ ovs test utility that allows to do tests between remote hosts
+ """
+ 
++from __future__ import print_function
++
+ import fcntl
+ import math
+ import os
+@@ -25,7 +27,6 @@ import socket
+ import subprocess
+ import sys
+ import time
+-import xmlrpclib
+ 
+ import argparse
+ import twisted
+@@ -35,6 +36,8 @@ import ovstest.rpcserver as rpcserver
+ import ovstest.tests as tests
+ import ovstest.util as util
+ 
++from six.moves import xmlrpc_client as xmlrpclib
++
+ DEFAULT_TEST_BRIDGE = "ovstestbr0"
+ DEFAULT_TEST_PORT = "ovstestport0"
+ DEFAULT_TEST_TUN = "ovstestport1"
+@@ -42,7 +45,7 @@ DEFAULT_TEST_TUN = "ovstestport1"
+ 
+ def collect_information(node):
+     """Print information about hosts that will do testing"""
+-    print "Node %s:%u " % (node[0], node[1])
++    print("Node %s:%u " % (node[0], node[1]))
+     server = util.rpc_client(node[0], node[1])
+     interface_name = server.get_interface(node[0])
+     phys_iface = None
+@@ -50,8 +53,8 @@ def collect_information(node):
+     mtu = 1500
+ 
+     if not interface_name:
+-        print ("Could not find interface that has %s IP address."
+-               "Make sure that you specified correct Outer IP." % (node[0]))
++        print("Could not find interface that has %s IP address."
++              "Make sure that you specified correct Outer IP." % (node[0]))
+     else:
+         if server.is_ovs_bridge(interface_name):
+             phys_iface = server.get_iface_from_bridge(interface_name)
+@@ -62,18 +65,18 @@ def collect_information(node):
+         driver = server.get_driver(phys_iface)
+         mtu = server.get_interface_mtu(phys_iface)
+ 
+-        print "Will be using %s (%s) with MTU %u" % (phys_iface, node[0],
+-                                                    mtu)
++        print("Will be using %s (%s) with MTU %u" % (phys_iface, node[0],
++                                                     mtu))
+         if not driver:
+-            print "Unable to get driver information from ethtool."
++            print("Unable to get driver information from ethtool.")
+         else:
+-            print "On this host %s has %s." % (phys_iface, driver)
++            print("On this host %s has %s." % (phys_iface, driver))
+ 
+     if not uname:
+-        print "Unable to retrieve kernel information. Is this Linux?"
++        print("Unable to retrieve kernel information. Is this Linux?")
+     else:
+-        print "Running kernel %s." % uname
+-    print "\n"
++        print("Running kernel %s." % uname)
++    print()
+ 
+     return mtu
+ 
+@@ -113,29 +116,29 @@ if __name__ == '__main__':
+             tunnel_modes = ovs_args.tunnelModes
+ 
+             if direct is not None:
+-                print "Performing direct tests"
++                print("Performing direct tests")
+                 tests.do_direct_tests(node2, node1, bandwidth, interval, ps)
+ 
+             if vlan_tag is not None:
+-                print "Performing VLAN tests"
++                print("Performing VLAN tests")
+                 tests.do_vlan_tests(node2, node1, bandwidth, interval, ps,
+                                     vlan_tag)
+ 
+             for tmode in tunnel_modes:
+-                print "Performing", tmode, "tests"
++                print("Performing", tmode, "tests")
+                 tests.do_l3_tests(node2, node1, bandwidth, interval, ps,
+                                   tmode)
+ 
+     except KeyboardInterrupt:
+         pass
+     except xmlrpclib.Fault:
+-        print "Couldn't establish XMLRPC control channel"
++        print("Couldn't establish XMLRPC control channel")
+     except socket.error:
+-        print "Couldn't establish XMLRPC control channel"
++        print("Couldn't establish XMLRPC control channel")
+     except xmlrpclib.ProtocolError:
+-        print "XMLRPC control channel was abruptly terminated"
++        print("XMLRPC control channel was abruptly terminated")
+     except twisted.internet.error.CannotListenError:
+-        print "Couldn't start XMLRPC server on port %u" % ovs_args.port
++        print("Couldn't start XMLRPC server on port %u" % ovs_args.port)
+     finally:
+         if local_server is not None:
+             local_server.terminate()
+Index: openvswitch/utilities/ovs-vlan-test.in
+===================================================================
+--- openvswitch.orig/utilities/ovs-vlan-test.in
++++ openvswitch/utilities/ovs-vlan-test.in
+@@ -14,9 +14,9 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ 
+-import BaseHTTPServer
++from __future__ import print_function
++
+ import getopt
+-import httplib
+ import os
+ import threading
+ import time
+@@ -24,6 +24,9 @@ import signal #Causes keyboard interrupt
+ import socket
+ import sys
+ 
++from six.moves import BaseHTTPServer
++from six.moves import http_client as httplib
++
+ print_safe_lock = threading.Lock()
+ def print_safe(s):
+     print_safe_lock.acquire()
+@@ -84,7 +87,7 @@ class UDPReceiver:
+ 
+         try:
+             sock.bind((self.vlan_ip, self.vlan_port))
+-        except socket.error, e:
++        except socket.error as e:
+             print_safe('Failed to bind to %s:%d with error: %s'
+                     % (self.vlan_ip, self.vlan_port, e))
+             os._exit(1) #sys.exit only exits the current thread.
+@@ -95,7 +98,7 @@ class UDPReceiver:
+                 data, _ = sock.recvfrom(4096)
+             except socket.timeout:
+                 continue
+-            except socket.error, e:
++            except socket.error as e:
+                 print_safe('Failed to receive from %s:%d with error: %s'
+                     % (self.vlan_ip, self.vlan_port, e))
+                 os._exit(1)
+@@ -180,7 +183,7 @@ class VlanServer:
+             for _ in range(send_time * 2):
+                 try:
+                     send_packet(test_id, size, ip, port)
+-                except socket.error, e:
++                except socket.error as e:
+                     self.set_result(test_id, 'Failure: ' + str(e))
+                     return
+                 time.sleep(.5)
+@@ -196,7 +199,7 @@ class VlanServer:
+         try:
+             BaseHTTPServer.HTTPServer((self.server_ip, self.server_port),
+                     VlanServerHandler).serve_forever()
+-        except socket.error, e:
++        except socket.error as e:
+             print_safe('Failed to start control server: %s' % e)
+             self.udp_recv.stop()
+ 
+@@ -256,7 +259,7 @@ class VlanClient:
+         try:
+             conn = self.request('/start/recv')
+             data = conn.getresponse().read()
+-        except (socket.error, httplib.HTTPException), e:
++        except (socket.error, httplib.HTTPException) as e:
+             error_msg(e)
+             return False
+ 
+@@ -277,7 +280,7 @@ class VlanClient:
+                 send_packet(test_id, size, ip, port)
+                 resp = self.request('/result/%d' % test_id).getresponse()
+                 data = resp.read()
+-            except (socket.error, httplib.HTTPException), e:
++            except (socket.error, httplib.HTTPException) as e:
+                 error_msg(e)
+                 return False
+ 
+@@ -302,7 +305,7 @@ class VlanClient:
+         try:
+             conn    = self.request(resource)
+             test_id = conn.getresponse().read()
+-        except (socket.error, httplib.HTTPException), e:
++        except (socket.error, httplib.HTTPException) as e:
+             error_msg(e)
+             return False
+ 
+@@ -335,7 +338,7 @@ class VlanClient:
+         try:
+             resp = self.request('/ping').getresponse()
+             data = resp.read()
+-        except (socket.error, httplib.HTTPException), e:
++        except (socket.error, httplib.HTTPException) as e:
+             error_msg(e)
+             return False
+ 
+@@ -383,7 +386,7 @@ def main():
+     try:
+         options, args = getopt.gnu_getopt(sys.argv[1:], 'hVs',
+                                           ['help', 'version', 'server'])
+-    except getopt.GetoptError, geo:
++    except getopt.GetoptError as geo:
+         print_safe('%s: %s\n' % (sys.argv[0], geo.msg))
+         return 1
+ 
+Index: openvswitch/Makefile.am
+===================================================================
+--- openvswitch.orig/Makefile.am
++++ openvswitch/Makefile.am
+@@ -53,6 +53,15 @@ psep=";"
+ else
+ psep=":"
+ endif
++
++# If Python 3 is present, default python tooling
++# to use PYTHON3 for execution.
++if HAVE_PYTHON3
++PYTHON_EXEC = $(PYTHON3)
++else
++PYTHON_EXEC = $(PYTHON)
++endif
++
+ # PYTHONDONTWRITEBYTECODE=yes keeps Python from creating .pyc and .pyo
+ # files.  Creating .py[co] works OK for any given version of Open
+ # vSwitch, but it causes trouble if you switch from a version with
+@@ -60,7 +69,7 @@ endif
+ # foo/__init__.pyc will cause Python to ignore foo.py.
+ run_python = \
+ 	PYTHONPATH=$(top_srcdir)/python$(psep)$$PYTHONPATH \
+-	PYTHONDONTWRITEBYTECODE=yes $(PYTHON)
++	PYTHONDONTWRITEBYTECODE=yes $(PYTHON_EXEC)
+ 
+ ALL_LOCAL =
+ BUILT_SOURCES =
+@@ -147,13 +156,13 @@ ro_shell = printf '\043 Generated automa
+ 
+ SUFFIXES += .in
+ .in:
+-	$(AM_V_GEN)PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON) $(srcdir)/build-aux/soexpand.py -I$(srcdir) < $< | \
+-	  $(PYTHON) $(srcdir)/build-aux/dpdkstrip.py $(DPDKSTRIP_FLAGS) | \
++	$(AM_V_GEN)PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON_EXEC) $(srcdir)/build-aux/soexpand.py -I$(srcdir) < $< | \
++	  $(PYTHON_EXEC) $(srcdir)/build-aux/dpdkstrip.py $(DPDKSTRIP_FLAGS) | \
+ 	  sed \
+ 	    -e 's,[@]PKIDIR[@],$(PKIDIR),g' \
+ 	    -e 's,[@]LOGDIR[@],$(LOGDIR),g' \
+ 	    -e 's,[@]DBDIR[@],$(DBDIR),g' \
+-	    -e 's,[@]PYTHON[@],$(PYTHON),g' \
++	    -e 's,[@]PYTHON[@],$(PYTHON_EXEC),g' \
+ 	    -e 's,[@]RUNDIR[@],$(RUNDIR),g' \
+ 	    -e 's,[@]VERSION[@],$(VERSION),g' \
+ 	    -e 's,[@]localstatedir[@],$(localstatedir),g' \
+@@ -177,7 +186,7 @@ SUFFIXES += .xml
+ 	  PKIDIR='$(PKIDIR)' \
+ 	  LOGDIR='$(LOGDIR)' \
+ 	  DBDIR='$(DBDIR)' \
+-	  PYTHON='$(PYTHON)' \
++	  PYTHON='$(PYTHON_EXEC)' \
+ 	  RUNDIR='$(RUNDIR)' \
+ 	  VERSION='$(VERSION)' \
+ 	  localstatedir='$(localstatedir)' \
+@@ -414,7 +423,7 @@ CLEANFILES += flake8-check
+ 
+ include $(srcdir)/manpages.mk
+ $(srcdir)/manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py python/build/soutil.py
+-	@PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON) $(srcdir)/build-aux/sodepends.py -I. -I$(srcdir) $(MAN_ROOTS) >$(@F).tmp
++	@PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON_EXEC) $(srcdir)/build-aux/sodepends.py -I. -I$(srcdir) $(MAN_ROOTS) >$(@F).tmp
+ 	@if cmp -s $(@F).tmp $@; then \
+ 	  touch $@; \
+ 	  rm -f $(@F).tmp; \
diff --git a/debian/patches/remove-bfd-decay-tests.patch b/debian/patches/remove-bfd-decay-tests.patch
new file mode 100644
index 0000000..cbcf81a
--- /dev/null
+++ b/debian/patches/remove-bfd-decay-tests.patch
@@ -0,0 +1,158 @@
+Description: Remove bfd decay
+ This fails on armhf, probably because the platform is too slow.
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: no
+Last-Update: 2018-01-24
+
+--- openvswitch-2.8.1+dfsg1.orig/tests/bfd.at
++++ openvswitch-2.8.1+dfsg1/tests/bfd.at
+@@ -264,149 +264,6 @@ This flow is handled by the userspace sl
+ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+-# Tests below are for bfd decay features.
+-AT_SETUP([bfd - bfd decay])
+-OVS_VSWITCHD_START([add-br br1 -- set bridge br1 datapath-type=dummy -- \
+-                    add-port br1 p1 -- set Interface p1 type=patch \
+-                    options:peer=p0 ofport_request=2 -- \
+-                    add-port br0 p0 -- set Interface p0 type=patch \
+-                    options:peer=p1 ofport_request=1 -- \
+-                    set Interface p0 bfd:enable=true bfd:min_tx=300 bfd:min_rx=300 -- \
+-                    set Interface p1 bfd:enable=true bfd:min_tx=500 bfd:min_rx=500])
+-
+-ovs-appctl time/stop
+-
+-# wait for a while to stablize everything.
+-ovs-appctl time/warp 10000 500
+-BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-
+-# Test-1 BFD decay: decay to decay_min_rx
+-AT_CHECK([ovs-vsctl set interface p0 bfd:decay_min_rx=3000])
+-# bfd:decay_min_rx is set to 3000ms after the local state of p0 goes up,
+-# so for the first 2000ms, there should be no change.
+-ovs-appctl time/warp 2000 500
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-
+-# advance the clock by 5000ms.
+-ovs-appctl time/warp 5000 500
+-# now, min_rx should decay to 3000ms.
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
+-
+-# advance clock by 5000ms and check the flags are all 'none'.
+-ovs-appctl time/warp 5000 500
+-BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
+-# End of Test-1 ###############################################################
+-
+-
+-# Test-2 BFD decay: go back to min_rx when there is traffic
+-# receive packet at 1/100ms rate for 5000ms.
+-for i in `seq 0 49`
+-do
+-    ovs-appctl time/warp 100
+-    AT_CHECK([ovs-ofctl packet-out br1 "in_port=3 packet=90e2ba01475000101856b2e80806000108000604000100101856b2e80202020300000000000002020202 actions=2"],
+-             [0], [stdout], [])
+-done
+-# after a decay interval (3000ms), the p0 min_rx will go back to
+-# min_rx.
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-# End of Test-2 ###############################################################
+-
+-
+-# Test-3 BFD decay: set decay_min_rx to 1000ms.
+-# this should firstly reset the min_rx and then re-decay to 1000ms.
+-AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=1000])
+-# advance the clock by 10000ms, decay should have happened.
+-ovs-appctl time/warp 10000 500
+-BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [1000ms], [1000ms], [500ms])
+-# End of Test-3 ###############################################################
+-
+-
+-# Test-4 BFD decay: set decay_min_rx to 0 to disable bfd decay.
+-AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=0])
+-# advance the clock by 5000ms.
+-ovs-appctl time/warp 10000 500
+-# min_rx is reset.
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-
+-for i in `seq 0 20`
+-do
+-    ovs-appctl time/warp 500
+-    BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-    BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-    BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-    BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-done
+-# End of Test-4 ################################################################
+-
+-
+-# Test-5 BFD decay: rmt_min_tx is greater than decay_min_rx
+-AT_CHECK([ovs-vsctl set Interface p0 bfd:decay_min_rx=3000 -- set interface p1 bfd:min_tx=5000])
+-# advance the clock by 10000ms to stable everything.
+-ovs-appctl time/warp 10000 500
+-BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-# p0 rx should show 5000ms even if it is in decay.
+-BFD_CHECK_TX([p0], [500ms], [300ms], [5000ms])
+-BFD_CHECK_RX([p0], [5000ms], [3000ms], [500ms])
+-# then, there should be no change of status,
+-for i in `seq 0 19`
+-do
+-    ovs-appctl time/warp 500
+-    BFD_CHECK([p0], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-    BFD_CHECK([p1], [true], [false], [none], [up], [No Diagnostic], [none], [up], [No Diagnostic])
+-    BFD_CHECK_TX([p0], [500ms], [300ms], [5000ms])
+-    BFD_CHECK_RX([p0], [5000ms], [3000ms], [500ms])
+-done
+-# reset the p1's min_tx to 500ms.
+-AT_CHECK([ovs-vsctl set Interface p1 bfd:min_tx=500])
+-# advance the clock by 20000ms to stable everything.
+-# since p0 has been in decay, now the RX will show 3000ms.
+-ovs-appctl time/warp 20000 500
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
+-# End of Test-5 ###############################################################
+-
+-
+-# Test-6 BFD decay: state up->down->up.
+-# turn bfd off on p1
+-AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=false])
+-
+-# advance the clock by 15000ms to stable everything.
+-ovs-appctl time/warp 15000 1000
+-BFD_CHECK([p0], [false], [false], [none], [down], [Control Detection Time Expired], [none], [down], [No Diagnostic])
+-BFD_CHECK_TX([p0], [1000ms], [1000ms], [0ms])
+-BFD_CHECK_RX([p0], [300ms], [300ms], [1ms])
+-
+-# resume the bfd on p1. the bfd should not go to decay mode direclty.
+-AT_CHECK([ovs-vsctl set Interface p1 bfd:enable=true])
+-ovs-appctl time/warp 1500 500
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [500ms], [300ms], [500ms])
+-
+-# since the decay_min_rx is still 3000ms, so after 5000ms, p0 should have decayed.
+-ovs-appctl time/warp 5000 500
+-BFD_CHECK_TX([p0], [500ms], [300ms], [500ms])
+-BFD_CHECK_RX([p0], [3000ms], [3000ms], [500ms])
+-# End of Test-6 ################################################################
+-
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+-# Tests below are for bfd forwarding_if_rx feature.
+-
+ # forwarding_if_rx Test1
+ # Test1 tests the case when bfd is only enabled on one end of the link.
+ # Under this situation, the forwarding flag should always be false, even
diff --git a/debian/patches/remove-include-debian-automake.mk.patch b/debian/patches/remove-include-debian-automake.mk.patch
new file mode 100644
index 0000000..da2ca4a
--- /dev/null
+++ b/debian/patches/remove-include-debian-automake.mk.patch
@@ -0,0 +1,17 @@
+Description: Remove debian/automake.mk
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: not-needed
+Last-Update: 2017-10-20
+
+Index: openvswitch/Makefile.am
+===================================================================
+--- openvswitch.orig/Makefile.am
++++ openvswitch/Makefile.am
+@@ -483,7 +483,6 @@ include utilities/automake.mk
+ include tests/automake.mk
+ include include/automake.mk
+ include third-party/automake.mk
+-include debian/automake.mk
+ include ipsec/automake.mk
+ include vswitchd/automake.mk
+ include ovsdb/automake.mk
diff --git a/debian/patches/remove-non-deterministic-tests.patch b/debian/patches/remove-non-deterministic-tests.patch
new file mode 100644
index 0000000..1ec901a
--- /dev/null
+++ b/debian/patches/remove-non-deterministic-tests.patch
@@ -0,0 +1,46 @@
+Description: Remove non-deterministic patches
+ These tests are sometimes failing.
+Author: Thomas Goirand <zigo at debian.org>
+Bug-Debian: https://bugs.debian.org/910297
+Forwarded: no
+Last-Update: 2018-12-14
+
+--- openvswitch-2.10.0+2018.08.28+git.8ca7c82b7d+ds1.orig/tests/ovsdb-cluster.at
++++ openvswitch-2.10.0+2018.08.28+git.8ca7c82b7d+ds1/tests/ovsdb-cluster.at
+@@ -246,36 +246,3 @@ AT_SETUP([OVSDB 5-server torture test -
+ AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+ ovsdb_torture_test 5 5 kill
+ AT_CLEANUP
+-
+-AT_SETUP([OVSDB 3-server torture test - remove/re-add leader])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster3])
+-ovsdb_torture_test 3 1 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 3-server torture test - remove/re-add follower 1])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster3])
+-ovsdb_torture_test 3 2 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 3-server torture test - remove/re-add follower 2])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster3])
+-ovsdb_torture_test 3 3 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 5-server torture test - remove/re-add leader])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+-ovsdb_torture_test 5 1 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 5-server torture test - remove/re-add follower 1])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+-ovsdb_torture_test 5 2 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 5-server torture test - remove/re-add follower 2])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+-ovsdb_torture_test 5 3 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 5-server torture test - remove/re-add follower 3])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+-ovsdb_torture_test 5 4 remove
+-AT_CLEANUP
+-AT_SETUP([OVSDB 5-server torture test - remove/re-add follower 4])
+-AT_KEYWORDS([ovsdb server positive unix cluster cluster5])
+-ovsdb_torture_test 5 5 remove
+-AT_CLEANUP
diff --git a/debian/patches/remove-tests-broken-in-mips64el-and-mipsel.patch b/debian/patches/remove-tests-broken-in-mips64el-and-mipsel.patch
new file mode 100644
index 0000000..7cea06d
--- /dev/null
+++ b/debian/patches/remove-tests-broken-in-mips64el-and-mipsel.patch
@@ -0,0 +1,52 @@
+Description: Remove tests borken in mips64el and mipsel
+ The first hunk fails in mips64el, the second on mipsel.
+Author: Thomas Goirand <zigo at debian.org>
+Bug-Debian: https://bugs.debian.org/880509
+Bug-Debian: https://bugs.debian.org/880508
+Forwarded: no
+Last-Update: 2018-08-30
+
+Index: openvswitch/tests/ofproto-dpif.at
+===================================================================
+--- openvswitch.orig/tests/ofproto-dpif.at
++++ openvswitch/tests/ofproto-dpif.at
+@@ -1860,13 +1860,6 @@ flow-dump from non-dpdk interfaces:
+ packets:1, bytes:14, used:0.001s, actions:userspace(pid=0,controller(reason=1,dont_send=0,continuation=0,recirc_id=1,rule_cookie=0,controller_id=0,max_len=65535))
+ ])
+ 
+-AT_CHECK([cat ofctl_monitor.log], [0], [dnl
+-NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
+-NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234
+-])
+-
+ AT_CHECK([ovs-appctl revalidator/purge])
+ AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log])
+ 
+@@ -6599,25 +6592,6 @@ AT_CHECK([ovs-appctl time/warp 2000 100]
+ AT_CHECK([ovs-appctl revalidator/purge], [0])
+ OVS_VSWITCHD_STOP(["/failed to get flags for network device 127.0.0.1/d"])
+ OVS_APP_EXIT_AND_WAIT([test-sflow])
+-AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\
+-        /g']], [0], [dnl
+-LACPCOUNTERS
+-        sysID=11:22:33:44:55:66
+-        partnerID=00:00:00:00:00:00
+-        aggID=3333
+-        actorAdmin=0x7
+-        actorOper=0xbf
+-        partnerAdmin=0x0
+-        partnerOper=0x2
+-        LACPDUsRx=0
+-        markerPDUsRx=4294967295
+-        markerRespPDUsRx=4294967295
+-        unknownRx=4294967295
+-        illegalRx=0
+-        LACPDUsTx=1
+-        markerPDUsTx=4294967295
+-        markerRespPDUsTx=4294967295
+-])
+ 
+ AT_CLEANUP
+ 
diff --git a/debian/patches/remove-yet-another-mips-failing-test.patch b/debian/patches/remove-yet-another-mips-failing-test.patch
new file mode 100644
index 0000000..b2319fb
--- /dev/null
+++ b/debian/patches/remove-yet-another-mips-failing-test.patch
@@ -0,0 +1,218 @@
+Description: Another test that's failing in MIPS
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: no
+Last-Update: 2018-10-25
+
+Index: openvswitch/tests/ovn.at
+===================================================================
+--- openvswitch.orig/tests/ovn.at
++++ openvswitch/tests/ovn.at
+@@ -2047,208 +2047,6 @@ OVN_CLEANUP([hv1],[hv2])
+ 
+ AT_CLEANUP
+ 
+-AT_SETUP([ovn -- vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS])
+-AT_KEYWORDS([vtep])
+-AT_SKIP_IF([test $HAVE_PYTHON = no])
+-ovn_start
+-
+-# Configure the Northbound database
+-ovn-nbctl ls-add lsw0
+-
+-ovn-nbctl lsp-add lsw0 lp1
+-ovn-nbctl lsp-set-addresses lp1 f0:00:00:00:00:01
+-
+-ovn-nbctl lsp-add lsw0 lp2
+-ovn-nbctl lsp-set-addresses lp2 f0:00:00:00:00:02
+-
+-ovn-nbctl lsp-add lsw0 lp-vtep
+-ovn-nbctl lsp-set-type lp-vtep vtep
+-ovn-nbctl lsp-set-options lp-vtep vtep-physical-switch=br-vtep vtep-logical-switch=lsw0
+-ovn-nbctl lsp-set-addresses lp-vtep unknown
+-
+-# lpr, lr and lrp1 are used for the ARP request handling test only.
+-ovn-nbctl lsp-add lsw0 lpr
+-ovn-nbctl lr-add lr
+-ovn-nbctl lrp-add lr lrp1 f0:00:00:00:00:f1 192.168.1.1/24
+-ovn-nbctl set Logical_Switch_Port lpr type=router \
+-                             options:router-port=lrp1 \
+-    addresses='"f0:00:00:00:00:f1 192.168.1.1"'
+-
+-
+-net_add n1               # Network to connect hv1, hv2, and vtep
+-net_add n2               # Network to connect vtep and hv3
+-
+-# Create hypervisor hv1 connected to n1
+-sim_add hv1
+-as hv1
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.1
+-ovs-vsctl add-port br-int vif1 -- set Interface vif1 external-ids:iface-id=lp1 options:tx_pcap=hv1/vif1-tx.pcap options:rxq_pcap=hv1/vif1-rx.pcap ofport-request=1
+-
+-# Create hypervisor hv2 connected to n1
+-sim_add hv2
+-as hv2
+-ovs-vsctl add-br br-phys
+-ovn_attach n1 br-phys 192.168.0.2
+-ovs-vsctl add-port br-int vif2 -- set Interface vif2 external-ids:iface-id=lp2 options:tx_pcap=hv2/vif2-tx.pcap options:rxq_pcap=hv2/vif2-rx.pcap ofport-request=1
+-
+-
+-# Start the vtep emulator with a leg in both networks
+-sim_add vtep
+-as vtep
+-
+-ovsdb-tool create "$ovs_base"/vtep/vtep.db "$abs_top_srcdir"/vtep/vtep.ovsschema || return 1
+-ovs-appctl -t ovsdb-server ovsdb-server/add-db "$ovs_base"/vtep/vtep.db
+-
+-ovs-vsctl add-br br-phys
+-net_attach n1 br-phys
+-
+-mac=`ovs-vsctl get Interface br-phys mac_in_use | sed s/\"//g`
+-arp_table="$arp_table $sandbox,br-phys,192.168.0.3,$mac"
+-ovs-appctl netdev-dummy/ip4addr br-phys 192.168.0.3/24 >/dev/null || return 1
+-ovs-appctl ovs/route/add 192.168.0.3/24 br-phys >/dev/null || return 1
+-
+-ovs-vsctl add-br br-vtep
+-net_attach n2 br-vtep
+-
+-vtep-ctl add-ps br-vtep
+-vtep-ctl set Physical_Switch br-vtep tunnel_ips=192.168.0.3
+-vtep-ctl add-ls lsw0
+-
+-start_daemon ovs-vtep br-vtep
+-start_daemon ovn-controller-vtep --vtep-db=unix:"$ovs_base"/vtep/db.sock --ovnsb-db=unix:"$ovs_base"/ovn-sb/ovn-sb.sock
+-
+-OVS_WAIT_UNTIL([vtep-ctl bind-ls br-vtep br-vtep_n2 0 lsw0])
+-
+-OVS_WAIT_UNTIL([test -n "`as vtep vtep-ctl get-replication-mode lsw0 |
+-               grep -- source`"])
+-# It takes more time for the update to be processed by ovs-vtep.
+-sleep 1
+-
+-# Add hv3 on the other side of the vtep
+-sim_add hv3
+-as hv3
+-ovs-vsctl add-br br-phys
+-net_attach n2 br-phys
+-
+-ovs-vsctl add-port br-phys vif3 -- set Interface vif3 options:tx_pcap=hv3/vif3-tx.pcap options:rxq_pcap=hv3/vif3-rx.pcap ofport-request=1
+-
+-# Pre-populate the hypervisors' ARP tables so that we don't lose any
+-# packets for ARP resolution (native tunneling doesn't queue packets
+-# for ARP resolution).
+-OVN_POPULATE_ARP
+-
+-# Allow some time for ovn-northd and ovn-controller to catch up.
+-# XXX This should be more systematic.
+-sleep 1
+-
+-# test_packet INPORT DST SRC ETHTYPE OUTPORT...
+-#
+-# This shell function causes a packet to be received on INPORT.  The packet's
+-# content has Ethernet destination DST and source SRC (each exactly 12 hex
+-# digits) and Ethernet type ETHTYPE (4 hex digits).  The OUTPORTs (zero or
+-# more) list the VIFs on which the packet should be received.  INPORT and the
+-# OUTPORTs are specified as logical switch port numbers, e.g. 1 for vif1.
+-for i in 1 2 3; do
+-    : > $i.expected
+-done
+-test_packet() {
+-    local inport=$1 packet=$2$3$4; shift; shift; shift; shift
+-    #hv=hv`echo $inport | sed 's/^\(.\).*/\1/'`
+-    hv=hv$inport
+-    vif=vif$inport
+-    as $hv ovs-appctl netdev-dummy/receive $vif $packet
+-    for outport; do
+-        echo $packet >> $outport.expected
+-    done
+-}
+-
+-# Send packets between all pairs of source and destination ports:
+-#
+-# 1. Unicast packets are delivered to exactly one logical switch port
+-#    (except that packets destined to their input ports are dropped).
+-#
+-# 2. Broadcast and multicast are delivered to all logical switch ports
+-#    except the input port.
+-#
+-# 3. The switch delivers packets with an unknown destination to logical
+-#    switch ports with "unknown" among their MAC addresses (and port
+-#    security disabled).
+-for s in 1 2 3; do
+-    bcast=
+-    unknown=
+-    for d in 1 2 3; do
+-        if test $d != $s; then unicast=$d; else unicast=; fi
+-        test_packet $s f0000000000$d f0000000000$s 00$s$d $unicast       #1
+-
+-        # The vtep (vif3) is the only one configured for "unknown"
+-        if test $d != $s && test $d = 3; then
+-            unknown="$unknown $d"
+-        fi
+-        bcast="$bcast $unicast"
+-    done
+-
+-    # Broadcast and multicast.
+-    test_packet $s ffffffffffff f0000000000$s 0${s}ff $bcast             #2
+-    test_packet $s 010000000000 f0000000000$s 0${s}ff $bcast             #2
+-
+-    test_packet $s f0000000ffff f0000000000$s 0${s}66 $unknown           #3
+-done
+-
+-# ARP request should not be responded to by logical switch router
+-# type arp responder on HV1 and HV2 and should reach directly to
+-# vif1 and vif2
+-ip_to_hex() {
+-    printf "%02x%02x%02x%02x" "$@"
+-}
+-sha=f00000000003
+-spa=`ip_to_hex 192 168 1 2`
+-tpa=`ip_to_hex 192 168 1 1`
+-request=ffffffffffff${sha}08060001080006040001${sha}${spa}ffffffffffff${tpa}
+-as hv3 ovs-appctl netdev-dummy/receive vif3 $request
+-echo $request >> 1.expected
+-echo $request >> 2.expected
+-
+-# dump information with counters
+-echo "------ OVN dump ------"
+-ovn-nbctl show
+-ovn-sbctl show
+-
+-echo "---------SB dump-----"
+-ovn-sbctl list datapath_binding
+-echo "---------------------"
+-ovn-sbctl list port_binding
+-echo "---------------------"
+-ovn-sbctl dump-flows
+-
+-echo "------ hv1 dump ------"
+-as hv1 ovs-vsctl show
+-as hv1 ovs-ofctl -O OpenFlow13 show br-int
+-as hv1 ovs-ofctl -O OpenFlow13 dump-flows br-int
+-
+-echo "------ hv2 dump ------"
+-as hv2 ovs-vsctl show
+-as hv2 ovs-ofctl -O OpenFlow13 show br-int
+-as hv2 ovs-ofctl -O OpenFlow13 dump-flows br-int
+-
+-echo "------ hv3 dump ------"
+-as hv3 ovs-vsctl show
+-# note: hv3 has no logical port bind, thus it should not have br-int
+-AT_CHECK([as hv3 ovs-ofctl -O OpenFlow13 show br-int], [1], [],
+-[ovs-ofctl: br-int is not a bridge or a socket
+-])
+-
+-# Now check the packets actually received against the ones expected.
+-for i in 1 2 3; do
+-    OVN_CHECK_PACKETS([hv$i/vif$i-tx.pcap], [$i.expected])
+-done
+-
+-# Gracefully terminate daemons
+-OVN_CLEANUP([hv1],[hv2],[vtep])
+-OVN_CLEANUP_VSWITCH([hv3])
+-
+-AT_CLEANUP
+-
+ # Similar test to "hardware GW"
+ AT_SETUP([ovn -- 3 HVs, 1 VIFs/HV, 1 software GW, 1 LS])
+ AT_SKIP_IF([test $HAVE_PYTHON = no])
diff --git a/debian/patches/removed-tests-which-are-failing-in-mips-and-armel.patch b/debian/patches/removed-tests-which-are-failing-in-mips-and-armel.patch
new file mode 100644
index 0000000..185c278
--- /dev/null
+++ b/debian/patches/removed-tests-which-are-failing-in-mips-and-armel.patch
@@ -0,0 +1,305 @@
+Description: Remove tests which are failing in mips and armel.
+Author: Thomas Goirand <zigo at debian.org>
+Bug-Debian: https://bugs.debian.org/908978
+Forwarded: not-needed
+Last-Update: 2018-10-10
+
+Index: openvswitch/tests/ofproto-dpif.at
+===================================================================
+--- openvswitch.orig/tests/ofproto-dpif.at
++++ openvswitch/tests/ofproto-dpif.at
+@@ -1836,70 +1836,6 @@ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+ 
+-AT_SETUP([ofproto-dpif - controller action without megaflows])
+-OVS_VSWITCHD_START
+-add_of_ports br0 1
+-
+-AT_CHECK([ovs-ofctl add-flow br0 in_port=1,action=controller])
+-AT_CHECK([ovs-appctl upcall/disable-megaflows], [0], [dnl
+-megaflows disabled
+-])
+-
+-AT_CAPTURE_FILE([ofctl_monitor.log])
+-AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log])
+-
+-for i in 1 2; do
+-    AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x1234)'])
+-done
+-
+-OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 4])
+-OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
+-
+-AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/.*\(packets:\)/\1/' | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
+-flow-dump from non-dpdk interfaces:
+-packets:1, bytes:14, used:0.001s, actions:userspace(pid=0,controller(reason=1,dont_send=0,continuation=0,recirc_id=1,rule_cookie=0,controller_id=0,max_len=65535))
+-])
+-
+-AT_CHECK([ovs-appctl revalidator/purge])
+-AT_CHECK([ovs-ofctl monitor br0 65534 invalid_ttl -P nxt_packet_in --detach --no-chdir --pidfile 2> ofctl_monitor.log])
+-
+-dnl Add a controller meter.
+-AT_CHECK([ovs-ofctl -O OpenFlow13 add-meter br0 'meter=controller pktps stats bands=type=drop rate=2'])
+-
+-dnl Advance time by 1 second.
+-AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore])
+-
+-for i in `seq 1 8`; do
+-    AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x4321)'])
+-done
+-
+-AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/.*\(packets:\)/\1/' | sed 's/used:[[0-9]].[[0-9]]*s/used:0.001s/'], [0], [dnl
+-flow-dump from non-dpdk interfaces:
+-packets:7, bytes:98, used:0.001s, actions:sample(sample=100.0%,actions(meter(0),userspace(pid=0,controller(reason=1,dont_send=0,continuation=0,recirc_id=2,rule_cookie=0,controller_id=0,max_len=65535))))
+-])
+-
+-AT_CHECK([ovs-appctl time/warp 1], [0], [ignore])
+-OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit])
+-
+-dnl Out of 8 packets we sent, two were passed by the rate limiter, and
+-dnl the rest of packets were blocked.
+-AT_CHECK([cat ofctl_monitor.log], [0], [dnl
+-NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x4321
+-NXT_PACKET_IN (xid=0x0): cookie=0x0 total_len=14 in_port=1 (via action) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x4321
+-])
+-dnl Check meter stats to make it gives the same picture;
+-dnl 7 packets hit the meter, but 6 packets are dropped by band0.
+-AT_CHECK([ovs-ofctl -O OpenFlow13 meter-stats br0 | strip_timers], [0], [dnl
+-OFPST_METER reply (OF1.3) (xid=0x2):
+-meter:controller flow_count:0 packet_in_count:8 byte_in_count:112 duration:0.0s bands:
+-0: packet_count:6 byte_count:84
+-])
+-
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+ AT_SETUP([ofproto-dpif - MPLS handling])
+ OVS_VSWITCHD_START([dnl
+    add-port br0 p1 -- set Interface p1 type=dummy
+Index: openvswitch/tests/ofproto.at
+===================================================================
+--- openvswitch.orig/tests/ofproto.at
++++ openvswitch/tests/ofproto.at
+@@ -3703,219 +3703,6 @@ OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
+ OVS_VSWITCHD_STOP
+ AT_CLEANUP
+ 
+-AT_SETUP([ofproto - asynchronous message control (OpenFlow 1.4)])
+-OVS_VSWITCHD_START([dnl
+-    add-port br0 p1 -- set Interface p1 type=dummy ofport_request=10
+-])
+-AT_CHECK([ovs-ofctl -O OpenFlow14 -P standard monitor br0 --detach --no-chdir --pidfile])
+-check_async () {
+-    printf '\n\n--- check_async %d ---\n\n\n' $1
+-    INDEX=$1
+-    shift
+-
+-    ovs-appctl -t ovs-ofctl ofctl/barrier
+-    ovs-appctl -t ovs-ofctl ofctl/set-output-file monitor.log
+-    : > expout
+-
+-    # OFPT_PACKET_IN, OFPR_PACKET_OUT (controller_id=0)
+-    ovs-ofctl -O OpenFlow14 -v packet-out br0 none controller '0001020304050010203040501234'
+-    if test X"$1" = X"OFPR_PACKET_OUT"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.4): total_len=14 in_port=ANY (via packet_out) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-    fi
+-
+-    # OFPT_PACKET_IN, OFPR_ACTION_SET (controller_id=0)
+-    ovs-ofctl -O OpenFlow14 add-flow br0 'in_port=10 actions=write_actions(output(CONTROLLER))'
+-    ovs-appctl netdev-dummy/receive p1 'in_port(10),eth(src=00:10:20:30:40:50,dst=00:01:02:03:04:05),eth_type(0x1234)'
+-    if test X"$1" = X"OFPR_ACTION_SET"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.4): cookie=0x0 total_len=14 in_port=10 (via action_set) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-    fi
+-
+-    # OFPT_PACKET_IN, OFPR_NO_MATCH (controller_id=123)
+-    ovs-ofctl -O OpenFlow14 -v packet-out br0 none 'controller(reason=no_match,id=123)' '0001020304050010203040501234'
+-    if test X"$1" = X"OFPR_NO_MATCH"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.4): total_len=14 in_port=ANY (via no_match) data_len=14 (unbuffered)
+-vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234"
+-    fi
+-
+-    # OFPT_PACKET_IN, OFPR_INVALID_TTL (controller_id=0)
+-    ovs-ofctl -O OpenFlow14 packet-out br0 none dec_ttl '002583dfb4000026b98cb0f908004500003eb7e200000011339bac11370dac100002d7730035002b8f6d86fb0100000100000000000006626c702d7873066e696369726103636f6d00000f00'
+-    if test X"$1" = X"OFPR_INVALID_TTL"; then shift;
+-        echo >>expout "OFPT_PACKET_IN (OF1.4): total_len=76 in_port=ANY (via invalid_ttl) data_len=76 (unbuffered)
+-udp,vlan_tci=0x0000,dl_src=00:26:b9:8c:b0:f9,dl_dst=00:25:83:df:b4:00,nw_src=172.17.55.13,nw_dst=172.16.0.2,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=55155,tp_dst=53 udp_csum:8f6d"
+-    fi
+-
+-# OFPT_PORT_STATUS, OFPPR_ADD
+-    ovs-vsctl add-port br0 test -- set Interface test type=dummy
+-    if test X"$1" = X"OFPPR_ADD"; then shift;
+-        echo >>expout "OFPT_PORT_STATUS (OF1.4): ADD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     0
+-     state:      0
+-     speed: 0 Mbps now, 0 Mbps max
+-OFPT_PORT_STATUS (OF1.4): MOD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     0
+-     state:      LIVE
+-     speed: 0 Mbps now, 0 Mbps max"
+-    fi
+-
+-    # OFPT_PORT_STATUS, OFPPR_MODIFY
+-    ovs-ofctl -O OpenFlow14 -vwarn mod-port br0 test down
+-    if test X"$1" = X"OFPPR_MODIFY"; then shift;
+-        echo >>expout "OFPT_PORT_STATUS (OF1.4): MOD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     PORT_DOWN
+-     state:      0
+-     speed: 0 Mbps now, 0 Mbps max
+-OFPT_PORT_STATUS (OF1.4): MOD: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     PORT_DOWN
+-     state:      LINK_DOWN
+-     speed: 0 Mbps now, 0 Mbps max"
+-    fi
+-
+-    # OFPT_PORT_STATUS, OFPPR_DELETE
+-    ovs-vsctl del-port br0 test
+-    if test X"$1" = X"OFPPR_DELETE"; then shift;
+-        echo >>expout "OFPT_PORT_STATUS (OF1.4): DEL: ${INDEX}(test): addr:aa:55:aa:55:00:0x
+-     config:     PORT_DOWN
+-     state:      LINK_DOWN
+-     speed: 0 Mbps now, 0 Mbps max"
+-    fi
+-
+-    # OFPT_FLOW_REMOVED, OFPRR_DELETE
+-    ovs-ofctl -O OpenFlow14 add-flow br0 send_flow_rem,actions=drop
+-    ovs-ofctl -O OpenFlow14 --strict del-flows br0 ''
+-    if test X"$1" = X"OFPRR_DELETE"; then shift;
+-        echo >>expout "OFPT_FLOW_REMOVED (OF1.4):  reason=delete table_id=0"
+-    fi
+-
+-    # OFPT_FLOW_REMOVED, OFPRR_GROUP_DELETE
+-    ovs-ofctl -O OpenFlow14 add-group br0 group_id=1234,type=all,bucket=output:10
+-    ovs-ofctl -O OpenFlow14 add-flow br0 send_flow_rem,actions=group:1234
+-    ovs-ofctl -O OpenFlow14 --strict del-groups br0 group_id=1234
+-    if test X"$1" = X"OFPRR_GROUP_DELETE"; then shift;
+-        echo >>expout "OFPT_FLOW_REMOVED (OF1.4):  reason=group_delete table_id=0"
+-    fi
+-
+-    # OFPT_TABLE_STATUS, OFPTR_VACANCY_UP
+-    if test X"$1" = X"OFPTR_VACANCY_UP"; then shift;
+-        ovs-vsctl -- --id=@t1 create Flow_Table flow-limit=10 -- set bridge br0 flow_tables:1=@t1
+-
+-        # Turn on vacancy events, then add flows until we're full.
+-        # With initial vacancy of 100% and vacancy_up of 80%, so that
+-        # vacancy >= vacancy_up, this enables VACANY_DOWN events, so
+-        # we get a single such message when vacancy dips below 20%.
+-        ovs-ofctl -O OpenFlow14 mod-table br0 1 vacancy:20,80
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=1,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=2,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=3,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=4,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=5,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=6,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=7,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=8,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=9,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=10,actions=2
+-        echo >>expout "OFPT_TABLE_STATUS (OF1.4): reason=VACANCY_DOWN
+-table_desc:-
+-  table 1:
+-   eviction=off eviction_flags=OTHER|IMPORTANCE|LIFETIME
+-   vacancy=on vacancy_down=20% vacancy_up=80% vacancy=10%"
+-        # Then delete flows until we're empty.  Sending the
+-        # VACANCY_DOWN message enabled VACANCY_UP events, so we get a
+-        # single such message when vacancy rises above 80%.
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=1
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=2
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=3
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=4
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=5
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=6
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=7
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=8
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=9
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=10
+-        echo >>expout "OFPT_TABLE_STATUS (OF1.4): reason=VACANCY_UP
+-table_desc:-
+-  table 1:
+-   eviction=off eviction_flags=OTHER|IMPORTANCE|LIFETIME
+-   vacancy=on vacancy_down=20% vacancy_up=80% vacancy=90%"
+-
+-        # Now approach vacancy from the other direction.  First
+-        # disable vacancy events.  With initial vacancy of 70%, so
+-        # that vacancy < vacancy_up, this enables VACANCY_UP events.
+-        # That means that filling up the table generates no message,
+-        # but deleting all the flows generates VACANCY_UP at the point
+-        # vacancy rises above 80%.
+-        ovs-ofctl -O OpenFlow14 mod-table br0 1 novacancy
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=1,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=2,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=3,actions=2
+-        ovs-ofctl -O OpenFlow14 mod-table br0 1 vacancy:20,80
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=4,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=5,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=6,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=7,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=8,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=9,actions=2
+-        ovs-ofctl -O OpenFlow14 add-flow br0 table=1,in_port=10,actions=2
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=1
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=2
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=3
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=4
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=5
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=6
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=7
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=8
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=9
+-        ovs-ofctl -O OpenFlow14 del-flows br0 table=1,in_port=10
+-        echo >>expout "OFPT_TABLE_STATUS (OF1.4): reason=VACANCY_UP
+-table_desc:-
+-  table 1:
+-   eviction=off eviction_flags=OTHER|IMPORTANCE|LIFETIME
+-   vacancy=on vacancy_down=20% vacancy_up=80% vacancy=90%"
+-    fi
+-
+-    AT_FAIL_IF([test X"$1" != X])
+-
+-    OVS_WAIT_UNTIL([test `wc -l < "monitor.log"` -ge `wc -l < "expout"`])
+-
+-    AT_CHECK(
+-      [[sed '
+-s/ (xid=0x[0-9a-fA-F]*)//
+-s/ *duration.*//
+-s/00:0.$/00:0x/' < monitor.log]],
+-      [0], [expout])
+-}
+-
+-# It's a service connection so initially there should be no async messages.
+-check_async 1
+-
+-# Set miss_send_len to 128, turning on packet-ins for our service connection.
+-ovs-appctl -t ovs-ofctl ofctl/send 0509000c0123456700000080
+-check_async 2 OFPR_PACKET_OUT OFPR_ACTION_SET OFPPR_ADD OFPPR_MODIFY OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE
+-
+-# Become slave (OF 1.4), which should disable everything except port status.
+-ovs-appctl -t ovs-ofctl ofctl/send 051800180000000200000003000000000000000000000001
+-check_async 3 OFPPR_ADD OFPPR_MODIFY OFPPR_DELETE
+-
+-# Use OF 1.4 OFPT_SET_ASYNC to enable a patchwork of asynchronous messages.
+-ovs-appctl -t ovs-ofctl ofctl/send 051c0040000000020000000800000005000100080000002000020008000000020003000800000005000400080000001c00050008000000050008000800000018
+-check_async 4 OFPR_INVALID_TTL OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE OFPTR_VACANCY_UP
+-
+-# Set controller ID 123.
+-ovs-appctl -t ovs-ofctl ofctl/send 05040018000000030000232000000014000000000000007b
+-check_async 5 OFPR_NO_MATCH OFPPR_DELETE OFPRR_DELETE OFPRR_GROUP_DELETE
+-
+-# Restore controller ID 0.
+-ovs-appctl -t ovs-ofctl ofctl/send 050400180000000300002320000000140000000000000000
+-
+-# Become master (OF 1.4).
+-ovs-appctl -t ovs-ofctl ofctl/send 051800180000000400000002000000000000000000000002
+-check_async 6 OFPR_PACKET_OUT OFPPR_ADD OFPPR_MODIFY OFPRR_DELETE
+-
+-OVS_APP_EXIT_AND_WAIT([ovs-ofctl])
+-OVS_VSWITCHD_STOP
+-AT_CLEANUP
+-
+ AT_SETUP([ofproto - asynchronous message control (OpenFlow 1.5)])
+ OVS_VSWITCHD_START
+ AT_CHECK([ovs-ofctl -O OpenFlow15 -P standard monitor br0 --detach --no-chdir --pidfile])
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..4c31b32
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,14 @@
+fix-ovs-monitor-ipsec.patch
+remove-include-debian-automake.mk.patch
+remove-tests-broken-in-mips64el-and-mipsel.patch
+remove-bfd-decay-tests.patch
+disable-failed-tests.patch
+py3-compat.patch
+use-python3-m-sphinx-to-build-doc.patch
+removed-tests-which-are-failing-in-mips-and-armel.patch
+disable-even-more-tests.patch
+blacklist-ofproto-async-msg-ctrl-of1.3-because-of-mips.patch
+remove-yet-another-mips-failing-test.patch
+remove-non-deterministic-tests.patch
+0001-acinclude-Also-use-LIBS-from-dpkg-pkg-config.patch
+disable-failing-ovn-tests.patch
diff --git a/debian/patches/use-python3-m-sphinx-to-build-doc.patch b/debian/patches/use-python3-m-sphinx-to-build-doc.patch
new file mode 100644
index 0000000..b022655
--- /dev/null
+++ b/debian/patches/use-python3-m-sphinx-to-build-doc.patch
@@ -0,0 +1,18 @@
+Description: Using python3 -m sphinx to build doc
+Author: Thomas Goirand <zigo at debian.org>
+Forwarded: not-needed
+Last-Update: 2018-09-03
+
+Index: openvswitch/Documentation/automake.mk
+===================================================================
+--- openvswitch.orig/Documentation/automake.mk
++++ openvswitch/Documentation/automake.mk
+@@ -121,7 +121,7 @@ EXTRA_DIST += $(DOC_SOURCE)
+ 
+ # You can set these variables from the command line.
+ SPHINXOPTS =
+-SPHINXBUILD = sphinx-build
++SPHINXBUILD = python3 -m sphinx
+ SPHINXSRCDIR = $(srcdir)/Documentation
+ SPHINXBUILDDIR = $(builddir)/Documentation/_build
+ 
diff --git a/debian/python3-openvswitch.install b/debian/python3-openvswitch.install
new file mode 100644
index 0000000..ade3af0
--- /dev/null
+++ b/debian/python3-openvswitch.install
@@ -0,0 +1,2 @@
+usr/share/openvswitch/python/ovs usr/lib/python3/dist-packages/
+usr/share/openvswitch/python/ovstest usr/lib/python3/dist-packages/
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..c3acd28
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,133 @@
+#!/usr/bin/make -f
+
+UPSTREAM_GIT = https://github.com/openvswitch/ovs
+include /usr/share/openstack-pkg-tools/pkgos.make
+
+export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow
+
+%:
+	dh $@ --with autoreconf,python3,systemd,sphinxdoc
+
+# use --as-needed only if supported by dh-autoreconf (to simplify backporting)
+DH_AS_NEEDED=$(shell dpkg --compare-versions $$(dpkg --status dh-autoreconf | grep Version | cut -d' ' -f2) ge 6 && echo --as-needed)
+override_dh_autoreconf:
+	dh_autoreconf $(DH_AS_NEEDED)
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+else
+PARALLEL =
+endif
+
+override_dh_auto_configure:
+	test -d _debian || mkdir _debian
+	cd _debian && ( \
+		test -e Makefile || \
+		../configure --prefix=/usr --localstatedir=/var --enable-ssl --enable-shared \
+			--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
+			--sysconfdir=/etc $(DATAPATH_CONFIGURE_OPTS))
+ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH)))
+	test -d _dpdk || mkdir _dpdk
+	cd _dpdk && ( \
+		test -e Makefile || \
+		../configure --prefix=/usr --localstatedir=/var --enable-ssl --enable-shared \
+			--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
+			--with-dpdk --sysconfdir=/etc \
+			$(DATAPATH_CONFIGURE_OPTS))
+endif
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+	if $(MAKE) -C _debian check TESTSUITEFLAGS='$(PARALLEL)' || $(MAKE) -C _debian check TESTSUITEFLAGS='--recheck' ; then \
+		echo "===> Test suite (no dpdk) ran with success <==="; \
+	else \
+		cat _debian/tests/testsuite.log; \
+		exit 1; \
+	fi
+ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH)))
+	if $(MAKE) -C _dpdk check TESTSUITEFLAGS='$(PARALLEL)' || $(MAKE) -C _dpdk check TESTSUITEFLAGS='--recheck' ; then \
+		echo "===> Test suite (with dpdk) ran with success <==="; \
+	else \
+		cat _dpdk/tests/testsuite.log; \
+		exit 1; \
+	fi
+endif # i386/amd64/ppc64el/arm64
+endif # nocheck
+
+override_dh_auto_build:
+	$(MAKE) $(PARALLEL) -C _debian distdir=openvswitch
+ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH)))
+	$(MAKE) $(PARALLEL) -C _dpdk distdir=openvswitch_dpdk
+endif
+
+override_dh_auto_clean:
+	find . -name "*.pyc" -delete
+	dh_auto_clean
+	set -e ; make python/ovs/version.py && cd python && python3 setup.py clean ; rm -f ovs/version.py ; cd ..
+	rm -rf _debian _dpdk
+
+override_dh_auto_install-arch:
+	$(MAKE) -C _debian DESTDIR=$(CURDIR)/debian/tmp install
+
+	# Move ovs-vswitchd away, so we can use update-alternatives
+	mkdir -p $(CURDIR)/debian/openvswitch-common/usr/lib/openvswitch-common
+	mv $(CURDIR)/debian/tmp/usr/sbin/ovs-vswitchd \
+		$(CURDIR)/debian/openvswitch-common/usr/lib/openvswitch-common/ovs-vswitchd
+
+override_dh_auto_install-indep:
+	$(MAKE) -C _debian DESTDIR=$(CURDIR)/debian/tmp install
+	set -e && for pyvers in $(PYTHON3S); do \
+		cd python && python$$pyvers setup.py install --install-layout=deb \
+			--root $(CURDIR)/debian/python3-openvswitch; cd ..; \
+	done
+	rm -rf $(pwd)/debian/python*/usr/lib/python*/dist-packages/*.pth
+
+override_dh_install:
+	install -D -m 0644 utilities/ovs-vsctl-bashcomp.bash $(CURDIR)/debian/openvswitch-switch/usr/share/bash-completion/completions/ovs-vsctl
+	dh_install
+
+	rm -f $(CURDIR)/debian/tmp/usr/lib/*/*.la
+	dh_installman --language=C
+	rm -rf $(CURDIR)/debian/tmp/usr/share/man
+
+	dh_missing --fail-missing
+	# openvswitch-switch
+	mkdir -p debian/openvswitch-switch/usr/share/openvswitch/switch
+	cp debian/openvswitch-switch.template debian/openvswitch-switch/usr/share/openvswitch/switch/default.template
+
+	# ovn-host
+	mkdir -p debian/ovn-host/usr/share/ovn/host
+	cp debian/ovn-host.template debian/ovn-host/usr/share/ovn/host/default.template
+
+	# ovn-central
+	mkdir -p debian/ovn-central/usr/share/ovn/central
+	cp debian/ovn-central.template debian/ovn-central/usr/share/ovn/central/default.template
+
+ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH)))
+	install -v -D _dpdk/vswitchd/ovs-vswitchd \
+		$(CURDIR)/debian/openvswitch-switch-dpdk/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
+endif
+
+override_dh_installinit:
+	dh_installinit --restart-after-upgrade
+	dh_installinit -popenvswitch-switch --name=ovsdb-server --no-start
+	dh_installinit -popenvswitch-switch --name=ovs-vswitchd --no-start
+	dh_installinit -popenvswitch-switch --name=openvswitch-nonetwork --no-start --no-scripts
+
+override_dh_systemd_start:
+	dh_systemd_start --restart-after-upgrade
+	dh_systemd_start -popenvswitch-switch --name=ovsdb-server --no-start
+	dh_systemd_start -popenvswitch-switch --name=ovs-vswitchd --no-start
+
+override_dh_strip:
+	dh_strip --dbg-package=openvswitch-dbg
+
+override_dh_installman:
+	echo "Do nothing..."
+
+override_dh_python3:
+	dh_python3 --shebang=/usr/bin/python3
+	dh_python3 -popenvswitch-ipsec  /usr --shebang=/usr/bin/python3
+	dh_python3 -popenvswitch-vtep   /usr --shebang=/usr/bin/python3
+	dh_python3 -popenvswitch-switch /usr --shebang=/usr/bin/python3
+	dh_python3 usr/share/openvswitch/scripts --shebang=/usr/bin/python3
diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml
new file mode 100644
index 0000000..735b604
--- /dev/null
+++ b/debian/salsa-ci.yml
@@ -0,0 +1,3 @@
+include:
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
\ No newline at end of file
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..4ab5de3
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts="uversionmangle=s/v//,dversionmangle=s/\+dfsg\d+$//" \
+https://github.com/openvswitch/ovs/tags .*/v(\d[\d\.]+)\.tar\.gz
-- 
2.20.1




More information about the pve-devel mailing list