|
14 | 14 |
|
15 | 15 | #define NS_TEST "mptcp_ns" |
16 | 16 | #define ADDR_1 "10.0.1.1" |
17 | | -#define ADDR_2 "10.0.1.2" |
| 17 | +#define ADDR_2 "10.0.2.1" |
| 18 | +#define ADDR_3 "10.0.3.1" |
| 19 | +#define ADDR_4 "10.0.4.1" |
| 20 | +#define ADDR6_1 "dead:beef:1::1" |
| 21 | +#define ADDR6_2 "dead:beef:2::1" |
| 22 | +#define ADDR6_3 "dead:beef:3::1" |
| 23 | +#define ADDR6_4 "dead:beef:4::1" |
18 | 24 | #define PORT_1 10001 |
19 | 25 |
|
20 | 26 | #ifndef IPPROTO_MPTCP |
@@ -322,22 +328,60 @@ static void test_mptcpify(void) |
322 | 328 | close(cgroup_fd); |
323 | 329 | } |
324 | 330 |
|
325 | | -static int endpoint_init(char *flags) |
| 331 | +static int address_init(void) |
326 | 332 | { |
327 | 333 | SYS(fail, "ip -net %s link add veth1 type veth peer name veth2", NS_TEST); |
328 | 334 | SYS(fail, "ip -net %s addr add %s/24 dev veth1", NS_TEST, ADDR_1); |
| 335 | + SYS(fail, "ip -net %s addr add %s/64 dev veth1 nodad", NS_TEST, ADDR6_1); |
329 | 336 | SYS(fail, "ip -net %s link set dev veth1 up", NS_TEST); |
330 | 337 | SYS(fail, "ip -net %s addr add %s/24 dev veth2", NS_TEST, ADDR_2); |
| 338 | + SYS(fail, "ip -net %s addr add %s/64 dev veth2 nodad", NS_TEST, ADDR6_2); |
331 | 339 | SYS(fail, "ip -net %s link set dev veth2 up", NS_TEST); |
332 | | - if (SYS_NOFAIL("ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags)) { |
| 340 | + |
| 341 | + SYS(fail, "ip -net %s link add veth3 type veth peer name veth4", NS_TEST); |
| 342 | + SYS(fail, "ip -net %s addr add %s/24 dev veth3", NS_TEST, ADDR_3); |
| 343 | + SYS(fail, "ip -net %s addr add %s/64 dev veth3 nodad", NS_TEST, ADDR6_3); |
| 344 | + SYS(fail, "ip -net %s link set dev veth3 up", NS_TEST); |
| 345 | + SYS(fail, "ip -net %s addr add %s/24 dev veth4", NS_TEST, ADDR_4); |
| 346 | + SYS(fail, "ip -net %s addr add %s/64 dev veth4 nodad", NS_TEST, ADDR6_4); |
| 347 | + SYS(fail, "ip -net %s link set dev veth4 up", NS_TEST); |
| 348 | + |
| 349 | + return 0; |
| 350 | +fail: |
| 351 | + return -1; |
| 352 | +} |
| 353 | + |
| 354 | +static int endpoint_add(char *addr, char *flags) |
| 355 | +{ |
| 356 | + return SYS_NOFAIL("ip -net %s mptcp endpoint add %s %s", NS_TEST, addr, flags); |
| 357 | +} |
| 358 | + |
| 359 | +static int endpoint_init(char *flags, u8 endpoints) |
| 360 | +{ |
| 361 | + int ret = -1; |
| 362 | + |
| 363 | + if (!endpoints || endpoints > 4) |
| 364 | + goto fail; |
| 365 | + |
| 366 | + if (address_init()) |
| 367 | + goto fail; |
| 368 | + |
| 369 | + if (SYS_NOFAIL("ip -net %s mptcp limits set add_addr_accepted 4 subflows 4", |
| 370 | + NS_TEST)) { |
333 | 371 | printf("'ip mptcp' not supported, skip this test.\n"); |
334 | 372 | test__skip(); |
335 | 373 | goto fail; |
336 | 374 | } |
337 | 375 |
|
338 | | - return 0; |
| 376 | + if (endpoints > 1) |
| 377 | + ret = endpoint_add(ADDR_2, flags); |
| 378 | + if (endpoints > 2) |
| 379 | + ret = ret ?: endpoint_add(ADDR_3, flags); |
| 380 | + if (endpoints > 3) |
| 381 | + ret = ret ?: endpoint_add(ADDR_4, flags); |
| 382 | + |
339 | 383 | fail: |
340 | | - return -1; |
| 384 | + return ret; |
341 | 385 | } |
342 | 386 |
|
343 | 387 | static void wait_for_new_subflows(int fd) |
@@ -423,7 +467,7 @@ static void test_subflow(void) |
423 | 467 | if (!ASSERT_OK_PTR(netns, "netns_new: mptcp_subflow")) |
424 | 468 | goto skel_destroy; |
425 | 469 |
|
426 | | - if (endpoint_init("subflow") < 0) |
| 470 | + if (endpoint_init("subflow", 2) < 0) |
427 | 471 | goto close_netns; |
428 | 472 |
|
429 | 473 | run_subflow(); |
|
0 commit comments