xref: /freebsd/contrib/ofed/libibverbs/neigh.h (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1 /* Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md
2  */
3 
4 #ifndef _NEIGH_H_
5 #define _NEIGH_H_
6 
7 #include <stddef.h>
8 #include <stdint.h>
9 #include "config.h"
10 #ifdef HAVE_LIBNL1
11 #include <netlink/object.h>
12 #include "nl1_compat.h"
13 #else
14 #include <netlink/object-api.h>
15 #endif
16 
17 struct get_neigh_handler {
18 #ifdef HAVE_LIBNL1
19 	struct nl_handle *sock;
20 #else
21 	struct nl_sock *sock;
22 #endif
23 	struct nl_cache *link_cache;
24 	struct nl_cache	*neigh_cache;
25 	struct nl_cache *route_cache;
26 	int32_t oif;
27 	int vid;
28 	struct rtnl_neigh *filter_neigh;
29 	struct nl_addr *found_ll_addr;
30 	struct nl_addr *dst;
31 	struct nl_addr *src;
32 	uint64_t timeout;
33 };
34 
35 int process_get_neigh(struct get_neigh_handler *neigh_handler);
36 void neigh_free_resources(struct get_neigh_handler *neigh_handler);
37 void neigh_set_vlan_id(struct get_neigh_handler *neigh_handler, uint16_t vid);
38 uint16_t neigh_get_vlan_id_from_dev(struct get_neigh_handler *neigh_handler);
39 int neigh_init_resources(struct get_neigh_handler *neigh_handler, int timeout);
40 
41 int neigh_set_src(struct get_neigh_handler *neigh_handler,
42 		  int family, void *buf, size_t size);
43 void neigh_set_oif(struct get_neigh_handler *neigh_handler, int oif);
44 int neigh_set_dst(struct get_neigh_handler *neigh_handler,
45 		  int family, void *buf, size_t size);
46 int neigh_get_oif_from_src(struct get_neigh_handler *neigh_handler);
47 int neigh_get_ll(struct get_neigh_handler *neigh_handler, void *addr_buf,
48 		 int addr_size);
49 
50 #endif
51