# $NetBSD: t_ipf.in,v 1.1 2009/02/20 21:42:59 jmmv Exp $ # # Copyright (c) 2008 The NetBSD Foundation, Inc. # All rights reserved. # # 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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. # # # (C)opyright 1993-1996 by Darren Reed. # # See the IPFILTER.LICENCE file for details on licencing. # h_copydata() { test -f $(atf_get_srcdir)/input/$1 && \ cp $(atf_get_srcdir)/input/$1 in test -f $(atf_get_srcdir)/regress/$1 && \ cp $(atf_get_srcdir)/regress/$1 reg test -f $(atf_get_srcdir)/expected/$1 && \ cp $(atf_get_srcdir)/expected/$1 exp } h_dotest() { h_copydata $1 { while read rule; do atf_check -x "echo \"$rule\" | ipftest -F \ $2 -Rbr - -i in $4 >>out" echo "--------" >>out done; } >out diff -u exp out || atf_fail "results differ" } h_itest() { h_copydata $1 case $3 in ipf) atf_check -o file:exp -e ignore ipf -Rnvf reg ;; ipftest) atf_check -o file:exp ipftest -D -r reg -i /dev/null ;; esac } h_itest_i19() { cp "$(atf_get_srcdir)/expected/i19.dist" . if [ "`grep LOG_SECURITY /usr/include/sys/syslog.h 2>&1`" = "" ] ; then if [ "`grep LOG_AUDIT /usr/include/sys/syslog.h 2>&1`" = "" ] ; then sed -e 's/security/!!!/g' i19.dist > i19.p1; else sed -e 's/security/audit/g' i19.dist > i19.p1; fi else cp i19.dist i19.p1; fi if [ "`grep LOG_AUTHPRIV /usr/include/sys/syslog.h 2>&1`" = "" ] ; then sed -e 's/authpriv/!!!/g' i19.p1 > i19.p2; else cp i19.p1 i19.p2; fi if [ "`grep LOG_LOGALERT /usr/include/sys/syslog.h 2>&1`" = "" ] ; then sed -e 's/logalert/!!!/g' i19.p2 > i19.p1; else cp i19.p2 i19.p1; fi if [ "`grep LOG_FTP /usr/include/sys/syslog.h 2>&1`" = "" ] ; then sed -e 's/ftp/!!!/g' i19.p1 > i19.p2; else cp i19.p1 i19.p2; fi if [ "`egrep 'LOG_CRON.*15' /usr/include/sys/syslog.h 2>&1`" != "" ] ; then sed -e 's/cron/cron2/g' i19.p2 > i19; else cp i19.p2 i19; fi /bin/rm i19.p? mv i19 exp h_itest "$@" } h_nattest() { h_copydata $1 if [ $3 = hex ] ; then format="-xF $2" else format="-F $2" fi format="$4 $format" { while read rule; do atf_check -o save:save -x \ "echo \"$rule\" | ipftest $format -RbN - -i in" cat save >>out echo "-------------------------------" >>out done; } >out echo "-------------------------------" >>out done; } >out ;; esac diff -u exp out || atf_fail "results differ" } h_intest() { h_copydata $1 atf_check -o file:exp -e ignore ipnat -Rnvf reg } h_iptest() { h_copydata $1 mkdir input cp $(atf_get_srcdir)/input/ip2.data input/ atf_check -o file:exp -e ignore ippool -f reg -nRv } h_logtest() { h_copydata $1 cp $(atf_get_srcdir)/expected/$1.b exp.b case `uname -s` in OSF1) GMT=: ;; *) GMT=GMT ;; esac { while read rule; do echo $rule >>out atf_check -o ignore -x \ "echo $rule | ipftest -br - -F $2 -i in -l logout" atf_check -o save:save -x "TZ=$GMT ipmon -P /dev/null -f logout" cat save >>out echo "--------" >>out atf_check -o save:save -x "TZ=$GMT ipmon -P /dev/null -bf logout" cat save >>out.b echo "--------" >>out.b done; } >out echo "--------" >>out atf_check -o save:save -x "TZ=$GMT ipmon -P /dev/null -bf logout" cat save >>out.b echo "--------" >>out.b diff -u exp out || atf_fail "results differ" diff -u exp.b out.b || atf_fail "results differ" } h_dotest6() { h_copydata $(echo ${1} | tr _ .) ipftest -6 -r /dev/null -i /dev/null >/dev/null 2>&1 \ || atf_skip "skipping IPv6 tests" { while read rule; do atf_check -o save:save -x "echo \"$rule\" | \ ipftest -F $2 -6br - -i in" cat save >>out echo "--------" >>out done; } /dev/null cp $(atf_get_srcdir)/regress/$1.ipf ipf if [ -f pool ] ; then atf_check -o save:out ipftest -RD -b -P pool -r ipf -i in else atf_check -o save:out ipftest -RD -b -r ipf -i in fi echo "-------------------------------" >>out } h_bpftest() { h_copydata $(echo ${1} | tr _ .) cp "$(atf_get_srcdir)/input/$(echo ${1} | sed s,bpf_,,)" in { while read rule; do atf_check -o save:save -x "echo '$rule' | ipftest -Rbr - -i in" cat save >>out echo "--------" >>out done; }