1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include "sd-netlink.h"
6 #include "conf-parser.h"
7 #include "ether-addr-util.h"
8 #include "in-addr-util.h"
12 typedef struct Neighbor Neighbor
;
14 #include "networkd-link.h"
15 #include "networkd-network.h"
16 #include "networkd-util.h"
19 struct ether_addr mac
;
20 union in_addr_union ip
;
26 NetworkConfigSection
*section
;
29 union in_addr_union in_addr
;
30 union lladdr_union lladdr
;
33 LIST_FIELDS(Neighbor
, neighbors
);
36 void neighbor_free(Neighbor
*neighbor
);
38 DEFINE_NETWORK_SECTION_FUNCTIONS(Neighbor
, neighbor_free
);
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
);
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
);
48 int neighbor_section_verify(Neighbor
*neighbor
);
50 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_address
);
51 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_hwaddr
);
52 CONFIG_PARSER_PROTOTYPE(config_parse_neighbor_lladdr
);