]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tests/sys/common/vnet.subr
contrib/tzdata: import tzdata 2023d
[FreeBSD/FreeBSD.git] / tests / sys / common / vnet.subr
1 # VNET/jail utility functions
2 ##
3
4 list_interface()
5 {
6         echo $1 >> created_interfaces.lst
7 }
8
9 unlist_interface()
10 {
11         sed -i "" /^$1\$/d created_interfaces.lst
12 }
13
14 vnet_init()
15 {
16         if [ "`sysctl -i -n kern.features.vimage`" != 1 ]; then
17                 atf_skip "This test requires VIMAGE"
18         fi
19 }
20
21 vnet_mkepair()
22 {
23         ifname=$(ifconfig epair create)
24         list_interface $ifname
25         list_interface ${ifname%a}b
26         echo ${ifname%a}
27 }
28
29 vnet_mkbridge()
30 {
31         ifname=$(ifconfig bridge create)
32         list_interface $ifname
33         echo ${ifname}
34 }
35
36 vnet_mkvlan()
37 {
38         ifname=$(ifconfig vlan create)
39         list_interface $ifname
40         echo ${ifname}
41 }
42
43 vnet_mkloopback()
44 {
45         ifname=$(ifconfig lo create)
46         list_interface $ifname
47         echo ${ifname}
48 }
49
50 vnet_mkjail()
51 {
52         jailname=$1
53         shift
54
55         vnet_interfaces=
56         for ifname in $@
57         do
58                 vnet_interfaces="${vnet_interfaces} vnet.interface=${ifname}"
59                 unlist_interface $ifname
60         done
61         jail -c name=${jailname} persist vnet ${vnet_interfaces}
62
63         echo $jailname $@ >> created_jails.lst
64 }
65
66 vnet_ifmove()
67 {
68         ifname=$1
69         jailname=$2
70
71         ifconfig ${ifname} vnet ${jailname}
72         unlist_interface $ifname
73         sed -i "" "/^${jailname}/s/\$/ ${ifname}/" created_jails.lst
74 }
75
76 vnet_ifrename_jail()
77 {
78         jailname=$1
79         ifname=$2
80         ifnewname=$3
81
82         ifconfig -j ${jailname} $ifname name $ifnewname
83         sed -i "" "/^${jailname}/s/${ifname}/${ifnewname}/" created_jails.lst
84 }
85
86 vnet_cleanup()
87 {
88         if [ -f created_jails.lst ]; then
89                 while read jailname ifnames; do
90                         for ifname in ${ifnames}; do
91                                 ifconfig -j ${jailname} ${ifname} destroy
92                         done
93                         jail -r ${jailname}
94                 done < created_jails.lst
95                 rm created_jails.lst
96         fi
97
98         if [ -f created_interfaces.lst ]; then
99                 while read ifname; do
100                         ifconfig ${ifname} destroy
101                 done < created_interfaces.lst
102                 rm created_interfaces.lst
103         fi
104 }