neigh.h revision 331769
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
17struct 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
35int process_get_neigh(struct get_neigh_handler *neigh_handler);
36void neigh_free_resources(struct get_neigh_handler *neigh_handler);
37void neigh_set_vlan_id(struct get_neigh_handler *neigh_handler, uint16_t vid);
38uint16_t neigh_get_vlan_id_from_dev(struct get_neigh_handler *neigh_handler);
39int neigh_init_resources(struct get_neigh_handler *neigh_handler, int timeout);
40
41int neigh_set_src(struct get_neigh_handler *neigh_handler,
42		  int family, void *buf, size_t size);
43void neigh_set_oif(struct get_neigh_handler *neigh_handler, int oif);
44int neigh_set_dst(struct get_neigh_handler *neigh_handler,
45		  int family, void *buf, size_t size);
46int neigh_get_oif_from_src(struct get_neigh_handler *neigh_handler);
47int neigh_get_ll(struct get_neigh_handler *neigh_handler, void *addr_buf,
48		 int addr_size);
49
50#endif
51