]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/libsystemd-network/dhcp-server-internal.h
sd-dhcp-server: bind to raw socket for sending
[thirdparty/systemd.git] / src / libsystemd-network / dhcp-server-internal.h
CommitLineData
b44cd882
TG
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3/***
4 This file is part of systemd.
5
6 Copyright (C) 2013 Intel Corporation. All rights reserved.
7 Copyright (C) 2014 Tom Gundersen
8
9 systemd is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 2.1 of the License, or
12 (at your option) any later version.
13
14 systemd is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with systemd; If not, see <http://www.gnu.org/licenses/>.
21***/
22
23#include "sd-event.h"
24#include "sd-dhcp-server.h"
25
26#include "refcnt.h"
27#include "util.h"
28#include "log.h"
29
be077570
TG
30#include "dhcp-internal.h"
31
b44cd882
TG
32struct sd_dhcp_server {
33 RefCount n_ref;
34
35 sd_event *event;
36 int event_priority;
ff734080
TG
37 sd_event_source *receive_message;
38 int fd;
8de4a226 39 int fd_raw;
3a864fe4
TG
40
41 int index;
b44cd882
TG
42};
43
816e2e7a
TG
44typedef struct DHCPClientId {
45 size_t length;
46 uint8_t *data;
47} DHCPClientId;
48
49typedef struct DHCPRequest {
50 /* received message */
51 DHCPMessage *message;
52
53 /* options */
54 DHCPClientId client_id;
55 size_t max_optlen;
56 be32_t server_id;
57} DHCPRequest;
58
b44cd882
TG
59DEFINE_TRIVIAL_CLEANUP_FUNC(sd_dhcp_server*, sd_dhcp_server_unref);
60#define _cleanup_dhcp_server_unref_ _cleanup_(sd_dhcp_server_unrefp)
61
62#define log_dhcp_server(client, fmt, ...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP SERVER: " fmt, ##__VA_ARGS__)
be077570
TG
63
64int dhcp_server_handle_message(sd_dhcp_server *server, DHCPMessage *message,
65 size_t length);