]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/resolve/resolved-link.h
networkd: update manager_save() to use fflush_and_check() to simplify things a bit
[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
74b2466e
LP
32#include "resolved-dns-server.h"
33#include "resolved-dns-scope.h"
623a4c97 34#include "resolved-dns-rr.h"
39d8db04 35#include "resolved-manager.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
19b50b5b
LP
62 Support llmnr_support;
63
74b2466e 64 DnsScope *unicast_scope;
1716f6dc
LP
65 DnsScope *llmnr_ipv4_scope;
66 DnsScope *llmnr_ipv6_scope;
74b2466e 67
1716f6dc 68 char name[IF_NAMESIZE];
e1c95994 69 uint32_t mtu;
74b2466e
LP
70};
71
72int link_new(Manager *m, Link **ret, int ifindex);
73Link *link_free(Link *l);
74int link_update_rtnl(Link *l, sd_rtnl_message *m);
75int link_update_monitor(Link *l);
0dd25fb9 76bool link_relevant(Link *l, int family);
623a4c97 77LinkAddress* link_find_address(Link *l, int family, const union in_addr_union *in_addr);
ec2c5e43 78void link_add_rrs(Link *l, bool force_remove);
2c27fbca
LP
79
80DnsServer* link_set_dns_server(Link *l, DnsServer *s);
623a4c97 81DnsServer* link_find_dns_server(Link *l, int family, const union in_addr_union *in_addr);
74b2466e
LP
82DnsServer* link_get_dns_server(Link *l);
83void link_next_dns_server(Link *l);
84
623a4c97 85int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr_union *in_addr);
74b2466e
LP
86LinkAddress *link_address_free(LinkAddress *a);
87int link_address_update_rtnl(LinkAddress *a, sd_rtnl_message *m);
88bool link_address_relevant(LinkAddress *l);
ec2c5e43 89void link_address_add_rrs(LinkAddress *a, bool force_remove);
74b2466e
LP
90
91DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_free);