|
Packit Service |
dff8e4 |
#pragma once
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/*
|
|
Packit Service |
dff8e4 |
* Dynamic Host Configuration Protocol for IPv4
|
|
Packit Service |
dff8e4 |
*
|
|
Packit Service |
dff8e4 |
* This is the public header of the n-dhcp4 library, implementing IPv4 Dynamic
|
|
Packit Service |
dff8e4 |
* Host Configuration Protocol as described in RFC-2132. This header defines
|
|
Packit Service |
dff8e4 |
* the public API and all entry points of n-dhcp4.
|
|
Packit Service |
dff8e4 |
*/
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
#ifdef __cplusplus
|
|
Packit Service |
dff8e4 |
extern "C" {
|
|
Packit Service |
dff8e4 |
#endif
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
#include <inttypes.h>
|
|
Packit Service |
dff8e4 |
#include <netinet/in.h>
|
|
Packit Service |
dff8e4 |
#include <stdbool.h>
|
|
Packit Service |
dff8e4 |
#include <stdlib.h>
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4Client NDhcp4Client;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ClientConfig NDhcp4ClientConfig;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ClientEvent NDhcp4ClientEvent;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ClientLease NDhcp4ClientLease;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ClientProbe NDhcp4ClientProbe;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ClientProbeConfig NDhcp4ClientProbeConfig;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4Server NDhcp4Server;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ServerConfig NDhcp4ServerConfig;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ServerEvent NDhcp4ServerEvent;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ServerIp NDhcp4ServerIp;
|
|
Packit Service |
dff8e4 |
typedef struct NDhcp4ServerLease NDhcp4ServerLease;
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
#define N_DHCP4_CLIENT_START_DELAY_RFC2131 (UINT64_C(9000))
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
enum {
|
|
Packit Service |
dff8e4 |
_N_DHCP4_E_SUCCESS,
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_PREEMPTED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_INTERNAL,
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_INVALID_IFINDEX,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_INVALID_TRANSPORT,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_INVALID_ADDRESS,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_INVALID_CLIENT_ID,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_DUPLICATE_OPTION,
|
|
Packit Service |
dff8e4 |
N_DHCP4_E_UNSET,
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
_N_DHCP4_E_N,
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
enum {
|
|
Packit Service |
dff8e4 |
N_DHCP4_TRANSPORT_ETHERNET,
|
|
Packit Service |
dff8e4 |
N_DHCP4_TRANSPORT_INFINIBAND,
|
|
Packit Service |
dff8e4 |
_N_DHCP4_TRANSPORT_N,
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
enum {
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_DOWN,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_OFFER,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_GRANTED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_RETRACTED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_EXTENDED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_EXPIRED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_CANCELLED,
|
|
Packit Service |
dff8e4 |
N_DHCP4_CLIENT_EVENT_LOG,
|
|
Packit Service |
dff8e4 |
_N_DHCP4_CLIENT_EVENT_N,
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
enum {
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_DOWN,
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_DISCOVER,
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_REQUEST,
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_RENEW,
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_DECLINE,
|
|
Packit Service |
dff8e4 |
N_DHCP4_SERVER_EVENT_RELEASE,
|
|
Packit Service |
dff8e4 |
_N_DHCP4_SERVER_EVENT_N,
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
struct NDhcp4ClientEvent {
|
|
Packit Service |
dff8e4 |
unsigned int event;
|
|
Packit Service |
dff8e4 |
union {
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
} down;
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbe *probe;
|
|
Packit Service |
dff8e4 |
NDhcp4ClientLease *lease;
|
|
Packit Service |
dff8e4 |
} offer, granted, extended;
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbe *probe;
|
|
Packit Service |
dff8e4 |
} retracted, expired, cancelled;
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
/* If allow_steal_message is true, then the user may steal the message when handling
|
|
Packit Service |
dff8e4 |
* the event. In that case, set the message field to %NULL and free it yourself
|
|
Packit Service |
dff8e4 |
* with free(). */
|
|
Packit Service |
dff8e4 |
const char *message;
|
|
Packit Service |
dff8e4 |
int level;
|
|
Packit Service |
dff8e4 |
bool allow_steal_message;
|
|
Packit Service |
dff8e4 |
} log;
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
struct NDhcp4ServerEvent {
|
|
Packit Service |
dff8e4 |
unsigned int event;
|
|
Packit Service |
dff8e4 |
union {
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
} down;
|
|
Packit Service |
dff8e4 |
struct {
|
|
Packit Service |
dff8e4 |
NDhcp4ServerLease *lease;
|
|
Packit Service |
dff8e4 |
} discover, request, decline, release;
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
};
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* client configs */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_config_new(NDhcp4ClientConfig **configp);
|
|
Packit Service |
dff8e4 |
NDhcp4ClientConfig *n_dhcp4_client_config_free(NDhcp4ClientConfig *config);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_config_set_ifindex(NDhcp4ClientConfig *config, int ifindex);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_config_set_transport(NDhcp4ClientConfig *config, unsigned int transport);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_config_set_request_broadcast(NDhcp4ClientConfig *config, bool request_broadcast);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_config_set_mac(NDhcp4ClientConfig *config, const uint8_t *mac, size_t n_mac);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_config_set_broadcast_mac(NDhcp4ClientConfig *config, const uint8_t *mac, size_t n_mac);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_config_set_client_id(NDhcp4ClientConfig *config, const uint8_t *id, size_t n_id);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* client-probe configs */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_probe_config_new(NDhcp4ClientProbeConfig **configp);
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbeConfig *n_dhcp4_client_probe_config_free(NDhcp4ClientProbeConfig *config);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_config_set_inform_only(NDhcp4ClientProbeConfig *config, bool inform_only);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_config_set_init_reboot(NDhcp4ClientProbeConfig *config, bool init_reboot);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_config_set_requested_ip(NDhcp4ClientProbeConfig *config, struct in_addr ip);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_config_set_start_delay(NDhcp4ClientProbeConfig *config, uint64_t msecs);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_config_request_option(NDhcp4ClientProbeConfig *config, uint8_t option);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_probe_config_append_option(NDhcp4ClientProbeConfig *config,
|
|
Packit Service |
dff8e4 |
uint8_t option,
|
|
Packit Service |
dff8e4 |
const void *data,
|
|
Packit Service |
dff8e4 |
uint8_t n_data);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* clients */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_new(NDhcp4Client **clientp, NDhcp4ClientConfig *config);
|
|
Packit Service |
dff8e4 |
NDhcp4Client *n_dhcp4_client_ref(NDhcp4Client *client);
|
|
Packit Service |
dff8e4 |
NDhcp4Client *n_dhcp4_client_unref(NDhcp4Client *client);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_get_fd(NDhcp4Client *client, int *fdp);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_dispatch(NDhcp4Client *client);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_pop_event(NDhcp4Client *client, NDhcp4ClientEvent **eventp);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_set_log_level(NDhcp4Client *client, int level);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_update_mtu(NDhcp4Client *client, uint16_t mtu);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_probe(NDhcp4Client *client,
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbe **probep,
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbeConfig *config);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* client probes */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
NDhcp4ClientProbe *n_dhcp4_client_probe_free(NDhcp4ClientProbe *probe);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_set_userdata(NDhcp4ClientProbe *probe, void *userdata);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_probe_get_userdata(NDhcp4ClientProbe *probe, void **userdatap);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* client leases */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
NDhcp4ClientLease *n_dhcp4_client_lease_ref(NDhcp4ClientLease *lease);
|
|
Packit Service |
dff8e4 |
NDhcp4ClientLease *n_dhcp4_client_lease_unref(NDhcp4ClientLease *lease);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_lease_get_yiaddr(NDhcp4ClientLease *lease, struct in_addr *yiaddr);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_lease_get_siaddr(NDhcp4ClientLease *lease, struct in_addr *siaddr);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_lease_get_basetime(NDhcp4ClientLease *lease, uint64_t *ns_basetimep);
|
|
Packit Service |
dff8e4 |
void n_dhcp4_client_lease_get_lifetime(NDhcp4ClientLease *lease, uint64_t *ns_lifetimep);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_lease_query(NDhcp4ClientLease *lease, uint8_t option, uint8_t **datap, size_t *n_datap);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_lease_get_server_identifier (NDhcp4ClientLease *lease, struct in_addr *addr);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_lease_select(NDhcp4ClientLease *lease);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_lease_accept(NDhcp4ClientLease *lease);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_client_lease_decline(NDhcp4ClientLease *lease, const char *error);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* server configs */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_config_new(NDhcp4ServerConfig **configp);
|
|
Packit Service |
dff8e4 |
NDhcp4ServerConfig *n_dhcp4_server_config_free(NDhcp4ServerConfig *config);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_server_config_set_ifindex(NDhcp4ServerConfig *config, int ifindex);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* servers */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_new(NDhcp4Server **serverp, NDhcp4ServerConfig *config);
|
|
Packit Service |
dff8e4 |
NDhcp4Server *n_dhcp4_server_ref(NDhcp4Server *server);
|
|
Packit Service |
dff8e4 |
NDhcp4Server *n_dhcp4_server_unref(NDhcp4Server *server);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
void n_dhcp4_server_get_fd(NDhcp4Server *server, int *fdp);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_dispatch(NDhcp4Server *server);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_pop_event(NDhcp4Server *server, NDhcp4ServerEvent **eventp);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_add_ip(NDhcp4Server *server, NDhcp4ServerIp **ipp, struct in_addr ip);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* server ip addresses */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
NDhcp4ServerIp *n_dhcp4_server_ip_free(NDhcp4ServerIp *ip);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* server leases */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
NDhcp4ServerLease *n_dhcp4_server_lease_ref(NDhcp4ServerLease *lease);
|
|
Packit Service |
dff8e4 |
NDhcp4ServerLease *n_dhcp4_server_lease_unref(NDhcp4ServerLease *lease);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_lease_query(NDhcp4ServerLease *lease, uint8_t option, uint8_t **datap, size_t *n_datap);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_lease_append(NDhcp4ServerLease *lease, uint8_t option, uint8_t *data, size_t n_data);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_lease_offer(NDhcp4ServerLease *lease);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_lease_ack(NDhcp4ServerLease *lease);
|
|
Packit Service |
dff8e4 |
int n_dhcp4_server_lease_nack(NDhcp4ServerLease *lease);
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
/* inline helpers */
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_config_freep(NDhcp4ClientConfig **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_config_free(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_config_freev(NDhcp4ClientConfig *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_config_free(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_probe_config_freep(NDhcp4ClientProbeConfig **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_probe_config_free(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_probe_config_freev(NDhcp4ClientProbeConfig *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_probe_config_free(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_unrefp(NDhcp4Client **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_unref(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_unrefv(NDhcp4Client *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_unref(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_probe_freep(NDhcp4ClientProbe **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_probe_free(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_probe_freev(NDhcp4ClientProbe *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_probe_free(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_lease_unrefp(NDhcp4ClientLease **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_lease_unref(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_client_lease_unrefv(NDhcp4ClientLease *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_client_lease_unref(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_config_freep(NDhcp4ServerConfig **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_config_free(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_config_freev(NDhcp4ServerConfig *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_config_free(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_unrefp(NDhcp4Server **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_unref(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_unrefv(NDhcp4Server *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_unref(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_ip_freep(NDhcp4ServerIp **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_ip_free(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_ip_freev(NDhcp4ServerIp *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_ip_free(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_lease_unrefp(NDhcp4ServerLease **p) {
|
|
Packit Service |
dff8e4 |
if (*p)
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_lease_unref(*p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
static inline void n_dhcp4_server_lease_unrefv(NDhcp4ServerLease *p) {
|
|
Packit Service |
dff8e4 |
n_dhcp4_server_lease_unref(p);
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
|
|
Packit Service |
dff8e4 |
#ifdef __cplusplus
|
|
Packit Service |
dff8e4 |
}
|
|
Packit Service |
dff8e4 |
#endif
|