| /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| #pragma once |
| |
| #include "conf-parser.h" |
| #include "time-util.h" |
| |
| typedef struct Link Link; |
| typedef struct Network Network; |
| |
| typedef enum IPv6AcceptRAStartDHCP6Client { |
| IPV6_ACCEPT_RA_START_DHCP6_CLIENT_NO, |
| IPV6_ACCEPT_RA_START_DHCP6_CLIENT_ALWAYS, |
| IPV6_ACCEPT_RA_START_DHCP6_CLIENT_YES, |
| _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_MAX, |
| _IPV6_ACCEPT_RA_START_DHCP6_CLIENT_INVALID = -EINVAL, |
| } IPv6AcceptRAStartDHCP6Client; |
| |
| typedef struct NDiscRDNSS { |
| struct in6_addr router; |
| /* This is an absolute point in time, and NOT a timespan/duration. |
| * Must be specified with clock_boottime_or_monotonic(). */ |
| usec_t lifetime_usec; |
| struct in6_addr address; |
| } NDiscRDNSS; |
| |
| typedef struct NDiscDNSSL { |
| struct in6_addr router; |
| /* This is an absolute point in time, and NOT a timespan/duration. |
| * Must be specified with clock_boottime_or_monotonic(). */ |
| usec_t lifetime_usec; |
| /* The domain name follows immediately. */ |
| } NDiscDNSSL; |
| |
| static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL *n) { |
| return ((char*) n) + ALIGN(sizeof(NDiscDNSSL)); |
| } |
| |
| bool link_ipv6_accept_ra_enabled(Link *link); |
| |
| void network_adjust_ipv6_accept_ra(Network *network); |
| |
| int ndisc_start(Link *link); |
| int ndisc_stop(Link *link); |
| void ndisc_flush(Link *link); |
| |
| int link_request_ndisc(Link *link); |
| |
| CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_start_dhcp6_client); |
| CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_use_domains); |