]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/libsystemd-network/dhcp-server-internal.h
tree-wide: drop license boilerplate
[thirdparty/systemd.git] / src / libsystemd-network / dhcp-server-internal.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
0ef6f454
LP
2#pragma once
3
b44cd882
TG
4/***
5 This file is part of systemd.
6
7 Copyright (C) 2013 Intel Corporation. All rights reserved.
8 Copyright (C) 2014 Tom Gundersen
b44cd882
TG
9***/
10
b44cd882 11#include "sd-dhcp-server.h"
71d35b6b 12#include "sd-event.h"
b44cd882 13
71d35b6b 14#include "dhcp-internal.h"
87322b3a 15#include "hashmap.h"
b44cd882 16#include "log.h"
71d35b6b 17#include "util.h"
be077570 18
87322b3a
TG
19typedef struct DHCPClientId {
20 size_t length;
9a0f246f 21 void *data;
87322b3a
TG
22} DHCPClientId;
23
24typedef struct DHCPLease {
25 DHCPClientId client_id;
26
27 be32_t address;
52750344
TG
28 be32_t gateway;
29 uint8_t chaddr[16];
87322b3a
TG
30 usec_t expiration;
31} DHCPLease;
32
b44cd882 33struct sd_dhcp_server {
3733eec3 34 unsigned n_ref;
b44cd882
TG
35
36 sd_event *event;
37 int event_priority;
ff734080
TG
38 sd_event_source *receive_message;
39 int fd;
8de4a226 40 int fd_raw;
3a864fe4 41
b3ec603c 42 int ifindex;
20af7091 43 be32_t address;
59b8f6b6 44 be32_t netmask;
99634696
TG
45 be32_t subnet;
46 uint32_t pool_offset;
47 uint32_t pool_size;
b44cd882 48
8eb9058d
LP
49 char *timezone;
50
1a04db0f
LP
51 struct in_addr *ntp, *dns;
52 unsigned n_ntp, n_dns;
53
77ff6022
CG
54 bool emit_router;
55
87322b3a
TG
56 Hashmap *leases_by_client_id;
57 DHCPLease **bound_leases;
99634696 58 DHCPLease invalid_lease;
586ac6f7
LP
59
60 uint32_t max_lease_time, default_lease_time;
87322b3a 61};
816e2e7a
TG
62
63typedef struct DHCPRequest {
64 /* received message */
65 DHCPMessage *message;
66
67 /* options */
68 DHCPClientId client_id;
69 size_t max_optlen;
70 be32_t server_id;
2dead812 71 be32_t requested_ip;
586ac6f7 72 uint32_t lifetime;
816e2e7a
TG
73} DHCPRequest;
74
79008bdd 75#define log_dhcp_server(client, fmt, ...) log_internal(LOG_DEBUG, 0, __FILE__, __LINE__, __func__, "DHCP SERVER: " fmt, ##__VA_ARGS__)
6e741541 76#define log_dhcp_server_errno(client, error, fmt, ...) log_internal(LOG_DEBUG, error, __FILE__, __LINE__, __func__, "DHCP SERVER: " fmt, ##__VA_ARGS__)
be077570
TG
77
78int dhcp_server_handle_message(sd_dhcp_server *server, DHCPMessage *message,
79 size_t length);
969b009d
TG
80int dhcp_server_send_packet(sd_dhcp_server *server,
81 DHCPRequest *req, DHCPPacket *packet,
82 int type, size_t optoffset);
87322b3a 83
b826ab58 84void client_id_hash_func(const void *p, struct siphash *state);
87322b3a 85int client_id_compare_func(const void *_a, const void *_b);