allowedips.c (002c6ca75289a4ac4f6738213dd2d258704886e4) | allowedips.c (8032bf1233a74627ce69b803608e650f3f35971c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4 * 5 * This contains some basic static unit tests for the allowedips data structure. 6 * It also has two additional modes that are disabled and meant to be used by 7 * folks directly playing with this file. If you define the macro 8 * DEBUG_PRINT_TRIE_GRAPHVIZ to be 1, then every time there's a full tree in --- 271 unchanged lines hidden (view full) --- 280 kref_init(&peers[i]->refcount); 281 INIT_LIST_HEAD(&peers[i]->allowedips_list); 282 } 283 284 mutex_lock(&mutex); 285 286 for (i = 0; i < NUM_RAND_ROUTES; ++i) { 287 get_random_bytes(ip, 4); | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 4 * 5 * This contains some basic static unit tests for the allowedips data structure. 6 * It also has two additional modes that are disabled and meant to be used by 7 * folks directly playing with this file. If you define the macro 8 * DEBUG_PRINT_TRIE_GRAPHVIZ to be 1, then every time there's a full tree in --- 271 unchanged lines hidden (view full) --- 280 kref_init(&peers[i]->refcount); 281 INIT_LIST_HEAD(&peers[i]->allowedips_list); 282 } 283 284 mutex_lock(&mutex); 285 286 for (i = 0; i < NUM_RAND_ROUTES; ++i) { 287 get_random_bytes(ip, 4); |
288 cidr = prandom_u32_max(32) + 1; 289 peer = peers[prandom_u32_max(NUM_PEERS)]; | 288 cidr = get_random_u32_below(32) + 1; 289 peer = peers[get_random_u32_below(NUM_PEERS)]; |
290 if (wg_allowedips_insert_v4(&t, (struct in_addr *)ip, cidr, 291 peer, &mutex) < 0) { 292 pr_err("allowedips random self-test malloc: FAIL\n"); 293 goto free_locked; 294 } 295 if (horrible_allowedips_insert_v4(&h, (struct in_addr *)ip, 296 cidr, peer) < 0) { 297 pr_err("allowedips random self-test malloc: FAIL\n"); 298 goto free_locked; 299 } 300 for (j = 0; j < NUM_MUTATED_ROUTES; ++j) { 301 memcpy(mutated, ip, 4); 302 get_random_bytes(mutate_mask, 4); | 290 if (wg_allowedips_insert_v4(&t, (struct in_addr *)ip, cidr, 291 peer, &mutex) < 0) { 292 pr_err("allowedips random self-test malloc: FAIL\n"); 293 goto free_locked; 294 } 295 if (horrible_allowedips_insert_v4(&h, (struct in_addr *)ip, 296 cidr, peer) < 0) { 297 pr_err("allowedips random self-test malloc: FAIL\n"); 298 goto free_locked; 299 } 300 for (j = 0; j < NUM_MUTATED_ROUTES; ++j) { 301 memcpy(mutated, ip, 4); 302 get_random_bytes(mutate_mask, 4); |
303 mutate_amount = prandom_u32_max(32); | 303 mutate_amount = get_random_u32_below(32); |
304 for (k = 0; k < mutate_amount / 8; ++k) 305 mutate_mask[k] = 0xff; 306 mutate_mask[k] = 0xff 307 << ((8 - (mutate_amount % 8)) % 8); 308 for (; k < 4; ++k) 309 mutate_mask[k] = 0; 310 for (k = 0; k < 4; ++k) 311 mutated[k] = (mutated[k] & mutate_mask[k]) | 312 (~mutate_mask[k] & 313 get_random_u8()); | 304 for (k = 0; k < mutate_amount / 8; ++k) 305 mutate_mask[k] = 0xff; 306 mutate_mask[k] = 0xff 307 << ((8 - (mutate_amount % 8)) % 8); 308 for (; k < 4; ++k) 309 mutate_mask[k] = 0; 310 for (k = 0; k < 4; ++k) 311 mutated[k] = (mutated[k] & mutate_mask[k]) | 312 (~mutate_mask[k] & 313 get_random_u8()); |
314 cidr = prandom_u32_max(32) + 1; 315 peer = peers[prandom_u32_max(NUM_PEERS)]; | 314 cidr = get_random_u32_below(32) + 1; 315 peer = peers[get_random_u32_below(NUM_PEERS)]; |
316 if (wg_allowedips_insert_v4(&t, 317 (struct in_addr *)mutated, 318 cidr, peer, &mutex) < 0) { 319 pr_err("allowedips random self-test malloc: FAIL\n"); 320 goto free_locked; 321 } 322 if (horrible_allowedips_insert_v4(&h, 323 (struct in_addr *)mutated, cidr, peer)) { 324 pr_err("allowedips random self-test malloc: FAIL\n"); 325 goto free_locked; 326 } 327 } 328 } 329 330 for (i = 0; i < NUM_RAND_ROUTES; ++i) { 331 get_random_bytes(ip, 16); | 316 if (wg_allowedips_insert_v4(&t, 317 (struct in_addr *)mutated, 318 cidr, peer, &mutex) < 0) { 319 pr_err("allowedips random self-test malloc: FAIL\n"); 320 goto free_locked; 321 } 322 if (horrible_allowedips_insert_v4(&h, 323 (struct in_addr *)mutated, cidr, peer)) { 324 pr_err("allowedips random self-test malloc: FAIL\n"); 325 goto free_locked; 326 } 327 } 328 } 329 330 for (i = 0; i < NUM_RAND_ROUTES; ++i) { 331 get_random_bytes(ip, 16); |
332 cidr = prandom_u32_max(128) + 1; 333 peer = peers[prandom_u32_max(NUM_PEERS)]; | 332 cidr = get_random_u32_below(128) + 1; 333 peer = peers[get_random_u32_below(NUM_PEERS)]; |
334 if (wg_allowedips_insert_v6(&t, (struct in6_addr *)ip, cidr, 335 peer, &mutex) < 0) { 336 pr_err("allowedips random self-test malloc: FAIL\n"); 337 goto free_locked; 338 } 339 if (horrible_allowedips_insert_v6(&h, (struct in6_addr *)ip, 340 cidr, peer) < 0) { 341 pr_err("allowedips random self-test malloc: FAIL\n"); 342 goto free_locked; 343 } 344 for (j = 0; j < NUM_MUTATED_ROUTES; ++j) { 345 memcpy(mutated, ip, 16); 346 get_random_bytes(mutate_mask, 16); | 334 if (wg_allowedips_insert_v6(&t, (struct in6_addr *)ip, cidr, 335 peer, &mutex) < 0) { 336 pr_err("allowedips random self-test malloc: FAIL\n"); 337 goto free_locked; 338 } 339 if (horrible_allowedips_insert_v6(&h, (struct in6_addr *)ip, 340 cidr, peer) < 0) { 341 pr_err("allowedips random self-test malloc: FAIL\n"); 342 goto free_locked; 343 } 344 for (j = 0; j < NUM_MUTATED_ROUTES; ++j) { 345 memcpy(mutated, ip, 16); 346 get_random_bytes(mutate_mask, 16); |
347 mutate_amount = prandom_u32_max(128); | 347 mutate_amount = get_random_u32_below(128); |
348 for (k = 0; k < mutate_amount / 8; ++k) 349 mutate_mask[k] = 0xff; 350 mutate_mask[k] = 0xff 351 << ((8 - (mutate_amount % 8)) % 8); 352 for (; k < 4; ++k) 353 mutate_mask[k] = 0; 354 for (k = 0; k < 4; ++k) 355 mutated[k] = (mutated[k] & mutate_mask[k]) | 356 (~mutate_mask[k] & 357 get_random_u8()); | 348 for (k = 0; k < mutate_amount / 8; ++k) 349 mutate_mask[k] = 0xff; 350 mutate_mask[k] = 0xff 351 << ((8 - (mutate_amount % 8)) % 8); 352 for (; k < 4; ++k) 353 mutate_mask[k] = 0; 354 for (k = 0; k < 4; ++k) 355 mutated[k] = (mutated[k] & mutate_mask[k]) | 356 (~mutate_mask[k] & 357 get_random_u8()); |
358 cidr = prandom_u32_max(128) + 1; 359 peer = peers[prandom_u32_max(NUM_PEERS)]; | 358 cidr = get_random_u32_below(128) + 1; 359 peer = peers[get_random_u32_below(NUM_PEERS)]; |
360 if (wg_allowedips_insert_v6(&t, 361 (struct in6_addr *)mutated, 362 cidr, peer, &mutex) < 0) { 363 pr_err("allowedips random self-test malloc: FAIL\n"); 364 goto free_locked; 365 } 366 if (horrible_allowedips_insert_v6( 367 &h, (struct in6_addr *)mutated, cidr, --- 309 unchanged lines hidden --- | 360 if (wg_allowedips_insert_v6(&t, 361 (struct in6_addr *)mutated, 362 cidr, peer, &mutex) < 0) { 363 pr_err("allowedips random self-test malloc: FAIL\n"); 364 goto free_locked; 365 } 366 if (horrible_allowedips_insert_v6( 367 &h, (struct in6_addr *)mutated, cidr, --- 309 unchanged lines hidden --- |