12116Sjkh/* Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md 22116Sjkh */ 32116Sjkh 42116Sjkh#ifndef _NL1_COMPAT_H_ 52116Sjkh#define _NL1_COMPAT_H_ 62116Sjkh 72116Sjkh#include <netlink/route/rtnl.h> 82116Sjkh#include <netlink/route/link.h> 92116Sjkh#include <netlink/route/route.h> 102116Sjkh#include <netlink/route/neighbour.h> 118870Srgrimes 122116Sjkhstruct nl_handle; 132116Sjkh 142116Sjkh/* Workaround - declaration missing */ 152116Sjkhextern int rtnl_link_vlan_get_id(struct rtnl_link *); 16176451Sdas 17176451Sdas#define nl_geterror(x) nl_geterror() 182116Sjkh#define nl_sock nl_handle 19279856Skargl 20279856Skarglstatic inline void nl_socket_disable_seq_check(struct nl_sock *sock) 21279856Skargl{ 22279856Skargl nl_disable_sequence_check(sock); 232116Sjkh} 242116Sjkh 252116Sjkhstruct rtnl_nexthop {}; 26279856Skargl 27279856Skarglstatic inline struct rtnl_nexthop *rtnl_route_nexthop_n( 282116Sjkh struct rtnl_route *r, int n) 292116Sjkh{ 302116Sjkh return (struct rtnl_nexthop *)r; 312116Sjkh} 322116Sjkh 332116Sjkhstatic inline struct nl_addr *rtnl_route_nh_get_gateway(struct rtnl_nexthop *nh) 3497413Salfred{ 3597413Salfred return rtnl_route_get_gateway((struct rtnl_route *)nh); 362116Sjkh} 372116Sjkh 382116Sjkhstatic inline int rtnl_route_nh_get_ifindex(struct rtnl_nexthop *nh) 392116Sjkh{ 402116Sjkh return rtnl_route_get_oif((struct rtnl_route *)nh); 412116Sjkh} 422116Sjkh 432116Sjkh#define nl_addr_info(addr, result) ( \ 442116Sjkh *(result) = nl_addr_info(addr), \ 452116Sjkh (*(result) == NULL) ? nl_get_errno() : 0 \ 462116Sjkh) 472116Sjkh 488870Srgrimesstatic inline void nl_socket_free(struct nl_sock *sock) 492116Sjkh{ 502116Sjkh nl_close(sock); 512116Sjkh} 522116Sjkh 532116Sjkhstatic inline struct nl_sock *nl_socket_alloc(void) 542116Sjkh{ 552116Sjkh return nl_handle_alloc(); 562116Sjkh} 572116Sjkh 582116Sjkh#define rtnl_link_alloc_cache(sock, family, result) ( \ 598870Srgrimes *result = rtnl_link_alloc_cache(sock), \ 602116Sjkh (*result == NULL) ? nl_get_errno() : 0 \ 612116Sjkh) 622116Sjkh 632116Sjkh#define rtnl_route_alloc_cache(sock, family, flags, result) ( \ 642116Sjkh *result = rtnl_route_alloc_cache(sock), \ 652116Sjkh (*result == NULL) ? nl_get_errno() : 0 \ 662116Sjkh) 672116Sjkh 682116Sjkh#define rtnl_neigh_alloc_cache(sock, result) ( \ 692116Sjkh *result = rtnl_neigh_alloc_cache(sock), \ 708870Srgrimes (*result == NULL) ? nl_get_errno() : 0 \ 712116Sjkh) 722116Sjkh 732116Sjkhstatic inline int rtnl_link_is_vlan(struct rtnl_link *link) 742116Sjkh{ 752116Sjkh return rtnl_link_vlan_get_id(link) <= 0; 762116Sjkh} 772116Sjkh 782116Sjkh#endif 792116Sjkh