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 netns add "server" 26ip netns add "client" 27ip -n client link add eth0 type veth peer name eth0 netns server 28ip netns exec server ip link set dev eth0 up 29ip netns exec server ip addr add ${server_ip4}/24 dev eth0 30 31ip netns exec client ip link add dev bond0 down type bond mode 1 \ 32 miimon 100 all_slaves_active 1 33ip netns exec client ip link set dev eth0 down master bond0 34ip netns exec client ip link set dev bond0 up 35ip netns exec client ip addr add ${client_ip4}/24 dev bond0 36ip netns exec client ping -c 5 $server_ip4 >/dev/null 37 38ip netns exec client ip link set dev eth0 down nomaster 39ip netns exec client ip link set dev bond0 down 40ip netns exec client ip link set dev bond0 type bond mode 0 \ 41 arp_interval 1000 arp_ip_target "+${server_ip4}" 42ip netns exec client ip link set dev eth0 down master bond0 43ip netns exec client ip link set dev bond0 up 44ip netns exec client ping -c 5 $server_ip4 >/dev/null 45 46exit 0 47