bool ASSERT_ADDR4(char const *expected_str, struct in_addr const *actual, char const *test_name) { struct in_addr expected; if (!expected_str) return __ASSERT_ADDR4(NULL, actual, test_name); return str_to_addr4(expected_str, &expected) ? false : __ASSERT_ADDR4(&expected, actual, test_name); }
static int validate_sample(struct pool4_sample *sample, void *void_args) { struct foreach_sample_args *args = void_args; bool success = true; /* log_debug(" foreaching %pI4 %u-%u", &sample->range.addr, sample->range.ports.min, sample->range.ports.max); */ success &= ASSERT_BOOL(true, args->samples < args->expected_len, "overflow (%u %u)", args->samples, args->expected_len); if (!success) return -EINVAL; success &= __ASSERT_ADDR4(&args->expected[args->samples].range.addr, &sample->range.addr, "addr"); success &= ASSERT_UINT(args->expected[args->samples].range.ports.min, sample->range.ports.min, "min"); success &= ASSERT_UINT(args->expected[args->samples].range.ports.max, sample->range.ports.max, "max"); args->samples++; args->taddrs += port_range_count(&sample->range.ports); return success ? 0 : -EINVAL; }