X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Fsd-dhcp-server.c;h=24fedd2375a2cbc3f08a15d44105a15c29d13b86;hb=820aced6f6067a6b7c57b7d36e44f64378870cbf;hp=ab683228b493831073b672befeebb146908c318e;hpb=a6f1e036de8f212f33ead7f5387c297afd8be26e;p=elogind.git diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index ab683228b..24fedd237 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -109,6 +109,11 @@ int client_id_compare_func(const void *_a, const void *_b) { return memcmp(a->data, b->data, a->length); } +static const struct hash_ops client_id_hash_ops = { + .hash = client_id_hash_func, + .compare = client_id_compare_func +}; + static void dhcp_lease_free(DHCPLease *lease) { if (!lease) return; @@ -158,8 +163,7 @@ int sd_dhcp_server_new(sd_dhcp_server **ret, int ifindex) { server->address = htobe32(INADDR_ANY); server->netmask = htobe32(INADDR_ANY); server->index = ifindex; - server->leases_by_client_id = hashmap_new(client_id_hash_func, - client_id_compare_func); + server->leases_by_client_id = hashmap_new(&client_id_hash_ops); *ret = server; server = NULL; @@ -388,8 +392,8 @@ static int server_message_init(sd_dhcp_server *server, DHCPPacket **ret, return -ENOMEM; r = dhcp_message_init(&packet->dhcp, BOOTREPLY, - be32toh(req->message->xid), type, req->max_optlen, - &optoffset); + be32toh(req->message->xid), type, ARPHRD_ETHER, + req->max_optlen, &optoffset); if (r < 0) return r; @@ -509,8 +513,8 @@ static int server_send_forcerenew(sd_dhcp_server *server, be32_t address, return -ENOMEM; r = dhcp_message_init(&packet->dhcp, BOOTREPLY, 0, - DHCP_FORCERENEW, DHCP_MIN_OPTIONS_SIZE, - &optoffset); + DHCP_FORCERENEW, ARPHRD_ETHER, + DHCP_MIN_OPTIONS_SIZE, &optoffset); if (r < 0) return r;