1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include "conf-parser.h"
5 #include "networkd-link.h"
8 typedef struct IPv6Token IPv6Token
;
10 typedef enum IPv6TokenAddressGeneration
{
11 IPV6_TOKEN_ADDRESS_GENERATION_NONE
,
12 IPV6_TOKEN_ADDRESS_GENERATION_STATIC
,
13 IPV6_TOKEN_ADDRESS_GENERATION_PREFIXSTABLE
,
14 _IPV6_TOKEN_ADDRESS_GENERATION_MAX
,
15 _IPV6_TOKEN_ADDRESS_GENERATION_INVALID
= -1,
16 } IPv6TokenAddressGeneration
;
18 typedef enum IPv6AcceptRAStartDHCP6Client
{
19 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO
,
20 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS
,
21 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_YES
,
22 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_MAX
,
23 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_INVALID
= -1,
24 } IPv6AcceptRAStartDHCP6Client
;
26 typedef struct NDiscRDNSS
{
28 struct in6_addr address
;
31 typedef struct NDiscDNSSL
{
33 /* The domain name follows immediately. */
37 IPv6TokenAddressGeneration address_generation_type
;
40 struct in6_addr prefix
;
43 int ipv6token_new(IPv6Token
**ret
);
44 DEFINE_TRIVIAL_CLEANUP_FUNC(IPv6Token
*, freep
);
46 static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL
*n
) {
47 return ((char*) n
) + ALIGN(sizeof(NDiscDNSSL
));
50 int ndisc_configure(Link
*link
);
51 void ndisc_vacuum(Link
*link
);
52 void ndisc_flush(Link
*link
);
54 CONFIG_PARSER_PROTOTYPE(config_parse_ndisc_black_listed_prefix
);
55 CONFIG_PARSER_PROTOTYPE(config_parse_address_generation_type
);
56 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_start_dhcp6_client
);
58 const char* ipv6_accept_ra_start_dhcp6_client_to_string(IPv6AcceptRAStartDHCP6Client i
) _const_
;
59 IPv6AcceptRAStartDHCP6Client
ipv6_accept_ra_start_dhcp6_client_from_string(const char *s
) _pure_
;