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);
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;
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include <stdbool.h>
#include <netinet/in.h>
#include "sd-event.h"
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);