summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-03-01 22:00:14 +0100
committerThomas Haller <thaller@redhat.com>2017-03-02 01:33:25 +0100
commit45cbfb9d11c23d5f64a795fb05205ced48db1c7c (patch)
treecec9fcb3513f60bd017d1c3eda94b593438fe8fc
parent3b2071e970995a9a22d46457e60a762161b46231 (diff)
downloadlibnl-45cbfb9d11c23d5f64a795fb05205ced48db1c7c.tar.gz
include: don't include kernel headers in public libnl3 headers
It would be desirable not to include kernel headers in our public libnl3 headers. As a test, remove all those includes, and fix compilation by explicitly including the kernel headers where needed. In some cases, that requires forward declaration for kernel structures, as we use them as part of our own headers. Realistically, we cannot drop those includes as it probalby breaks compilation for users that expect to get a certain kernel header when including a libnl3 header. So, this will not be done and the includes will be restored in the next commit. Do this step to show how it would be and to verify that we could build with such a change. The reason not to do this is backward compatibility (at compile-time).
-rw-r--r--include/netlink-private/types.h4
-rw-r--r--include/netlink/addr.h2
-rw-r--r--include/netlink/attr.h2
-rw-r--r--include/netlink/cli/ct.h1
-rw-r--r--include/netlink/cli/exp.h1
-rw-r--r--include/netlink/data.h2
-rw-r--r--include/netlink/handlers.h5
-rw-r--r--include/netlink/idiag/idiagnl.h19
-rw-r--r--include/netlink/msg.h2
-rw-r--r--include/netlink/netfilter/exp.h2
-rw-r--r--include/netlink/netlink.h5
-rw-r--r--include/netlink/route/act/gact.h1
-rw-r--r--include/netlink/route/act/mirred.h1
-rw-r--r--include/netlink/route/act/skbedit.h1
-rw-r--r--include/netlink/route/cls/ematch.h1
-rw-r--r--include/netlink/route/cls/ematch/cmp.h3
-rw-r--r--include/netlink/route/cls/ematch/meta.h1
-rw-r--r--include/netlink/route/cls/ematch/nbyte.h1
-rw-r--r--include/netlink/route/cls/ematch/text.h1
-rw-r--r--include/netlink/route/link/can.h5
-rw-r--r--include/netlink/route/link/macsec.h4
-rw-r--r--include/netlink/route/link/vxlan.h2
-rw-r--r--include/netlink/route/pktloc.h1
-rw-r--r--include/netlink/route/qdisc/hfsc.h2
-rw-r--r--include/netlink/route/route.h1
-rw-r--r--include/netlink/route/rule.h1
-rw-r--r--include/netlink/route/tc.h2
-rw-r--r--include/netlink/xfrm/ae.h1
-rw-r--r--include/netlink/xfrm/lifetime.h1
-rw-r--r--include/netlink/xfrm/sa.h1
-rw-r--r--include/netlink/xfrm/selector.h1
-rw-r--r--include/netlink/xfrm/sp.h1
-rw-r--r--include/netlink/xfrm/template.h1
-rw-r--r--lib/cli/qdisc/hfsc.c1
-rw-r--r--lib/netfilter/nfnl.c2
-rw-r--r--lib/route/cls/ematch.c1
-rw-r--r--lib/route/cls/ematch/meta.c1
-rw-r--r--lib/route/cls/ematch/nbyte.c1
-rw-r--r--lib/route/cls/ematch/text.c1
-rw-r--r--lib/route/cls/ematch_grammar.l1
-rw-r--r--lib/route/cls/ematch_syntax.y2
-rw-r--r--lib/route/pktloc_grammar.l1
-rw-r--r--lib/route/route_obj.c1
-rw-r--r--lib/route/rule.c1
-rw-r--r--src/genl-ctrl-list.c2
-rw-r--r--src/nf-ct-add.c2
-rw-r--r--src/nf-ct-list.c2
-rw-r--r--src/nf-exp-add.c2
-rw-r--r--src/nf-exp-delete.c2
-rw-r--r--src/nf-exp-list.c2
-rw-r--r--src/nf-log.c4
-rw-r--r--src/nf-monitor.c3
-rw-r--r--src/nf-queue.c2
-rw-r--r--src/nl-addr-add.c2
-rw-r--r--src/nl-addr-delete.c2
-rw-r--r--src/nl-addr-list.c2
-rw-r--r--src/nl-class-add.c2
-rw-r--r--src/nl-class-delete.c2
-rw-r--r--src/nl-class-list.c2
-rw-r--r--src/nl-classid-lookup.c1
-rw-r--r--src/nl-cls-add.c2
-rw-r--r--src/nl-cls-delete.c2
-rw-r--r--src/nl-cls-list.c2
-rw-r--r--src/nl-fib-lookup.c2
-rw-r--r--src/nl-link-enslave.c2
-rw-r--r--src/nl-link-ifindex2name.c2
-rw-r--r--src/nl-link-list.c2
-rw-r--r--src/nl-link-name2ifindex.c2
-rw-r--r--src/nl-link-release.c2
-rw-r--r--src/nl-link-set.c4
-rw-r--r--src/nl-link-stats.c2
-rw-r--r--src/nl-monitor.c2
-rw-r--r--src/nl-neigh-add.c2
-rw-r--r--src/nl-neigh-delete.c2
-rw-r--r--src/nl-neigh-list.c2
-rw-r--r--src/nl-neightbl-list.c2
-rw-r--r--src/nl-pktloc-lookup.c1
-rw-r--r--src/nl-qdisc-add.c2
-rw-r--r--src/nl-qdisc-delete.c2
-rw-r--r--src/nl-qdisc-list.c3
-rw-r--r--src/nl-route-add.c2
-rw-r--r--src/nl-route-delete.c2
-rw-r--r--src/nl-route-get.c2
-rw-r--r--src/nl-route-list.c2
-rw-r--r--src/nl-rule-list.c2
-rw-r--r--src/nl-tctree-list.c2
-rw-r--r--tests/check-attr.c2
-rw-r--r--tests/test-cache-mngr.c2
-rw-r--r--tests/test-complex-HTB-with-hash-filters.c3
-rw-r--r--tests/test-create-bond.c2
-rw-r--r--tests/test-create-bridge.c2
-rw-r--r--tests/test-create-ifb.c2
-rw-r--r--tests/test-create-ipvlan.c2
-rw-r--r--tests/test-create-macsec.c4
-rw-r--r--tests/test-create-macvlan.c2
-rw-r--r--tests/test-create-macvtap.c2
-rw-r--r--tests/test-create-veth.c2
-rw-r--r--tests/test-create-vlan.c2
-rw-r--r--tests/test-create-vrf.c2
-rw-r--r--tests/test-create-vxlan.c2
-rw-r--r--tests/test-delete-link.c2
-rw-r--r--tests/test-genl.c2
-rw-r--r--tests/test-nf-cache-mngr.c2
-rw-r--r--tests/test-u32-filter-with-actions.c7
104 files changed, 179 insertions, 45 deletions
diff --git a/include/netlink-private/types.h b/include/netlink-private/types.h
index 41396193..36fd3a5a 100644
--- a/include/netlink-private/types.h
+++ b/include/netlink-private/types.h
@@ -23,9 +23,13 @@
#include <netlink-private/object-api.h>
#include <netlink-private/route/tc-api.h>
#include <netlink-private/route/link/sriov.h>
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+#include <linux/genetlink.h>
#include <linux/tc_act/tc_mirred.h>
#include <linux/tc_act/tc_skbedit.h>
#include <linux/tc_act/tc_gact.h>
+#include <linux/sock_diag.h>
#define NL_SOCK_PASSCRED (1<<1)
#define NL_OWN_PORT (1<<2)
diff --git a/include/netlink/addr.h b/include/netlink/addr.h
index 9d0d24a1..00ca7846 100644
--- a/include/netlink/addr.h
+++ b/include/netlink/addr.h
@@ -18,6 +18,8 @@
extern "C" {
#endif
+struct nlattr;
+
struct nl_addr;
/* Creation */
diff --git a/include/netlink/attr.h b/include/netlink/attr.h
index e941a1a7..2157fe17 100644
--- a/include/netlink/attr.h
+++ b/include/netlink/attr.h
@@ -21,6 +21,8 @@
extern "C" {
#endif
+struct nlattr;
+
struct nl_msg;
/**
diff --git a/include/netlink/cli/ct.h b/include/netlink/cli/ct.h
index ebe7c9dc..518d63e6 100644
--- a/include/netlink/cli/ct.h
+++ b/include/netlink/cli/ct.h
@@ -13,7 +13,6 @@
#define __NETLINK_CLI_CT_H_
#include <netlink/netfilter/ct.h>
-#include <linux/netfilter/nf_conntrack_common.h>
extern struct nfnl_ct *nl_cli_ct_alloc(void);
extern struct nl_cache *nl_cli_ct_alloc_cache(struct nl_sock *);
diff --git a/include/netlink/cli/exp.h b/include/netlink/cli/exp.h
index b2418f8d..27440dd4 100644
--- a/include/netlink/cli/exp.h
+++ b/include/netlink/cli/exp.h
@@ -14,7 +14,6 @@
#define __NETLINK_CLI_EXP_H_
#include <netlink/netfilter/exp.h>
-#include <linux/netfilter/nf_conntrack_common.h>
extern struct nfnl_exp *nl_cli_exp_alloc(void);
extern struct nl_cache *nl_cli_exp_alloc_cache(struct nl_sock *);
diff --git a/include/netlink/data.h b/include/netlink/data.h
index b091c4b5..45010fe6 100644
--- a/include/netlink/data.h
+++ b/include/netlink/data.h
@@ -18,6 +18,8 @@
extern "C" {
#endif
+struct nlattr;
+
struct nl_data;
/* General */
diff --git a/include/netlink/handlers.h b/include/netlink/handlers.h
index e94cd348..4fac1481 100644
--- a/include/netlink/handlers.h
+++ b/include/netlink/handlers.h
@@ -22,10 +22,13 @@
extern "C" {
#endif
+struct nlmsgerr;
+struct sockaddr_nl;
+struct ucred;
+
struct nl_cb;
struct nl_sock;
struct nl_msg;
-struct ucred;
/**
* @name Callback Typedefs
diff --git a/include/netlink/idiag/idiagnl.h b/include/netlink/idiag/idiagnl.h
index c99f83b3..d5419558 100644
--- a/include/netlink/idiag/idiagnl.h
+++ b/include/netlink/idiag/idiagnl.h
@@ -13,7 +13,6 @@
#define NETLINK_IDIAGNL_H_
#include <netlink/netlink.h>
-#include <linux/sock_diag.h>
#ifdef __cplusplus
extern "C" {
@@ -90,15 +89,15 @@ enum {
/* deprectated keep these only for compatibility, DO NOT USE THEM */
-#define IDIAG_SK_MEMINFO_RMEM_ALLOC SK_MEMINFO_RMEM_ALLOC
-#define IDIAG_SK_MEMINFO_RCVBUF SK_MEMINFO_RCVBUF
-#define IDIAG_SK_MEMINFO_WMEM_ALLOC SK_MEMINFO_WMEM_ALLOC
-#define IDIAG_SK_MEMINFO_SNDBUF SK_MEMINFO_SNDBUF
-#define IDIAG_SK_MEMINFO_FWD_ALLOC SK_MEMINFO_FWD_ALLOC
-#define IDIAG_SK_MEMINFO_WMEM_QUEUED SK_MEMINFO_WMEM_QUEUED
-#define IDIAG_SK_MEMINFO_OPTMEM SK_MEMINFO_OPTMEM
-#define IDIAG_SK_MEMINFO_BACKLOG SK_MEMINFO_BACKLOG
-#define IDIAG_SK_MEMINFO_VARS SK_MEMINFO_VARS
+#define IDIAG_SK_MEMINFO_RMEM_ALLOC 0 /* SK_MEMINFO_RMEM_ALLOC */
+#define IDIAG_SK_MEMINFO_RCVBUF 1 /* SK_MEMINFO_RCVBUF */
+#define IDIAG_SK_MEMINFO_WMEM_ALLOC 2 /* SK_MEMINFO_WMEM_ALLOC */
+#define IDIAG_SK_MEMINFO_SNDBUF 3 /* SK_MEMINFO_SNDBUF */
+#define IDIAG_SK_MEMINFO_FWD_ALLOC 4 /* SK_MEMINFO_FWD_ALLOC */
+#define IDIAG_SK_MEMINFO_WMEM_QUEUED 5 /* SK_MEMINFO_WMEM_QUEUED */
+#define IDIAG_SK_MEMINFO_OPTMEM 6 /* SK_MEMINFO_OPTMEM */
+#define IDIAG_SK_MEMINFO_BACKLOG 7 /* SK_MEMINFO_BACKLOG */
+#define IDIAG_SK_MEMINFO_VARS SK_MEMINFO_VARS
/* deprecated names. */
#define IDIAG_TIMER_OFF IDIAGNL_TIMER_OFF
diff --git a/include/netlink/msg.h b/include/netlink/msg.h
index f3d50ae2..5aee97d3 100644
--- a/include/netlink/msg.h
+++ b/include/netlink/msg.h
@@ -20,6 +20,8 @@
extern "C" {
#endif
+struct nlmsghdr;
+
#define NL_DONTPAD 0
/**
diff --git a/include/netlink/netfilter/exp.h b/include/netlink/netfilter/exp.h
index 736af24e..8a8a13e2 100644
--- a/include/netlink/netfilter/exp.h
+++ b/include/netlink/netfilter/exp.h
@@ -20,8 +20,6 @@
#include <netlink/cache.h>
#include <netlink/msg.h>
-#include <linux/version.h>
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/include/netlink/netlink.h b/include/netlink/netlink.h
index f8f2082f..08f366e1 100644
--- a/include/netlink/netlink.h
+++ b/include/netlink/netlink.h
@@ -22,10 +22,6 @@
#include <sys/time.h>
#include <netdb.h>
#include <netlink/netlink-compat.h>
-#include <linux/netlink.h>
-#include <linux/rtnetlink.h>
-#include <linux/genetlink.h>
-#include <linux/netfilter/nfnetlink.h>
#include <netinet/tcp.h>
#include <netlink/version.h>
#include <netlink/errno.h>
@@ -38,6 +34,7 @@
extern "C" {
#endif
+struct nlmsghdr;
struct ucred;
struct nl_cache_ops;
struct nl_parser_param;
diff --git a/include/netlink/route/act/gact.h b/include/netlink/route/act/gact.h
index 9538711b..7ea138ab 100644
--- a/include/netlink/route/act/gact.h
+++ b/include/netlink/route/act/gact.h
@@ -15,7 +15,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/route/action.h>
-#include <linux/tc_act/tc_gact.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/act/mirred.h b/include/netlink/route/act/mirred.h
index d65ed378..2ed2cd8b 100644
--- a/include/netlink/route/act/mirred.h
+++ b/include/netlink/route/act/mirred.h
@@ -15,7 +15,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/route/action.h>
-#include <linux/tc_act/tc_mirred.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/act/skbedit.h b/include/netlink/route/act/skbedit.h
index 69829e83..1ff01c3c 100644
--- a/include/netlink/route/act/skbedit.h
+++ b/include/netlink/route/act/skbedit.h
@@ -15,7 +15,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/route/action.h>
-#include <linux/tc_act/tc_skbedit.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/cls/ematch.h b/include/netlink/route/cls/ematch.h
index 13f9c323..728884de 100644
--- a/include/netlink/route/cls/ematch.h
+++ b/include/netlink/route/cls/ematch.h
@@ -15,7 +15,6 @@
#include <netlink/netlink.h>
#include <netlink/msg.h>
#include <netlink/route/classifier.h>
-#include <linux/pkt_cls.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/cls/ematch/cmp.h b/include/netlink/route/cls/ematch/cmp.h
index 308113e0..0ae38511 100644
--- a/include/netlink/route/cls/ematch/cmp.h
+++ b/include/netlink/route/cls/ematch/cmp.h
@@ -14,12 +14,13 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
-#include <linux/tc_ematch/tc_em_cmp.h>
#ifdef __cplusplus
extern "C" {
#endif
+struct tcf_em_cmp;
+
extern void rtnl_ematch_cmp_set(struct rtnl_ematch *,
struct tcf_em_cmp *);
extern struct tcf_em_cmp *
diff --git a/include/netlink/route/cls/ematch/meta.h b/include/netlink/route/cls/ematch/meta.h
index 2fe58990..7c397c83 100644
--- a/include/netlink/route/cls/ematch/meta.h
+++ b/include/netlink/route/cls/ematch/meta.h
@@ -14,7 +14,6 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
-#include <linux/tc_ematch/tc_em_meta.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/cls/ematch/nbyte.h b/include/netlink/route/cls/ematch/nbyte.h
index 014c719b..25b07d9d 100644
--- a/include/netlink/route/cls/ematch/nbyte.h
+++ b/include/netlink/route/cls/ematch/nbyte.h
@@ -14,7 +14,6 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
-#include <linux/tc_ematch/tc_em_nbyte.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/cls/ematch/text.h b/include/netlink/route/cls/ematch/text.h
index e599abf0..190ce8e1 100644
--- a/include/netlink/route/cls/ematch/text.h
+++ b/include/netlink/route/cls/ematch/text.h
@@ -14,7 +14,6 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
-#include <linux/tc_ematch/tc_em_text.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/link/can.h b/include/netlink/route/link/can.h
index 61c9f47e..442cd8d8 100644
--- a/include/netlink/route/link/can.h
+++ b/include/netlink/route/link/can.h
@@ -14,12 +14,15 @@
#include <netlink/netlink.h>
#include <netlink/route/link.h>
-#include <linux/can/netlink.h>
#ifdef __cplusplus
extern "C" {
#endif
+struct can_bittiming_const;
+struct can_bittiming;
+struct can_berr_counter;
+
extern int rtnl_link_is_can(struct rtnl_link *link);
extern char *rtnl_link_can_ctrlmode2str(int, char *, size_t);
diff --git a/include/netlink/route/link/macsec.h b/include/netlink/route/link/macsec.h
index d9cf7da5..58ff7b6e 100644
--- a/include/netlink/route/link/macsec.h
+++ b/include/netlink/route/link/macsec.h
@@ -14,13 +14,13 @@
#include <netlink/netlink.h>
#include <netlink/route/link.h>
-#include <linux/if_link.h>
-#include <linux/if_macsec.h>
#ifdef __cplusplus
extern "C" {
#endif
+enum macsec_validation_type;
+
struct rtnl_link *rtnl_link_macsec_alloc(void);
int rtnl_link_macsec_set_sci(struct rtnl_link *, uint64_t);
diff --git a/include/netlink/route/link/vxlan.h b/include/netlink/route/link/vxlan.h
index 05657776..a929a9fa 100644
--- a/include/netlink/route/link/vxlan.h
+++ b/include/netlink/route/link/vxlan.h
@@ -19,6 +19,8 @@
extern "C" {
#endif
+struct ifla_vxlan_port_range;
+
#define VXLAN_ID_MAX 16777215
enum {
diff --git a/include/netlink/route/pktloc.h b/include/netlink/route/pktloc.h
index c3768ce9..a54659ae 100644
--- a/include/netlink/route/pktloc.h
+++ b/include/netlink/route/pktloc.h
@@ -16,7 +16,6 @@
#include <netlink/cache.h>
#include <netlink/route/tc.h>
-#include <linux/tc_ematch/tc_em_cmp.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/qdisc/hfsc.h b/include/netlink/route/qdisc/hfsc.h
index dd0a2b74..4c338099 100644
--- a/include/netlink/route/qdisc/hfsc.h
+++ b/include/netlink/route/qdisc/hfsc.h
@@ -21,6 +21,8 @@
extern "C" {
#endif
+struct tc_service_curve;
+
extern uint32_t rtnl_qdisc_hfsc_get_defcls(const struct rtnl_qdisc *);
extern int rtnl_qdisc_hfsc_set_defcls(struct rtnl_qdisc *, uint32_t);
diff --git a/include/netlink/route/route.h b/include/netlink/route/route.h
index 477250dd..80e6bc98 100644
--- a/include/netlink/route/route.h
+++ b/include/netlink/route/route.h
@@ -18,7 +18,6 @@
#include <netlink/data.h>
#include <netlink/route/nexthop.h>
#include <netlink/route/rtnl.h>
-#include <linux/in_route.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/rule.h b/include/netlink/route/rule.h
index 760b782a..450c5a98 100644
--- a/include/netlink/route/rule.h
+++ b/include/netlink/route/rule.h
@@ -16,7 +16,6 @@
#include <netlink/cache.h>
#include <netlink/addr.h>
#include <netlink/route/route.h>
-#include <linux/fib_rules.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/route/tc.h b/include/netlink/route/tc.h
index f1f0f8d1..266f48d4 100644
--- a/include/netlink/route/tc.h
+++ b/include/netlink/route/tc.h
@@ -16,8 +16,6 @@
#include <netlink/cache.h>
#include <netlink/data.h>
#include <netlink/route/link.h>
-#include <linux/pkt_sched.h>
-#include <linux/pkt_cls.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/ae.h b/include/netlink/xfrm/ae.h
index 95112dd5..558474ac 100644
--- a/include/netlink/xfrm/ae.h
+++ b/include/netlink/xfrm/ae.h
@@ -37,7 +37,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/lifetime.h b/include/netlink/xfrm/lifetime.h
index a5d5955d..cb9fdc5f 100644
--- a/include/netlink/xfrm/lifetime.h
+++ b/include/netlink/xfrm/lifetime.h
@@ -37,7 +37,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/sa.h b/include/netlink/xfrm/sa.h
index 7362c361..e2e54e2b 100644
--- a/include/netlink/xfrm/sa.h
+++ b/include/netlink/xfrm/sa.h
@@ -37,7 +37,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/selector.h b/include/netlink/xfrm/selector.h
index 2ee6842a..3e3ec5ab 100644
--- a/include/netlink/xfrm/selector.h
+++ b/include/netlink/xfrm/selector.h
@@ -37,7 +37,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/sp.h b/include/netlink/xfrm/sp.h
index 84cbfb26..053c4de6 100644
--- a/include/netlink/xfrm/sp.h
+++ b/include/netlink/xfrm/sp.h
@@ -39,7 +39,6 @@
#include <netlink/addr.h>
#include <netlink/xfrm/template.h>
#include <netlink/xfrm/lifetime.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/include/netlink/xfrm/template.h b/include/netlink/xfrm/template.h
index da51e7d8..ac7189c5 100644
--- a/include/netlink/xfrm/template.h
+++ b/include/netlink/xfrm/template.h
@@ -37,7 +37,6 @@
#include <netlink/netlink.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
-#include <linux/xfrm.h>
#ifdef __cplusplus
extern "C" {
diff --git a/lib/cli/qdisc/hfsc.c b/lib/cli/qdisc/hfsc.c
index 6a0c9606..619befcf 100644
--- a/lib/cli/qdisc/hfsc.c
+++ b/lib/cli/qdisc/hfsc.c
@@ -12,6 +12,7 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/tc.h>
#include <netlink/route/qdisc/hfsc.h>
+#include <linux/pkt_sched.h>
static void print_qdisc_usage(void)
{
diff --git a/lib/netfilter/nfnl.c b/lib/netfilter/nfnl.c
index 9b524470..fab7904f 100644
--- a/lib/netfilter/nfnl.c
+++ b/lib/netfilter/nfnl.c
@@ -65,6 +65,8 @@
#include <netlink/netlink.h>
#include <netlink/netfilter/nfnl.h>
+#include <linux/netfilter/nfnetlink.h>
+
/**
* @name Socket Creating
* @{
diff --git a/lib/route/cls/ematch.c b/lib/route/cls/ematch.c
index 6cbe2744..95f9b3da 100644
--- a/lib/route/cls/ematch.c
+++ b/lib/route/cls/ematch.c
@@ -22,6 +22,7 @@
#include <netlink/route/classifier.h>
#include <netlink/route/cls/ematch.h>
#include <netlink/route/cls/ematch/cmp.h>
+#include <linux/tc_ematch/tc_em_cmp.h>
#include "ematch_syntax.h"
#include "ematch_grammar.h"
diff --git a/lib/route/cls/ematch/meta.c b/lib/route/cls/ematch/meta.c
index e33c405a..cf9fdae2 100644
--- a/lib/route/cls/ematch/meta.c
+++ b/lib/route/cls/ematch/meta.c
@@ -21,6 +21,7 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
#include <netlink/route/cls/ematch/meta.h>
+#include <linux/tc_ematch/tc_em_meta.h>
struct rtnl_meta_value
{
diff --git a/lib/route/cls/ematch/nbyte.c b/lib/route/cls/ematch/nbyte.c
index 88524893..e4216d65 100644
--- a/lib/route/cls/ematch/nbyte.c
+++ b/lib/route/cls/ematch/nbyte.c
@@ -21,6 +21,7 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
#include <netlink/route/cls/ematch/nbyte.h>
+#include <linux/tc_ematch/tc_em_nbyte.h>
struct nbyte_data
{
diff --git a/lib/route/cls/ematch/text.c b/lib/route/cls/ematch/text.c
index e8cdcaec..b14c4abb 100644
--- a/lib/route/cls/ematch/text.c
+++ b/lib/route/cls/ematch/text.c
@@ -21,6 +21,7 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
#include <netlink/route/cls/ematch/text.h>
+#include <linux/tc_ematch/tc_em_text.h>
struct text_data
{
diff --git a/lib/route/cls/ematch_grammar.l b/lib/route/cls/ematch_grammar.l
index c3f02b02..e97f9fef 100644
--- a/lib/route/cls/ematch_grammar.l
+++ b/lib/route/cls/ematch_grammar.l
@@ -15,6 +15,7 @@
#include <netlink/netlink.h>
#include <netlink/route/cls/ematch.h>
#include <netlink/route/cls/ematch/cmp.h>
+ #include <linux/tc_ematch/tc_em_cmp.h>
#include "ematch_syntax.h"
int ematch_get_column(yyscan_t);
diff --git a/lib/route/cls/ematch_syntax.y b/lib/route/cls/ematch_syntax.y
index b28eb3cf..a0ca4bb6 100644
--- a/lib/route/cls/ematch_syntax.y
+++ b/lib/route/cls/ematch_syntax.y
@@ -20,6 +20,8 @@
#include <netlink/route/cls/ematch/nbyte.h>
#include <netlink/route/cls/ematch/text.h>
#include <netlink/route/cls/ematch/meta.h>
+#include <linux/tc_ematch/tc_em_meta.h>
+#include <linux/tc_ematch/tc_em_cmp.h>
#define META_ALLOC rtnl_meta_value_alloc_id
#define META_ID(name) TCF_META_ID_##name
diff --git a/lib/route/pktloc_grammar.l b/lib/route/pktloc_grammar.l
index 646ba563..ab592d1b 100644
--- a/lib/route/pktloc_grammar.l
+++ b/lib/route/pktloc_grammar.l
@@ -4,6 +4,7 @@
#include <netlink/netlink.h>
#include <netlink/utils.h>
#include <netlink/route/pktloc.h>
+ #include <linux/tc_ematch/tc_em_cmp.h>
#include "pktloc_syntax.h"
int pktloc_get_column(yyscan_t);
diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c
index 21b67b19..b8e9f77c 100644
--- a/lib/route/route_obj.c
+++ b/lib/route/route_obj.c
@@ -41,6 +41,7 @@
#include <netlink/route/route.h>
#include <netlink/route/link.h>
#include <netlink/route/nexthop.h>
+#include <linux/in_route.h>
/** @cond SKIP */
#define ROUTE_ATTR_FAMILY 0x000001
diff --git a/lib/route/rule.c b/lib/route/rule.c
index 883df812..2e40bb19 100644
--- a/lib/route/rule.c
+++ b/lib/route/rule.c
@@ -22,6 +22,7 @@
#include <netlink/route/rtnl.h>
#include <netlink/route/rule.h>
#include <inttypes.h>
+#include <linux/fib_rules.h>
/** @cond SKIP */
#define RULE_ATTR_FAMILY 0x0001
diff --git a/src/genl-ctrl-list.c b/src/genl-ctrl-list.c
index 078c30c7..e6d09c35 100644
--- a/src/genl-ctrl-list.c
+++ b/src/genl-ctrl-list.c
@@ -11,6 +11,8 @@
#include <netlink/cli/utils.h>
+#include <linux/genetlink.h>
+
static struct nl_cache *alloc_genl_family_cache(struct nl_sock *sk)
{
return nl_cli_alloc_cache(sk, "generic netlink family",
diff --git a/src/nf-ct-add.c b/src/nf-ct-add.c
index 8ad4c534..fa988acf 100644
--- a/src/nf-ct-add.c
+++ b/src/nf-ct-add.c
@@ -14,6 +14,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/ct.h>
+#include <linux/rtnetlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nf-ct-list.c b/src/nf-ct-list.c
index bc6a3375..6355d108 100644
--- a/src/nf-ct-list.c
+++ b/src/nf-ct-list.c
@@ -14,6 +14,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/ct.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nf-exp-add.c b/src/nf-exp-add.c
index a81147e8..68e2ec6d 100644
--- a/src/nf-exp-add.c
+++ b/src/nf-exp-add.c
@@ -16,6 +16,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/exp.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nf-exp-delete.c b/src/nf-exp-delete.c
index 0965e90b..43493d55 100644
--- a/src/nf-exp-delete.c
+++ b/src/nf-exp-delete.c
@@ -15,6 +15,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/exp.h>
+#include <linux/rtnetlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nf-exp-list.c b/src/nf-exp-list.c
index 7f5624d1..d14b1fa5 100644
--- a/src/nf-exp-list.c
+++ b/src/nf-exp-list.c
@@ -15,6 +15,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/exp.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nf-log.c b/src/nf-log.c
index 1e2c1e48..c0fd9788 100644
--- a/src/nf-log.c
+++ b/src/nf-log.c
@@ -13,10 +13,12 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
-#include <linux/netfilter/nfnetlink_log.h>
#include <netlink/netfilter/nfnl.h>
#include <netlink/netfilter/log.h>
+#include <linux/netfilter/nfnetlink_log.h>
+#include <linux/netlink.h>
+
static struct nfnl_log *alloc_log(void)
{
struct nfnl_log *log;
diff --git a/src/nf-monitor.c b/src/nf-monitor.c
index fe99af48..0b74473e 100644
--- a/src/nf-monitor.c
+++ b/src/nf-monitor.c
@@ -14,6 +14,9 @@
#include <netlink/cli/utils.h>
#include <netlink/netfilter/nfnl.h>
+#include <linux/netlink.h>
+#include <linux/netfilter/nfnetlink.h>
+
static void obj_input(struct nl_object *obj, void *arg)
{
struct nl_dump_params dp = {
diff --git a/src/nf-queue.c b/src/nf-queue.c
index b043c80e..de069b04 100644
--- a/src/nf-queue.c
+++ b/src/nf-queue.c
@@ -20,6 +20,8 @@
#include <netlink/netfilter/queue.h>
#include <netlink/netfilter/queue_msg.h>
+#include <linux/netlink.h>
+
static struct nl_sock *nf_sock;
static struct nfnl_queue *alloc_queue(void)
diff --git a/src/nl-addr-add.c b/src/nl-addr-add.c
index 19d07b3a..0467f676 100644
--- a/src/nl-addr-add.c
+++ b/src/nl-addr-add.c
@@ -12,6 +12,8 @@
#include <netlink/cli/addr.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nl-addr-delete.c b/src/nl-addr-delete.c
index 981930ff..0f3ae2f9 100644
--- a/src/nl-addr-delete.c
+++ b/src/nl-addr-delete.c
@@ -12,6 +12,8 @@
#include <netlink/cli/addr.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static struct nl_sock *sock;
static int interactive = 0, default_yes = 0, quiet = 0;
static int deleted = 0;
diff --git a/src/nl-addr-list.c b/src/nl-addr-list.c
index 20995a84..f9e40801 100644
--- a/src/nl-addr-list.c
+++ b/src/nl-addr-list.c
@@ -12,6 +12,8 @@
#include <netlink/cli/addr.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-class-add.c b/src/nl-class-add.c
index 45934713..bbba6197 100644
--- a/src/nl-class-add.c
+++ b/src/nl-class-add.c
@@ -17,6 +17,8 @@
#include <netlink-private/route/tc-api.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nl-class-delete.c b/src/nl-class-delete.c
index e4be2c07..4570258b 100644
--- a/src/nl-class-delete.c
+++ b/src/nl-class-delete.c
@@ -13,6 +13,8 @@
#include <netlink/cli/class.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
static struct nl_sock *sock;
diff --git a/src/nl-class-list.c b/src/nl-class-list.c
index e8cc71a4..4cace9a5 100644
--- a/src/nl-class-list.c
+++ b/src/nl-class-list.c
@@ -14,6 +14,8 @@
#include <netlink/cli/class.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static struct nl_sock *sock;
static struct nl_dump_params params = {
diff --git a/src/nl-classid-lookup.c b/src/nl-classid-lookup.c
index 1493ebff..b633ab66 100644
--- a/src/nl-classid-lookup.c
+++ b/src/nl-classid-lookup.c
@@ -10,6 +10,7 @@
*/
#include <netlink/cli/utils.h>
+#include <linux/pkt_sched.h>
static void print_usage(void)
{
diff --git a/src/nl-cls-add.c b/src/nl-cls-add.c
index 6ac85900..e4a080a3 100644
--- a/src/nl-cls-add.c
+++ b/src/nl-cls-add.c
@@ -15,6 +15,8 @@
#include <netlink-private/route/tc-api.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nl-cls-delete.c b/src/nl-cls-delete.c
index 78b93ecf..32979926 100644
--- a/src/nl-cls-delete.c
+++ b/src/nl-cls-delete.c
@@ -13,6 +13,8 @@
#include <netlink/cli/cls.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
static struct nl_sock *sock;
diff --git a/src/nl-cls-list.c b/src/nl-cls-list.c
index 08956e09..2ab3d12c 100644
--- a/src/nl-cls-list.c
+++ b/src/nl-cls-list.c
@@ -14,6 +14,8 @@
#include <netlink/cli/cls.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static struct nl_sock *sock;
static struct nl_dump_params params = {
diff --git a/src/nl-fib-lookup.c b/src/nl-fib-lookup.c
index 705cf329..95e6acd8 100644
--- a/src/nl-fib-lookup.c
+++ b/src/nl-fib-lookup.c
@@ -11,6 +11,8 @@
#include <netlink/cli/utils.h>
+#include <linux/rtnetlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-link-enslave.c b/src/nl-link-enslave.c
index 2b5d47db..1a75939d 100644
--- a/src/nl-link-enslave.c
+++ b/src/nl-link-enslave.c
@@ -13,6 +13,8 @@
#include <netlink/cli/link.h>
#include <netlink/route/link/bonding.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct nl_sock *sock;
diff --git a/src/nl-link-ifindex2name.c b/src/nl-link-ifindex2name.c
index 68e5158a..c4ed827b 100644
--- a/src/nl-link-ifindex2name.c
+++ b/src/nl-link-ifindex2name.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf("Usage: nl-link-ifindex2name <ifindex>\n");
diff --git a/src/nl-link-list.c b/src/nl-link-list.c
index b5c98b40..47d5c06e 100644
--- a/src/nl-link-list.c
+++ b/src/nl-link-list.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-link-name2ifindex.c b/src/nl-link-name2ifindex.c
index b8ae4bcd..1be1d18a 100644
--- a/src/nl-link-name2ifindex.c
+++ b/src/nl-link-name2ifindex.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf("Usage: nl-link-name2ifindex <name>\n");
diff --git a/src/nl-link-release.c b/src/nl-link-release.c
index 4c9f15a5..6f9de0e4 100644
--- a/src/nl-link-release.c
+++ b/src/nl-link-release.c
@@ -13,6 +13,8 @@
#include <netlink/cli/link.h>
#include <netlink/route/link/bonding.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct nl_sock *sock;
diff --git a/src/nl-link-set.c b/src/nl-link-set.c
index 6a6bac8d..a3ff8a13 100644
--- a/src/nl-link-set.c
+++ b/src/nl-link-set.c
@@ -9,10 +9,12 @@
* Copyright (c) 2003-2010 Thomas Graf <tgraf@suug.ch>
*/
-#include <linux/if.h>
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/if.h>
+#include <linux/netlink.h>
+
static struct nl_sock *sock;
static int quiet = 0;
diff --git a/src/nl-link-stats.c b/src/nl-link-stats.c
index 9bb11c87..82132f85 100644
--- a/src/nl-link-stats.c
+++ b/src/nl-link-stats.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-monitor.c b/src/nl-monitor.c
index 16ecac00..754f8dca 100644
--- a/src/nl-monitor.c
+++ b/src/nl-monitor.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/rtnetlink.h>
+
static void obj_input(struct nl_object *obj, void *arg)
{
struct nl_dump_params dp = {
diff --git a/src/nl-neigh-add.c b/src/nl-neigh-add.c
index 09cef9aa..d98330b6 100644
--- a/src/nl-neigh-add.c
+++ b/src/nl-neigh-add.c
@@ -13,6 +13,8 @@
#include <netlink/cli/neigh.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nl-neigh-delete.c b/src/nl-neigh-delete.c
index b6be44c9..2d3be37c 100644
--- a/src/nl-neigh-delete.c
+++ b/src/nl-neigh-delete.c
@@ -13,6 +13,8 @@
#include <netlink/cli/neigh.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
static struct nl_sock *sock;
diff --git a/src/nl-neigh-list.c b/src/nl-neigh-list.c
index c99d237f..ba4ade8b 100644
--- a/src/nl-neigh-list.c
+++ b/src/nl-neigh-list.c
@@ -13,6 +13,8 @@
#include <netlink/cli/neigh.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-neightbl-list.c b/src/nl-neightbl-list.c
index 2380e015..5c28e910 100644
--- a/src/nl-neightbl-list.c
+++ b/src/nl-neightbl-list.c
@@ -12,6 +12,8 @@
#include <netlink/cli/utils.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-pktloc-lookup.c b/src/nl-pktloc-lookup.c
index 7d244021..68dbdf92 100644
--- a/src/nl-pktloc-lookup.c
+++ b/src/nl-pktloc-lookup.c
@@ -11,6 +11,7 @@
#include <netlink/cli/utils.h>
#include <netlink/route/pktloc.h>
+#include <linux/tc_ematch/tc_em_cmp.h>
static void print_usage(void)
{
diff --git a/src/nl-qdisc-add.c b/src/nl-qdisc-add.c
index d8a1f73e..dc0b4f1d 100644
--- a/src/nl-qdisc-add.c
+++ b/src/nl-qdisc-add.c
@@ -16,6 +16,8 @@
#include <netlink-private/route/tc-api.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static void print_usage(void)
diff --git a/src/nl-qdisc-delete.c b/src/nl-qdisc-delete.c
index c4acbfe5..4a63a7e5 100644
--- a/src/nl-qdisc-delete.c
+++ b/src/nl-qdisc-delete.c
@@ -14,6 +14,8 @@
#include <netlink/cli/qdisc.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
static struct nl_sock *sock;
diff --git a/src/nl-qdisc-list.c b/src/nl-qdisc-list.c
index b8110f1b..eb73e5fd 100644
--- a/src/nl-qdisc-list.c
+++ b/src/nl-qdisc-list.c
@@ -16,6 +16,9 @@
#include <netlink/cli/cls.h>
#include <netlink/cli/link.h>
+#include <linux/pkt_sched.h>
+#include <linux/netlink.h>
+
#define NUM_INDENT 4
static struct nl_sock *sock;
diff --git a/src/nl-route-add.c b/src/nl-route-add.c
index d4aa767e..3a2dd61b 100644
--- a/src/nl-route-add.c
+++ b/src/nl-route-add.c
@@ -13,6 +13,8 @@
#include <netlink/cli/route.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int quiet = 0;
static struct nl_cache *link_cache, *route_cache;
diff --git a/src/nl-route-delete.c b/src/nl-route-delete.c
index 884fd7fc..56d52eb7 100644
--- a/src/nl-route-delete.c
+++ b/src/nl-route-delete.c
@@ -13,6 +13,8 @@
#include <netlink/cli/route.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static int interactive = 0, default_yes = 0, quiet = 0;
static int deleted = 0;
static struct nl_sock *sock;
diff --git a/src/nl-route-get.c b/src/nl-route-get.c
index 1ee47e47..b031ae4a 100644
--- a/src/nl-route-get.c
+++ b/src/nl-route-get.c
@@ -13,6 +13,8 @@
#include <netlink/cli/route.h>
#include <netlink/cli/link.h>
+#include <linux/rtnetlink.h>
+
static void print_usage(void)
{
printf("Usage: nl-route-get <addr>\n");
diff --git a/src/nl-route-list.c b/src/nl-route-list.c
index e0e57be2..06ef01a6 100644
--- a/src/nl-route-list.c
+++ b/src/nl-route-list.c
@@ -13,6 +13,8 @@
#include <netlink/cli/route.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-rule-list.c b/src/nl-rule-list.c
index 7c450e24..ec73aca3 100644
--- a/src/nl-rule-list.c
+++ b/src/nl-rule-list.c
@@ -13,6 +13,8 @@
#include <netlink/cli/rule.h>
#include <netlink/cli/link.h>
+#include <linux/netlink.h>
+
static void print_usage(void)
{
printf(
diff --git a/src/nl-tctree-list.c b/src/nl-tctree-list.c
index d90cb28f..7c3b7e60 100644
--- a/src/nl-tctree-list.c
+++ b/src/nl-tctree-list.c
@@ -13,6 +13,8 @@
#include <netlink/cli/link.h>
#include <netlink/cli/qdisc.h>
#include <netlink/cli/class.h>
+
+#include <linux/netlink.h>
#include <linux/pkt_sched.h>
static struct nl_sock *sock;
diff --git a/tests/check-attr.c b/tests/check-attr.c
index d8622301..0390997c 100644
--- a/tests/check-attr.c
+++ b/tests/check-attr.c
@@ -13,6 +13,8 @@
#include <netlink/attr.h>
#include <netlink/msg.h>
+#include <linux/netlink.h>
+
START_TEST(attr_size)
{
fail_if(nla_attr_size(0) != NLA_HDRLEN,
diff --git a/tests/test-cache-mngr.c b/tests/test-cache-mngr.c
index 8999e587..97614520 100644
--- a/tests/test-cache-mngr.c
+++ b/tests/test-cache-mngr.c
@@ -5,6 +5,8 @@
#include <netlink-private/cache-api.h>
+#include <linux/netlink.h>
+
static int quit = 0;
static struct nl_dump_params dp = {
diff --git a/tests/test-complex-HTB-with-hash-filters.c b/tests/test-complex-HTB-with-hash-filters.c
index 453f8016..c2ac7830 100644
--- a/tests/test-complex-HTB-with-hash-filters.c
+++ b/tests/test-complex-HTB-with-hash-filters.c
@@ -18,6 +18,7 @@
#include <netlink/route/classifier.h>
#include <netlink/route/class.h>
#include <linux/if_ether.h>
+#include <linux/pkt_cls.h>
#include <netlink/attr.h>
//#include "include/rtnl_u32.h"
@@ -26,6 +27,8 @@
#include <string.h>
//#include "include/rtnl_u32_addon.h"
+#include <linux/netlink.h>
+
#define TC_HANDLE(maj, min) (TC_H_MAJ((maj) << 16) | TC_H_MIN(min))
/* some functions are copied from iproute-tc tool */
diff --git a/tests/test-create-bond.c b/tests/test-create-bond.c
index 11bc5b09..326e0ef7 100644
--- a/tests/test-create-bond.c
+++ b/tests/test-create-bond.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/bonding.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-bridge.c b/tests/test-create-bridge.c
index c4bec375..fe10c639 100644
--- a/tests/test-create-bridge.c
+++ b/tests/test-create-bridge.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/bridge.h>
+#include <linux/netlink.h>
+
#define TEST_BRIDGE_NAME "testbridge"
#define TEST_INTERFACE_NAME "testtap1"
diff --git a/tests/test-create-ifb.c b/tests/test-create-ifb.c
index 99336f55..d154ffdc 100644
--- a/tests/test-create-ifb.c
+++ b/tests/test-create-ifb.c
@@ -1,6 +1,8 @@
#include <netlink/netlink.h>
#include <netlink/route/link.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-ipvlan.c b/tests/test-create-ipvlan.c
index dd61b800..50bac541 100644
--- a/tests/test-create-ipvlan.c
+++ b/tests/test-create-ipvlan.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/ipvlan.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-macsec.c b/tests/test-create-macsec.c
index abdb7f60..efadf6b5 100644
--- a/tests/test-create-macsec.c
+++ b/tests/test-create-macsec.c
@@ -1,5 +1,9 @@
#include <netlink/netlink.h>
#include <netlink/route/link.h>
+
+#include <linux/netlink.h>
+#include <linux/if_link.h>
+
#include <netlink/route/link/macsec.h>
int main(int argc, char *argv[])
diff --git a/tests/test-create-macvlan.c b/tests/test-create-macvlan.c
index d94839be..f520b674 100644
--- a/tests/test-create-macvlan.c
+++ b/tests/test-create-macvlan.c
@@ -4,6 +4,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/macvlan.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-macvtap.c b/tests/test-create-macvtap.c
index dc7df952..27d1969d 100644
--- a/tests/test-create-macvtap.c
+++ b/tests/test-create-macvtap.c
@@ -4,6 +4,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/macvtap.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-veth.c b/tests/test-create-veth.c
index db5ab8b1..9600f8dd 100644
--- a/tests/test-create-veth.c
+++ b/tests/test-create-veth.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/veth.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-vlan.c b/tests/test-create-vlan.c
index 64e478f4..04756d4a 100644
--- a/tests/test-create-vlan.c
+++ b/tests/test-create-vlan.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/vlan.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-create-vrf.c b/tests/test-create-vrf.c
index 7db6d8a5..c3d23e7f 100644
--- a/tests/test-create-vrf.c
+++ b/tests/test-create-vrf.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/vrf.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct nl_cache *link_cache;
diff --git a/tests/test-create-vxlan.c b/tests/test-create-vxlan.c
index 98a5103c..855fdb5d 100644
--- a/tests/test-create-vxlan.c
+++ b/tests/test-create-vxlan.c
@@ -2,6 +2,8 @@
#include <netlink/route/link.h>
#include <netlink/route/link/vxlan.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-delete-link.c b/tests/test-delete-link.c
index 9cf1034e..86331239 100644
--- a/tests/test-delete-link.c
+++ b/tests/test-delete-link.c
@@ -1,6 +1,8 @@
#include <netlink/netlink.h>
#include <netlink/route/link.h>
+#include <linux/netlink.h>
+
int main(int argc, char *argv[])
{
struct rtnl_link *link;
diff --git a/tests/test-genl.c b/tests/test-genl.c
index 74aea106..d96daddf 100644
--- a/tests/test-genl.c
+++ b/tests/test-genl.c
@@ -1,5 +1,7 @@
#include <netlink/cli/utils.h>
+
#include <linux/taskstats.h>
+#include <linux/genetlink.h>
static struct nla_policy attr_policy[TASKSTATS_TYPE_MAX+1] = {
[TASKSTATS_TYPE_PID] = { .type = NLA_U32 },
diff --git a/tests/test-nf-cache-mngr.c b/tests/test-nf-cache-mngr.c
index b4f30223..7625e3fe 100644
--- a/tests/test-nf-cache-mngr.c
+++ b/tests/test-nf-cache-mngr.c
@@ -1,5 +1,7 @@
#include <netlink/cli/utils.h>
+#include <linux/netlink.h>
+
static void change_cb(struct nl_cache *cache, struct nl_object *obj,
int action, void *data)
{
diff --git a/tests/test-u32-filter-with-actions.c b/tests/test-u32-filter-with-actions.c
index 70bab4df..0ca216cb 100644
--- a/tests/test-u32-filter-with-actions.c
+++ b/tests/test-u32-filter-with-actions.c
@@ -20,12 +20,15 @@
#include <netlink/route/act/mirred.h>
#include <netlink/route/act/skbedit.h>
#include <netlink/route/class.h>
-#include <linux/if_ether.h>
-
#include <netlink/attr.h>
+
#include <stdio.h>
#include <string.h>
+#include <linux/if_ether.h>
+#include <linux/tc_act/tc_mirred.h>
+#include <linux/netlink.h>
+
#define TC_HANDLE(maj, min) (TC_H_MAJ((maj) << 16) | TC_H_MIN(min))
/* some functions are copied from iproute-tc tool */