test_cgrp2_sock2.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. function config_device {
  4. ip netns add at_ns0
  5. ip link add veth0 type veth peer name veth0b
  6. ip link set veth0b up
  7. ip link set veth0 netns at_ns0
  8. ip netns exec at_ns0 ip addr add 172.16.1.100/24 dev veth0
  9. ip netns exec at_ns0 ip addr add 2401:db00::1/64 dev veth0 nodad
  10. ip netns exec at_ns0 ip link set dev veth0 up
  11. ip addr add 172.16.1.101/24 dev veth0b
  12. ip addr add 2401:db00::2/64 dev veth0b nodad
  13. }
  14. function config_cgroup {
  15. rm -rf /tmp/cgroupv2
  16. mkdir -p /tmp/cgroupv2
  17. mount -t cgroup2 none /tmp/cgroupv2
  18. mkdir -p /tmp/cgroupv2/foo
  19. echo $$ >> /tmp/cgroupv2/foo/cgroup.procs
  20. }
  21. function attach_bpf {
  22. test_cgrp2_sock2 /tmp/cgroupv2/foo sock_flags_kern.o $1
  23. [ $? -ne 0 ] && exit 1
  24. }
  25. function cleanup {
  26. if [ -d /tmp/cgroupv2/foo ]; then
  27. test_cgrp2_sock -d /tmp/cgroupv2/foo
  28. fi
  29. ip link del veth0b
  30. ip netns delete at_ns0
  31. umount /tmp/cgroupv2
  32. rm -rf /tmp/cgroupv2
  33. }
  34. cleanup 2>/dev/null
  35. set -e
  36. config_device
  37. config_cgroup
  38. set +e
  39. #
  40. # Test 1 - fail ping6
  41. #
  42. attach_bpf 0
  43. ping -c1 -w1 172.16.1.100
  44. if [ $? -ne 0 ]; then
  45. echo "ping failed when it should succeed"
  46. cleanup
  47. exit 1
  48. fi
  49. ping6 -c1 -w1 2401:db00::1
  50. if [ $? -eq 0 ]; then
  51. echo "ping6 succeeded when it should not"
  52. cleanup
  53. exit 1
  54. fi
  55. #
  56. # Test 2 - fail ping
  57. #
  58. attach_bpf 1
  59. ping6 -c1 -w1 2401:db00::1
  60. if [ $? -ne 0 ]; then
  61. echo "ping6 failed when it should succeed"
  62. cleanup
  63. exit 1
  64. fi
  65. ping -c1 -w1 172.16.1.100
  66. if [ $? -eq 0 ]; then
  67. echo "ping succeeded when it should not"
  68. cleanup
  69. exit 1
  70. fi
  71. cleanup
  72. echo
  73. echo "*** PASS ***"