]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/libsystemd-network/dhcp-lease-internal.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright © 2013 Intel Corporation. All rights reserved.
9 #include <linux/if_packet.h>
11 #include "sd-dhcp-client.h"
13 #include "dhcp-protocol.h"
17 struct sd_dhcp_route
{
18 struct in_addr dst_addr
;
19 struct in_addr gw_addr
;
20 unsigned char dst_prefixlen
;
25 struct sd_dhcp_raw_option
{
26 LIST_FIELDS(struct sd_dhcp_raw_option
, options
);
33 struct sd_dhcp_lease
{
43 be32_t server_address
;
47 bool have_subnet_mask
;
59 struct sd_dhcp_route
*static_route
;
60 size_t static_route_size
, static_route_allocated
;
62 uint16_t mtu
; /* 0 if unset */
65 char **search_domains
;
72 void *vendor_specific
;
73 size_t vendor_specific_len
;
77 LIST_HEAD(struct sd_dhcp_raw_option
, private_options
);
80 int dhcp_lease_new(sd_dhcp_lease
**ret
);
82 int dhcp_lease_parse_options(uint8_t code
, uint8_t len
, const void *option
, void *userdata
);
83 int dhcp_lease_parse_search_domains(const uint8_t *option
, size_t len
, char ***domains
);
84 int dhcp_lease_insert_private_option(sd_dhcp_lease
*lease
, uint8_t tag
, const void *data
, uint8_t len
);
86 int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease
*lease
);
88 int dhcp_lease_set_client_id(sd_dhcp_lease
*lease
, const void *client_id
, size_t client_id_len
);
90 int dhcp_lease_save(sd_dhcp_lease
*lease
, const char *lease_file
);
91 int dhcp_lease_load(sd_dhcp_lease
**ret
, const char *lease_file
);