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