X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Fsd-dhcp-server.c;h=bcf7d1fa2ca262c62caf9040d2dd73c074a0c5ed;hb=8f077bf94e129fa1b6f0159e3140c4326f1066cf;hp=55a8fbe005bc78f6e3f56144a8e736332d9c9031;hpb=d6bd972d061af306ede2affd2c9340a1660f7996;p=elogind.git diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 55a8fbe00..bcf7d1fa2 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) { @@ -62,6 +62,12 @@ int sd_dhcp_server_set_address(sd_dhcp_server *server, struct in_addr *address) return 0; } +bool sd_dhcp_server_is_running(sd_dhcp_server *server) { + assert_return(server, -EINVAL); + + return !!server->receive_message; +} + sd_dhcp_server *sd_dhcp_server_ref(sd_dhcp_server *server) { if (server) assert_se(REFCNT_INC(server->n_ref) >= 2); @@ -356,7 +362,7 @@ int dhcp_server_send_packet(sd_dhcp_server *server, static int server_message_init(sd_dhcp_server *server, DHCPPacket **ret, uint8_t type, size_t *_optoffset, DHCPRequest *req) { _cleanup_free_ DHCPPacket *packet = NULL; - size_t optoffset; + size_t optoffset = 0; int r; assert(server); @@ -706,9 +712,9 @@ int dhcp_server_handle_message(sd_dhcp_server *server, DHCPMessage *message, } else lease = existing_lease; - r = sd_event_now(server->event, CLOCK_MONOTONIC, &time_now); + r = sd_event_now(server->event, clock_boottime_or_monotonic(), &time_now); if (r < 0) - time_now = now(CLOCK_MONOTONIC); + time_now = now(clock_boottime_or_monotonic()); lease->expiration = req->lifetime * USEC_PER_SEC + time_now; r = server_send_ack(server, req, address);