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