1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
4 #include "conf-parser.h"
7 typedef struct Link Link
;
8 typedef struct Network Network
;
10 typedef enum IPv6AcceptRAStartDHCP6Client
{
11 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO
,
12 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS
,
13 IPV6_ACCEPT_RA_START_DHCP6_CLIENT_YES
,
14 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_MAX
,
15 _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_INVALID
= -EINVAL
,
16 } IPv6AcceptRAStartDHCP6Client
;
18 typedef struct NDiscRDNSS
{
19 struct in6_addr router
;
20 /* This is an absolute point in time, and NOT a timespan/duration.
21 * Must be specified with CLOCK_BOOTTIME. */
23 struct in6_addr address
;
26 typedef struct NDiscDNSSL
{
27 struct in6_addr router
;
28 /* This is an absolute point in time, and NOT a timespan/duration.
29 * Must be specified with CLOCK_BOOTTIME. */
31 /* The domain name follows immediately. */
34 typedef struct NDiscCaptivePortal
{
35 struct in6_addr router
;
36 /* This is an absolute point in time, and NOT a timespan/duration.
37 * Must be specified with CLOCK_BOOTTIME. */
42 typedef struct NDiscPREF64
{
43 struct in6_addr router
;
44 /* This is an absolute point in time, and NOT a timespan/duration.
45 * Must be specified with CLOCK_BOOTTIME. */
48 struct in6_addr prefix
;
51 static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL
*n
) {
52 return ((char*) n
) + ALIGN(sizeof(NDiscDNSSL
));
55 bool link_ipv6_accept_ra_enabled(Link
*link
);
57 void network_adjust_ipv6_accept_ra(Network
*network
);
59 int ndisc_start(Link
*link
);
60 int ndisc_stop(Link
*link
);
61 void ndisc_flush(Link
*link
);
63 int link_request_ndisc(Link
*link
);
65 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_start_dhcp6_client
);
66 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_use_domains
);