]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ofed/libibverbs/neigh.h
MFS r353106:
[FreeBSD/FreeBSD.git] / contrib / ofed / libibverbs / neigh.h
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