Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : #pragma once 3 : 4 : /*** 5 : Copyright © 2017 Intel Corporation. All rights reserved. 6 : ***/ 7 : 8 : #include "conf-parser.h" 9 : #include "networkd-address.h" 10 : #include "networkd-link.h" 11 : #include "networkd-util.h" 12 : 13 : typedef struct Prefix Prefix; 14 : 15 : typedef enum RADVPrefixDelegation { 16 : RADV_PREFIX_DELEGATION_NONE, 17 : RADV_PREFIX_DELEGATION_STATIC, 18 : RADV_PREFIX_DELEGATION_DHCP6, 19 : RADV_PREFIX_DELEGATION_BOTH, 20 : _RADV_PREFIX_DELEGATION_MAX, 21 : _RADV_PREFIX_DELEGATION_INVALID = -1, 22 : } RADVPrefixDelegation; 23 : 24 : struct Prefix { 25 : Network *network; 26 : NetworkConfigSection *section; 27 : 28 : sd_radv_prefix *radv_prefix; 29 : 30 : LIST_FIELDS(Prefix, prefixes); 31 : }; 32 : 33 : int prefix_new(Prefix **ret); 34 : void prefix_free(Prefix *prefix); 35 : 36 0 : DEFINE_NETWORK_SECTION_FUNCTIONS(Prefix, prefix_free); 37 : 38 : int radv_emit_dns(Link *link); 39 : int radv_configure(Link *link); 40 : 41 : const char* radv_prefix_delegation_to_string(RADVPrefixDelegation i) _const_; 42 : RADVPrefixDelegation radv_prefix_delegation_from_string(const char *s) _pure_; 43 : 44 : CONFIG_PARSER_PROTOTYPE(config_parse_router_prefix_delegation); 45 : CONFIG_PARSER_PROTOTYPE(config_parse_router_preference); 46 : CONFIG_PARSER_PROTOTYPE(config_parse_prefix); 47 : CONFIG_PARSER_PROTOTYPE(config_parse_prefix_flags); 48 : CONFIG_PARSER_PROTOTYPE(config_parse_prefix_lifetime); 49 : CONFIG_PARSER_PROTOTYPE(config_parse_radv_dns); 50 : CONFIG_PARSER_PROTOTYPE(config_parse_radv_search_domains);