2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00

debian: Update packaging source from Debian/Ubuntu.

* Update upstream OVS debian packaging to be on par with package
  source in Debian/Ubuntu:
  - Provide a openvswitch-switch-dpdk package that integrates with
    the dpdk package in the distributions so that end users can opt
    into a DPDK-enabled Open vSwitch binary.
  - Provide systemd service files.
  - Provide openvswitch-source package for reproducible integrated
    build of for example OVN.
  - Stop building shared library and subsequently remove
    libopenvswitch and libopenvswitch-dev binary packages.

Co-authored-by: Luca Boccassi <bluca@debian.org>
Signed-off-by: Luca Boccassi <bluca@debian.org>
Co-authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Co-authored-by: James Page <james.page@ubuntu.com>
Signed-off-by: James Page <james.page@ubuntu.com>
Co-authored-by: Corey Bryant <corey.bryant@canonical.com>
Signed-off-by: Corey Bryant <corey.bryant@canonical.com>
Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
Frode Nordahl 2022-07-14 17:55:40 +02:00 committed by Ilya Maximets
parent 9f4f2bb7dc
commit 9990322610
70 changed files with 3485 additions and 2 deletions

9
NEWS
View File

@ -62,6 +62,15 @@ Post-v2.17.0
* Add build time configure command to enable auto-validator as default
actions implementation at build time.
* Add AVX512 implementation of actions.
- Debian packaging updated to be on par with package source in Debian/Ubuntu.
* Provided an openvswitch-switch-dpdk package that integrates with the
dpdk package in the distributions so that end users can opt into a
DPDK-enabled Open vSwitch binary.
* Provided systemd service files.
* Provided openvswitch-source package for reproducible integrated build of
for example OVN.
* Shared library and subsequently libopenvswitch and libopenvswitch-dev
binary packages are no longer built.
- Linux datapath:
* Add offloading meter tc police.
* Add support for offloading the check_pkt_len action.

View File

@ -13,5 +13,8 @@
^third-party/
^windows/
^xenserver/
^debian/rules.modules$
^debian/README.Debian$
^debian/copyright.in$
^debian/openvswitch-switch.init$
^debian/openvswitch-switch.postinst$
^debian/rules$

36
debian/README.Debian vendored Normal file
View File

@ -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.
auto ovsbr0
iface ovsbr0 inet dhcp
ovs_type OVSBridge
ovs_ports eth0
auto ovsbr0
iface ovsbr0 inet6 dhcp
ovs_type OVSBridge
ovs_ports eth0
autobr0 eth0
iface eth0 inet manual
ovs_bridge ovsbr0
ovs_type OVSPort
However, this didn't work for me. Instead, this worked:
auto 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
-- Antoine Beaupré <anarcat@debian.org>, Wed, 22 Jun 2022 12:02:39 -0400

91
debian/automake.mk vendored
View File

@ -1,2 +1,91 @@
EXTRA_DIST += \
debian/changelog
debian/README.Debian \
debian/changelog \
debian/clean \
debian/control \
debian/copyright \
debian/copyright.in \
debian/dirs \
debian/gbp.conf \
debian/ifupdown.sh \
debian/ltmain-whole-archive.diff \
debian/not-installed \
debian/openvswitch-common.dirs \
debian/openvswitch-common.install \
debian/openvswitch-common.lintian-overrides \
debian/openvswitch-doc.doc-base \
debian/openvswitch-doc.install \
debian/openvswitch-ipsec.init \
debian/openvswitch-ipsec.install \
debian/openvswitch-ipsec.service \
debian/openvswitch-pki.dirs \
debian/openvswitch-pki.postinst \
debian/openvswitch-pki.postrm \
debian/openvswitch-source.dirs \
debian/openvswitch-source.docs \
debian/openvswitch-source.install \
debian/openvswitch-switch-dpdk.README.Debian \
debian/openvswitch-switch-dpdk.install \
debian/openvswitch-switch-dpdk.postinst \
debian/openvswitch-switch-dpdk.prerm \
debian/openvswitch-switch.README.Debian \
debian/openvswitch-switch.default \
debian/openvswitch-switch.dirs \
debian/openvswitch-switch.init \
debian/openvswitch-switch.install \
debian/openvswitch-switch.links \
debian/openvswitch-switch.lintian-overrides \
debian/openvswitch-switch.logrotate \
debian/openvswitch-switch.ovs-record-hostname.service \
debian/openvswitch-switch.ovs-vswitchd.service \
debian/openvswitch-switch.ovsdb-server.service \
debian/openvswitch-switch.postinst \
debian/openvswitch-switch.postrm \
debian/openvswitch-switch.preinst \
debian/openvswitch-switch.prerm \
debian/openvswitch-switch.service \
debian/openvswitch-test.install \
debian/openvswitch-testcontroller.README.Debian \
debian/openvswitch-testcontroller.default \
debian/openvswitch-testcontroller.dirs \
debian/openvswitch-testcontroller.init \
debian/openvswitch-testcontroller.install \
debian/openvswitch-testcontroller.postinst \
debian/openvswitch-testcontroller.postrm \
debian/openvswitch-vtep.default \
debian/openvswitch-vtep.dirs \
debian/openvswitch-vtep.init \
debian/openvswitch-vtep.install \
debian/ovs-systemd-reload \
debian/patches/ovs-ctl-ipsec.patch \
debian/patches/series \
debian/rules \
debian/source/format \
debian/source/lintian-overrides \
debian/tests/control \
debian/tests/dpdk \
debian/tests/openflow.py \
debian/tests/vanilla \
debian/watch
check-debian-changelog-version:
@DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`; \
if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
then \
:; \
else \
echo "Update debian/changelog to mention version $(VERSION)"; \
exit 1; \
fi
ALL_LOCAL += check-debian-changelog-version
DIST_HOOKS += check-debian-changelog-version
$(srcdir)/debian/copyright: AUTHORS.rst debian/copyright.in
$(AM_V_GEN) \
{ sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in; \
sed '34,/^$$/d' $(srcdir)/AUTHORS.rst | \
sed -n -e '/^$$/q' -e 's/^/ /p'; \
sed -e '34,/%AUTHORS%/d' $(srcdir)/debian/copyright.in; \
} > $@
DISTCLEANFILES += debian/copyright

9
debian/changelog vendored
View File

@ -1,6 +1,15 @@
openvswitch (2.17.90-1) unstable; urgency=low
* New upstream version
* Update debian packaging to be on par with package source in Debian/Ubuntu:
- Provide a openvswitch-switch-dpdk package that integrates with the dpdk
package in the distributions so that end users can opt into a
DPDK-enabled Open vSwitch binary.
- Provide systemd service files.
- Provide openvswitch-source package for reproducible integrated build of
for example OVN.
- Stop building shared library and subsequently remove libopenvswitch and
libopenvswitch-dev binary packages.
-- Open vSwitch team <dev@openvswitch.org> Tue, 18 Jan 2022 20:14:01 +0100

2
debian/clean vendored Normal file
View File

@ -0,0 +1,2 @@
_debian
_dpdk

296
debian/control vendored Normal file
View File

@ -0,0 +1,296 @@
Source: openvswitch
Section: net
Priority: optional
Maintainer: Open vSwitch developers <dev@openvswitch.org>
Uploaders:
Simon Horman <horms@debian.org>,
Thomas Goirand <zigo@debian.org>,
Michal Arbet <michal.arbet@ultimum.io>,
Luca Boccassi <bluca@debian.org>,
Christian Ehrhardt <christian.ehrhardt@canonical.com>,
Build-Depends:
autoconf (>= 2.64),
automake (>= 1.10),
bzip2,
debhelper-compat (= 13),
dh-exec,
dh-python,
dh-sequence-python3,
dh-sequence-sphinxdoc,
graphviz,
iproute2,
libcap-ng-dev,
libdbus-1-dev [amd64 i386 ppc64el arm64],
libdpdk-dev (>= 21.11) [amd64 i386 ppc64el arm64],
libnuma-dev [amd64 i386 ppc64el arm64],
libpcap-dev [amd64 i386 ppc64el arm64],
libssl-dev,
libtool,
libunbound-dev,
openssl,
pkg-config,
procps,
python3-all-dev,
python3-setuptools,
python3-sortedcontainers,
python3-sphinx,
Standards-Version: 4.6.1
Rules-Requires-Root: no
Homepage: http://openvswitch.org/
Vcs-Browser: https://salsa.debian.org/openstack-team/third-party/openvswitch/-/tree/debian/experimental
Vcs-Git: https://salsa.debian.org/openstack-team/third-party/openvswitch.git
Package: openvswitch-common
Architecture: linux-any
Depends:
openssl,
${misc:Depends},
${python3:Depends},
${shlibs:Depends},
Suggests:
ethtool,
openvswitch-doc,
Breaks:
openvswitch-switch (<< 2.13~),
Replaces:
openvswitch-switch (<< 2.13~),
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-doc
Section: doc
Architecture: all
Depends:
${misc:Depends},
${sphinxdoc:Depends},
Description: Open vSwitch documentation
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 documentation for configuration and use
of Open vSwitch.
Package: openvswitch-ipsec
Architecture: linux-any
Pre-Depends: ${misc:Pre-Depends}
Depends:
iproute2,
openvswitch-common (= ${binary:Version}),
openvswitch-switch (= ${binary:Version}),
python3-openvswitch (= ${source:Version}),
strongswan,
${misc:Depends},
${shlibs:Depends},
Suggests: python3:any
Breaks:
openvswitch-common (<< 2.17~),
Replaces:
openvswitch-common (<< 2.17~),
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-source
Architecture: all
Depends:
${misc:Depends},
Description: Open vSwitch source code
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 Open vSwitch source code to support
use with the Open Virtual Network (OVN) build.
Package: openvswitch-switch
Architecture: linux-any
Pre-Depends: ${misc:Pre-Depends},
Depends:
kmod | module-init-tools,
netbase,
openvswitch-common (= ${binary:Version}),
procps,
python3-netifaces,
python3-openvswitch (>= ${source:Version}),
uuid-runtime,
${misc:Depends},
${python3:Depends},
${shlibs:Depends},
Breaks:
openvswitch-common (<< 2.17~),
Replaces:
openvswitch-common (<< 2.17~),
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
Pre-Depends: ${misc:Pre-Depends},
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-test
Architecture: all
Depends:
python3-twisted,
${misc:Depends},
${python3:Depends},
Breaks:
python3-openvswitch (<< 2.17~),
openvswitch-common (<< 2.17~),
Replaces:
python3-openvswitch (<< 2.17~),
openvswitch-common (<< 2.17~),
Description: Open vSwitch test 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.
.
This package contains utilities that are useful to diagnose
performance and connectivity issues in Open vSwitch setup.
Package: openvswitch-testcontroller
Architecture: linux-any
Breaks:
openvswitch-common (<< 2.17~),
Replaces:
openvswitch-common (<< 2.17~),
Pre-Depends: ${misc:Pre-Depends}
Depends:
lsb-base,
openvswitch-common (= ${binary:Version}),
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
Pre-Depends: ${misc:Pre-Depends}
Depends:
lsb-base,
lsb-release,
openvswitch-common (>= ${binary:Version}),
openvswitch-switch (>= ${binary:Version}),
python3-openvswitch (>= ${source:Version}),
${misc:Depends},
${python3:Depends},
${shlibs:Depends},
Suggests: python3:any
Breaks:
openvswitch-common (<< 2.17~),
Replaces:
openvswitch-common (<< 2.17~),
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: python3-openvswitch
Architecture: all
Section: python
Depends:
${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.

792
debian/copyright.in vendored Normal file
View File

@ -0,0 +1,792 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: OpenVSwitch
Source: http://openvswitch.org/
Upstream Authors (from AUTHORS.rst):
%AUTHORS%
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@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@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@FreeBSD.org>
(c) 6WIND S.A.
(c) Alexandru Copot <alex.mihai.c@gmail.com>, with support from IXIA.
(c) Alexey I. Froloff.
(c) Amir Vadai <amir@vadai.me>
(c) Arm Limited
(c) Benjamin Kosnik <bkoz@redhat.com>
(c) Cisco Systems, Inc
(c) Cloudbase Solutions Srl
(c) Cumulus Netowkrs
(c) Daniel Baluta <dbaluta@ixiacom.com>
(c) Dan Nicholson <dbn.lists@gmail.com>
(c) Dustin J. Mitchell <dustin@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@samsung.com>
(c) Javier Fernandez-Sanguino <jfs@debian.org>
(c) Jiri Pirko <jiri@resnulli.us>
(c) Kmindg <kmindg@gmail.com>
(c) Krzesimir Nowak <qdlacz@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@redhat.com>
(c) Paul Norman <penorman@mac.com>
(c) Red Hat, Inc.
(c) Roy Stogner <roystgnr@ices.utexas.edu>
(c) Samsung Electronics Co.,Ltd.
(c) Scott James Remnant <scott@netsplit.com>
(c) Scott Pakin <pakin@uiuc.edu>
(c) Siemens AG
(c) Sten Spans <sten@blinkenlights.nl>
(c) Stephen Finucane <stephen@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@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/linux/compat/include/linux/openvswitch.h
Copyright: (c) 2007-2017 Nicira, Inc.
License: Apache-2.0-or-GPL-2.0
Files:
build-aux/cccl
Copyright: (C) 2000-2003 Geoffrey Wossum <gwossum@acm.org>
License: GPL-2
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@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@thyrsus.com>
(c) 2007, Werner Lemberg <wl@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@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.
.
EXHIBIT A - Sun Standards License
.
"The contents of this file are subject to the Sun Standards
License Version 1.1 (the "License");
You may not use this file except in compliance with the
License. You may obtain a copy of the
License at http://host-sflow.sourceforge.net/sissl.html.
.
Software distributed under the License is distributed on
an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
express or implied. See the License for the specific
language governing rights and limitations under the License.
.
The Original Code is sFlow Agent Library.
.
The Initial Developer of the Original Code is:
InMon Corp.
.
Portions created by: _______________________________________
.
are Copyright (C): _______________________________________
.
All Rights Reserved.
.
Contributor(s): _______________________________________
.
EXHIBIT B - Standards
.
The Standard is defined as the following:
.
sFlow Specification, located at http://sflow.org/developers/specifications.php
---
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.
.
InMon Corp.
1 Sansome Street, 35th Floor, San Francisco, CA 94104
Phone: (415) 946-8901
URL: www.inmon.com
Email: info@inmon.com
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'.

2
debian/dirs vendored Normal file
View File

@ -0,0 +1,2 @@
usr/bin
usr/sbin

8
debian/gbp.conf vendored Normal file
View File

@ -0,0 +1,8 @@
[DEFAULT]
debian-branch = master
upstream-branch = upstream
pristine-tar = True
[import-orig]
filter = debian/*
upstream-vcs-tag = v%(version)s

114
debian/ifupdown.sh vendored Executable file
View File

@ -0,0 +1,114 @@
#! /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 (ovs_vsctl --version) > /dev/null 2>&1; then :; else
exit 0
fi
SERVICE_UNIT=/lib/systemd/system/openvswitch-switch.service
if [ -f $SERVICE_UNIT ] && [ -x /bin/systemctl ]; then
if ! systemctl --quiet is-active openvswitch-switch.service; then
systemctl start openvswitch-switch.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}
ip link set dev "${IFACE}" up
;;
OVSIntPort)
ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
"${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}"\
type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
ip link set dev "${IFACE}" up
;;
OVSBond)
ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
"${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
${OVS_EXTRA+-- $OVS_EXTRA}
ip link set dev "${IFACE}" up
for secondary in ${IF_OVS_BONDS}
do
ip link set dev "${secondary}" up
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
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

30
debian/ltmain-whole-archive.diff vendored Normal file
View File

@ -0,0 +1,30 @@
--- a/build-aux/ltmain.sh
+++ b/build-aux/ltmain.sh
@@ -7296,6 +7296,11 @@
continue
;;
+ -Wl,--whole-archive|-Wl,--no-whole-archive)
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
-Wc,*)
func_stripname '-Wc,' '' "$arg"
args=$func_stripname_result
@@ -7735,6 +7740,15 @@
fi
continue
;;
+ -Wl,--whole-archive|-Wl,--no-whole-archive)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
-l*)
if test lib != "$linkmode" && test prog != "$linkmode"; then
func_warning "'-l' is ignored for archives/objects"

8
debian/not-installed vendored Normal file
View File

@ -0,0 +1,8 @@
# We provide the openvswitch-source binary package for reproducible integrated
# builds with sibling projects instead of a -dev package.
usr/include/*
usr/lib/*
# The OVS Python bits are put in place in debian/rules and the bits left in
# debian/tmp are to be ignored.
usr/share/openvswitch/python/*

1
debian/openvswitch-common.dirs vendored Normal file
View File

@ -0,0 +1 @@
var/log/openvswitch

28
debian/openvswitch-common.install vendored Normal file
View File

@ -0,0 +1,28 @@
etc/bash_completion.d/ovs-appctl-bashcomp.bash usr/share/bash-completion/completions
usr/bin/ovs-appctl
usr/bin/ovs-docker
usr/bin/ovs-ofctl
usr/bin/ovs-parse-backtrace
usr/bin/ovs-pki
usr/bin/ovsdb-client
usr/bin/ovsdb-tool
usr/sbin/ovs-bugtool
usr/sbin/ovsdb-server
usr/share/man/man1/ovsdb-client.1
usr/share/man/man1/ovsdb-server.1
usr/share/man/man1/ovsdb-tool.1
usr/share/man/man5/ovsdb-server.5
usr/share/man/man5/ovsdb.5
usr/share/man/man5/ovsdb.local-config.5
usr/share/man/man7/ovs-actions.7
usr/share/man/man7/ovs-fields.7
usr/share/man/man7/ovsdb-server.7
usr/share/man/man7/ovsdb.7
usr/share/man/man8/ovs-appctl.8
usr/share/man/man8/ovs-bugtool.8
usr/share/man/man8/ovs-ofctl.8
usr/share/man/man8/ovs-parse-backtrace.8
usr/share/man/man8/ovs-pki.8
usr/share/openvswitch/bugtool-plugins
usr/share/openvswitch/scripts/ovs-bugtool-*
usr/share/openvswitch/scripts/ovs-lib

View File

@ -0,0 +1,2 @@
# False positive
openvswitch-common: spelling-error-in-readme-debian

10
debian/openvswitch-doc.doc-base vendored Normal file
View File

@ -0,0 +1,10 @@
Document: openvswitch-doc
Title: Open vSwitch Documentation
Author: N/A
Abstract: Sphinx documentation for Open vSwitch
Section: Network/Communication
Format: HTML
Index: /usr/share/doc/openvswitch-doc/html/index.html
Files: /usr/share/doc/openvswitch-doc/html/*

1
debian/openvswitch-doc.install vendored Normal file
View File

@ -0,0 +1 @@
_debian/Documentation/_build/html/* /usr/share/doc/openvswitch-doc/html/

181
debian/openvswitch-ipsec.init vendored Executable file
View File

@ -0,0 +1,181 @@
#!/bin/sh
#
# Copyright (c) 2007, 2009 Javier Fernandez-Sanguino <jfs@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

1
debian/openvswitch-ipsec.install vendored Normal file
View File

@ -0,0 +1 @@
usr/share/openvswitch/scripts/ovs-monitor-ipsec

14
debian/openvswitch-ipsec.service vendored Normal file
View File

@ -0,0 +1,14 @@
[Unit]
Description=Open vSwitch IPsec daemon
Requires=openvswitch-switch.service
After=openvswitch-switch.service
[Service]
Type=forking
PIDFile=/run/openvswitch/ovs-monitor-ipsec.pid
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--ike-daemon=strongswan start-ovs-ipsec
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop-ovs-ipsec
[Install]
WantedBy=multi-user.target

1
debian/openvswitch-pki.dirs vendored Normal file
View File

@ -0,0 +1 @@
/var/lib/openvswitch

41
debian/openvswitch-pki.postinst vendored Executable file
View File

@ -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

43
debian/openvswitch-pki.postrm vendored Executable file
View File

@ -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

1
debian/openvswitch-source.dirs vendored Normal file
View File

@ -0,0 +1 @@
usr/src/openvswitch

1
debian/openvswitch-source.docs vendored Normal file
View File

@ -0,0 +1 @@
NOTICE

1
debian/openvswitch-source.install vendored Normal file
View File

@ -0,0 +1 @@
_debian/openvswitch.tar.gz /usr/src/openvswitch

View File

@ -0,0 +1,62 @@
openvswitch-switch-dpdk
-----------------------
This package provides a DPDK enabled version of the OpenvSwitch vswitchd
binary; by default, the ovs-vswitchd binary from openvswitch-switch will
be used:
$ update-alternatives --query ovs-vswitchd
Name: ovs-vswitchd
Link: /usr/sbin/ovs-vswitchd
Status: auto
Best: /usr/lib/openvswitch-switch/ovs-vswitchd
Value: /usr/lib/openvswitch-switch/ovs-vswitchd
Alternative: /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
Priority: 50
Alternative: /usr/lib/openvswitch-switch/ovs-vswitchd
Priority: 100
DPDK provides fast packet processing in userspace, and has some specific
requirements in terms of system configuration.
DPDK has a minimum CPU feature set of SSE3, so is not appropriate for all
amd64 CPU types hence is not enabled by default.
To switch to the DPDK version:
sudo update-alternatives --set ovs-vswitchd \
/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
sudo service openvswitch-switch restart
and to switch back:
sudo update-alternatives --set ovs-vswitchd \
/usr/lib/openvswitch-switch/ovs-vswitchd
sudo service openvswitch-switch restart
-- James Page <james.page@ubuntu.com> Tue, 21 Jul 2015 12:06:49 +0100
Since Open vSwitch >= 2.6 the configuration of DPDK features has changed.
Instead of providing DPDK_OPTS in /etc/default/openvswitch-switch one now has
to use ovs-vsctl to enter the config into the database.
An example basic configuration workflow might look like:
# Enable DPDK
$ ovs-vsctl set Open_vSwitch . "other_config:dpdk-init=true"
# run on cores 3,4 8,9
$ ovs-vsctl set Open_vSwitch . "other_config:dpdk-lcore-mask=0x318"
# Allocate 2G huge pages (not Numa node aware)
$ ovs-vsctl set Open_vSwitch . "other_config:dpdk-alloc-mem=2048"
# group/permissions for vhost-user sockets (required to work with libvirt/qemu)
$ ovs-vsctl set Open_vSwitch . \
"other_config:dpdk-extra=--vhost-owner libvirt-qemu:kvm --vhost-perm 0666"
There are also tunables like:
$ ovs-vsctl set Open_vSwitch . "other_config:pmd-cpu-mask=0x318"
$ ovs-vsctl set Open_vSwitch . "other_config:n-dpdk-rxqs=4"
Any of those changes require openvswitch to be restarted to take effect.
-- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 04 Oct 2016 11:17:12 +0200

2
debian/openvswitch-switch-dpdk.install vendored Executable file
View File

@ -0,0 +1,2 @@
#!/usr/bin/dh-exec
_dpdk/vswitchd/ovs-vswitchd => /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk

22
debian/openvswitch-switch-dpdk.postinst vendored Normal file
View File

@ -0,0 +1,22 @@
#!/bin/sh
set -e
case "$1" in
configure)
update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd \
/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 50
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

22
debian/openvswitch-switch-dpdk.prerm vendored Normal file
View File

@ -0,0 +1,22 @@
#!/bin/sh
set -e
case "$1" in
remove)
update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
;;
deconfigure|upgrade|failed-upgrade)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

286
debian/openvswitch-switch.README.Debian vendored Normal file
View File

@ -0,0 +1,286 @@
README.Debian for openvswitch-switch
---------------------------------
The Linux kernel 3.3 or later has an integrated Open vSwitch kernel
module. Theis Linux kernel module lacks a few features that are in
the third-party module. For details, please see the FAQ, "What
features are not available in the Open vSwitch kernel datapath that
ships as part of the upstream Linux kernel?". If you need the
additional features, you will need to build and install a Linux kernel
module by hand from the openvswitch source package.
Debian network scripts (ifupdown) 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
Open vSwitch integration with systemd-networkd
-----------------------------------------------
There is no native integration of OVS with systemd-networkd. That is,
you cannot create OVS bridges, ports and bonds by simply writing configuration
files in /etc/systemd/network. But, you can create OVS devices using ovs-vsctl
and then write configuration files to provide them IP addresses.
As soon as a OVS device is visible, systemd-networkd will provide that device
an IP address. Since OVS database is persistent across reboots, the OVS
devices will get re-created after a reboot as soon as OVS startup script is
invoked. And systemd-networkd will immediately assign the configuration defined
in /etc/systemd/network.
Example:
If you have a physical ethernet device "ens160" which has been configured with
DHCP, your systemd-networkd's .network config file will look something like
this:
```
[Match]
Name=ens160
[Network]
DHCP=ipv4
[DHCP]
ClientIdentifier=mac
```
Please note how the DHCP ClientIdentifier above has been configured with the
mac address.
To create a OVS bridge "br-ens160" and add "ens160" as a port of that
bridge, you can change the .network configuration for "ens160" to look like:
```
[Match]
Name=ens160
```
Now create a new .network configuration file for "br-ens160". Something like:
```
[Match]
Name=br-ens160
[Network]
DHCP=ipv4
[DHCP]
ClientIdentifier=mac
```
Now, use ovs-vsctl to create br-ens160 and add ens160 as a port of it. You
will also have to flush the IP address of ens160 and restart systemd-networkd
in the same line. It is important to let br-ens160 have the same mac address as
ens160 to get the same IP address to br-ens160 from the DHCP server. In the
below command, "$mac_of_ens160" holds the mac address of ens160. For e.g:
```
mac_of_ens160='"00:0c:29:77:27:7a"'
ovs-vsctl --may-exist add-br br-ens160 -- \
--may-exist add-port br-ens160 ens160 -- \
set interface br-ens160 mac="$mac_of_ens160"; ip addr flush dev ens160; \
systemctl restart systemd-networkd
```
br-ens160 should now have the same DHCP IP. It should also have the correct
DNS resolution servers configured.
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 (i.e., if "br0" is a OVS bridge, you should
not have a line "auto br0"). 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.
* With systemd, adding openvswitch bridges in the 'auto' section of the
'interfaces' file can cause race conditions (i.e., if "br0" is a OVS bridge,
you should not have a line "auto br0"). Debian systems have added a
systemd ifup@.service file. This file will call ifdown and ifup on interfaces
in "auto" section automatically when the interfaces disappear and appear
respectively. This will cause race conditions if you delete and add the same
bridges using tools like "ovs-vsctl" or "ovs-dpctl". This is also a problem
when you upgrade your openvswitch kernel module using commands like
'force-reload-kmod'.

17
debian/openvswitch-switch.default vendored Normal file
View File

@ -0,0 +1,17 @@
# 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=
# DPDK options are now configured via ovs-vsctl/ovsdb.
# dpdk-extra is the fallback for users who formerly set e.g.
# '--vhost-owner libvirt-qemu:kvm --vhost-perm 0664'
# here or any other DPDK EAL arguments via DPDK_OPTS which are not covered by
# the default switches provided by ovs-vsctl.
# This is an arbitrary string that will get appended to the EAL commandline.
# For more on the new ovsdb based configuration of DPDK features, see:
# `man ovs-vswitchd.conf.db`

2
debian/openvswitch-switch.dirs vendored Normal file
View File

@ -0,0 +1,2 @@
/etc/openvswitch
/usr/share/openvswitch/switch

143
debian/openvswitch-switch.init vendored Executable file
View File

@ -0,0 +1,143 @@
#! /bin/sh
#
# Copyright (C) 2011, 2012, 2016 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
SYSTEMCTL_SKIP_REDIRECT=yes
. /lib/lsb/init-functions
. /usr/share/openvswitch/scripts/ovs-lib
test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
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`
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
;;
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

30
debian/openvswitch-switch.install vendored Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/dh-exec
debian/ifupdown.sh usr/share/openvswitch/scripts
debian/openvswitch-switch.default => /usr/share/openvswitch/switch/default.template
debian/ovs-systemd-reload /usr/share/openvswitch/scripts
etc/bash_completion.d/ovs-vsctl-bashcomp.bash usr/share/bash-completion/completions
usr/bin/ovs-dpctl
usr/bin/ovs-dpctl-top
usr/bin/ovs-pcap
usr/bin/ovs-tcpdump
usr/bin/ovs-tcpundump
usr/bin/ovs-vlan-test
usr/bin/ovs-vsctl
usr/sbin/ovs-vswitchd usr/lib/openvswitch-switch/
usr/share/man/man1/ovs-pcap.1
usr/share/man/man1/ovs-tcpundump.1
usr/share/man/man5/ovs-vswitchd.conf.db.5
usr/share/man/man8/ovs-ctl.8
usr/share/man/man8/ovs-dpctl-top.8
usr/share/man/man8/ovs-dpctl.8
usr/share/man/man8/ovs-kmod-ctl.8
usr/share/man/man8/ovs-tcpdump.8
usr/share/man/man8/ovs-vlan-test.8
usr/share/man/man8/ovs-vsctl.8
usr/share/man/man8/ovs-vswitchd.8
usr/share/openvswitch/scripts/ovs-check-dead-ifs
usr/share/openvswitch/scripts/ovs-ctl
usr/share/openvswitch/scripts/ovs-kmod-ctl
usr/share/openvswitch/scripts/ovs-save
usr/share/openvswitch/vswitch.ovsschema
usr/share/openvswitch/local-config.ovsschema

2
debian/openvswitch-switch.links vendored Normal file
View File

@ -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

View File

@ -0,0 +1,4 @@
# Lintian is bad at figuring out manpages
openvswitch-switch: spare-manual-page
# There are init scripts, they have different names
openvswitch-switch: package-supports-alternative-init-but-no-init.d-script

16
debian/openvswitch-switch.logrotate vendored Normal file
View File

@ -0,0 +1,16 @@
/var/log/openvswitch/*.log {
daily
compress
sharedscripts
create 640 root adm
missingok
rotate 30
postrotate
# Tell Open vSwitch daemons to reopen their log files
if [ -d /var/run/openvswitch ]; then
for ctl in /var/run/openvswitch/*.ctl; do
ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
done
fi
endscript
}

View File

@ -0,0 +1,18 @@
[Unit]
Description=Open vSwitch Record Hostname
After=ovsdb-server.service ovs-vswitchd.service network-online.target
Requires=ovsdb-server.service
Requires=ovs-vswitchd.service
Requires=network-online.target
AssertPathIsReadWrite=/var/run/openvswitch/db.sock
[Service]
Type=oneshot
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl record-hostname-if-not-set
ExecStop=/bin/true
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl record-hostname-if-not-set
TimeoutSec=300
RemainAfterExit=yes
[Install]
RequiredBy=openvswitch-switch.service

View File

@ -0,0 +1,26 @@
[Unit]
Description=Open vSwitch Forwarding Unit
After=ovsdb-server.service network-pre.target systemd-udev-settle.service
Before=network.target networking.service
Requires=ovsdb-server.service
ReloadPropagatedFrom=ovsdb-server.service
AssertPathIsReadWrite=/var/run/openvswitch/db.sock
PartOf=openvswitch-switch.service
DefaultDependencies=no
[Service]
LimitNOFILE=1048576
Type=forking
Restart=on-failure
Environment=HOME=/var/run/openvswitch
EnvironmentFile=-/etc/default/openvswitch-switch
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovsdb-server --no-monitor --system-id=random \
--no-record-hostname \
start $OVS_CTL_OPTS
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server \
--no-monitor --system-id=random \
--no-record-hostname \
restart $OVS_CTL_OPTS
TimeoutSec=300

View File

@ -0,0 +1,23 @@
[Unit]
Description=Open vSwitch Database Unit
After=systemd-journald.socket network-pre.target dpdk.service local-fs.target
Before=network.target networking.service
PartOf=openvswitch-switch.service
DefaultDependencies=no
[Service]
LimitNOFILE=1048576
Type=forking
Restart=on-failure
EnvironmentFile=-/etc/default/openvswitch-switch
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovs-vswitchd --no-monitor --system-id=random \
--no-record-hostname \
start $OVS_CTL_OPTS
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd \
--no-record-hostname \
--no-monitor restart $OVS_CTL_OPTS
RuntimeDirectory=openvswitch
RuntimeDirectoryMode=0755
RuntimeDirectoryPreserve=yes

70
debian/openvswitch-switch.postinst vendored Executable file
View File

@ -0,0 +1,70 @@
#!/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)
update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd \
/usr/lib/openvswitch-switch/ovs-vswitchd 100
mkdir -p /var/lib/openvswitch
conffile="/etc/default/openvswitch-switch"
if [ -f "${conffile}.dpkg-bak" ]; then
# Old conffile was modified, retain old content
mv "${conffile}.dpkg-bak" "${conffile}"
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

56
debian/openvswitch-switch.postrm vendored Executable file
View File

@ -0,0 +1,56 @@
#!/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
;;
abort-upgrade)
conffile="/etc/default/openvswitch-switch"
if [ -f "${conffile}.dpkg-bak" ] && [ ! -f "${conffile}" ]; then
# we backed up the old conffile, but upgrade is aborted - restore
mv "${conffile}.dpkg-bak" "${conffile}"
fi
;;
remove|upgrade|failed-upgrade|abort-install|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

50
debian/openvswitch-switch.preinst vendored Executable file
View File

@ -0,0 +1,50 @@
#!/bin/sh
# preinst script for openvswitch-switch
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade)
if dpkg --compare-versions "$2" lt-nl "2.17.2-1"; then
# the conffile was not owned by the pkg before if it had any
# custom content, retain as is to avoid an upgrade error or
# conffile prompt we back it up in that case and restore it
# in the postinst
# Since it wasn#t owned we can't query the old checksum via
# dpkg-query -W -f='${Conffiles}' as one usually would
conffile="/etc/default/openvswitch-switch"
md5olddebian="167668db26d5b29ec1469413b12d9bbe"
md5oldubuntu="ae4d44b501cfb1eb362d87644a1bae0d"
md5new="$(md5sum ${conffile} | sed -e 's/ .*//')"
if [ "${md5olddebian}" = "${md5new}" ]; then
# was unmodified, remove - will drop the new at unpack
rm -f "${conffile}"
else
if [ ! "${md5oldubuntu}" = "${md5new}" ]; then
# neither matches old default Debian, nor Ubuntu.
# move to restore in postinst after taking conffile ownership
mv "${conffile}" "${conffile}.dpkg-bak"
fi
fi
fi
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

27
debian/openvswitch-switch.prerm vendored Normal file
View File

@ -0,0 +1,27 @@
#!/bin/sh
set -e
case "$1" in
remove)
update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch/ovs-vswitchd
if [ -x /usr/lib/openvswitch-switch/ovs-vswitchd-dpdk ]; then
update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch/ovs-vswitchd-dpdk
fi
;;
deconfigure|upgrade|failed-upgrade)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

18
debian/openvswitch-switch.service vendored Normal file
View File

@ -0,0 +1,18 @@
[Unit]
Description=Open vSwitch
Before=network.target
After=network-pre.target ovsdb-server.service ovs-vswitchd.service
PartOf=network.target
Requires=ovsdb-server.service
Requires=ovs-vswitchd.service
[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/usr/share/openvswitch/scripts/ovs-systemd-reload
ExecStop=/bin/true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Also=ovs-record-hostname.service

4
debian/openvswitch-test.install vendored Normal file
View File

@ -0,0 +1,4 @@
usr/bin/ovs-l3ping
usr/bin/ovs-test
usr/share/man/man8/ovs-l3ping.8
usr/share/man/man8/ovs-test.8

View File

@ -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@debian.org>, Thu, 14 Aug 2014 10:49:34 -0700

View File

@ -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=""

View File

@ -0,0 +1 @@
etc/openvswitch-testcontroller

278
debian/openvswitch-testcontroller.init vendored Executable file
View File

@ -0,0 +1,278 @@
#!/bin/sh
#
# Copyright (c) 2011, 2014 Nicira, Inc.
# Copyright (c) 2007, 2009 Javier Fernandez-Sanguino <jfs@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

View File

@ -0,0 +1,2 @@
usr/bin/ovs-testcontroller
usr/share/man/man8/ovs-testcontroller.8

52
debian/openvswitch-testcontroller.postinst vendored Executable file
View File

@ -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

44
debian/openvswitch-testcontroller.postrm vendored Executable file
View File

@ -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

4
debian/openvswitch-vtep.default vendored Normal file
View File

@ -0,0 +1,4 @@
# This is a POSIX shell fragment -*- sh -*-
# ENABLE_OVS_VTEP: Whether to start ovs-vtep.
ENABLE_OVS_VTEP="false"

1
debian/openvswitch-vtep.dirs vendored Normal file
View File

@ -0,0 +1 @@
/usr/share/openvswitch

81
debian/openvswitch-vtep.init vendored Normal file
View File

@ -0,0 +1,81 @@
#!/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
SYSTEMCTL_SKIP_REDIRECT=yes
. /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

5
debian/openvswitch-vtep.install vendored Normal file
View File

@ -0,0 +1,5 @@
usr/bin/vtep-ctl
usr/share/man/man5/vtep.5
usr/share/man/man8/vtep-ctl.8
usr/share/openvswitch/scripts/ovs-vtep
usr/share/openvswitch/vtep.ovsschema

49
debian/ovs-systemd-reload vendored Executable file
View File

@ -0,0 +1,49 @@
#! /bin/sh
# Copyright (c) 2017 Red Hat, 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.
case $0 in
*/*) dir0=`echo "$0" | sed 's,/[^/]*$,,'` ;;
*) dir0=./ ;;
esac
. "$dir0/ovs-lib" || exit 1
stop_ovsdb() {
systemctl --job-mode=ignore-dependencies stop ovsdb-server
}
start_ovsdb() {
systemctl --job-mode=ignore-dependencies start ovsdb-server
}
stop_forwarding() {
systemctl --job-mode=ignore-dependencies stop ovs-vswitchd
}
start_forwarding() {
systemctl --job-mode=ignore-dependencies start ovs-vswitchd
}
add_managers() {
:
}
if [ "$1" = "force-reload-kmod" ]; then
force_reload_kmod
else
restart
fi
exit 0

18
debian/patches/ovs-ctl-ipsec.patch vendored Normal file
View File

@ -0,0 +1,18 @@
Description: Don't monitor ipsec daemon
For Ubuntu systemd will monitor the ovs-monitor-ipsec daemon so
there is no need to spawn a separate monitor thread to deal with
restarts. Doing so has the side effect of confusing systemd into
monitoring the wrong process.
Author: James Page <james.page@ubuntu.com>
Forwarded: not-needed
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -245,7 +245,7 @@ start_ovs_ipsec () {
--pidfile=${rundir}/ovs-monitor-ipsec.pid \
--ike-daemon=$IKE_DAEMON \
$no_restart \
- --log-file --detach --monitor unix:${rundir}/db.sock || return 1
+ --log-file --detach unix:${rundir}/db.sock || return 1
return 0
}

1
debian/patches/series vendored Normal file
View File

@ -0,0 +1 @@
ovs-ctl-ipsec.patch

126
debian/rules vendored Executable file
View File

@ -0,0 +1,126 @@
#!/usr/bin/make -f
# -*- makefile -*-
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%:
dh $@
execute_after_dh_autoreconf:
patch -f --no-backup-if-mismatch -i $(CURDIR)/debian/ltmain-whole-archive.diff build-aux/ltmain.sh
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
PARALLEL =
endif
PYTHON3S:=$(shell py3versions -vr)
DEB_HOST_ARCH?=$(shell dpkg-architecture -qDEB_HOST_ARCH)
override_dh_auto_configure:
test -d _debian || mkdir _debian
cd _debian && ( \
test -e Makefile || \
../configure --prefix=/usr --localstatedir=/var --enable-ssl \
--sysconfdir=/etc \
$(DATAPATH_CONFIGURE_OPTS) \
$(EXTRA_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 \
--with-dpdk=shared --sysconfdir=/etc \
$(DATAPATH_CONFIGURE_OPTS) \
$(EXTRA_CONFIGURE_OPTS) \
)
endif
# NOTE(jamespage): by default, just run all tests
TEST_LIST =
TEST_LIST_DPDK =
# armhf:
# 30: bfd - check that BFD works together with RSTP FAILED (bfd.at:829)
ifneq (,$(filter armhf, $(DEB_HOST_ARCH)))
TEST_LIST = 1-29 31-
TEST_LIST_DPDK = $(TEST_LIST)
endif # armhf
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
if $(MAKE) -C _debian check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
$(MAKE) -C _debian check TESTSUITEFLAGS='--recheck'; then :; \
else \
cat _debian/tests/testsuite.log; \
exit 1; \
fi
# Skip DPDK testing on arm64 as builders don't have crc32 support
# which is used in aarch64 based crc optimization in ovs >= 2.12.0~
ifneq (,$(filter i386 amd64 ppc64el, $(DEB_HOST_ARCH)))
if $(MAKE) -C _dpdk check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST_DPDK)' || \
$(MAKE) -C _dpdk check TESTSUITEFLAGS='--recheck'; then :; \
else \
cat _dpdk/tests/testsuite.log; \
exit 1; \
fi
endif # i386/amd64/ppc64el
endif # nocheck
override_dh_auto_build:
dh_auto_build --sourcedirectory=_debian -- dist distdir=openvswitch
dh_auto_build --sourcedirectory=_debian
ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH)))
dh_auto_build --sourcedirectory=_dpdk
endif
execute_before_dh_auto_clean:
find . -name "*.pyc" -delete
override_dh_auto_install:
dh_auto_install --sourcedirectory=_debian
execute_after_dh_install:
set -e && for pyvers in $(PYTHON3S); do \
cd python && python$$pyvers setup.py install --install-layout=deb \
--root $(CURDIR)/debian/python3-openvswitch; cd ..; \
mkdir -p $(CURDIR)/debian/openvswitch-test/usr/lib/python$$pyvers/dist-packages/ovstest; \
install -v -D -m 644 python/ovstest/*.py \
$(CURDIR)/debian/openvswitch-test/usr/lib/python$$pyvers/dist-packages/ovstest; \
done
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=ovs-record-hostname --no-start
override_dh_installsystemd:
dh_installsystemd -popenvswitch-switch --name=ovsdb-server --no-start
dh_installsystemd -popenvswitch-switch --name=ovs-vswitchd --no-start
dh_installsystemd -popenvswitch-switch --name=ovs-record-hostname --no-start
dh_installsystemd --restart-after-upgrade -Xovs-vswitchd.service -Xovsdb-server.service -Xovs-record-hostname.service
override_dh_strip:
dh_strip --dbgsym-migration='openvswitch-dbg (<< 2.17~)'
override_dh_python3:
dh_python3 --shebang=/usr/bin/python3
# Helper target for creating snapshots from upstream git
DATE=$(shell date +%Y%m%d)
# Upstream branch to track
BRANCH=branch-2.17
VERSION=2.17.0
get-orig-snapshot:
rm -Rf openvswitch-upstream
git clone --branch $(BRANCH) --depth 1 https://github.com/openvswitch/ovs openvswitch-upstream
cd openvswitch-upstream && \
export COMMIT=`git rev-parse --short HEAD` && \
git archive --format tgz --prefix=openvswitch-$(VERSION)~git$(DATE).$$COMMIT/ \
-o ../../openvswitch_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH)
rm -Rf openvswitch-upstream

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (quilt)

5
debian/source/lintian-overrides vendored Normal file
View File

@ -0,0 +1,5 @@
openvswitch source: very-long-line-length-in-source-file
openvswitch source: source-contains-autogenerated-visual-c++-file
# Until https://bugs.debian.org/1009163 is fixed we cannot add the +ds suffix
# as gbp does not support it
openvswitch source: repackaged-source-not-advertised

8
debian/tests/control vendored Normal file
View File

@ -0,0 +1,8 @@
Tests: vanilla dpdk
Depends:
iperf,
mininet (>= 2.2.0~),
openvswitch-switch,
openvswitch-switch-dpdk [amd64 i386],
openvswitch-testcontroller,
Restrictions: needs-root rw-build-tree isolation-machine

45
debian/tests/dpdk vendored Executable file
View File

@ -0,0 +1,45 @@
#!/bin/sh
set -e
if [ ! -x /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk ]; then
echo "DPDK enabled binary not detected - skipping"
exit 0
fi
sse3flag=$(sed -n "/^flags.*sse3/p" < /proc/cpuinfo | wc -l)
if [ "${sse3flag}" -eq 0 ]; then
echo "sse3 not available in test environment"
echo "for adt-virt-qemu please consider adding --qemu-options='-cpu qemu64,+ssse3'"
echo "SKIPPING"
exit 0
fi
update-alternatives --set ovs-vswitchd \
/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
service openvswitch-switch restart
modprobe openvswitch || true
echo "kernel modules loaded: "
# Check that ovs loaded
lsmod | grep "openvswitch"
echo "OK"
echo "Checking daemons: "
pgrep ovs-vswitchd
pgrep ovsdb-server
echo "OK"
echo "stop conflicting openvswitch testcontroller"
systemctl stop openvswitch-testcontroller || true
if dpkg --compare-versions "$(dpkg-query --showformat '${Version}\n' --show mininet)" ge "2.3.0-1"; then
PYCMD="python3"
else
PYCMD="python2"
fi
printf "running openflow tests using mininet"
${PYCMD} `dirname $0`/openflow.py 2>&1
echo "OK"

66
debian/tests/openflow.py vendored Executable file
View File

@ -0,0 +1,66 @@
import unittest
import logging
from mininet.net import Mininet
import mininet.log as log
from mininet.node import OVSController, OVSKernelSwitch
Switch = OVSKernelSwitch
Controller = OVSController
logging.basicConfig(level=logging.DEBUG)
log.setLogLevel('info')
class BasicOpenflowTest(unittest.TestCase):
def addHost(self, N):
logging.debug("Creating host h%s and add to net.", N)
name = 'h%d' % N
ip = '10.0.0.%d' % N
return self.net.addHost(name, ip=ip)
def setUp(self):
self.net = Mininet(controller=Controller, switch=Switch)
logging.info("Creating controllers")
self.net.addController('c1', command='ovs-testcontroller')
logging.info("Creating switches")
s1 = self.net.addSwitch('s1', protocols="OpenFlow10")
s2 = self.net.addSwitch('s2', protocols="OpenFlow10")
logging.info("Creating hosts (7 on each switch)")
hosts1 = [self.addHost(n) for n in (1, 2, 3, 4, 5, 6, 7)]
hosts2 = [self.addHost(n) for n in (8, 9, 10, 11, 12, 13, 14)]
logging.info("Creating links")
for h in hosts1:
self.net.addLink(s1, h)
for h in hosts2:
self.net.addLink(s2, h)
self.net.addLink(s1, s2)
logging.info("Starting network")
self.net.start()
def testPingAll(self):
logging.info("Testing network")
packetLoss = self.net.pingAll()
self.assertTrue(
packetLoss == 0,
"Packet loss during ping test %s" %
packetLoss)
def testIPerfTCP(self):
logging.info("Running TCP performance test")
self.net.iperf()
def testIPerfUDP(self):
logging.info("Running UDP performance test")
self.net.iperf(l4Type='UDP')
def tearDown(self):
logging.info("Stopping network")
self.net.stop()
if __name__ == '__main__':
unittest.main()

29
debian/tests/vanilla vendored Executable file
View File

@ -0,0 +1,29 @@
#!/bin/sh
set -e
echo "Checking service status right after install: "
# for transparency we want to see all status and then fail if one is inactive
systemctl status ovsdb-server.service || true
systemctl status ovs-vswitchd.service || true
systemctl status openvswitch-switch.service || true
systemctl is-active ovs-vswitchd.service ovsdb-server.service openvswitch-switch.service
echo "OK"
echo "Checking daemon pids to exist: "
pgrep ovs-vswitchd
pgrep ovsdb-server
echo "OK"
echo "stop conflicting openvswitch testcontroller"
systemctl stop openvswitch-testcontroller || true
if dpkg --compare-versions "$(dpkg-query --showformat '${Version}\n' --show mininet)" ge "2.3.0-1"; then
PYCMD="python3"
else
PYCMD="python2"
fi
printf "running openflow tests using mininet"
${PYCMD} `dirname $0`/openflow.py 2>&1
echo "OK"

2
debian/watch vendored Normal file
View File

@ -0,0 +1,2 @@
version=4
http://www.openvswitch.org/download/ https://www.openvswitch.org/releases/openvswitch-(.*).tar.gz