Home | History | Annotate | Line # | Download | only in ipsec
common.sh revision 1.7.6.1
      1  1.7.6.1  martin #	$NetBSD: common.sh,v 1.7.6.1 2020/11/10 11:44:22 martin Exp $
      2      1.1   ozaki #
      3      1.1   ozaki # Copyright (c) 2017 Internet Initiative Japan Inc.
      4      1.1   ozaki # All rights reserved.
      5      1.1   ozaki #
      6      1.1   ozaki # Redistribution and use in source and binary forms, with or without
      7      1.1   ozaki # modification, are permitted provided that the following conditions
      8      1.1   ozaki # are met:
      9      1.1   ozaki # 1. Redistributions of source code must retain the above copyright
     10      1.1   ozaki #    notice, this list of conditions and the following disclaimer.
     11      1.1   ozaki # 2. Redistributions in binary form must reproduce the above copyright
     12      1.1   ozaki #    notice, this list of conditions and the following disclaimer in the
     13      1.1   ozaki #    documentation and/or other materials provided with the distribution.
     14      1.1   ozaki #
     15      1.1   ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16      1.1   ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17      1.1   ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18      1.1   ozaki # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19      1.1   ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20      1.1   ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21      1.1   ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22      1.1   ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23      1.1   ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24      1.1   ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25      1.1   ozaki # POSSIBILITY OF SUCH DAMAGE.
     26      1.1   ozaki #
     27      1.1   ozaki 
     28  1.7.6.1  martin HIJACKING_NPF="${HIJACKING},blanket=/dev/npf"
     29  1.7.6.1  martin 
     30      1.1   ozaki test_flush_entries()
     31      1.1   ozaki {
     32      1.1   ozaki 	local sock=$1
     33      1.1   ozaki 
     34      1.1   ozaki 	export RUMP_SERVER=$sock
     35      1.1   ozaki 
     36      1.1   ozaki 	atf_check -s exit:0 -o empty $HIJACKING setkey -F
     37      1.1   ozaki 	atf_check -s exit:0 -o empty $HIJACKING setkey -F -P
     38      1.1   ozaki 	atf_check -s exit:0 -o match:"No SAD entries." $HIJACKING setkey -D -a
     39      1.1   ozaki 	atf_check -s exit:0 -o match:"No SPD entries." $HIJACKING setkey -D -P
     40      1.1   ozaki }
     41      1.2   ozaki 
     42      1.2   ozaki check_sa_entries()
     43      1.2   ozaki {
     44      1.2   ozaki 	local sock=$1
     45      1.2   ozaki 	local local_addr=$2
     46      1.2   ozaki 	local remote_addr=$3
     47      1.2   ozaki 
     48      1.2   ozaki 	export RUMP_SERVER=$sock
     49      1.2   ozaki 
     50      1.2   ozaki 	$DEBUG && $HIJACKING setkey -D
     51      1.2   ozaki 
     52      1.3   ozaki 	atf_check -s exit:0 -o match:"$local_addr $remote_addr" \
     53      1.2   ozaki 	    $HIJACKING setkey -D
     54      1.2   ozaki 	atf_check -s exit:0 -o match:"$remote_addr $local_addr" \
     55      1.2   ozaki 	    $HIJACKING setkey -D
     56      1.2   ozaki 	# TODO: more detail checks
     57      1.2   ozaki }
     58      1.4   ozaki 
     59      1.5   ozaki check_sp_entries()
     60      1.5   ozaki {
     61      1.5   ozaki 	local sock=$1
     62      1.5   ozaki 	local local_addr=$2
     63      1.5   ozaki 	local remote_addr=$3
     64      1.5   ozaki 
     65      1.5   ozaki 	export RUMP_SERVER=$sock
     66      1.5   ozaki 
     67      1.5   ozaki 	$DEBUG && $HIJACKING setkey -D -P
     68      1.5   ozaki 
     69      1.5   ozaki 	atf_check -s exit:0 \
     70      1.6   ozaki 	    -o match:"$local_addr\[any\] $remote_addr\[any\] 255\(reserved\)" \
     71      1.5   ozaki 	    $HIJACKING setkey -D -P
     72      1.7   ozaki 	atf_check -s exit:0 \
     73      1.7   ozaki 	    -o match:"$remote_addr\[any\] $local_addr\[any\] 255\(reserved\)" \
     74      1.7   ozaki 	    $HIJACKING setkey -D -P
     75      1.5   ozaki 	# TODO: more detail checks
     76      1.5   ozaki }
     77      1.5   ozaki 
     78      1.4   ozaki generate_pktproto()
     79      1.4   ozaki {
     80      1.4   ozaki 	local proto=$1
     81      1.4   ozaki 
     82      1.4   ozaki 	if [ $proto = ipcomp ]; then
     83      1.4   ozaki 		echo IPComp
     84      1.4   ozaki 	else
     85      1.4   ozaki 		echo $proto | tr 'a-z' 'A-Z'
     86      1.4   ozaki 	fi
     87      1.4   ozaki }
     88  1.7.6.1  martin 
     89  1.7.6.1  martin get_natt_port()
     90  1.7.6.1  martin {
     91  1.7.6.1  martin 	local local_addr=$1
     92  1.7.6.1  martin 	local remote_addr=$2
     93  1.7.6.1  martin 	local port=""
     94  1.7.6.1  martin 
     95  1.7.6.1  martin 	# 10.0.1.2:4500         20.0.0.2:4500         shmif1     20.0.0.1:35574
     96  1.7.6.1  martin 	port=$($HIJACKING_NPF npfctl list | grep $local_addr | awk -F "${remote_addr}:" '/4500/ {print $2;}')
     97  1.7.6.1  martin 	echo $port
     98  1.7.6.1  martin }
     99