diff options
Diffstat (limited to 'src/systemd')
-rw-r--r-- | src/systemd/sd-dhcp-client.h | 12 | ||||
-rw-r--r-- | src/systemd/sd-dhcp-lease.h | 41 | ||||
-rw-r--r-- | src/systemd/sd-network.h | 87 |
3 files changed, 129 insertions, 11 deletions
diff --git a/src/systemd/sd-dhcp-client.h b/src/systemd/sd-dhcp-client.h index 87f5adb597..a60bb5832f 100644 --- a/src/systemd/sd-dhcp-client.h +++ b/src/systemd/sd-dhcp-client.h @@ -26,6 +26,7 @@ #include <net/ethernet.h> #include "sd-event.h" +#include "sd-dhcp-lease.h" enum { DHCP_EVENT_STOP = 0, @@ -36,7 +37,6 @@ enum { }; typedef struct sd_dhcp_client sd_dhcp_client; -typedef struct sd_dhcp_lease sd_dhcp_lease; typedef void (*sd_dhcp_client_cb_t)(sd_dhcp_client *client, int event, void *userdata); @@ -52,16 +52,6 @@ int sd_dhcp_client_set_mac(sd_dhcp_client *client, const struct ether_addr *addr); int sd_dhcp_client_get_lease(sd_dhcp_client *client, sd_dhcp_lease **ret); -sd_dhcp_lease *sd_dhcp_lease_ref(sd_dhcp_lease *lease); -sd_dhcp_lease *sd_dhcp_lease_unref(sd_dhcp_lease *lease); -int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, struct in_addr *addr); -int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, struct in_addr **addr, size_t *addr_size); -int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu); -int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainname); -int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **hostname); - int sd_dhcp_client_stop(sd_dhcp_client *client); int sd_dhcp_client_start(sd_dhcp_client *client); void sd_dhcp_client_free(sd_dhcp_client *client); diff --git a/src/systemd/sd-dhcp-lease.h b/src/systemd/sd-dhcp-lease.h new file mode 100644 index 0000000000..af687a673b --- /dev/null +++ b/src/systemd/sd-dhcp-lease.h @@ -0,0 +1,41 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#ifndef foosddhcpleasehfoo +#define foosddhcpleasehfoo + +/*** + This file is part of systemd. + + Copyright (C) 2013 Intel Corporation. All rights reserved. + Copyright (C) 2014 Tom Gundersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <netinet/in.h> +#include <net/ethernet.h> + +typedef struct sd_dhcp_lease sd_dhcp_lease; + +sd_dhcp_lease *sd_dhcp_lease_ref(sd_dhcp_lease *lease); +sd_dhcp_lease *sd_dhcp_lease_unref(sd_dhcp_lease *lease); +int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, struct in_addr *addr); +int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, struct in_addr **addr, size_t *addr_size); +int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu); +int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainname); +int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **hostname); + +#endif diff --git a/src/systemd/sd-network.h b/src/systemd/sd-network.h new file mode 100644 index 0000000000..c0b093d067 --- /dev/null +++ b/src/systemd/sd-network.h @@ -0,0 +1,87 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#ifndef foosdloginhfoo +#define foosdloginhfoo + +/*** + This file is part of systemd. + + Copyright 2011 Lennart Poettering + Copyright 2014 Tom Gundersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <sys/types.h> +#include <inttypes.h> + +#include "sd-dhcp-lease.h" + +#include "_sd-common.h" + +/* + * A few points: + * + * Instead of returning an empty string array or empty integer array, we + * may return NULL. + * + * Free the data the library returns with libc free(). String arrays + * are NULL terminated and you need to free the array itself in + * addition to the strings contained. + * + * We return error codes as negative errno, kernel-style. 0 or + * positive on success. + * + * These functions access data in /run. This is a virtual file systems, + * hence the accesses is relatively cheap. + * + * See sd-network(3) for more information. + */ + +_SD_BEGIN_DECLARATIONS; + +/* Get state from ifindex. Possible states: unknown, unmanaged, failed, configuring, configured */ +int sd_network_get_link_state(unsigned index, char**state); + +/* Get DHCPv4 lease from ifindex. */ +int sd_network_get_dhcp_lease(unsigned index, sd_dhcp_lease **ret); + +/* Get all network interfaces indices, store in *indices. Returns the + * number of indices. If indices is NULL only returns the number of indices. */ +int sd_network_get_ifindices(unsigned **indices); + +/* Monitor object */ +typedef struct sd_network_monitor sd_network_monitor; + +/* Create a new monitor. Category must be NULL. */ +int sd_network_monitor_new(const char *category, sd_network_monitor** ret); + +/* Destroys the passed monitor. Returns NULL. */ +sd_network_monitor* sd_network_monitor_unref(sd_network_monitor *m); + +/* Flushes the monitor */ +int sd_network_monitor_flush(sd_network_monitor *m); + +/* Get FD from monitor */ +int sd_network_monitor_get_fd(sd_network_monitor *m); + +/* Get poll() mask to monitor */ +int sd_network_monitor_get_events(sd_network_monitor *m); + +/* Get timeout for poll(), as usec value relative to CLOCK_MONOTONIC's epoch */ +int sd_network_monitor_get_timeout(sd_network_monitor *m, uint64_t *timeout_usec); + +_SD_END_DECLARATIONS; + +#endif |