typedef struct Link Link;
typedef struct Manager Manager;
typedef struct Network Network;
-typedef struct Request Request;
typedef struct Neighbor {
Network *network;
NetworkConfigSource source;
NetworkConfigState state;
+ unsigned n_ref;
+
int family;
union in_addr_union in_addr;
struct hw_addr_data ll_addr;
} Neighbor;
-Neighbor *neighbor_free(Neighbor *neighbor);
+Neighbor* neighbor_ref(Neighbor *neighbor);
+Neighbor* neighbor_unref(Neighbor *neighbor);
-void neighbor_hash_func(const Neighbor *neighbor, struct siphash *state);
-int neighbor_compare_func(const Neighbor *a, const Neighbor *b);
+int neighbor_get(Link *link, const Neighbor *in, Neighbor **ret);
+int neighbor_remove(Neighbor *neighbor, Link *link);
-void network_drop_invalid_neighbors(Network *network);
+int network_drop_invalid_neighbors(Network *network);
-int link_drop_managed_neighbors(Link *link);
+int link_drop_static_neighbors(Link *link);
int link_drop_foreign_neighbors(Link *link);
void link_foreignize_neighbors(Link *link);
int link_request_static_neighbors(Link *link);
-int request_process_neighbor(Request *req);
int manager_rtnl_process_neighbor(sd_netlink *rtnl, sd_netlink_message *message, Manager *m);