~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/net/traceroute.sh

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/testing/selftests/net/traceroute.sh (Version linux-6.11.5) and /tools/testing/selftests/net/traceroute.sh (Version linux-4.16.18)


  1 #!/bin/bash                                       
  2 # SPDX-License-Identifier: GPL-2.0                
  3 #                                                 
  4 # Run traceroute/traceroute6 tests                
  5 #                                                 
  6                                                   
  7 source lib.sh                                     
  8 VERBOSE=0                                         
  9 PAUSE_ON_FAIL=no                                  
 10                                                   
 11 ##############################################    
 12 #                                                 
 13 log_test()                                        
 14 {                                                 
 15         local rc=$1                               
 16         local expected=$2                         
 17         local msg="$3"                            
 18                                                   
 19         if [ ${rc} -eq ${expected} ]; then        
 20                 printf "TEST: %-60s  [ OK ]\n"    
 21                 nsuccess=$((nsuccess+1))          
 22         else                                      
 23                 ret=1                             
 24                 nfail=$((nfail+1))                
 25                 printf "TEST: %-60s  [FAIL]\n"    
 26                 if [ "${PAUSE_ON_FAIL}" = "yes    
 27                         echo                      
 28                         echo "hit enter to con    
 29                         read a                    
 30                         [ "$a" = "q" ] && exit    
 31                 fi                                
 32         fi                                        
 33 }                                                 
 34                                                   
 35 run_cmd()                                         
 36 {                                                 
 37         local ns                                  
 38         local cmd                                 
 39         local out                                 
 40         local rc                                  
 41                                                   
 42         ns="$1"                                   
 43         shift                                     
 44         cmd="$*"                                  
 45                                                   
 46         if [ "$VERBOSE" = "1" ]; then             
 47                 printf "    COMMAND: $cmd\n"      
 48         fi                                        
 49                                                   
 50         out=$(eval ip netns exec ${ns} ${cmd}     
 51         rc=$?                                     
 52         if [ "$VERBOSE" = "1" -a -n "$out" ];     
 53                 echo "    $out"                   
 54         fi                                        
 55                                                   
 56         [ "$VERBOSE" = "1" ] && echo              
 57                                                   
 58         return $rc                                
 59 }                                                 
 60                                                   
 61 ##############################################    
 62 # create namespaces and interconnects             
 63                                                   
 64 create_ns()                                       
 65 {                                                 
 66         local ns=$1                               
 67         local addr=$2                             
 68         local addr6=$3                            
 69                                                   
 70         [ -z "${addr}" ] && addr="-"              
 71         [ -z "${addr6}" ] && addr6="-"            
 72                                                   
 73         if [ "${addr}" != "-" ]; then             
 74                 ip netns exec ${ns} ip addr ad    
 75         fi                                        
 76         if [ "${addr6}" != "-" ]; then            
 77                 ip netns exec ${ns} ip -6 addr    
 78         fi                                        
 79                                                   
 80         ip netns exec ${ns} ip ro add unreacha    
 81         ip netns exec ${ns} ip -6 ro add unrea    
 82                                                   
 83         ip netns exec ${ns} sysctl -qw net.ipv    
 84         ip netns exec ${ns} sysctl -qw net.ipv    
 85         ip netns exec ${ns} sysctl -qw net.ipv    
 86         ip netns exec ${ns} sysctl -qw net.ipv    
 87         ip netns exec ${ns} sysctl -qw net.ipv    
 88 }                                                 
 89                                                   
 90 # create veth pair to connect namespaces and a    
 91 connect_ns()                                      
 92 {                                                 
 93         local ns1=$1                              
 94         local ns1_dev=$2                          
 95         local ns1_addr=$3                         
 96         local ns1_addr6=$4                        
 97         local ns2=$5                              
 98         local ns2_dev=$6                          
 99         local ns2_addr=$7                         
100         local ns2_addr6=$8                        
101                                                   
102         ip netns exec ${ns1} ip li add ${ns1_d    
103         ip netns exec ${ns1} ip li set ${ns1_d    
104         ip netns exec ${ns1} ip li set tmp net    
105         ip netns exec ${ns2} ip li set ${ns2_d    
106                                                   
107         if [ "${ns1_addr}" != "-" ]; then         
108                 ip netns exec ${ns1} ip addr a    
109         fi                                        
110                                                   
111         if [ "${ns2_addr}" != "-" ]; then         
112                 ip netns exec ${ns2} ip addr a    
113         fi                                        
114                                                   
115         if [ "${ns1_addr6}" != "-" ]; then        
116                 ip netns exec ${ns1} ip addr a    
117         fi                                        
118                                                   
119         if [ "${ns2_addr6}" != "-" ]; then        
120                 ip netns exec ${ns2} ip addr a    
121         fi                                        
122 }                                                 
123                                                   
124 ##############################################    
125 # traceroute6 test                                
126 #                                                 
127 # Verify that in this scenario                    
128 #                                                 
129 #        ------------------------ N2              
130 #         |                    |                  
131 #       ------              ------  N3  ----      
132 #       | R1 |              | R2 |------|H2|      
133 #       ------              ------      ----      
134 #         |                    |                  
135 #        ------------------------ N1              
136 #                  |                              
137 #                 ----                            
138 #                 |H1|                            
139 #                 ----                            
140 #                                                 
141 # where H1's default route goes through R1 and    
142 # through R2 over N2, traceroute6 from H1 to H    
143 # on N2 and not N1.                               
144 #                                                 
145 # Addresses are assigned as follows:              
146 #                                                 
147 # N1: 2000:101::/64                               
148 # N2: 2000:102::/64                               
149 # N3: 2000:103::/64                               
150 #                                                 
151 # R1's host part of address: 1                    
152 # R2's host part of address: 2                    
153 # H1's host part of address: 3                    
154 # H2's host part of address: 4                    
155 #                                                 
156 # For example:                                    
157 # the IPv6 address of R1's interface on N2 is     
158                                                   
159 cleanup_traceroute6()                             
160 {                                                 
161         cleanup_ns $h1 $h2 $r1 $r2                
162 }                                                 
163                                                   
164 setup_traceroute6()                               
165 {                                                 
166         brdev=br0                                 
167                                                   
168         # start clean                             
169         cleanup_traceroute6                       
170                                                   
171         set -e                                    
172         setup_ns h1 h2 r1 r2                      
173         create_ns $h1                             
174         create_ns $h2                             
175         create_ns $r1                             
176         create_ns $r2                             
177                                                   
178         # Setup N3                                
179         connect_ns $r2 eth3 - 2000:103::2/64 $    
180         ip netns exec $h2 ip route add default    
181                                                   
182         # Setup N2                                
183         connect_ns $r1 eth2 - 2000:102::1/64 $    
184         ip netns exec $r1 ip route add default    
185                                                   
186         # Setup N1. host-1 and router-2 connec    
187         ip netns exec $r1 ip link add name ${b    
188         ip netns exec $r1 ip link set ${brdev}    
189         ip netns exec $r1 ip addr add 2000:101    
190                                                   
191         connect_ns $h1 eth0 - 2000:101::3/64 $    
192         ip netns exec $r1 ip link set dev eth0    
193         ip netns exec $h1 ip route add default    
194                                                   
195         connect_ns $r2 eth1 - 2000:101::2/64 $    
196         ip netns exec $r1 ip link set dev eth1    
197                                                   
198         # Prime the network                       
199         ip netns exec $h1 ping6 -c5 2000:103::    
200                                                   
201         set +e                                    
202 }                                                 
203                                                   
204 run_traceroute6()                                 
205 {                                                 
206         if [ ! -x "$(command -v traceroute6)"     
207                 echo "SKIP: Could not run IPV6    
208                 return                            
209         fi                                        
210                                                   
211         setup_traceroute6                         
212                                                   
213         # traceroute6 host-2 from host-1 (expe    
214         run_cmd $h1 "traceroute6 2000:103::4 |    
215         log_test $? 0 "IPV6 traceroute"           
216                                                   
217         cleanup_traceroute6                       
218 }                                                 
219                                                   
220 ##############################################    
221 # traceroute test                                 
222 #                                                 
223 # Verify that traceroute from H1 to H2 shows 1    
224 #                                                 
225 #                    1.0.3.1/24                   
226 # ---- 1.0.1.3/24    1.0.1.1/24 ---- 1.0.2.1/2    
227 # |H1|--------------------------|R1|----------    
228 # ----            N1            ----              
229 #                                                 
230 # where net.ipv4.icmp_errors_use_inbound_ifadd    
231 # 1.0.3.1/24 and 1.0.1.1/24 are respectively R    
232 # address on N1.                                  
233 #                                                 
234                                                   
235 cleanup_traceroute()                              
236 {                                                 
237         cleanup_ns $h1 $h2 $router                
238 }                                                 
239                                                   
240 setup_traceroute()                                
241 {                                                 
242         # start clean                             
243         cleanup_traceroute                        
244                                                   
245         set -e                                    
246         setup_ns h1 h2 router                     
247         create_ns $h1                             
248         create_ns $h2                             
249         create_ns $router                         
250                                                   
251         connect_ns $h1 eth0 1.0.1.3/24 - \        
252                    $router eth1 1.0.3.1/24 -      
253         ip netns exec $h1 ip route add default    
254                                                   
255         ip netns exec $router ip addr add 1.0.    
256         ip netns exec $router sysctl -qw \        
257                                 net.ipv4.icmp_    
258                                                   
259         connect_ns $h2 eth0 1.0.2.4/24 - \        
260                    $router eth2 1.0.2.1/24 -      
261         ip netns exec $h2 ip route add default    
262                                                   
263         # Prime the network                       
264         ip netns exec $h1 ping -c5 1.0.2.4 >/d    
265                                                   
266         set +e                                    
267 }                                                 
268                                                   
269 run_traceroute()                                  
270 {                                                 
271         if [ ! -x "$(command -v traceroute)" ]    
272                 echo "SKIP: Could not run IPV4    
273                 return                            
274         fi                                        
275                                                   
276         setup_traceroute                          
277                                                   
278         # traceroute host-2 from host-1 (expec    
279         run_cmd $h1 "traceroute 1.0.2.4 | grep    
280         log_test $? 0 "IPV4 traceroute"           
281                                                   
282         cleanup_traceroute                        
283 }                                                 
284                                                   
285 ##############################################    
286 # Run tests                                       
287                                                   
288 run_tests()                                       
289 {                                                 
290         run_traceroute6                           
291         run_traceroute                            
292 }                                                 
293                                                   
294 ##############################################    
295 # main                                            
296                                                   
297 declare -i nfail=0                                
298 declare -i nsuccess=0                             
299                                                   
300 while getopts :pv o                               
301 do                                                
302         case $o in                                
303                 p) PAUSE_ON_FAIL=yes;;            
304                 v) VERBOSE=$(($VERBOSE + 1));;    
305                 *) exit 1;;                       
306         esac                                      
307 done                                              
308                                                   
309 run_tests                                         
310                                                   
311 printf "\nTests passed: %3d\n" ${nsuccess}        
312 printf "Tests failed: %3d\n"   ${nfail}           
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php