1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
4 #include <netinet/in.h>
6 #include "conf-parser.h"
7 #include "dhcp-identifier.h"
10 #define DHCP_ROUTE_METRIC 1024
12 typedef struct Link Link
;
13 typedef struct Manager Manager
;
14 typedef struct Network Network
;
16 typedef enum DHCPUseDomains
{
19 DHCP_USE_DOMAINS_ROUTE
,
20 _DHCP_USE_DOMAINS_MAX
,
21 _DHCP_USE_DOMAINS_INVALID
= -EINVAL
,
24 typedef enum DHCPOptionDataType
{
25 DHCP_OPTION_DATA_UINT8
,
26 DHCP_OPTION_DATA_UINT16
,
27 DHCP_OPTION_DATA_UINT32
,
28 DHCP_OPTION_DATA_STRING
,
29 DHCP_OPTION_DATA_IPV4ADDRESS
,
30 DHCP_OPTION_DATA_IPV6ADDRESS
,
31 _DHCP_OPTION_DATA_MAX
,
32 _DHCP_OPTION_DATA_INVALID
,
36 /* Value of Type in [DHCP] section */
40 uint8_t raw_data
[MAX_DUID_LEN
];
45 bool link_dhcp_enabled(Link
*link
, int family
);
46 static inline bool link_dhcp4_enabled(Link
*link
) {
47 return link_dhcp_enabled(link
, AF_INET
);
49 static inline bool link_dhcp6_enabled(Link
*link
) {
50 return link_dhcp_enabled(link
, AF_INET6
);
53 void network_adjust_dhcp(Network
*network
);
55 DUID
*link_get_duid(Link
*link
, int family
);
56 static inline DUID
*link_get_dhcp4_duid(Link
*link
) {
57 return link_get_duid(link
, AF_INET
);
59 static inline DUID
*link_get_dhcp6_duid(Link
*link
) {
60 return link_get_duid(link
, AF_INET6
);
63 int link_configure_duid(Link
*link
);
64 int manager_request_product_uuid(Manager
*m
);
66 const char* dhcp_use_domains_to_string(DHCPUseDomains p
) _const_
;
67 DHCPUseDomains
dhcp_use_domains_from_string(const char *s
) _pure_
;
69 const char *dhcp_option_data_type_to_string(DHCPOptionDataType d
) _const_
;
70 DHCPOptionDataType
dhcp_option_data_type_from_string(const char *d
) _pure_
;
72 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp
);
73 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_route_metric
);
74 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_dns
);
75 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_domains
);
76 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_ntp
);
77 CONFIG_PARSER_PROTOTYPE(config_parse_iaid
);
78 CONFIG_PARSER_PROTOTYPE(config_parse_section_route_table
);
79 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_user_or_vendor_class
);
80 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_send_option
);
81 CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_request_options
);
82 CONFIG_PARSER_PROTOTYPE(config_parse_duid_type
);
83 CONFIG_PARSER_PROTOTYPE(config_parse_manager_duid_type
);
84 CONFIG_PARSER_PROTOTYPE(config_parse_network_duid_type
);
85 CONFIG_PARSER_PROTOTYPE(config_parse_duid_rawdata
);
86 CONFIG_PARSER_PROTOTYPE(config_parse_manager_duid_rawdata
);
87 CONFIG_PARSER_PROTOTYPE(config_parse_network_duid_rawdata
);