]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
ca5ad760 YW |
2 | #pragma once |
3 | ||
cde74a65 YW |
4 | #include <netinet/in.h> |
5 | ||
ca5ad760 YW |
6 | #include "conf-parser.h" |
7 | #include "dhcp-identifier.h" | |
8 | #include "time-util.h" | |
9 | ||
10 | #define DHCP_ROUTE_METRIC 1024 | |
11 | ||
67c311ab | 12 | typedef struct Link Link; |
256c75fd | 13 | typedef struct Manager Manager; |
22d37e5d | 14 | typedef struct Network Network; |
67c311ab | 15 | |
ca5ad760 YW |
16 | typedef enum DHCPUseDomains { |
17 | DHCP_USE_DOMAINS_NO, | |
18 | DHCP_USE_DOMAINS_YES, | |
19 | DHCP_USE_DOMAINS_ROUTE, | |
20 | _DHCP_USE_DOMAINS_MAX, | |
2d93c20e | 21 | _DHCP_USE_DOMAINS_INVALID = -EINVAL, |
ca5ad760 YW |
22 | } DHCPUseDomains; |
23 | ||
2e5580a8 YW |
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, | |
e7d5fe17 | 30 | DHCP_OPTION_DATA_IPV6ADDRESS, |
2e5580a8 YW |
31 | _DHCP_OPTION_DATA_MAX, |
32 | _DHCP_OPTION_DATA_INVALID, | |
33 | } DHCPOptionDataType; | |
34 | ||
ca5ad760 YW |
35 | typedef struct DUID { |
36 | /* Value of Type in [DHCP] section */ | |
37 | DUIDType type; | |
38 | ||
39 | uint8_t raw_data_len; | |
40 | uint8_t raw_data[MAX_DUID_LEN]; | |
41 | usec_t llt_time; | |
4e26a5ba | 42 | bool set; |
ca5ad760 YW |
43 | } DUID; |
44 | ||
67c311ab YW |
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); | |
48 | } | |
49 | static inline bool link_dhcp6_enabled(Link *link) { | |
50 | return link_dhcp_enabled(link, AF_INET6); | |
51 | } | |
52 | ||
22d37e5d YW |
53 | void network_adjust_dhcp(Network *network); |
54 | ||
4e26a5ba YW |
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); | |
58 | } | |
59 | static inline DUID *link_get_dhcp6_duid(Link *link) { | |
60 | return link_get_duid(link, AF_INET6); | |
61 | } | |
62 | ||
256c75fd | 63 | int link_configure_duid(Link *link); |
4e26a5ba | 64 | int manager_request_product_uuid(Manager *m); |
256c75fd | 65 | |
ca5ad760 YW |
66 | const char* dhcp_use_domains_to_string(DHCPUseDomains p) _const_; |
67 | DHCPUseDomains dhcp_use_domains_from_string(const char *s) _pure_; | |
68 | ||
2e5580a8 YW |
69 | const char *dhcp_option_data_type_to_string(DHCPOptionDataType d) _const_; |
70 | DHCPOptionDataType dhcp_option_data_type_from_string(const char *d) _pure_; | |
71 | ||
ca5ad760 | 72 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp); |
bdad94d0 | 73 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_route_metric); |
4f7331a8 | 74 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_dns); |
ca5ad760 | 75 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_domains); |
4f7331a8 | 76 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_use_ntp); |
ca5ad760 YW |
77 | CONFIG_PARSER_PROTOTYPE(config_parse_iaid); |
78 | CONFIG_PARSER_PROTOTYPE(config_parse_section_route_table); | |
6fda02e1 | 79 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_user_or_vendor_class); |
0e96961d | 80 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_send_option); |
35f6a5cb | 81 | CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_request_options); |
cde74a65 | 82 | CONFIG_PARSER_PROTOTYPE(config_parse_duid_type); |
4e26a5ba YW |
83 | CONFIG_PARSER_PROTOTYPE(config_parse_manager_duid_type); |
84 | CONFIG_PARSER_PROTOTYPE(config_parse_network_duid_type); | |
cde74a65 | 85 | CONFIG_PARSER_PROTOTYPE(config_parse_duid_rawdata); |
4e26a5ba YW |
86 | CONFIG_PARSER_PROTOTYPE(config_parse_manager_duid_rawdata); |
87 | CONFIG_PARSER_PROTOTYPE(config_parse_network_duid_rawdata); |