]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/libsystemd-network/dhcp-lease-internal.h
2d66708079dd7102c595d89701e8b2c248384295
1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright (C) 2013 Intel Corporation. All rights reserved.
6 Copyright (C) 2014 Tom Gundersen
10 #include <linux/if_packet.h>
12 #include "sd-dhcp-client.h"
14 #include "dhcp-protocol.h"
18 struct sd_dhcp_route
{
19 struct in_addr dst_addr
;
20 struct in_addr gw_addr
;
21 unsigned char dst_prefixlen
;
26 struct sd_dhcp_raw_option
{
27 LIST_FIELDS(struct sd_dhcp_raw_option
, options
);
34 struct sd_dhcp_lease
{
44 be32_t server_address
;
48 bool have_subnet_mask
;
60 struct sd_dhcp_route
*static_route
;
61 size_t static_route_size
, static_route_allocated
;
63 uint16_t mtu
; /* 0 if unset */
66 char **search_domains
;
73 void *vendor_specific
;
74 size_t vendor_specific_len
;
78 LIST_HEAD(struct sd_dhcp_raw_option
, private_options
);
81 int dhcp_lease_new(sd_dhcp_lease
**ret
);
83 int dhcp_lease_parse_options(uint8_t code
, uint8_t len
, const void *option
, void *userdata
);
84 int dhcp_lease_parse_search_domains(const uint8_t *option
, size_t len
, char ***domains
);
85 int dhcp_lease_insert_private_option(sd_dhcp_lease
*lease
, uint8_t tag
, const void *data
, uint8_t len
);
87 int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease
*lease
);
89 int dhcp_lease_set_client_id(sd_dhcp_lease
*lease
, const void *client_id
, size_t client_id_len
);
91 int dhcp_lease_save(sd_dhcp_lease
*lease
, const char *lease_file
);
92 int dhcp_lease_load(sd_dhcp_lease
**ret
, const char *lease_file
);