bond-arp-interval-causes-panic.sh 1.3 KB

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