]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
091214b6 PF |
2 | #pragma once |
3 | ||
4 | /*** | |
96b2fb93 | 5 | Copyright © 2017 Intel Corporation. All rights reserved. |
091214b6 PF |
6 | ***/ |
7 | ||
b5ce4047 YW |
8 | #include <inttypes.h> |
9 | #include <stdbool.h> | |
10 | ||
11 | #include "sd-radv.h" | |
12 | ||
13 | #include "in-addr-util.h" | |
a2106925 | 14 | #include "conf-parser.h" |
fcbf4cb7 | 15 | #include "networkd-util.h" |
091214b6 | 16 | |
b5ce4047 YW |
17 | typedef struct Network Network; |
18 | typedef struct Link Link; | |
6e849e95 | 19 | |
ca5ad760 | 20 | typedef enum RADVPrefixDelegation { |
61c0ef4f YW |
21 | RADV_PREFIX_DELEGATION_NONE = 0, |
22 | RADV_PREFIX_DELEGATION_STATIC = 1 << 0, | |
23 | RADV_PREFIX_DELEGATION_DHCP6 = 1 << 1, | |
24 | RADV_PREFIX_DELEGATION_BOTH = RADV_PREFIX_DELEGATION_STATIC | RADV_PREFIX_DELEGATION_DHCP6, | |
ca5ad760 YW |
25 | _RADV_PREFIX_DELEGATION_MAX, |
26 | _RADV_PREFIX_DELEGATION_INVALID = -1, | |
27 | } RADVPrefixDelegation; | |
28 | ||
b5ce4047 | 29 | typedef struct Prefix { |
6e849e95 PF |
30 | Network *network; |
31 | NetworkConfigSection *section; | |
32 | ||
33 | sd_radv_prefix *radv_prefix; | |
34 | ||
bd6379ec | 35 | bool assign; |
b5ce4047 | 36 | } Prefix; |
6e849e95 | 37 | |
b5ce4047 | 38 | typedef struct RoutePrefix { |
95081e08 YW |
39 | Network *network; |
40 | NetworkConfigSection *section; | |
41 | ||
42 | sd_radv_route_prefix *radv_route_prefix; | |
b5ce4047 | 43 | } RoutePrefix; |
95081e08 | 44 | |
064dfb05 YW |
45 | Prefix *prefix_free(Prefix *prefix); |
46 | RoutePrefix *route_prefix_free(RoutePrefix *prefix); | |
203d4df5 | 47 | |
13ffa39f YW |
48 | void network_drop_invalid_prefixes(Network *network); |
49 | void network_drop_invalid_route_prefixes(Network *network); | |
69e0f833 | 50 | void network_adjust_radv(Network *network); |
1a7deb2f | 51 | |
ca5ad760 YW |
52 | int radv_emit_dns(Link *link); |
53 | int radv_configure(Link *link); | |
be9363cc | 54 | int radv_update_mac(Link *link); |
1633c457 | 55 | int radv_add_prefix(Link *link, const struct in6_addr *prefix, uint8_t prefix_len, |
1d596fde | 56 | uint32_t lifetime_preferred, uint32_t lifetime_valid); |
ca5ad760 YW |
57 | |
58 | const char* radv_prefix_delegation_to_string(RADVPrefixDelegation i) _const_; | |
59 | RADVPrefixDelegation radv_prefix_delegation_from_string(const char *s) _pure_; | |
60 | ||
a2106925 LP |
61 | CONFIG_PARSER_PROTOTYPE(config_parse_router_prefix_delegation); |
62 | CONFIG_PARSER_PROTOTYPE(config_parse_router_preference); | |
63 | CONFIG_PARSER_PROTOTYPE(config_parse_prefix); | |
64 | CONFIG_PARSER_PROTOTYPE(config_parse_prefix_flags); | |
65 | CONFIG_PARSER_PROTOTYPE(config_parse_prefix_lifetime); | |
bd6379ec | 66 | CONFIG_PARSER_PROTOTYPE(config_parse_prefix_assign); |
ca5ad760 YW |
67 | CONFIG_PARSER_PROTOTYPE(config_parse_radv_dns); |
68 | CONFIG_PARSER_PROTOTYPE(config_parse_radv_search_domains); | |
203d4df5 SS |
69 | CONFIG_PARSER_PROTOTYPE(config_parse_route_prefix); |
70 | CONFIG_PARSER_PROTOTYPE(config_parse_route_prefix_lifetime); |