#!/bin/sh # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved. # Copyright (c) International Business Machines Corp., 2001 # # This program is free software; you can 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 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it would 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 # along with this program. If not, see . TST_TOTAL=6 TCID="traceroute01" TST_CLEANUP="cleanup" TST_USE_LEGACY_API=1 . tst_net.sh cleanup() { tst_rmdir } setup() { tst_resm TINFO "traceroute version:" tst_resm TINFO $(traceroute --version 2>&1) tst_test_cmds traceroute tst_tmpdir } run_trace() { local opts="$@" local ip=$(tst_ipaddr rhost) local pattern="^[ ]+1[ ]+$ip([ ]+[0-9]+[.][0-9]+ ms){3}" # According to man pages, default sizes: local bytes=60 [ "$TST_IPV6" ] && bytes=80 EXPECT_PASS traceroute $ip $bytes -n -m 2 $opts \>out.log 2>&1 grep -q "$bytes byte" out.log if [ $? -ne 0 ]; then cat out.log tst_resm TFAIL "'$bytes byte' not found" else tst_resm TPASS "traceroute use $bytes bytes" fi tail -1 out.log | grep -qE "$pattern" if [ $? -ne 0 ]; then cat out.log tst_resm TFAIL "pattern '$pattern' not found in log" else tst_resm TPASS "traceroute test completed with 1 hop" fi } setup tst_resm TINFO "run traceroute with ICMP ECHO" run_trace -I tst_resm TINFO "run traceroute with TCP SYN" run_trace -T tst_exit