Loading...
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4BPFFS=/sys/fs/bpf
5MY_DIR=$(dirname $0)
6TEST=$MY_DIR/test_cgrp2_sock2
7LINK_PIN=$BPFFS/test_cgrp2_sock2
8BPF_PROG=$MY_DIR/sock_flags.bpf.o
9
10function config_device {
11 ip netns add at_ns0
12 ip link add veth0 type veth peer name veth0b
13 ip link set veth0 netns at_ns0
14 ip netns exec at_ns0 sysctl -q net.ipv6.conf.veth0.disable_ipv6=0
15 ip netns exec at_ns0 ip addr add 172.16.1.100/24 dev veth0
16 ip netns exec at_ns0 ip addr add 2401:db00::1/64 dev veth0 nodad
17 ip netns exec at_ns0 ip link set dev veth0 up
18 sysctl -q net.ipv6.conf.veth0b.disable_ipv6=0
19 ip addr add 172.16.1.101/24 dev veth0b
20 ip addr add 2401:db00::2/64 dev veth0b nodad
21 ip link set veth0b up
22}
23
24function config_cgroup {
25 rm -rf /tmp/cgroupv2
26 mkdir -p /tmp/cgroupv2
27 mount -t cgroup2 none /tmp/cgroupv2
28 mkdir -p /tmp/cgroupv2/foo
29 echo $$ >> /tmp/cgroupv2/foo/cgroup.procs
30}
31
32function config_bpffs {
33 if mount | grep $BPFFS > /dev/null; then
34 echo "bpffs already mounted"
35 else
36 echo "bpffs not mounted. Mounting..."
37 mount -t bpf none $BPFFS
38 fi
39}
40
41function attach_bpf {
42 $TEST /tmp/cgroupv2/foo $BPF_PROG $1
43 [ $? -ne 0 ] && exit 1
44}
45
46function cleanup {
47 rm -rf $LINK_PIN
48 ip link del veth0b
49 ip netns delete at_ns0
50 umount /tmp/cgroupv2
51 rm -rf /tmp/cgroupv2
52}
53
54cleanup 2>/dev/null
55
56set -e
57config_device
58config_cgroup
59config_bpffs
60set +e
61
62#
63# Test 1 - fail ping6
64#
65attach_bpf 0
66ping -c1 -w1 172.16.1.100
67if [ $? -ne 0 ]; then
68 echo "ping failed when it should succeed"
69 cleanup
70 exit 1
71fi
72
73ping6 -c1 -w1 2401:db00::1
74if [ $? -eq 0 ]; then
75 echo "ping6 succeeded when it should not"
76 cleanup
77 exit 1
78fi
79
80rm -rf $LINK_PIN
81sleep 1 # Wait for link detach
82
83#
84# Test 2 - fail ping
85#
86attach_bpf 1
87ping6 -c1 -w1 2401:db00::1
88if [ $? -ne 0 ]; then
89 echo "ping6 failed when it should succeed"
90 cleanup
91 exit 1
92fi
93
94ping -c1 -w1 172.16.1.100
95if [ $? -eq 0 ]; then
96 echo "ping succeeded when it should not"
97 cleanup
98 exit 1
99fi
100
101cleanup
102echo
103echo "*** PASS ***"
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4BPFFS=/sys/fs/bpf
5LINK_PIN=$BPFFS/test_cgrp2_sock2
6
7function config_device {
8 ip netns add at_ns0
9 ip link add veth0 type veth peer name veth0b
10 ip link set veth0b up
11 ip link set veth0 netns at_ns0
12 ip netns exec at_ns0 ip addr add 172.16.1.100/24 dev veth0
13 ip netns exec at_ns0 ip addr add 2401:db00::1/64 dev veth0 nodad
14 ip netns exec at_ns0 ip link set dev veth0 up
15 ip addr add 172.16.1.101/24 dev veth0b
16 ip addr add 2401:db00::2/64 dev veth0b nodad
17}
18
19function config_cgroup {
20 rm -rf /tmp/cgroupv2
21 mkdir -p /tmp/cgroupv2
22 mount -t cgroup2 none /tmp/cgroupv2
23 mkdir -p /tmp/cgroupv2/foo
24 echo $$ >> /tmp/cgroupv2/foo/cgroup.procs
25}
26
27function config_bpffs {
28 if mount | grep $BPFFS > /dev/null; then
29 echo "bpffs already mounted"
30 else
31 echo "bpffs not mounted. Mounting..."
32 mount -t bpf none $BPFFS
33 fi
34}
35
36function attach_bpf {
37 ./test_cgrp2_sock2 /tmp/cgroupv2/foo sock_flags_kern.o $1
38 [ $? -ne 0 ] && exit 1
39}
40
41function cleanup {
42 rm -rf $LINK_PIN
43 ip link del veth0b
44 ip netns delete at_ns0
45 umount /tmp/cgroupv2
46 rm -rf /tmp/cgroupv2
47}
48
49cleanup 2>/dev/null
50
51set -e
52config_device
53config_cgroup
54config_bpffs
55set +e
56
57#
58# Test 1 - fail ping6
59#
60attach_bpf 0
61ping -c1 -w1 172.16.1.100
62if [ $? -ne 0 ]; then
63 echo "ping failed when it should succeed"
64 cleanup
65 exit 1
66fi
67
68ping6 -c1 -w1 2401:db00::1
69if [ $? -eq 0 ]; then
70 echo "ping6 succeeded when it should not"
71 cleanup
72 exit 1
73fi
74
75rm -rf $LINK_PIN
76sleep 1 # Wait for link detach
77
78#
79# Test 2 - fail ping
80#
81attach_bpf 1
82ping6 -c1 -w1 2401:db00::1
83if [ $? -ne 0 ]; then
84 echo "ping6 failed when it should succeed"
85 cleanup
86 exit 1
87fi
88
89ping -c1 -w1 172.16.1.100
90if [ $? -eq 0 ]; then
91 echo "ping succeeded when it should not"
92 cleanup
93 exit 1
94fi
95
96cleanup
97echo
98echo "*** PASS ***"