chiark / gitweb /
Improve messages about user mode a bit
[elogind.git] / src / libsystemd-dhcp / test-dhcp-client.c
index d398510745f373049c4e122da48a882b04a377b1..929b869ec331dd853ffd1530c77595d1ef4db7df 100644 (file)
@@ -85,6 +85,7 @@ static void test_request_basic(sd_event *e)
         assert(sd_dhcp_client_set_request_option(client, 33) == 0);
         assert(sd_dhcp_client_set_request_option(client, 33) == -EEXIST);
         assert(sd_dhcp_client_set_request_option(client, 44) == 0);
+        assert(sd_dhcp_client_set_request_option(client, 33) == -EEXIST);
 }
 
 static uint16_t client_checksum(void *buf, int len)
@@ -102,10 +103,13 @@ static uint16_t client_checksum(void *buf, int len)
 
         if (len & 0x01) {
                 odd = buf;
-                sum += odd[len];
+                sum += odd[len - 1];
         }
 
-        return ~((sum & 0xffff) + (sum >> 16));
+        while (sum >> 16)
+                sum = (sum & 0xffff) + (sum >> 16);
+
+        return ~sum;
 }
 
 static void test_checksum(void)
@@ -116,13 +120,7 @@ static void test_checksum(void)
                 0xff, 0xff, 0xff, 0xff
         };
 
-        uint8_t check[2] = {
-                0x78, 0xae
-        };
-
-        uint16_t *val = (uint16_t *)check;
-
-        assert(client_checksum(&buf, 20) == *val);
+        assert(client_checksum(&buf, 20) == be16toh(0x78ae));
 }
 
 static int check_options(uint8_t code, uint8_t len, const uint8_t *option,
@@ -187,6 +185,17 @@ int dhcp_network_bind_raw_socket(int index, union sockaddr_union *link)
         return test_fd[0];
 }
 
+int dhcp_network_bind_udp_socket(int index, be32_t client_address)
+{
+        return 0;
+}
+
+int dhcp_network_send_udp_socket(int s, be32_t server_address,
+                                 const void *packet, size_t len)
+{
+        return 0;
+}
+
 static void test_discover_message(sd_event *e)
 {
         sd_dhcp_client *client;