1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include "conf-parser.h"
5 #include "networkd-address.h"
6 #include "networkd-link.h"
7 #include "networkd-route.h"
10 typedef struct IPv6Token IPv6Token
;
12 typedef enum IPv6TokenAddressGeneration
{
13 IPV6_TOKEN_ADDRESS_GENERATION_NONE
,
14 IPV6_TOKEN_ADDRESS_GENERATION_STATIC
,
15 IPV6_TOKEN_ADDRESS_GENERATION_PREFIXSTABLE
,
16 _IPV6_TOKEN_ADDRESS_GENERATION_MAX
,
17 _IPV6_TOKEN_ADDRESS_GENERATION_INVALID
= -1,
18 } IPv6TokenAddressGeneration
;
20 typedef enum IPv6AcceptRAStartDHCP6Client
{
21 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO
,
22 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS
,
23 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_YES
,
24 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_MAX
,
25 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_INVALID
= -1,
26 } IPv6AcceptRAStartDHCP6Client
;
28 typedef struct NDiscAddress
{
29 /* Used when GC'ing old DNS servers when configuration changes. */
31 struct in6_addr router
;
35 typedef struct NDiscRoute
{
36 /* Used when GC'ing old DNS servers when configuration changes. */
38 struct in6_addr router
;
42 typedef struct NDiscRDNSS
{
43 /* Used when GC'ing old DNS servers when configuration changes. */
45 struct in6_addr router
;
47 struct in6_addr address
;
50 typedef struct NDiscDNSSL
{
51 /* Used when GC'ing old domains when configuration changes. */
53 struct in6_addr router
;
55 /* The domain name follows immediately. */
59 IPv6TokenAddressGeneration address_generation_type
;
62 struct in6_addr prefix
;
65 int ipv6token_new(IPv6Token
**ret
);
66 DEFINE_TRIVIAL_CLEANUP_FUNC(IPv6Token
*, freep
);
68 static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL
*n
) {
69 return ((char*) n
) + ALIGN(sizeof(NDiscDNSSL
));
72 int ndisc_configure(Link
*link
);
73 void ndisc_vacuum(Link
*link
);
74 void ndisc_flush(Link
*link
);
76 CONFIG_PARSER_PROTOTYPE(config_parse_ndisc_deny_listed_prefix
);
77 CONFIG_PARSER_PROTOTYPE(config_parse_address_generation_type
);
78 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_start_dhcp6_client
);
80 const char* ipv6_accept_ra_start_dhcp6_client_to_string(IPv6AcceptRAStartDHCP6Client i
) _const_
;
81 IPv6AcceptRAStartDHCP6Client
ipv6_accept_ra_start_dhcp6_client_from_string(const char *s
) _pure_
;