1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# 4# cause kernel oops in bond_rr_gen_slave_id 5DEBUG=${DEBUG:-0} 6 7set -e 8test ${DEBUG} -ne 0 && set -x 9 10finish() 11{ 12 ip netns delete server || true 13 ip netns delete client || true 14} 15 16trap finish EXIT 17 18client_ip4=192.168.1.198 19server_ip4=192.168.1.254 20 21# setup kernel so it reboots after causing the panic 22echo 180 >/proc/sys/kernel/panic 23 24# build namespaces 25ip link add dev link1_1 type veth peer name link1_2 26 27ip netns add "server" 28ip link set dev link1_2 netns server up name eth0 29ip netns exec server ip addr add ${server_ip4}/24 dev eth0 30 31ip netns add "client" 32ip link set dev link1_1 netns client down name eth0 33ip netns exec client ip link add dev bond0 down type bond mode 1 \ 34 miimon 100 all_slaves_active 1 35ip netns exec client ip link set dev eth0 down master bond0 36ip netns exec client ip link set dev bond0 up 37ip netns exec client ip addr add ${client_ip4}/24 dev bond0 38ip netns exec client ping -c 5 $server_ip4 >/dev/null 39 40ip netns exec client ip link set dev eth0 down nomaster 41ip netns exec client ip link set dev bond0 down 42ip netns exec client ip link set dev bond0 type bond mode 0 \ 43 arp_interval 1000 arp_ip_target "+${server_ip4}" 44ip netns exec client ip link set dev eth0 down master bond0 45ip netns exec client ip link set dev bond0 up 46ip netns exec client ping -c 5 $server_ip4 >/dev/null 47 48exit 0 49