]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/resolve/resolved-link.h
ci: enable arm64 runner for build/unit jobs
[thirdparty/systemd.git] / src / resolve / resolved-link.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
74b2466e
LP
2#pragma once
3
214db8eb
YW
4#include <sys/stat.h>
5
74b2466e 6#include "in-addr-util.h"
68527d30 7#include "list.h"
92796278 8#include "network-util.h"
af49ca27 9#include "resolve-util.h"
284d7641 10#include "resolved-forward.h"
74b2466e 11
b950ee06
LP
12#define LINK_SEARCH_DOMAINS_MAX 256
13#define LINK_DNS_SERVERS_MAX 256
eed857b7 14
284d7641 15typedef struct LinkAddress {
74b2466e
LP
16 Link *link;
17
0dd25fb9 18 int family;
74b2466e 19 union in_addr_union in_addr;
cad0fc7a 20 union in_addr_union in_addr_broadcast;
13eb76ef 21 unsigned char prefixlen;
74b2466e 22
d50cfa98
YW
23 unsigned char scope;
24 uint32_t flags;
74b2466e 25
623a4c97
LP
26 DnsResourceRecord *llmnr_address_rr;
27 DnsResourceRecord *llmnr_ptr_rr;
400cb36e
DR
28 DnsResourceRecord *mdns_address_rr;
29 DnsResourceRecord *mdns_ptr_rr;
623a4c97 30
74b2466e 31 LIST_FIELDS(LinkAddress, addresses);
284d7641 32} LinkAddress;
74b2466e 33
284d7641 34typedef struct Link {
74b2466e
LP
35 Manager *manager;
36
37 int ifindex;
38 unsigned flags;
39
40 LIST_HEAD(LinkAddress, addresses);
bceaa99d 41 unsigned n_addresses;
74b2466e 42
6073b6f2 43 LIST_HEAD(DnsServer, dns_servers);
74b2466e 44 DnsServer *current_dns_server;
eed857b7 45 unsigned n_dns_servers;
74b2466e 46
a51c1048 47 LIST_HEAD(DnsSearchDomain, search_domains);
eed857b7 48 unsigned n_search_domains;
a51c1048 49
ca5394d2
LP
50 int default_route;
51
af49ca27
LP
52 ResolveSupport llmnr_support;
53 ResolveSupport mdns_support;
c9299be2 54 DnsOverTlsMode dns_over_tls_mode;
ad6c0475 55 DnssecMode dnssec_mode;
8a516214 56 Set *dnssec_negative_trust_anchors;
19b50b5b 57
74b2466e 58 DnsScope *unicast_scope;
1716f6dc
LP
59 DnsScope *llmnr_ipv4_scope;
60 DnsScope *llmnr_ipv6_scope;
b4f1862d
DM
61 DnsScope *mdns_ipv4_scope;
62 DnsScope *mdns_ipv6_scope;
74b2466e 63
214db8eb 64 struct stat networkd_state_file_stat;
92796278 65 LinkOperationalState networkd_operstate;
97e5d693
LP
66 bool is_managed;
67
6ff79f76 68 char *ifname;
e1c95994 69 uint32_t mtu;
6955a3ba 70 uint8_t operstate;
943ef07c
LP
71
72 bool loaded;
73 char *state_file;
59c0fd0e
LP
74
75 bool unicast_relevant;
284d7641 76} Link;
74b2466e
LP
77
78int link_new(Manager *m, Link **ret, int ifindex);
79Link *link_free(Link *l);
943ef07c
LP
80int link_process_rtnl(Link *l, sd_netlink_message *m);
81int link_update(Link *l);
011696f7 82bool link_relevant(Link *l, int family, bool local_multicast);
623a4c97 83LinkAddress* link_find_address(Link *l, int family, const union in_addr_union *in_addr);
ec2c5e43 84void link_add_rrs(Link *l, bool force_remove);
2c27fbca 85
97e5d693
LP
86void link_flush_settings(Link *l);
87void link_set_dnssec_mode(Link *l, DnssecMode mode);
c9299be2 88void link_set_dns_over_tls_mode(Link *l, DnsOverTlsMode mode);
97e5d693
LP
89void link_allocate_scopes(Link *l);
90
2c27fbca 91DnsServer* link_set_dns_server(Link *l, DnsServer *s);
74b2466e 92DnsServer* link_get_dns_server(Link *l);
5e8bc852 93void link_next_dns_server(Link *l, DnsServer *if_current);
73e566bf 94void link_set_default_route(Link *l, bool b);
74b2466e 95
c69fa7e3
LP
96DnssecMode link_get_dnssec_mode(Link *l);
97bool link_dnssec_supported(Link *l);
98
c9299be2 99DnsOverTlsMode link_get_dns_over_tls_mode(Link *l);
d050561a 100
bce459e3
YW
101ResolveSupport link_get_llmnr_support(Link *link);
102ResolveSupport link_get_mdns_support(Link *link);
103
f63acba4
NR
104bool link_get_default_route(Link *l);
105
943ef07c
LP
106int link_save_user(Link *l);
107int link_load_user(Link *l);
108void link_remove_user(Link *l);
109
cad0fc7a
RP
110int link_address_new(Link *l,
111 LinkAddress **ret,
112 int family,
113 const union in_addr_union *in_addr,
114 const union in_addr_union *in_addr_broadcast);
74b2466e 115LinkAddress *link_address_free(LinkAddress *a);
1c4baffc 116int link_address_update_rtnl(LinkAddress *a, sd_netlink_message *m);
c60d2a62 117bool link_address_relevant(LinkAddress *l, bool allow_link_local);
ec2c5e43 118void link_address_add_rrs(LinkAddress *a, bool force_remove);
74b2466e 119
7e8a93b7
LP
120bool link_negative_trust_anchor_lookup(Link *l, const char *name);
121
74b2466e 122DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);