X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Fsd-dhcp-server.c;h=c932377d88335aa4ef09af11f7028a82943d835f;hb=574cc928887851269c5919123dbdf8e1b2713b23;hp=5bdcf860bc3147f6e44d14a88e1040109ffa53a6;hpb=3bdace9bf779ce051f00c14914b35c3a26164aa9;p=elogind.git diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 5bdcf860b..c932377d8 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -29,7 +29,7 @@ #include "dhcp-server-internal.h" #include "dhcp-internal.h" -#define DHCP_DEFAULT_LEASE_TIME 60 +#define DHCP_DEFAULT_LEASE_TIME 3600 /* one hour */ int sd_dhcp_server_set_lease_pool(sd_dhcp_server *server, struct in_addr *address, size_t size) { @@ -105,9 +105,6 @@ static void dhcp_lease_free(DHCPLease *lease) { free(lease); } -DEFINE_TRIVIAL_CLEANUP_FUNC(DHCPLease*, dhcp_lease_free); -#define _cleanup_dhcp_lease_free_ _cleanup_(dhcp_lease_freep) - sd_dhcp_server *sd_dhcp_server_unref(sd_dhcp_server *server) { DHCPLease *lease; @@ -343,9 +340,12 @@ int dhcp_server_send_packet(sd_dhcp_server *server, } else if (req->message->ciaddr && type != DHCP_NAK) destination = req->message->ciaddr; - if (destination || requested_broadcast(req) || type == DHCP_NAK) + if (destination != INADDR_ANY) return dhcp_server_send_udp(server, destination, &packet->dhcp, sizeof(DHCPMessage) + optoffset); + else if (requested_broadcast(req) || type == DHCP_NAK) + return dhcp_server_send_udp(server, INADDR_BROADCAST, &packet->dhcp, + sizeof(DHCPMessage) + optoffset); else /* we cannot send UDP packet to specific MAC address when the address is not yet configured, so must fall back to raw packets */