1 /* 2 * Copyright (c) 2024 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 #ifndef _SKYWALK_TEST_DRIVER_H_ 29 #define _SKYWALK_TEST_DRIVER_H_ 30 31 #include <stdlib.h> 32 #include <stdbool.h> 33 34 #include "skywalk_test_common.h" 35 #include "skywalk_test_utils.h" 36 37 #define SKT_MAX_ARGV 8 38 39 struct skywalk_test { 40 const char *skt_testname; 41 const char *skt_testdesc; 42 uint64_t skt_required_features; 43 int (*skt_main)(int argc, char **); 44 char *skt_argv[SKT_MAX_ARGV]; 45 void (*skt_init)(void); 46 void (*skt_fini)(void); 47 uint64_t skt_expected_exception_code; 48 uint64_t skt_expected_exception_code_ignore; 49 char skt_argv2[11]; // dynamically initialized default argv2 50 }; 51 52 extern int skywalk_test_driver_run(struct skywalk_test *, int, char **, 53 uint32_t, bool, bool, int); 54 55 struct skywalk_mptest { 56 const char *skt_testname; 57 const char *skt_testdesc; 58 uint64_t skt_required_features; 59 int skt_nchildren; 60 int (*skt_main)(int argc, char *argv[]); 61 char *skt_argv[SKT_MAX_ARGV]; 62 void (*skt_init)(void); 63 void (*skt_fini)(void); 64 char skt_argv2[11]; // dynamically initialized default argv2 65 }; 66 67 struct skywalk_mptest_check { 68 const char *skt_testname; 69 bool (*skt_supported)(void); 70 }; 71 72 #define MPTEST_SEQ_FILENO 3 73 extern bool skywalk_in_driver; // true only if in skywalk test driver process 74 75 extern int skywalk_mptest_driver_run(struct skywalk_mptest *, bool); 76 77 extern struct skywalk_test skt_noop; 78 extern struct skywalk_test skt_crash; 79 extern struct skywalk_test skt_assert; 80 extern struct skywalk_test skt_features; 81 extern struct skywalk_test skt_oneslotus; 82 extern struct skywalk_test skt_oneslotks; 83 extern struct skywalk_test skt_oneslotup; 84 extern struct skywalk_test skt_oneslotkp; 85 extern struct skywalk_test skt_oneslotuk; 86 extern struct skywalk_test skt_oneslotuk_defunct; 87 extern struct skywalk_test skt_oneslotkk; 88 extern struct skywalk_test skt_shutdownus; 89 extern struct skywalk_test skt_shutdownks; 90 extern struct skywalk_test skt_shutdownup; 91 extern struct skywalk_test skt_shutdownkp; 92 extern struct skywalk_test skt_shutdownuk; 93 extern struct skywalk_test skt_shutdownkk; 94 extern struct skywalk_test skt_shutdown2us; 95 extern struct skywalk_test skt_shutdown2ks; 96 extern struct skywalk_test skt_shutdown2up; 97 extern struct skywalk_test skt_shutdown2kp; 98 extern struct skywalk_test skt_shutdown2uk; 99 extern struct skywalk_test skt_shutdown2kk; 100 extern struct skywalk_test skt_nslotsus; 101 extern struct skywalk_test skt_nslotsks; 102 extern struct skywalk_test skt_nslotsup; 103 extern struct skywalk_test skt_nslotskp; 104 extern struct skywalk_test skt_nslotsuk; 105 extern struct skywalk_test skt_nslotskk; 106 extern struct skywalk_test skt_mslotsus; 107 extern struct skywalk_test skt_mslotsks; 108 extern struct skywalk_test skt_mslotsup; 109 extern struct skywalk_test skt_mslotskp; 110 extern struct skywalk_test skt_mslotsuk; 111 extern struct skywalk_test skt_mslotskk; 112 extern struct skywalk_test skt_mmslotsus; 113 extern struct skywalk_test skt_mmslotsks; 114 extern struct skywalk_test skt_mmslotsup; 115 extern struct skywalk_test skt_mmslotskp; 116 extern struct skywalk_test skt_mmslotsuk; 117 extern struct skywalk_test skt_mmslotskk; 118 extern struct skywalk_test skt_closecfd; 119 extern struct skywalk_test skt_writecfd; 120 extern struct skywalk_test skt_readcfd; 121 extern struct skywalk_test skt_closenfd; 122 extern struct skywalk_test skt_writenfd; 123 extern struct skywalk_test skt_readnfd; 124 extern struct skywalk_test skt_writeif; 125 extern struct skywalk_test skt_writering; 126 extern struct skywalk_test skt_readsmap; 127 extern struct skywalk_test skt_writesmap; 128 extern struct skywalk_test skt_badringtl; 129 extern struct skywalk_test skt_badringtp; 130 extern struct skywalk_test skt_badringtk; 131 extern struct skywalk_test skt_badringts; 132 extern struct skywalk_test skt_badringrl; 133 extern struct skywalk_test skt_badringrp; 134 extern struct skywalk_test skt_badringrk; 135 extern struct skywalk_test skt_badringrs; 136 extern struct skywalk_test skt_kqueue_basic; 137 extern struct skywalk_test skt_kqueue_lowat_chan_slots; 138 extern struct skywalk_test skt_kqueue_lowat_chan_bytes; 139 extern struct skywalk_test skt_kqueue_lowat_note_slots; 140 extern struct skywalk_test skt_kqueue_lowat_note_bytes; 141 extern struct skywalk_test skt_change_len; 142 extern struct skywalk_test skt_big_len; 143 extern struct skywalk_test skt_internalizemetdata; 144 extern struct skywalk_test skt_ringidtx; 145 extern struct skywalk_test skt_ringidrx; 146 extern struct skywalk_test skt_closekqk; 147 extern struct skywalk_test skt_debug_verify_u; 148 extern struct skywalk_test skt_debug_verify_k; 149 extern struct skywalk_test skt_utun27302538a; 150 extern struct skywalk_test skt_utun27302538b; 151 extern struct skywalk_test skt_utun27302538c; 152 extern struct skywalk_test skt_utun27302538d; 153 extern struct skywalk_test skt_utun27646755; 154 extern struct skywalk_test skt_utun27646755slow; 155 extern struct skywalk_test skt_utunleak; 156 extern struct skywalk_test skt_utunloopn4u1; 157 extern struct skywalk_test skt_utunloopn4u2; 158 extern struct skywalk_test skt_utunloopn4t1; 159 extern struct skywalk_test skt_utunloopn4t2; 160 extern struct skywalk_test skt_utunloopy4u1; 161 extern struct skywalk_test skt_utunloopy4u2; 162 extern struct skywalk_test skt_utunloopy4t1; 163 extern struct skywalk_test skt_utunloopy4t2; 164 extern struct skywalk_test skt_utunloopn1000; 165 extern struct skywalk_test skt_utunloopy1000; 166 extern struct skywalk_test skt_ipsecloopy4u1; 167 extern struct skywalk_test skt_ipsecloopy4u2; 168 extern struct skywalk_test skt_ipsecloopy4t1; 169 extern struct skywalk_test skt_ipsecloopy4t2; 170 extern struct skywalk_test skt_ipsecloopy1000; 171 extern struct skywalk_test skt_bindupipeanon; 172 extern struct skywalk_test skt_bindupipekey; 173 extern struct skywalk_test skt_bindfswanon; 174 extern struct skywalk_test skt_bindfswkey; 175 extern struct skywalk_test skt_bindnetifkey; 176 extern struct skywalk_test skt_flowswitch_ns_reserve; 177 extern struct skywalk_test skt_flowswitch_ns_reserve2; 178 extern struct skywalk_test skt_netifcompata; 179 extern struct skywalk_test skt_netifcompatb; 180 extern struct skywalk_test skt_netifcompatc; 181 extern struct skywalk_test skt_netiffsw; 182 extern struct skywalk_test skt_netifdelete; 183 extern struct skywalk_test skt_fswloopfsw; 184 extern struct skywalk_test skt_fswloop2ff; 185 extern struct skywalk_test skt_fswloop2nff; 186 extern struct skywalk_test skt_teardown; 187 extern struct skywalk_test skt_teardownb; 188 extern struct skywalk_test skt_teardownr; 189 extern struct skywalk_test skt_teardownz; 190 extern struct skywalk_test skt_fsw29301703a; 191 extern struct skywalk_test skt_fsw29301703b; 192 extern struct skywalk_test skt_fsw29301703c; 193 extern struct skywalk_test skt_fswbindany; 194 extern struct skywalk_test skt_fswbind0; 195 extern struct skywalk_test skt_fswbind1; 196 extern struct skywalk_test skt_fswbind512; 197 extern struct skywalk_test skt_fswbind2; 198 extern struct skywalk_test skt_fswbind5; 199 extern struct skywalk_test skt_fswbind25; 200 extern struct skywalk_test skt_mf10x10; 201 extern struct skywalk_test skt_mf10x100; 202 extern struct skywalk_test skt_mf100x10; 203 extern struct skywalk_test skt_mf100x100; 204 extern struct skywalk_test skt_mf1xall; 205 extern struct skywalk_test skt_mf1xallslow; 206 extern struct skywalk_test skt_fullupipe; 207 extern struct skywalk_test skt_upipepeerclosure; 208 extern struct skywalk_test skt_pllupipe; 209 extern struct skywalk_test skt_pllutxk; 210 extern struct skywalk_test skt_pllutxs; 211 extern struct skywalk_test skt_pllutxp; 212 extern struct skywalk_test skt_pllurxk; 213 extern struct skywalk_test skt_pllurxs; 214 extern struct skywalk_test skt_pllurxp; 215 extern struct skywalk_test skt_listener; 216 extern struct skywalk_test skt_listener_stress; 217 extern struct skywalk_test skt_listener_reuse; 218 extern struct skywalk_test skt_listen_stress; 219 extern struct skywalk_test skt_copy_cksum_single; 220 extern struct skywalk_test skt_copy_cksum_multi; 221 extern struct skywalk_test skt_reass_default_setting; 222 extern struct skywalk_test skt_reass; 223 extern struct skywalk_test skt_reass_timeout; 224 extern struct skywalk_test skt_reass_bad_fraglen; 225 extern struct skywalk_test skt_reass_atomic; 226 extern struct skywalk_test skt_reass_fuzz_queue_limit; 227 extern struct skywalk_test skt_verifynxadv; 228 extern struct skywalk_test skt_cksum; 229 extern struct skywalk_test skt_memory; 230 extern struct skywalk_test skt_flow_req; 231 extern struct skywalk_test skt_flow_req_ll; 232 extern struct skywalk_test skt_flow_config; 233 extern struct skywalk_test skt_flowlookup; 234 extern struct skywalk_test skt_libcuckoo; 235 extern struct skywalk_test skt_restricted_port; 236 extern struct skywalk_test skt_steering; 237 238 239 extern struct skywalk_mptest skt_mp100noop; 240 extern struct skywalk_mptest skt_mc10x10; 241 extern struct skywalk_mptest skt_mc10x100; 242 extern struct skywalk_mptest skt_mc100x10; 243 extern struct skywalk_mptest skt_mc100x100; 244 extern struct skywalk_mptest skt_mpprotons; 245 extern struct skywalk_mptest skt_xferudp; 246 extern struct skywalk_mptest skt_xferudpn; 247 extern struct skywalk_mptest skt_xferudpnsp; 248 extern struct skywalk_mptest skt_xferudpfcs; 249 extern struct skywalk_mptest skt_xferudptrailer; 250 extern struct skywalk_mptest skt_xferudpnfcs; 251 extern struct skywalk_mptest skt_xferudpntrailer; 252 extern struct skywalk_mptest skt_xferudplong; 253 extern struct skywalk_mptest skt_xferudplongn; 254 extern struct skywalk_mptest skt_xferudpoverwhelm; 255 extern struct skywalk_mptest skt_xferudpoverwhelmn; 256 extern struct skywalk_mptest skt_xferudpoverwhelmnsp; 257 extern struct skywalk_mptest skt_xferudpoverwhelmlong; 258 extern struct skywalk_mptest skt_xferudpoverwhelmlongn; 259 extern struct skywalk_mptest skt_xferudpping; 260 extern struct skywalk_mptest skt_xferudppingn; 261 extern struct skywalk_mptest skt_xferudpping_aqm; 262 extern struct skywalk_mptest skt_xferudppingn_aqm; 263 extern struct skywalk_mptest skt_xferudpping1; 264 extern struct skywalk_mptest skt_xferudpping1n; 265 extern struct skywalk_mptest skt_xferudppinglong; 266 extern struct skywalk_mptest skt_xferudppinglongn; 267 extern struct skywalk_mptest skt_xferudpping1wrong; 268 extern struct skywalk_mptest skt_xfertcpsynflood; 269 extern struct skywalk_mptest skt_xfertcprstflood; 270 extern struct skywalk_mptest skt_xferudpwitherrors; 271 extern struct skywalk_mptest skt_xferudpwitherrorscompat; 272 extern struct skywalk_mptest skt_xfertcpportzero; 273 extern struct skywalk_mptest skt_xferudpportzero; 274 extern struct skywalk_mptest skt_xfersetuponly; 275 extern struct skywalk_mptest skt_xfersetuponlyn; 276 extern struct skywalk_mptest skt_xferudppingn_wmm; 277 extern struct skywalk_mptest skt_xferflowmatch; 278 extern struct skywalk_mptest skt_xferflowcleanup; 279 extern struct skywalk_mptest skt_xferudppingn_mb; 280 extern struct skywalk_mptest skt_xferfastlane; 281 extern struct skywalk_mptest skt_xferfastlanen; 282 extern struct skywalk_mptest skt_xferrfc4594; 283 extern struct skywalk_mptest skt_xferrfc4594n; 284 extern struct skywalk_mptest skt_xfercsumoffload; 285 extern struct skywalk_mptest skt_xfercsumoffloadn; 286 extern struct skywalk_mptest skt_xferudpfrags; 287 extern struct skywalk_mptest skt_xferudpbadfrags; 288 extern struct skywalk_mptest skt_xferlistenertcprst; 289 extern struct skywalk_mptest skt_netifdirecttxrx; 290 extern struct skywalk_mptest skt_netifdirecttxrxsp; 291 extern struct skywalk_mptest skt_netifdirecttxrxcopymode; 292 extern struct skywalk_mptest skt_netifdirectifadvenable; 293 extern struct skywalk_mptest skt_netifdirectifadvdisable; 294 extern struct skywalk_mptest skt_netifdirectchanevents; 295 extern struct skywalk_mptest skt_netifdirectexpiryevents; 296 extern struct skywalk_mptest skt_filternative; 297 extern struct skywalk_mptest skt_filtercompat; 298 extern struct skywalk_mptest_check skt_filternative_check; 299 extern struct skywalk_mptest_check skt_filtercompat_check; 300 extern struct skywalk_mptest skt_xferudpifadvenable; 301 extern struct skywalk_mptest skt_xferudpifadvdisable; 302 extern struct skywalk_mptest skt_xferudppingnll; 303 extern struct skywalk_mptest skt_xferudppingllink; 304 extern struct skywalk_mptest skt_xferudppingllink_wmm; 305 extern struct skywalk_mptest skt_xferudppingllink_multi; 306 extern struct skywalk_mptest skt_xferudpchanevents; 307 extern struct skywalk_mptest skt_xferudpchaneventsasync; 308 extern struct skywalk_mptest skt_xferudppingllink_multi_combined; 309 extern struct skywalk_mptest skt_xferparentchildflow; 310 extern struct skywalk_mptest skt_xferparentchildflown; 311 extern struct skywalk_mptest skt_xferparentchildflow_offset_400; 312 extern struct skywalk_mptest skt_xferparentchildflown_offset_400; 313 extern struct skywalk_mptest skt_xferrdudpping; 314 315 extern struct skywalk_mptest_check skt_filternative_check; 316 extern struct skywalk_mptest_check skt_filtercompat_check; 317 318 #endif /* _SKYWALK_TEST_DRIVER_H_ */ 319