Home | History | Annotate | Line # | Download | only in net
net_common.sh revision 1.5
      1 #	$NetBSD: net_common.sh,v 1.5 2016/11/24 09:07:09 ozaki-r Exp $
      2 #
      3 # Copyright (c) 2016 Internet Initiative Japan Inc.
      4 # All rights reserved.
      5 #
      6 # Redistribution and use in source and binary forms, with or without
      7 # modification, are permitted provided that the following conditions
      8 # are met:
      9 # 1. Redistributions of source code must retain the above copyright
     10 #    notice, this list of conditions and the following disclaimer.
     11 # 2. Redistributions in binary form must reproduce the above copyright
     12 #    notice, this list of conditions and the following disclaimer in the
     13 #    documentation and/or other materials provided with the distribution.
     14 #
     15 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 # POSSIBILITY OF SUCH DAMAGE.
     26 #
     27 
     28 #
     29 # Common utility functions for tests/net
     30 #
     31 
     32 HIJACKING="env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=sysctl=yes"
     33 
     34 extract_new_packets()
     35 {
     36 	local bus=$1
     37 	local old=./.__old
     38 
     39 	if [ ! -f $old ]; then
     40 		old=/dev/null
     41 	fi
     42 
     43 	shmif_dumpbus -p - $bus 2>/dev/null| \
     44 	    tcpdump -n -e -r - 2>/dev/null > ./.__new
     45 	diff -u $old ./.__new |grep '^+' |cut -d '+' -f 2 > ./.__diff
     46 	mv -f ./.__new ./.__old
     47 	cat ./.__diff
     48 }
     49 
     50 check_route()
     51 {
     52 	local target=$1
     53 	local gw=$2
     54 	local flags=${3:-\.\+}
     55 	local ifname=${4:-\.\+}
     56 
     57 	target=$(echo $target |sed 's/\./\\./g')
     58 	if [ "$gw" = "" ]; then
     59 		gw=".+"
     60 	else
     61 		gw=$(echo $gw |sed 's/\./\\./g')
     62 	fi
     63 
     64 	atf_check -s exit:0 -e ignore \
     65 	    -o match:"^$target +$gw +$flags +- +- +.+ +$ifname" \
     66 	    rump.netstat -rn
     67 }
     68 
     69 check_route_flags()
     70 {
     71 
     72 	check_route "$1" "" "$2" ""
     73 }
     74 
     75 check_route_gw()
     76 {
     77 
     78 	check_route "$1" "$2" "" ""
     79 }
     80 
     81 check_route_no_entry()
     82 {
     83 	local target=$(echo $1 |sed 's/\./\\./g')
     84 
     85 	atf_check -s exit:0 -e ignore -o not-match:"^$target" \
     86 	    rump.netstat -rn
     87 }
     88 
     89 get_linklocal_addr()
     90 {
     91 
     92 	export RUMP_SERVER=${1}
     93 	rump.ifconfig ${2} inet6 |
     94 	    awk "/fe80/ {sub(/%$2/, \"\"); sub(/\\/[0-9]*/, \"\"); print \$2;}"
     95 	unset RUMP_SERVER
     96 
     97 	return 0
     98 }
     99 
    100 get_macaddr()
    101 {
    102 
    103 	env RUMP_SERVER=${1} \
    104 	    rump.ifconfig ${2} |awk '/address/ {print $2;}'
    105 }
    106