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

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/net/setup_loopback.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/setup_loopback.sh (Version linux-6.11.5) and /tools/testing/selftests/net/setup_loopback.sh (Version linux-4.16.18)


  1 #!/bin/bash                                       
  2 # SPDX-License-Identifier: GPL-2.0                
  3                                                   
  4 readonly FLUSH_PATH="/sys/class/net/${dev}/gro    
  5 readonly IRQ_PATH="/sys/class/net/${dev}/napi_    
  6 readonly FLUSH_TIMEOUT="$(< ${FLUSH_PATH})"       
  7 readonly HARD_IRQS="$(< ${IRQ_PATH})"             
  8 readonly server_ns=$(mktemp -u server-XXXXXXXX    
  9 readonly client_ns=$(mktemp -u client-XXXXXXXX    
 10                                                   
 11 netdev_check_for_carrier() {                      
 12         local -r dev="$1"                         
 13                                                   
 14         for i in {1..5}; do                       
 15                 carrier="$(cat /sys/class/net/    
 16                 if [[ "${carrier}" -ne 1 ]] ;     
 17                         echo "carrier not read    
 18                         sleep 1                   
 19                 else                              
 20                         echo "carrier ready" >    
 21                         break                     
 22                 fi                                
 23         done                                      
 24         echo "${carrier}"                         
 25 }                                                 
 26                                                   
 27 # Assumes that there is no existing ipvlan dev    
 28 setup_loopback_environment() {                    
 29         local dev="$1"                            
 30                                                   
 31         # Fail hard if cannot turn on loopback    
 32         ethtool -K "${dev}" loopback on || exi    
 33         sleep 1                                   
 34                                                   
 35         # Check for the carrier                   
 36         carrier=$(netdev_check_for_carrier ${d    
 37         if [[ "${carrier}" -ne 1 ]] ; then        
 38                 echo "setup_loopback_environme    
 39                 exit 1                            
 40         fi                                        
 41 }                                                 
 42                                                   
 43 setup_macvlan_ns(){                               
 44         local -r link_dev="$1"                    
 45         local -r ns_name="$2"                     
 46         local -r ns_dev="$3"                      
 47         local -r ns_mac="$4"                      
 48         local -r addr="$5"                        
 49                                                   
 50         ip link add link "${link_dev}" dev "${    
 51                 address "${ns_mac}" type macvl    
 52         exit_code=$?                              
 53         if [[ "${exit_code}" -ne 0 ]]; then       
 54                 echo "setup_macvlan_ns failed"    
 55                 exit $exit_code                   
 56         fi                                        
 57                                                   
 58         [[ -e /var/run/netns/"${ns_name}" ]] |    
 59         ip link set dev "${ns_dev}" netns "${n    
 60         ip -netns "${ns_name}" link set dev "$    
 61         if [[ -n "${addr}" ]]; then               
 62                 ip -netns "${ns_name}" addr ad    
 63         fi                                        
 64                                                   
 65         sleep 1                                   
 66 }                                                 
 67                                                   
 68 cleanup_macvlan_ns(){                             
 69         while (( $# >= 2 )); do                   
 70                 ns_name="$1"                      
 71                 ns_dev="$2"                       
 72                 ip -netns "${ns_name}" link de    
 73                 ip netns del "${ns_name}"         
 74                 shift 2                           
 75         done                                      
 76 }                                                 
 77                                                   
 78 cleanup_loopback(){                               
 79         local -r dev="$1"                         
 80                                                   
 81         ethtool -K "${dev}" loopback off          
 82         sleep 1                                   
 83                                                   
 84         # Check for the carrier                   
 85         carrier=$(netdev_check_for_carrier ${d    
 86         if [[ "${carrier}" -ne 1 ]] ; then        
 87                 echo "setup_loopback_environme    
 88                 exit 1                            
 89         fi                                        
 90 }                                                 
 91                                                   
 92 setup_interrupt() {                               
 93         # Use timer on  host to trigger the ne    
 94         # Also disable device interrupt to not    
 95         # Reduce test flakiness caused by unex    
 96         echo 100000 >"${FLUSH_PATH}"              
 97         echo 50 >"${IRQ_PATH}"                    
 98 }                                                 
 99                                                   
100 setup_ns() {                                      
101         # Set up server_ns namespace and clien    
102         setup_macvlan_ns "${dev}" ${server_ns}    
103         setup_macvlan_ns "${dev}" ${client_ns}    
104 }                                                 
105                                                   
106 cleanup_ns() {                                    
107         cleanup_macvlan_ns ${server_ns} server    
108 }                                                 
109                                                   
110 setup() {                                         
111         setup_loopback_environment "${dev}"       
112         setup_interrupt                           
113 }                                                 
114                                                   
115 cleanup() {                                       
116         cleanup_loopback "${dev}"                 
117                                                   
118         echo "${FLUSH_TIMEOUT}" >"${FLUSH_PATH    
119         echo "${HARD_IRQS}" >"${IRQ_PATH}"        
120 }                                                 
                                                      

~ [ 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