nl1_compat.h revision 331769
1/* Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md
2 */
3
4#ifndef _NL1_COMPAT_H_
5#define _NL1_COMPAT_H_
6
7#include <netlink/route/rtnl.h>
8#include <netlink/route/link.h>
9#include <netlink/route/route.h>
10#include <netlink/route/neighbour.h>
11
12struct nl_handle;
13
14/* Workaround - declaration missing */
15extern int		rtnl_link_vlan_get_id(struct rtnl_link *);
16
17#define nl_geterror(x) nl_geterror()
18#define nl_sock nl_handle
19
20static inline void nl_socket_disable_seq_check(struct nl_sock *sock)
21{
22	nl_disable_sequence_check(sock);
23}
24
25struct rtnl_nexthop {};
26
27static inline struct rtnl_nexthop *rtnl_route_nexthop_n(
28	struct rtnl_route *r, int n)
29{
30	return (struct rtnl_nexthop *)r;
31}
32
33static inline struct nl_addr *rtnl_route_nh_get_gateway(struct rtnl_nexthop *nh)
34{
35	return rtnl_route_get_gateway((struct rtnl_route *)nh);
36}
37
38static inline int rtnl_route_nh_get_ifindex(struct rtnl_nexthop *nh)
39{
40	return rtnl_route_get_oif((struct rtnl_route *)nh);
41}
42
43#define nl_addr_info(addr, result)	(		\
44	*(result) = nl_addr_info(addr),			\
45	(*(result) == NULL) ? nl_get_errno() : 0		\
46)
47
48static inline void nl_socket_free(struct nl_sock *sock)
49{
50	nl_close(sock);
51}
52
53static inline struct nl_sock *nl_socket_alloc(void)
54{
55	return nl_handle_alloc();
56}
57
58#define rtnl_link_alloc_cache(sock, family, result) (	\
59	*result = rtnl_link_alloc_cache(sock),		\
60	(*result == NULL) ? nl_get_errno() : 0		\
61)
62
63#define rtnl_route_alloc_cache(sock, family, flags, result) (	\
64	*result = rtnl_route_alloc_cache(sock),			\
65	(*result == NULL) ? nl_get_errno() : 0			\
66)
67
68#define rtnl_neigh_alloc_cache(sock, result) (			\
69	*result = rtnl_neigh_alloc_cache(sock),			\
70	(*result == NULL) ? nl_get_errno() : 0			\
71)
72
73static inline int rtnl_link_is_vlan(struct rtnl_link *link)
74{
75	return rtnl_link_vlan_get_id(link) <= 0;
76}
77
78#endif
79