mirror of
https://github.com/systemd/systemd.git
synced 2024-10-28 03:25:31 +03:00
networkd/sd-dhcp-server: only start dhcp server when necessary
This commit is contained in:
parent
8e5edf8d42
commit
7c16313f11
@ -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);
|
||||
|
@ -307,7 +307,8 @@ static int link_enter_configured(Link *link) {
|
||||
assert(link->network);
|
||||
assert(link->state == LINK_STATE_SETTING_ROUTES);
|
||||
|
||||
if (link->network->dhcp_server) {
|
||||
if (link->network->dhcp_server &&
|
||||
!sd_dhcp_server_is_running(link->dhcp_server)) {
|
||||
struct in_addr pool_start;
|
||||
Address *address;
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include "sd-event.h"
|
||||
@ -38,6 +39,8 @@ int sd_dhcp_server_attach_event(sd_dhcp_server *client, sd_event *event, int pri
|
||||
int sd_dhcp_server_detach_event(sd_dhcp_server *client);
|
||||
sd_event *sd_dhcp_server_get_event(sd_dhcp_server *client);
|
||||
|
||||
bool sd_dhcp_server_is_running(sd_dhcp_server *server);
|
||||
|
||||
int sd_dhcp_server_start(sd_dhcp_server *server);
|
||||
int sd_dhcp_server_stop(sd_dhcp_server *server);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user