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