debian/0000755000000000000000000000000011763241162007171 5ustar debian/compat0000644000000000000000000000000211736615015010371 0ustar 8 debian/ramond.default0000644000000000000000000000034611736615015012024 0ustar # Defaults for ramond initscript # sourced by /etc/init.d/ramond # installed at /etc/default/ramond by the maintainer scripts # # This is a POSIX shell fragment # # Path to the ramond config file # RAMONDCONFIG=/etc/ramond.conf debian/rules0000755000000000000000000000040111736712202010242 0ustar #!/usr/bin/make -f # -*- makefile -*- # Inject the dpkg buildflags export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@ debian/examples0000644000000000000000000000005311736615015010732 0ustar ramond.conf.example ramond.conf.dtd demo.pldebian/watch0000644000000000000000000000014211736615015010221 0ustar # Compulsory line, this is a version 3 file version=3 http://sf.net/ramond/ramond-(.+)\.tar\.bz2 debian/manpages0000644000000000000000000000002711736615015010710 0ustar ramond.8 ramond.conf.5 debian/source/0000755000000000000000000000000011736615567010507 5ustar debian/source/format0000644000000000000000000000001411736615015011701 0ustar 3.0 (quilt) debian/install0000644000000000000000000000002211736615015010556 0ustar ramond /usr/sbin/ debian/patches/0000755000000000000000000000000011736712743010630 5ustar debian/patches/0003-Strip-the-README-off-installation-instructions.patch0000644000000000000000000000153211736712743023055 0ustar From: Nicolas Dandrimont Date: Fri, 5 Aug 2011 09:45:13 +0200 Subject: Strip the README off installation instructions --- README | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/README b/README index 79a70b2..7477b1d 100644 --- a/README +++ b/README @@ -4,21 +4,6 @@ * * ***************************************************** -Installation: - Type 'make' to compile. - - Under debian etch you will need: - * gcc and make ! - * libapr1-dev - * libpcap0.8-dev - * libxml2-dev - - Under freebsd 7 you will need: - * gcc and make ! - * devel/apr - * net/libpcap - * textproc/libxml2 - Recommended Hardware: The author intended this program to run on one machine with two network cards. One card (the monitoring interface) uses 802.1q and connects to debian/patches/0002-Add-manpages-for-ramond-and-ramond.conf.patch0000644000000000000000000001547611736712743021532 0ustar From: Nicolas Dandrimont Date: Fri, 5 Aug 2011 09:45:13 +0200 Subject: Add manpages for ramond and ramond.conf --- ramond.8 | 77 +++++++++++++++++++++++++++++ ramond.conf.5 | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 ramond.8 create mode 100644 ramond.conf.5 diff --git a/ramond.8 b/ramond.8 new file mode 100644 index 0000000..dcd7d55 --- /dev/null +++ b/ramond.8 @@ -0,0 +1,77 @@ +.TH ramond 8 +.SH NAME +ramond \- IPv6 Router Advertisement MONitor Daemon +.SH SYNOPSIS +.B ramond +.RI "[ \-c " configfile " ] [ \-d ]" +.PP +.BR ramond " \-h" +.SH "DESCRIPTION" +.PP +.RB "This manual page documents briefly the " ramond " command\&." +.PP +.BR ramond " is a daemon program monitoring IPv6 router advertisement packets\&." +When an advert is reveived, a configurable action occurs\&. +.PP +.BR ramond " was designed to \(lqclear\(rq (by sending spoofed zero lifetime adverts) rogue routes sent by users running 6to4 gateways on a campus network\&." +Actions are scriptable\&. +Almost all the available information is passed to a script via environmental variables (see the +.B ENVIRONMENT +section for details)\&. +.SH "OPTIONS" +.PP +The program follows the usual GNU command line syntax, without long options\&. +A summary of options is included below\&. +.TP +.BI "\-c " configfile +.RB "Sets the path to the " ramond " configuration file\&." +Default is /etc/ramond\&.conf +.TP +.B \-d +Do not daemonize\&. +.TP +.B \-h +Show summary of options\&. +.SH "FILES" +.TP +/etc/ramond\&.conf +.RB "The system\-wide configuration file to control the behaviour of " ramond "\&. See " ramond.conf "(5) for further details\&." +.SH "ENVIONMENT" +.PP +.RB "This section details the environment variables set by " ramond " when it runs a user-configured script\&." +.TP +.B PREFIX +The advertised prefix, or null +.TP +.B PREFIX_LEN +The length of the advertised prefix, or null +.TP +.B SOURCE_ADDR +The IPv6 source address of the packet +.TP +.B SOURCE_MAC +The MAC source address of the packet +.TP +.B INTERFACE +The interface which the packet was received on +.SH "SEE ALSO" +.PP +.BR ramond.conf (5) +.SH "AUTHORS" +.TP +.BR "James Morse" " <\&morse_@users\&.sourceforge\&.net\&>" +.RB "Wrote the " ramond " software\&." +.TP +.BR "Nicolas Dandrimont" " <\&nicolas\&.dandrimont@crans\&.org\&>" +Wrote this manpage for the Debian system\&. +.SH "COPYRIGHT" +.br +Copyright \(co 2010 Nicolas Dandrimont +.br +.PP +This manual page was written for the Debian system (and may be used by others)\&. +.PP +Permission is granted to copy, distribute and/or modify this document under the terms of the usual 3\-clause BSD license\&. +.PP +On Debian systems, the complete text of the 3\-clause BSD license License can be found in /usr/share/doc/ramond/copyright\&. +.sp diff --git a/ramond.conf.5 b/ramond.conf.5 new file mode 100644 index 0000000..22e2132 --- /dev/null +++ b/ramond.conf.5 @@ -0,0 +1,150 @@ +.TH ramond\&.conf 5 +.SH NAME +.RB "ramond.conf \- Configuration file for " ramond (8) +.SH DESCRIPTION +.PP +.RB "This manual page documents briefly the " ramond\&.conf " configuration file\&." +.PP +.BR ramond\&.conf " is an XML file containing the rules for Router Advertisement processing by " ramond "(8)\&." +.PP +The rules are processed in the order they are defined in the file. +.SH SYNTAX +.PP +.RB "One may refer to the DTD given in " /usr/share/doc/ramond/examples/ramond.conf.dtd "\&." +.PP +.RB "The root element, " ", contains one optional attribute, " logfile ", giving the path to the logfile for the daemon\&." +.PP +.RB "This element may contain one or more " "s, and one or more " "s\&." +.PP +.RB "The " " must have a " name " attribute, and contains one or more " "elements\&." +.PP +.RB "The " " may contain a few attributes :" +.TP +.B prefix +An IPv6 prefix used for matching RA packets +.TP +.B mac +.RB "A " " name used for matching source MAC addresses of the RA packets" +.TP +.B lifetime +.RB "This attribute, when having a " \(lq0\(rq " value, is used for matching routes that are being cleared" +.TP +.B interface +The interface which the RA packet came from +.PP +.RB "The " " may contain :" +.RS 2 +.RB "\(bu one or more " " elements containing the path of the scripts to run when a packet is matched" +.br +.RB "\(bu a " " element, so that the matched route will be cleared by " ramond "(8)" +.br +.RB "\(bu or no element, indicating an \(lqignore\(rq rule\&." +.RE +.SH ENVIRONMENT +.RB "The environment variables the configured scripts are run with are listed in the " ramond "(8) manpage\&." +.SH EXAMPLE CONFIGURATION FILE +.PP +.RB "Set the logfile to be " /var/log/ramond.log "\&." +.PP +.RS 1 + +.PP +.RS 1 +.RB "Define a " router " mac\-list\&." +.RE +.PP +.RS 2 + +.RS 2 +00:11:22:33:44:55 +.br +00:22:44:66:88:00 +.RE + +.RE +.PP +.RS 1 +.RB "Define a rule checking if the " router " routes are being cleared\&." +.RE +.PP +.RS 2 + +.RS 2 +/usr/local/sbin/routenotify route\-cleared +.RE + +.RE +.PP +.RS 1 +.RB "Define a rule ignoring our " router " announcing routes for prefix " 2001:dead:cafe:babe::/52 "\&." +.RE +.PP +.RS 2 + +.RS 2 + +.RE + +.RE +.PP +.RS 1 +.RB "Clear the 6to4 routes coming on interface " eth0 "\&." +.RE +.PP +.RS 2 + +.RS 2 +/usr/local/sbin/routenotify 6to4\-advertised +.br + +.RE + +.RE +.PP +.RS 1 +Match on all advertised prefixes +.RE +.PP +.RS 2 + +.RS 2 +/usr/local/sbin/routenotify route\-advertised +.RE + +.RE +.PP +.RS 1 +Match on all RA packets (even those not advertising a prefix) +.RE +.PP +.RS 2 + +.RS 2 +/usr/local/sbin/routenotify route\-advertised +.RE + +.RE +.PP + +.RE +.SH SEE ALSO +.PP +.BR ramond "(8), " /usr/share/doc/ramond/examples " for a sample " ramond\&.conf " and a sample processing script" +.SH AUTHORS +.TP +.BR "James Morse" " <\&morse_@users\&.sourceforge\&.net\&>" +.RB "Wrote the " ramond " software\&." +.TP +.BR "Nicolas Dandrimont" " <\&nicolas\&.dandrimont@crans\&.org\&>" +Wrote this manpage for the Debian system\&. +.SH COPYRIGHT +.br +Copyright \(co 2010 Nicolas Dandrimont +.br +.PP +This manual page was written for the Debian system (and may be used by others)\&. +.PP +Permission is granted to copy, distribute and/or modify this document under the terms of the usual 3\-clause BSD license\&. +.PP +On Debian systems, the complete text of the 3\-clause BSD license License can be found in /usr/share/doc/ramond/copyright\&. +.sp debian/patches/0001-Daemonize-ramond-by-default.patch0000644000000000000000000000537711736712743017466 0ustar From: Nicolas Dandrimont Date: Fri, 5 Aug 2011 09:45:13 +0200 Subject: Daemonize ramond by default This patch also adds a -d option to disable daemonizing. --- src/main.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/main.h | 1 + 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 0cb6e8a..3c4543d 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,5 @@ #include "main.h" #include "log.h" - apr_pool_t *masterPool; struct configuration *config; @@ -14,8 +13,9 @@ void listRules(void); void usage(char *prog_name) { - fprintf(stderr, "%s [-h] [-c /etc/ramond.conf]\n", prog_name); + fprintf(stderr, "%s [-h] [-d] [-c /etc/ramond.conf]\n", prog_name); fprintf(stderr, " -h : print this help.\n"); + fprintf(stderr, " -d : do not daemonize.\n"); fprintf(stderr, " -c : path to config file.\n"); } @@ -824,11 +824,74 @@ void rafixd_clearRoute(struct ra_info *data) pcap_close(fd); } +/** + * daemonize ramond. + */ +void daemonize(void) +{ + pid_t pid, sid; + int i, pidfile, ret; + + char pidstr[32]; + + pid = fork(); + + if(pid < 0) + exit(EXIT_FAILURE); + else if(pid > 0) + exit(EXIT_SUCCESS); + + umask(027); + if((chdir("/")) < 0) + exit(EXIT_FAILURE); + + sid = setsid(); + if(sid < 0) + exit(EXIT_FAILURE); + + pid = fork(); + + if(pid < 0) + exit(EXIT_FAILURE); + else if(pid > 0) + exit(EXIT_SUCCESS); + + /* Cleanup open FDs */ + for(i = getdtablesize(); i>=0; --i) + close(i); + + i = open("/dev/null", O_RDWR); /* (re)open stdin */ + ret = dup(i); /* stdout */ + if(ret < 0) + exit(EXIT_FAILURE); + ret = dup(i); /* stderr */ + if(ret < 0) + exit(EXIT_FAILURE); + + pidfile = open("/var/run/ramond.pid", O_RDWR|O_CREAT, 0640); + if(pidfile < 0) + exit(EXIT_FAILURE); + if(flock(pidfile, F_TLOCK, 0) < 0) + exit(EXIT_SUCCESS); + + sprintf(pidstr, "%d\n", getpid()); + ret = write(pidfile, pidstr, strlen(pidstr)); + if(ret < strlen(pidstr)) + exit(EXIT_FAILURE); + + signal(SIGTSTP,SIG_IGN); /* ignore tty signals */ + signal(SIGTTOU,SIG_IGN); + signal(SIGTTIN,SIG_IGN); +} + int main(int argc, char *argv[]) { int socket; struct ra_info data; + int debug = 0; + int i = 0; + if(argc > 6) { usage(argv[0]); @@ -842,6 +905,20 @@ int main(int argc, char *argv[]) signal(SIGCHLD, sigchld_handler); + for(i = 0; i < argc; i++) + { + if(!strcmp(argv[i], "-d")) + { + debug = 1; + break; + } + } + + if(!debug) + { + daemonize(); + } + /* Find the config file */ if(!parseConfigFile(argc,argv)) { diff --git a/src/main.h b/src/main.h index 26de811..6552d5b 100644 --- a/src/main.h +++ b/src/main.h @@ -1,5 +1,6 @@ #include #include +#include #include #include #include debian/patches/series0000644000000000000000000000030111736712743012037 0ustar 0001-Daemonize-ramond-by-default.patch 0002-Add-manpages-for-ramond-and-ramond.conf.patch 0003-Strip-the-README-off-installation-instructions.patch 0004-Honor-CFLAGS-CPPFLAGS-and-LDFLAGS.patch debian/patches/0004-Honor-CFLAGS-CPPFLAGS-and-LDFLAGS.patch0000644000000000000000000000254211736712743017266 0ustar From: Nicolas Dandrimont Date: Mon, 12 Dec 2011 19:38:38 +0100 Subject: Honor CFLAGS, CPPFLAGS and LDFLAGS --- Makefile | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 38a2056..c27eef3 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,10 @@ GCC=/usr/bin/gcc RM=/bin/rm -CFLAGS=-ggdb -LDFLAGS=-lpcap +CFLAGS ?= -ggdb +LDFLAGS ?= + +PCAP_LDFLAGS=-lpcap APR_CFLAGS=`apr-1-config --includes --cppflags --cflags` APR_LDFLAGS=`apr-1-config --link-ld --libs ` @@ -13,17 +15,17 @@ XML_LDFLAGS=`xml2-config --libs` all: ramond log.o: src/log.c - $(GCC) -c src/log.c $(CFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) + $(GCC) -c src/log.c $(CFLAGS) $(CPPFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) xmlparser.o: src/xmlparser.c src/type.h - $(GCC) -c src/xmlparser.c $(CFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) + $(GCC) -c src/xmlparser.c $(CFLAGS) $(CPPFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) main.o: src/main.c src/type.h - $(GCC) -c src/main.c $(CFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) + $(GCC) -c src/main.c $(CFLAGS) $(CPPFLAGS) $(APR_CFLAGS) $(XML_CFLAGS) ramond: main.o xmlparser.o log.o - $(GCC) log.o xmlparser.o main.o -o ramond $(LDFLAGS) $(APR_LDFLAGS) $(XML_LDFLAGS) + $(GCC) log.o xmlparser.o main.o -o ramond $(LDFLAGS) $(PCAP_LDFLAGS) $(APR_LDFLAGS) $(XML_LDFLAGS) clean: @-$(RM) ramond debian/control0000644000000000000000000000162311763233533010601 0ustar Source: ramond Section: net DM-Upload-Allowed: yes Priority: extra Maintainer: Nicolas Dandrimont Build-Depends: debhelper (>= 8.0.0~), dpkg-dev (>= 1.16.1~), libpcap0.8-dev, libapr1-dev, libxml2-dev, zlib1g-dev Standards-Version: 3.9.3 Homepage: http://ramond.sourceforge.net/ Vcs-Git: git://anonscm.debian.org/collab-maint/ramond.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/ramond.git Package: ramond Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: IPv6 Router Advertisement MONitoring Daemon ramond is a scriptable IPv6 Router Advertisement Monitoring Daemon. . The tool was designed to `clear' (by sending spoofed zero lifetime adverts) rogue-routes sent by users running 6to4 gateways on a campus network. . Actions are scriptable. Almost all the available information is passed to a script via environmental variables. debian/changelog0000644000000000000000000000331711763241162011047 0ustar ramond (0.5-4) unstable; urgency=low * Add explicit build-depends on zlib1g-dev (Closes: #676011) - Thanks to Lucas Nussbaum for the report and rebuilds -- Nicolas Dandrimont Tue, 05 Jun 2012 01:18:59 +0200 ramond (0.5-3) unstable; urgency=low * Modify the CFLAGS/LDFLAGS patch to also honor CPPFLAGS * Enable CPPFLAGS hardening build flags (Closes: #665478) - Thanks to Simon Ruderich for the patches * Fix compilation warnings introduced by the daemonization patch * Update to Standards-Version 3.9.3 (no changes) - Update to machine-readable copyright format 1.0 (no changes) -- Nicolas Dandrimont Wed, 04 Apr 2012 02:36:08 +0200 ramond (0.5-2) unstable; urgency=low * Honor the RAMONDCONFIG /etc/default/ramond variable (Closes: #651849) * Add Vcs-{Git,Browser} to debian/control * Enable hardening buildflags - Build-Depend on dpkg-dev (>= 1.16.1~) - Patch the Makefile to honor CFLAGS/LDFLAGS * Update the debian/copyright format [ Kan-Ru Chen ] * Add DM-Upload-Allowed to debian/control -- Nicolas Dandrimont Mon, 12 Dec 2011 22:33:43 +0100 ramond (0.5-1) unstable; urgency=low * New upstream release - Parse the RA options to clear the preferred-time of rogue prefixes. * Update Standards-Version to 3.9.2 (no changes) -- Nicolas Dandrimont Fri, 05 Aug 2011 09:48:20 +0200 ramond (0.4-1) unstable; urgency=low * Initial release. (Closes: #604168) * Add patch to daemonize ramond by default. * Add manpages for ramond(8) and ramond.conf(5). -- Nicolas Dandrimont Sun, 21 Nov 2010 23:05:07 +0100 debian/docs0000644000000000000000000000001611736615015010043 0ustar README THANKS debian/init.d0000644000000000000000000001107211736710010010273 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: ramond # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Router Advertisement MONitoring Daemon # Description: ramond is a daemon program monitoring IPv6 # router advertisement packets. ### END INIT INFO # Author: Nicolas Dandrimont # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="IPv6 RA monitoring Daemon" # Introduce a short description here NAME=ramond # Introduce the short server's name here DAEMON=/usr/sbin/ramond # Introduce the server's location here DAEMON_ARGS="" # Arguments to run the daemon with PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x $DAEMON ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions [ "x$RAMONDCONFIG" = "x" ] && RAMONDCONFIG=/etc/ramond.conf [ "x$DAEMON_ARGS" = "x" ] && DAEMON_ARGS="-c $RAMONDCONFIG" # # Function that starts the daemon/service # do_start() { if [ ! -r $RAMONDCONFIG ]; then log_failure_msg "ramond config file $RAMONDCONFIG doesn't exist; set the right path to it in /etc/default/$NAME" return 2 fi # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : debian/copyright0000644000000000000000000000724311736712202011130 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: ramond Upstream-Contact: James Morse Source: http://ramond.sourceforge.net/ Files: * Copyright: Copyright (c) James Morse, University Of Southampton License: BSD-3-clause License is BSD --------------------------- Copyright (c) James Morse, University Of Southampton All rights reserved. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the name of the University of Southampton 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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. Files: debian/* Copyright: Copyright (C) 2010,2011 Nicolas Dandrimont License: BSD-3-clause Copyright (C) 2010,2011 Nicolas Dandrimont All rights reserved. . Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 COPYRIGHT HOLDER 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.