chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
service: minor modernization
[elogind.git]
/
src
/
libsystemd-network
/
sd-dhcp-server.c
diff --git
a/src/libsystemd-network/sd-dhcp-server.c
b/src/libsystemd-network/sd-dhcp-server.c
index 5bdcf860bc3147f6e44d14a88e1040109ffa53a6..5c32fdfffa9053c3d239cfd6ed506c5acd3ce271 100644
(file)
--- 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"
#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) {
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;
}
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);
sd_dhcp_server *sd_dhcp_server_ref(sd_dhcp_server *server) {
if (server)
assert_se(REFCNT_INC(server->n_ref) >= 2);
@@
-105,9
+111,6
@@
static void dhcp_lease_free(DHCPLease *lease) {
free(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;
sd_dhcp_server *sd_dhcp_server_unref(sd_dhcp_server *server) {
DHCPLease *lease;
@@
-343,9
+346,12
@@
int dhcp_server_send_packet(sd_dhcp_server *server,
} else if (req->message->ciaddr && type != DHCP_NAK)
destination = req->message->ciaddr;
} 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);
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 */
else
/* we cannot send UDP packet to specific MAC address when the address is
not yet configured, so must fall back to raw packets */