]>
Commit | Line | Data |
---|---|---|
7ca476af | 1 | # _ADD_BR([name]) |
d7c5426b DDP |
2 | # |
3 | # Expands into the proper ovs-vsctl commands to create a bridge with the | |
cf7659b6 JR |
4 | # appropriate type and properties |
5 | m4_define([_ADD_BR], [[add-br $1 -- set Bridge $1 datapath_type="netdev" protocols=OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13,OpenFlow14,OpenFlow15 fail-mode=secure ]]) | |
d7c5426b DDP |
6 | |
7 | # OVS_TRAFFIC_VSWITCHD_START([vsctl-args], [vsctl-output], [=override]) | |
8 | # | |
9 | # Creates a database and starts ovsdb-server, starts ovs-vswitchd | |
10 | # connected to that database, calls ovs-vsctl to create a bridge named | |
11 | # br0 with predictable settings, passing 'vsctl-args' as additional | |
12 | # commands to ovs-vsctl. If 'vsctl-args' causes ovs-vsctl to provide | |
13 | # output (e.g. because it includes "create" commands) then 'vsctl-output' | |
c724bd67 | 14 | # specifies the expected output after filtering through uuidfilt. |
d7c5426b DDP |
15 | m4_define([OVS_TRAFFIC_VSWITCHD_START], |
16 | [ | |
b9e04f84 | 17 | OVS_WAIT_WHILE([ip link show ovs-netdev]) |
d7c5426b DDP |
18 | _OVS_VSWITCHD_START([--disable-system]) |
19 | dnl Add bridges, ports, etc. | |
b9e04f84 | 20 | OVS_WAIT_WHILE([ip link show br0]) |
c724bd67 | 21 | AT_CHECK([ovs-vsctl -- _ADD_BR([br0]) -- $1 m4_if([$2], [], [], [| uuidfilt])], [0], [$2]) |
d7c5426b DDP |
22 | ]) |
23 | ||
24 | # OVS_TRAFFIC_VSWITCHD_STOP([WHITELIST], [extra_cmds]) | |
25 | # | |
26 | # Gracefully stops ovs-vswitchd and ovsdb-server, checking their log files | |
27 | # for messages with severity WARN or higher and signaling an error if any | |
28 | # is present. The optional WHITELIST may contain shell-quoted "sed" | |
29 | # commands to delete any warnings that are actually expected, e.g.: | |
30 | # | |
31 | # OVS_TRAFFIC_VSWITCHD_STOP(["/expected error/d"]) | |
32 | # | |
33 | # 'extra_cmds' are shell commands to be executed afte OVS_VSWITCHD_STOP() is | |
34 | # invoked. They can be used to perform additional cleanups such as name space | |
35 | # removal. | |
36 | m4_define([OVS_TRAFFIC_VSWITCHD_STOP], | |
5390d185 | 37 | [OVS_VSWITCHD_STOP([dnl |
afa0dfc6 | 38 | $1";/netdev_linux.*obtaining netdev stats via vport failed/d |
03ccfe48 WT |
39 | /dpif_netlink.*Generic Netlink family 'ovs_datapath' does not exist. The Open vSwitch kernel module is probably not loaded./d |
40 | /dpif_netdev(revalidator.*)|ERR|internal error parsing flow key.*proto=2.*/d | |
41 | /dpif(revalidator.*)|WARN|netdev@ovs-netdev: failed to.*proto=2.*/d"]) | |
d7c5426b DDP |
42 | AT_CHECK([:; $2]) |
43 | ]) | |
07659514 | 44 | |
ddcf96d2 DDP |
45 | # CONFIGURE_VETH_OFFLOADS([VETH]) |
46 | # | |
47 | # Disable TX offloads for veths. The userspace datapath uses the AF_PACKET | |
48 | # socket to receive packets for veths. Unfortunately, the AF_PACKET socket | |
49 | # doesn't play well with offloads: | |
50 | # 1. GSO packets are received without segmentation and therefore discarded. | |
51 | # 2. Packets with offloaded partial checksum are received with the wrong | |
52 | # checksum, therefore discarded by the receiver. | |
53 | # | |
54 | # By disabling tx offloads in the non-OVS side of the veth peer we make sure | |
55 | # that the AF_PACKET socket will not receive bad packets. | |
56 | # | |
57 | # This is a workaround, and should be removed when offloads are properly | |
58 | # supported in netdev-linux. | |
59 | m4_define([CONFIGURE_VETH_OFFLOADS], | |
941d80b4 | 60 | [AT_CHECK([ethtool -K $1 tx off], [0], [ignore], [ignore])] |
ddcf96d2 DDP |
61 | ) |
62 | ||
07659514 JS |
63 | # CHECK_CONNTRACK() |
64 | # | |
4573c42e | 65 | # Perform requirements checks for running conntrack tests. |
07659514 | 66 | # |
1ca0323e | 67 | m4_define([CHECK_CONNTRACK], []) |
4573c42e DDP |
68 | |
69 | # CHECK_CONNTRACK_ALG() | |
70 | # | |
71 | # Perform requirements checks for running conntrack ALG tests. The userspace | |
a8031633 | 72 | # supports FTP and TFTP. |
4573c42e | 73 | # |
a8031633 | 74 | m4_define([CHECK_CONNTRACK_ALG]) |
4573c42e | 75 | |
4573c42e DDP |
76 | # CHECK_CONNTRACK_LOCAL_STACK() |
77 | # | |
78 | # Perform requirements checks for running conntrack tests with local stack. | |
79 | # While the kernel connection tracker automatically passes all the connection | |
80 | # tracking state from an internal port to the OpenvSwitch kernel module, there | |
81 | # is simply no way of doing that with the userspace, so skip the tests. | |
82 | m4_define([CHECK_CONNTRACK_LOCAL_STACK], | |
83 | [ | |
84 | AT_SKIP_IF([:]) | |
85 | ]) | |
86 | ||
b21ac618 DB |
87 | # CHECK_CONNTRACK_FRAG_OVERLAP() |
88 | # | |
4ea96698 DB |
89 | # The userspace datapath supports fragment overlap check. |
90 | m4_define([CHECK_CONNTRACK_FRAG_OVERLAP]) | |
b21ac618 | 91 | |
4573c42e DDP |
92 | # CHECK_CONNTRACK_NAT() |
93 | # | |
94 | # Perform requirements checks for running conntrack NAT tests. The userspace | |
ae49b064 | 95 | # datapath supports NAT. |
4573c42e | 96 | # |
ae49b064 | 97 | m4_define([CHECK_CONNTRACK_NAT]) |
c43a1331 | 98 | |
187bb41f YHW |
99 | # CHECK_CONNTRACK_TIMEOUT() |
100 | # | |
101 | # Perform requirements checks for running conntrack customized timeout tests. | |
102 | * The userspace datapath does not support this feature yet. | |
103 | # | |
104 | m4_define([CHECK_CONNTRACK_TIMEOUT], | |
105 | [ | |
106 | AT_SKIP_IF([:]) | |
107 | ]) | |
108 | ||
26509f88 DB |
109 | # CHECK_CT_DPIF_SET_GET_MAXCONNS() |
110 | # | |
111 | # Perform requirements checks for running ovs-dpctl ct-set-maxconns or | |
112 | # ovs-dpctl ct-get-maxconns. The userspace datapath does support this feature. | |
113 | m4_define([CHECK_CT_DPIF_SET_GET_MAXCONNS]) | |
114 | ||
115 | # CHECK_CT_DPIF_GET_NCONNS() | |
116 | # | |
117 | # Perform requirements checks for running ovs-dpctl ct-get-nconns. The | |
118 | # userspace datapath does support this feature. | |
119 | m4_define([CHECK_CT_DPIF_GET_NCONNS]) | |
d1224d28 | 120 | |
4ea96698 DB |
121 | # DPCTL_SET_MIN_FRAG_SIZE() |
122 | # | |
123 | # The userspace datapath supports this command. | |
124 | m4_define([DPCTL_SET_MIN_FRAG_SIZE], | |
125 | [ | |
126 | AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v4 400], [], [dnl | |
127 | setting minimum fragment size successful | |
128 | ]) | |
129 | AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v6 400], [], [dnl | |
130 | setting minimum fragment size successful | |
131 | ]) | |
132 | ]) | |
133 | ||
134 | # DPCTL_MODIFY_FRAGMENTATION() | |
135 | # | |
136 | # The userspace datapath supports this command. | |
137 | m4_define([DPCTL_MODIFY_FRAGMENTATION], | |
138 | [ | |
139 | AT_CHECK([ovs-appctl dpctl/ipf-set-min-frag v4 1000], [], [dnl | |
140 | setting minimum fragment size successful | |
141 | ]) | |
142 | AT_CHECK([ovs-appctl dpctl/ipf-set-max-nfrags 500], [], [dnl | |
143 | setting maximum fragments successful | |
144 | ]) | |
145 | AT_CHECK([ovs-appctl dpctl/ipf-get-status], [], [dnl | |
146 | Fragmentation Module Status | |
147 | --------------------------- | |
148 | v4 enabled: 1 | |
149 | v6 enabled: 1 | |
150 | max num frags (v4/v6): 500 | |
151 | num frag: 0 | |
152 | min v4 frag size: 1000 | |
153 | v4 frags accepted: 0 | |
154 | v4 frags completed: 0 | |
155 | v4 frags expired: 0 | |
156 | v4 frags too small: 0 | |
157 | v4 frags overlapped: 0 | |
158 | v4 frags purged: 0 | |
159 | min v6 frag size: 1280 | |
160 | v6 frags accepted: 0 | |
161 | v6 frags completed: 0 | |
162 | v6 frags expired: 0 | |
163 | v6 frags too small: 0 | |
164 | v6 frags overlapped: 0 | |
165 | v6 frags purged: 0 | |
166 | ]) | |
167 | ]) | |
168 | ||
169 | # DPCTL_CHECK_FRAGMENTATION_PASS() | |
170 | # | |
171 | # Used to check fragmentation counters for some fragmentation tests using | |
172 | # the userspace datapath. | |
173 | m4_define([DPCTL_CHECK_FRAGMENTATION_PASS], | |
174 | [ | |
175 | AT_CHECK([ovs-appctl dpctl/ipf-get-status --more], [], [dnl | |
176 | Fragmentation Module Status | |
177 | --------------------------- | |
178 | v4 enabled: 1 | |
179 | v6 enabled: 1 | |
180 | max num frags (v4/v6): 500 | |
181 | num frag: 0 | |
182 | min v4 frag size: 1000 | |
183 | v4 frags accepted: 30 | |
184 | v4 frags completed: 30 | |
185 | v4 frags expired: 0 | |
186 | v4 frags too small: 0 | |
187 | v4 frags overlapped: 0 | |
188 | v4 frags purged: 0 | |
189 | min v6 frag size: 1280 | |
190 | v6 frags accepted: 0 | |
191 | v6 frags completed: 0 | |
192 | v6 frags expired: 0 | |
193 | v6 frags too small: 0 | |
194 | v6 frags overlapped: 0 | |
195 | v6 frags purged: 0 | |
196 | ||
197 | Fragment Lists: | |
198 | ||
199 | ]) | |
200 | ]) | |
201 | ||
202 | # DPCTL_CHECK_V6_FRAGMENTATION_PASS() | |
203 | # | |
204 | # Used to check fragmentation counters for some fragmentation tests using | |
205 | # the userspace datapath. | |
206 | m4_define([DPCTL_CHECK_V6_FRAGMENTATION_PASS], | |
207 | [ | |
208 | AT_CHECK([ovs-appctl dpctl/ipf-get-status --more], [], [dnl | |
209 | Fragmentation Module Status | |
210 | --------------------------- | |
211 | v4 enabled: 1 | |
212 | v6 enabled: 1 | |
213 | max num frags (v4/v6): 1000 | |
214 | num frag: 0 | |
215 | min v4 frag size: 1200 | |
216 | v4 frags accepted: 0 | |
217 | v4 frags completed: 0 | |
218 | v4 frags expired: 0 | |
219 | v4 frags too small: 0 | |
220 | v4 frags overlapped: 0 | |
221 | v4 frags purged: 0 | |
222 | min v6 frag size: 1280 | |
223 | v6 frags accepted: 30 | |
224 | v6 frags completed: 30 | |
225 | v6 frags expired: 0 | |
226 | v6 frags too small: 0 | |
227 | v6 frags overlapped: 0 | |
228 | v6 frags purged: 0 | |
229 | ||
230 | Fragment Lists: | |
231 | ||
232 | ]) | |
233 | ]) | |
234 | ||
235 | # FORMAT_FRAG_LIST([]) | |
236 | # | |
237 | # Strip content from the piped input which can differ from test to test; recirc_id | |
238 | # and ip_id fields in an ipf_list vary from test to test and hence are cleared. | |
239 | m4_define([FORMAT_FRAG_LIST], | |
240 | [[sed -e 's/ip_id=[0-9]*/ip_id=<cleared>/g' -e 's/recirc_id=[0-9]*/recirc_id=<cleared>/g']]) | |
241 | ||
242 | # DPCTL_CHECK_FRAGMENTATION_FAIL() | |
243 | # | |
244 | # Used to check fragmentation counters for some fragmentation tests using | |
245 | # the userspace datapath, when failure to transmit fragments is expected. | |
246 | m4_define([DPCTL_CHECK_FRAGMENTATION_FAIL], | |
247 | [ | |
248 | AT_CHECK([ovs-appctl dpctl/ipf-get-status -m | FORMAT_FRAG_LIST()], [], [dnl | |
249 | Fragmentation Module Status | |
250 | --------------------------- | |
251 | v4 enabled: 1 | |
252 | v6 enabled: 1 | |
253 | max num frags (v4/v6): 500 | |
254 | num frag: 7 | |
255 | min v4 frag size: 1000 | |
256 | v4 frags accepted: 7 | |
257 | v4 frags completed: 0 | |
258 | v4 frags expired: 0 | |
259 | v4 frags too small: 0 | |
260 | v4 frags overlapped: 0 | |
261 | v4 frags purged: 0 | |
262 | min v6 frag size: 1280 | |
263 | v6 frags accepted: 0 | |
264 | v6 frags completed: 0 | |
265 | v6 frags expired: 0 | |
266 | v6 frags too small: 0 | |
267 | v6 frags overlapped: 0 | |
268 | v6 frags purged: 0 | |
269 | ||
270 | Fragment Lists: | |
271 | ||
272 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
273 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
274 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
275 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
276 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
277 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
278 | (src=10.1.1.1,dst=10.1.1.2,recirc_id=<cleared>,ip_id=<cleared>,dl_type=0x800,zone=9,nw_proto=1,num_fragments=1,state=first frag) | |
279 | ]) | |
280 | ]) | |
281 | ||
e06c44a8 | 282 | # OVS_CHECK_MIN_KERNEL([minversion], [maxversion]) |
d1224d28 YS |
283 | # |
284 | # The userspace skips all tests that check kernel version. | |
e06c44a8 | 285 | m4_define([OVS_CHECK_MIN_KERNEL], |
d1224d28 YS |
286 | [ |
287 | AT_SKIP_IF([:]) | |
288 | ]) | |
289 | ||
290 | # OVS_CHECK_KERNEL_EXCL([minversion], [maxversion], [minsublevel], [maxsublevel]) | |
291 | # | |
292 | # The userspace skips all tests that check kernel version. | |
293 | m4_define([OVS_CHECK_KERNEL_EXCL], | |
294 | [ | |
295 | AT_SKIP_IF([:]) | |
296 | ]) | |
187bb41f YHW |
297 | |
298 | # VSCTL_ADD_DATAPATH_TABLE() | |
299 | # | |
300 | # Create datapath table "netdev" for userspace tests in ovsdb | |
301 | m4_define([VSCTL_ADD_DATAPATH_TABLE], | |
302 | [ | |
303 | AT_CHECK([ovs-vsctl -- --id=@m create Datapath datapath_version=0 -- set Open_vSwitch . datapaths:"netdev"=@m], [0], [stdout]) | |
304 | DP_TYPE=$(echo "netdev") | |
305 | ]) | |
ae05d681 GR |
306 | |
307 | ||
308 | # CHECK_L3L4_CONNTRACK_REASM() | |
309 | # | |
310 | # Only allow this test to run on the kernel datapath - it is not useful | |
311 | # or necessary for the userspace datapath as it is checking for a kernel | |
312 | # specific regression. | |
313 | m4_define([CHECK_L3L4_CONNTRACK_REASM], | |
314 | [ | |
315 | AT_SKIP_IF([:]) | |
316 | ]) |