1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
5 Copyright © 2017 Intel Corporation. All rights reserved.
13 #include "in-addr-util.h"
14 #include "conf-parser.h"
15 #include "networkd-util.h"
17 typedef struct Link Link
;
18 typedef struct Network Network
;
20 typedef enum RADVPrefixDelegation
{
21 RADV_PREFIX_DELEGATION_NONE
= 0,
22 RADV_PREFIX_DELEGATION_STATIC
= 1 << 0,
23 RADV_PREFIX_DELEGATION_DHCP6
= 1 << 1,
24 RADV_PREFIX_DELEGATION_BOTH
= RADV_PREFIX_DELEGATION_STATIC
| RADV_PREFIX_DELEGATION_DHCP6
,
25 _RADV_PREFIX_DELEGATION_MAX
,
26 _RADV_PREFIX_DELEGATION_INVALID
= -EINVAL
,
27 } RADVPrefixDelegation
;
29 typedef struct Prefix
{
31 ConfigSection
*section
;
33 struct in6_addr prefix
;
35 usec_t preferred_lifetime
;
36 usec_t valid_lifetime
;
39 bool address_auto_configuration
;
42 uint32_t route_metric
;
46 typedef struct RoutePrefix
{
48 ConfigSection
*section
;
50 struct in6_addr prefix
;
55 typedef struct pref64Prefix
{
57 ConfigSection
*section
;
59 struct in6_addr prefix
;
64 Prefix
*prefix_free(Prefix
*prefix
);
65 RoutePrefix
*route_prefix_free(RoutePrefix
*prefix
);
66 pref64Prefix
*pref64_prefix_free(pref64Prefix
*prefix
);
68 void network_drop_invalid_prefixes(Network
*network
);
69 void network_drop_invalid_route_prefixes(Network
*network
);
70 void network_drop_invalid_pref64_prefixes(Network
*network
);
71 void network_adjust_radv(Network
*network
);
73 int link_request_radv_addresses(Link
*link
);
74 int link_reconfigure_radv_address(Address
*address
, Link
*link
);
76 bool link_radv_enabled(Link
*link
);
77 int radv_start(Link
*link
);
78 int radv_update_mac(Link
*link
);
79 int radv_add_prefix(Link
*link
, const struct in6_addr
*prefix
, uint8_t prefix_len
,
80 usec_t lifetime_preferred_usec
, usec_t lifetime_valid_usec
);
82 int link_request_radv(Link
*link
);
84 const char* radv_prefix_delegation_to_string(RADVPrefixDelegation i
) _const_
;
85 RADVPrefixDelegation
radv_prefix_delegation_from_string(const char *s
) _pure_
;
87 CONFIG_PARSER_PROTOTYPE(config_parse_router_prefix_delegation
);
88 CONFIG_PARSER_PROTOTYPE(config_parse_router_lifetime
);
89 CONFIG_PARSER_PROTOTYPE(config_parse_router_retransmit
);
90 CONFIG_PARSER_PROTOTYPE(config_parse_router_preference
);
91 CONFIG_PARSER_PROTOTYPE(config_parse_prefix
);
92 CONFIG_PARSER_PROTOTYPE(config_parse_prefix_boolean
);
93 CONFIG_PARSER_PROTOTYPE(config_parse_prefix_lifetime
);
94 CONFIG_PARSER_PROTOTYPE(config_parse_prefix_metric
);
95 CONFIG_PARSER_PROTOTYPE(config_parse_prefix_token
);
96 CONFIG_PARSER_PROTOTYPE(config_parse_radv_dns
);
97 CONFIG_PARSER_PROTOTYPE(config_parse_radv_search_domains
);
98 CONFIG_PARSER_PROTOTYPE(config_parse_route_prefix
);
99 CONFIG_PARSER_PROTOTYPE(config_parse_route_prefix_lifetime
);
100 CONFIG_PARSER_PROTOTYPE(config_parse_pref64_prefix
);
101 CONFIG_PARSER_PROTOTYPE(config_parse_pref64_prefix_lifetime
);
102 CONFIG_PARSER_PROTOTYPE(config_parse_router_home_agent_lifetime
);