]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/resolve/resolved-link.h
systemd-detect-virt: detect s390 virtualization
[thirdparty/systemd.git] / src / resolve / resolved-link.h
CommitLineData
74b2466e
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#pragma once
4
5/***
6 This file is part of systemd.
7
8 Copyright 2014 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
1716f6dc
LP
24#include <net/if.h>
25
74b2466e
LP
26#include "in-addr-util.h"
27#include "ratelimit.h"
28
29typedef struct Link Link;
30typedef struct LinkAddress LinkAddress;
31
32#include "resolved.h"
33#include "resolved-dns-server.h"
34#include "resolved-dns-scope.h"
35
36struct LinkAddress {
37 Link *link;
38
39 unsigned char family;
40 union in_addr_union in_addr;
41
42 unsigned char flags, scope;
43
44 LIST_FIELDS(LinkAddress, addresses);
45};
46
47struct Link {
48 Manager *manager;
49
50 int ifindex;
51 unsigned flags;
52
53 LIST_HEAD(LinkAddress, addresses);
54
55 LIST_HEAD(DnsServer, link_dns_servers);
56 LIST_HEAD(DnsServer, dhcp_dns_servers);
57 DnsServer *current_dns_server;
58
59 DnsScope *unicast_scope;
1716f6dc
LP
60 DnsScope *llmnr_ipv4_scope;
61 DnsScope *llmnr_ipv6_scope;
74b2466e 62
1716f6dc 63 char name[IF_NAMESIZE];
e1c95994 64 uint32_t mtu;
74b2466e 65
74b2466e 66 RateLimit mdns_ratelimit;
1716f6dc 67 RateLimit llmnr_ratelimit;
74b2466e
LP
68};
69
70int link_new(Manager *m, Link **ret, int ifindex);
71Link *link_free(Link *l);
72int link_update_rtnl(Link *l, sd_rtnl_message *m);
73int link_update_monitor(Link *l);
1716f6dc 74bool link_relevant(Link *l, unsigned char family);
74b2466e
LP
75LinkAddress* link_find_address(Link *l, unsigned char family, union in_addr_union *in_addr);
76
77DnsServer* link_find_dns_server(Link *l, DnsServerSource source, unsigned char family, union in_addr_union *in_addr);
78DnsServer* link_get_dns_server(Link *l);
79void link_next_dns_server(Link *l);
80
81int link_address_new(Link *l, LinkAddress **ret, unsigned char family, union in_addr_union *in_addr);
82LinkAddress *link_address_free(LinkAddress *a);
83int link_address_update_rtnl(LinkAddress *a, sd_rtnl_message *m);
84bool link_address_relevant(LinkAddress *l);
85
86DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);