X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Ftest-dhcp-server.c;h=3e68f310f3248ac59b0f555c559e0858319f4ab7;hb=fe21f16764147d51819a904d57ac36967f9913e3;hp=6b3b4d0ab0f0da3ffb44eef452db0f26b145e688;hpb=87322b3aee0dc649ff1ae7a403dcc9d7305baba2;p=elogind.git diff --git a/src/libsystemd-network/test-dhcp-server.c b/src/libsystemd-network/test-dhcp-server.c index 6b3b4d0ab..3e68f310f 100644 --- a/src/libsystemd-network/test-dhcp-server.c +++ b/src/libsystemd-network/test-dhcp-server.c @@ -30,7 +30,7 @@ #include "sd-dhcp-server.h" #include "dhcp-server-internal.h" -static void test_basic(sd_event *event) { +static int test_basic(sd_event *event) { _cleanup_dhcp_server_unref_ sd_dhcp_server *server = NULL; struct in_addr address_lo = { .s_addr = htonl(INADDR_LOOPBACK), @@ -38,6 +38,7 @@ static void test_basic(sd_event *event) { struct in_addr address_any = { .s_addr = htonl(INADDR_ANY), }; + int r; /* attach to loopback interface */ assert_se(sd_dhcp_server_new(&server, 1) >= 0); @@ -55,20 +56,28 @@ static void test_basic(sd_event *event) { assert_se(!sd_dhcp_server_unref(server)); assert_se(sd_dhcp_server_start(server) == -EUNATCH); - assert_se(sd_dhcp_server_set_address(server, &address_any) == -EINVAL); - assert_se(sd_dhcp_server_set_address(server, &address_lo) >= 0); - assert_se(sd_dhcp_server_set_address(server, &address_lo) == -EBUSY); + assert_se(sd_dhcp_server_set_address(server, &address_any, 28) == -EINVAL); + assert_se(sd_dhcp_server_set_address(server, &address_lo, 38) == -ERANGE); + assert_se(sd_dhcp_server_set_address(server, &address_lo, 8) >= 0); + assert_se(sd_dhcp_server_set_address(server, &address_lo, 8) == -EBUSY); assert_se(sd_dhcp_server_set_lease_pool(server, &address_any, 1) == -EINVAL); assert_se(sd_dhcp_server_set_lease_pool(server, &address_lo, 0) == -EINVAL); assert_se(sd_dhcp_server_set_lease_pool(server, &address_lo, 1) >= 0); assert_se(sd_dhcp_server_set_lease_pool(server, &address_lo, 1) == -EBUSY); - assert_se(sd_dhcp_server_start(server) >= 0); + r = sd_dhcp_server_start(server); + + if (r == -EPERM) + return EXIT_TEST_SKIP; + assert_se(r >= 0); + assert_se(sd_dhcp_server_start(server) == -EBUSY); assert_se(sd_dhcp_server_stop(server) >= 0); assert_se(sd_dhcp_server_stop(server) >= 0); assert_se(sd_dhcp_server_start(server) >= 0); + + return 0; } static void test_message_handler(void) { @@ -112,7 +121,7 @@ static void test_message_handler(void) { }; assert_se(sd_dhcp_server_new(&server, 1) >= 0); - assert_se(sd_dhcp_server_set_address(server, &address_lo) >= 0); + assert_se(sd_dhcp_server_set_address(server, &address_lo, 8) >= 0); assert_se(sd_dhcp_server_attach_event(server, NULL, 0) >= 0); assert_se(sd_dhcp_server_start(server) >= 0); @@ -224,6 +233,7 @@ static void test_client_id_hash(void) { int main(int argc, char *argv[]) { _cleanup_event_unref_ sd_event *e; + int r; log_set_max_level(LOG_DEBUG); log_parse_environment(); @@ -231,7 +241,10 @@ int main(int argc, char *argv[]) { assert_se(sd_event_new(&e) >= 0); - test_basic(e); + r = test_basic(e); + if (r != 0) + return r; + test_message_handler(); test_client_id_hash();