X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Ftest-dhcp-client.c;h=2d4d59096a3d8d538814f76f2ab5b6b7c4ba1569;hb=67608cad2301f9ab5c92336992c176505640f2ba;hp=1eb4648012174bb9c2eb3b154eef4d190d0df99e;hpb=8fc8e3ab98104db40f5674984dd3edb54e62267f;p=elogind.git diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c index 1eb464801..2d4d59096 100644 --- a/src/libsystemd-network/test-dhcp-client.c +++ b/src/libsystemd-network/test-dhcp-client.c @@ -128,6 +128,17 @@ static void test_checksum(void) static int check_options(uint8_t code, uint8_t len, const uint8_t *option, void *user_data) { + switch(code) { + case DHCP_OPTION_CLIENT_IDENTIFIER: + assert_se(len == 7); + assert_se(option[0] == 0x01); + assert_se(memcmp(&option[1], &mac_addr, ETH_ALEN) == 0); + break; + + default: + break; + } + return 0; } @@ -242,8 +253,7 @@ static void test_discover_message(sd_event *e) sd_dhcp_client_stop(client); sd_dhcp_client_free(client); - close(test_fd[0]); - close(test_fd[1]); + test_fd[1] = safe_close(test_fd[1]); callback_recv = NULL; } @@ -370,12 +380,15 @@ static void test_addr_acq_acquired(sd_dhcp_client *client, int event, static int test_addr_acq_recv_request(size_t size, DHCPMessage *request) { uint16_t udp_check = 0; + uint8_t *msg_bytes = (uint8_t *)request; int res; res = dhcp_option_parse(request, size, check_options, NULL); assert_se(res == DHCP_REQUEST); assert_se(xid == request->xid); + assert_se(msg_bytes[size - 1] == DHCP_OPTION_END); + if (verbose) printf(" recv DHCP Request 0x%08x\n", be32toh(xid)); @@ -399,11 +412,14 @@ static int test_addr_acq_recv_request(size_t size, DHCPMessage *request) static int test_addr_acq_recv_discover(size_t size, DHCPMessage *discover) { uint16_t udp_check = 0; + uint8_t *msg_bytes = (uint8_t *)discover; int res; res = dhcp_option_parse(discover, size, check_options, NULL); assert_se(res == DHCP_DISCOVER); + assert_se(msg_bytes[size - 1] == DHCP_OPTION_END); + xid = discover->xid; if (verbose) @@ -450,9 +466,10 @@ static void test_addr_acq(sd_event *e) callback_recv = test_addr_acq_recv_discover; - assert_se(sd_event_add_monotonic(e, &test_hangcheck, - time_now + 2 * USEC_PER_SEC, 0, - test_dhcp_hangcheck, NULL) >= 0); + assert_se(sd_event_add_time(e, &test_hangcheck, + CLOCK_MONOTONIC, + time_now + 2 * USEC_PER_SEC, 0, + test_dhcp_hangcheck, NULL) >= 0); res = sd_dhcp_client_start(client); assert_se(res == 0 || res == -EINPROGRESS); @@ -465,8 +482,7 @@ static void test_addr_acq(sd_event *e) sd_dhcp_client_stop(client); sd_dhcp_client_free(client); - close(test_fd[0]); - close(test_fd[1]); + test_fd[1] = safe_close(test_fd[1]); callback_recv = NULL; xid = 0;