diff options
Diffstat (limited to 'src/libsystemd-network/test-dhcp6-client.c')
-rw-r--r-- | src/libsystemd-network/test-dhcp6-client.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c index bd289fa802..a0418ecdb9 100644 --- a/src/libsystemd-network/test-dhcp6-client.c +++ b/src/libsystemd-network/test-dhcp6-client.c @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ /*** This file is part of systemd. @@ -68,6 +69,12 @@ static int test_client_basic(sd_event *e) { sizeof (mac_addr), ARPHRD_ETHER) >= 0); + assert_se(sd_dhcp6_client_set_fqdn(client, "host") == 1); + assert_se(sd_dhcp6_client_set_fqdn(client, "host.domain") == 1); + assert_se(sd_dhcp6_client_set_fqdn(client, NULL) == 1); + assert_se(sd_dhcp6_client_set_fqdn(client, "~host") == -EINVAL); + assert_se(sd_dhcp6_client_set_fqdn(client, "~host.domain") == -EINVAL); + assert_se(sd_dhcp6_client_set_request_option(client, SD_DHCP6_OPTION_CLIENTID) == -EINVAL); assert_se(sd_dhcp6_client_set_request_option(client, SD_DHCP6_OPTION_DNS_SERVERS) == -EEXIST); assert_se(sd_dhcp6_client_set_request_option(client, SD_DHCP6_OPTION_NTP_SERVER) == -EEXIST); @@ -202,6 +209,11 @@ static uint8_t msg_reply[173] = { 0x00, 0x00, 0x00, 0x00, 0x01 }; +static uint8_t fqdn_wire[16] = { + 0x04, 'h', 'o', 's', 't', 0x03, 'l', 'a', 'b', + 0x05, 'i', 'n', 't', 'r', 'a', 0x00 +}; + static int test_advertise_option(sd_event *e) { _cleanup_(sd_dhcp6_lease_unrefp) sd_dhcp6_lease *lease = NULL; DHCP6Message *advertise = (DHCP6Message *)msg_advertise; @@ -410,7 +422,7 @@ static int test_client_verify_request(DHCP6Message *request, uint8_t *option, uint16_t optcode; size_t optlen; bool found_clientid = false, found_iana = false, found_serverid = false, - found_elapsed_time = false; + found_elapsed_time = false, found_fqdn = false; int r; struct in6_addr addr; be32_t val; @@ -467,6 +479,15 @@ static int test_client_verify_request(DHCP6Message *request, uint8_t *option, assert_se(optlen == 2); break; + case SD_DHCP6_OPTION_FQDN: + assert_se(!found_fqdn); + found_fqdn = true; + + assert_se(optlen == 17); + + assert_se(optval[0] == 0x01); + assert_se(!memcmp(optval + 1, fqdn_wire, sizeof(fqdn_wire))); + break; } } @@ -511,7 +532,7 @@ static int test_client_verify_solicit(DHCP6Message *solicit, uint8_t *option, uint16_t optcode; size_t optlen; bool found_clientid = false, found_iana = false, - found_elapsed_time = false; + found_elapsed_time = false, found_fqdn = false; int r; assert_se(solicit->type == DHCP6_SOLICIT); @@ -545,6 +566,17 @@ static int test_client_verify_solicit(DHCP6Message *solicit, uint8_t *option, assert_se(optlen == 2); break; + + case SD_DHCP6_OPTION_FQDN: + assert_se(!found_fqdn); + found_fqdn = true; + + assert_se(optlen == 17); + + assert_se(optval[0] == 0x01); + assert_se(!memcmp(optval + 1, fqdn_wire, sizeof(fqdn_wire))); + + break; } } @@ -716,6 +748,7 @@ static int test_client_solicit(sd_event *e) { assert_se(sd_dhcp6_client_set_mac(client, (const uint8_t *) &mac_addr, sizeof (mac_addr), ARPHRD_ETHER) >= 0); + assert_se(sd_dhcp6_client_set_fqdn(client, "host.lab.intra") == 1); assert_se(sd_dhcp6_client_get_information_request(client, &val) >= 0); assert_se(val == false); |