]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/networkd-neighbor.h
Merge pull request #16316 from yuwata/backlight-use-actual-brightness
[thirdparty/systemd.git] / src / network / networkd-neighbor.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 #include "sd-netlink.h"
5
6 #include "conf-parser.h"
7 #include "ether-addr-util.h"
8 #include "in-addr-util.h"
9 #include "list.h"
10 #include "macro.h"
11
12 typedef struct Neighbor Neighbor;
13
14 #include "networkd-link.h"
15 #include "networkd-network.h"
16 #include "networkd-util.h"
17
18 union lladdr_union {
19 struct ether_addr mac;
20 union in_addr_union ip;
21 };
22
23 struct Neighbor {
24 Network *network;
25 Link *link;
26 NetworkConfigSection *section;
27
28 int family;
29 union in_addr_union in_addr;
30 union lladdr_union lladdr;
31 size_t lladdr_size;
32
33 LIST_FIELDS(Neighbor, neighbors);
34 };
35
36 void neighbor_free(Neighbor *neighbor);
37
38 DEFINE_NETWORK_SECTION_FUNCTIONS(Neighbor, neighbor_free);
39
40 int neighbor_configure(Neighbor *neighbor, Link *link, link_netlink_message_handler_t callback);
41 int neighbor_remove(Neighbor *neighbor, Link *link, link_netlink_message_handler_t callback);
42
43 int neighbor_get(Link *link, int family, const union in_addr_union *addr, const union lladdr_union *lladdr, size_t lladdr_size, Neighbor **ret);
44 int neighbor_add(Link *link, int family, const union in_addr_union *addr, const union lladdr_union *lladdr, size_t lladdr_size, Neighbor **ret);
45 int neighbor_add_foreign(Link *link, int family, const union in_addr_union *addr, const union lladdr_union *lladdr, size_t lladdr_size, Neighbor **ret);
46 bool neighbor_equal(const Neighbor *n1, const Neighbor *n2);
47
48 int neighbor_section_verify(Neighbor *neighbor);
49
50 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_address);
51 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_hwaddr);
52 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_lladdr);