]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tests/sys/netpfil/pf/utils.subr
MFV r337210: 9577 remove zfs_dbuf_evict_key tsd
[FreeBSD/FreeBSD.git] / tests / sys / netpfil / pf / utils.subr
1 # $FreeBSD$
2 # Utility functions
3 ##
4
5 pft_init()
6 {
7         if [ ! -c /dev/pf ]; then
8                 atf_skip "This test requires pf"
9         fi
10
11         if [ "`sysctl -i -n kern.features.vimage`" != 1 ]; then
12                 atf_skip "This test requires VIMAGE"
13         fi
14 }
15
16 pft_mkepair()
17 {
18         ifname=$(ifconfig epair create)
19         echo $ifname >> created_interfaces.lst
20         echo ${ifname%a}
21 }
22
23 pft_mkjail()
24 {
25         jailname=$1
26         shift
27
28         vnet_interfaces=
29         for ifname in $@
30         do
31                 vnet_interfaces="${vnet_interfaces} vnet.interface=${ifname}"
32         done
33         jail -c name=${jailname} persist vnet ${vnet_interfaces}
34
35         echo $jailname >> created_jails.lst
36 }
37
38 pft_set_rules()
39 {
40         jname=$1
41         shift
42
43         # Flush all states, rules, fragments, ...
44         jexec ${jname} pfctl -F all
45
46         while [ $# -gt 0 ]; do
47                 printf "$1\n"
48                 shift
49         done | jexec ${jname} pfctl -f -
50 }
51
52 pft_cleanup()
53 {
54         if [ -f created_jails.lst ]; then
55                 for jailname in `cat created_jails.lst`
56                 do
57                         jail -r ${jailname}
58                 done
59                 rm created_jails.lst
60         fi
61
62         if [ -f created_interfaces.lst ]; then
63                 for ifname in `cat created_interfaces.lst`
64                 do
65                         ifconfig ${ifname} destroy
66                 done
67                 rm created_interfaces.lst
68         fi
69 }