]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/resolve/resolved-link.h
rules: allow systemd to manage loop device partitions
[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"
623a4c97 35#include "resolved-dns-rr.h"
74b2466e
LP
36
37struct LinkAddress {
38 Link *link;
39
0dd25fb9 40 int family;
74b2466e
LP
41 union in_addr_union in_addr;
42
43 unsigned char flags, scope;
44
623a4c97
LP
45 DnsResourceRecord *llmnr_address_rr;
46 DnsResourceRecord *llmnr_ptr_rr;
47
74b2466e
LP
48 LIST_FIELDS(LinkAddress, addresses);
49};
50
51struct Link {
52 Manager *manager;
53
54 int ifindex;
55 unsigned flags;
56
57 LIST_HEAD(LinkAddress, addresses);
58
6073b6f2 59 LIST_HEAD(DnsServer, dns_servers);
74b2466e
LP
60 DnsServer *current_dns_server;
61
62 DnsScope *unicast_scope;
1716f6dc
LP
63 DnsScope *llmnr_ipv4_scope;
64 DnsScope *llmnr_ipv6_scope;
74b2466e 65
1716f6dc 66 char name[IF_NAMESIZE];
e1c95994 67 uint32_t mtu;
74b2466e 68
74b2466e 69 RateLimit mdns_ratelimit;
1716f6dc 70 RateLimit llmnr_ratelimit;
74b2466e
LP
71};
72
73int link_new(Manager *m, Link **ret, int ifindex);
74Link *link_free(Link *l);
75int link_update_rtnl(Link *l, sd_rtnl_message *m);
76int link_update_monitor(Link *l);
0dd25fb9 77bool link_relevant(Link *l, int family);
623a4c97 78LinkAddress* link_find_address(Link *l, int family, const union in_addr_union *in_addr);
74b2466e 79
623a4c97 80DnsServer* link_find_dns_server(Link *l, int family, const union in_addr_union *in_addr);
74b2466e
LP
81DnsServer* link_get_dns_server(Link *l);
82void link_next_dns_server(Link *l);
83
623a4c97 84int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr_union *in_addr);
74b2466e
LP
85LinkAddress *link_address_free(LinkAddress *a);
86int link_address_update_rtnl(LinkAddress *a, sd_rtnl_message *m);
87bool link_address_relevant(LinkAddress *l);
88
89DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);