2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-27 15:18:06 +00:00

test-controller: Rename to ovs-testcontroller, again install.

mininet uses the Open vSwitch controller by default, for testing.

CC: 757761@bugs.debian.org
Reported-at: https://bugs.debian.org/757761
Requested-by: Tomasz Buchert <tomasz.buchert@inria.fr>
Requested-by: Dariusz Dwornikowski <dariusz.dwornikowski@cs.put.poznan.pl>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
This commit is contained in:
Ben Pfaff
2014-08-15 10:32:50 -07:00
parent 588c900103
commit 0bc1b46a38
26 changed files with 523 additions and 66 deletions

1
debian/.gitignore vendored
View File

@@ -16,6 +16,7 @@
/openvswitch-switch
/openvswitch-switch.copyright
/openvswitch-test
/openvswitch-testcontroller
/openvswitch-vtep
/python-openvswitch
/tmp

8
debian/automake.mk vendored
View File

@@ -37,6 +37,14 @@ EXTRA_DIST += \
debian/openvswitch-test.dirs \
debian/openvswitch-test.install \
debian/openvswitch-test.manpages \
debian/openvswitch-testcontroller.README.Debian \
debian/openvswitch-testcontroller.default \
debian/openvswitch-testcontroller.dirs \
debian/openvswitch-testcontroller.init \
debian/openvswitch-testcontroller.install \
debian/openvswitch-testcontroller.manpages \
debian/openvswitch-testcontroller.postinst \
debian/openvswitch-testcontroller.postrm \
debian/openvswitch-vtep.default \
debian/openvswitch-vtep.dirs \
debian/openvswitch-vtep.init \

5
debian/changelog vendored
View File

@@ -1,5 +1,10 @@
openvswitch (2.3.90-1) unstable; urgency=low
[ Open vSwitch team ]
* The openvswitch-testcontroller package is new. It reintroduces the
simple OpenFlow controller that was packaged with Open vSwitch prior to
version 2.1, at request of users who find it useful for testing basic
OpenFlow setups. It is still not a necessary or desirable part of most
Open vSwitch deployments.
* New upstream version
- Nothing yet! Try NEWS...

17
debian/control vendored
View File

@@ -60,7 +60,8 @@ Description: Open vSwitch common components
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.
openvswitch-common provides components required by both openvswitch-switch
and openvswitch-testcontroller.
Package: openvswitch-switch
Architecture: linux-any
@@ -117,6 +118,17 @@ Description: Open vSwitch public key infrastructure dependency package
Open vSwitch switches and controllers, reducing the risk of
man-in-the-middle attacks on the Open vSwitch network infrastructure.
Package: openvswitch-testcontroller
Architecture: linux-any
Depends:
${shlibs:Depends}, openvswitch-common (= ${binary:Version}),
openvswitch-pki (= ${source:Version}), ${misc: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-dbg
Section: debug
Architecture: linux-any
@@ -124,6 +136,9 @@ Depends:
${shlibs:Depends}, ${misc:Depends},
openvswitch-common (= ${binary:Version}),
openvswitch-switch (= ${binary:Version})
Conflicts:
openvswitch-testcontroller (<< ${binary:Version}),
openvswitch-testcontroller (>> ${binary:Version})
Description: Debug symbols for Open vSwitch packages
Open vSwitch is a production quality, multilayer, software-based,
Ethernet virtual switch. It is designed to enable massive network

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: 6633). The private key, certificate, and CA certificate
# must be specified below.
#
# * "ptcp:[PORT]": Listen for TCP connections on the specified PORT
# (default: 6633). 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 @@
usr/bin/ovs-testcontroller

View File

@@ -0,0 +1 @@
_debian/utilities/ovs-testcontroller.8

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

@@ -0,0 +1,60 @@
#!/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 cacert.pem is a symlink to the old location for cacert.pem,
# remove it so that we can symlink it to the new location.
if test -h cacert.pem && \
test X"`readlink cacert.pem`" = X/usr/share/openvswitch/pki/switchca/cacert.pem; then
rm -f cacert.pem
fi
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