]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/networkd-ndisc.h
Fix: Chuwi UBook X (CWI535) screen rotation matrix
[thirdparty/systemd.git] / src / network / networkd-ndisc.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include "conf-parser.h"
5 #include "time-util.h"
6
7 typedef struct Link Link;
8 typedef struct Network Network;
9
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;
17
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. */
22 usec_t lifetime_usec;
23 struct in6_addr address;
24 } NDiscRDNSS;
25
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. */
30 usec_t lifetime_usec;
31 /* The domain name follows immediately. */
32 } NDiscDNSSL;
33
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. */
38 usec_t lifetime_usec;
39 char *captive_portal;
40 } NDiscCaptivePortal;
41
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. */
46 usec_t lifetime_usec;
47 uint8_t prefix_len;
48 struct in6_addr prefix;
49 } NDiscPREF64;
50
51 static inline char* NDISC_DNSSL_DOMAIN(const NDiscDNSSL *n) {
52 return ((char*) n) + ALIGN(sizeof(NDiscDNSSL));
53 }
54
55 bool link_ipv6_accept_ra_enabled(Link *link);
56
57 void network_adjust_ipv6_accept_ra(Network *network);
58
59 int ndisc_start(Link *link);
60 int ndisc_stop(Link *link);
61 void ndisc_flush(Link *link);
62
63 int link_request_ndisc(Link *link);
64
65 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_start_dhcp6_client);
66 CONFIG_PARSER_PROTOTYPE(config_parse_ipv6_accept_ra_use_domains);