aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-10-18 09:38:01 +0200
committerTobias Brunner <tobias@strongswan.org>2013-10-18 09:52:54 +0200
commit8e8e97d10de8e7931d42a02c87536714749ee1c3 (patch)
tree0a64afd678092c38c32fece1332877b0b4996055 /src
parent3ea7165a278e824798a0af30a6927849b104dd5f (diff)
downloadstrongswan-8e8e97d10de8e7931d42a02c87536714749ee1c3.tar.bz2
strongswan-8e8e97d10de8e7931d42a02c87536714749ee1c3.tar.xz
kernel-netlink: Check existence of linux/fib_rules.h, don't include it in distribution
Diffstat (limited to 'src')
-rw-r--r--src/include/Makefile.am6
-rw-r--r--src/include/linux/fib_rules.h72
-rw-r--r--src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c9
3 files changed, 11 insertions, 76 deletions
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index e0bd43dcc..5de713143 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -1,3 +1,3 @@
-EXTRA_DIST = linux/fib_rules.h linux/if_alg.h linux/ipsec.h linux/netlink.h \
- linux/rtnetlink.h linux/pfkeyv2.h linux/udp.h linux/xfrm.h \
- linux/types.h sys/queue.h
+EXTRA_DIST = linux/if_alg.h linux/ipsec.h linux/netlink.h linux/rtnetlink.h \
+ linux/pfkeyv2.h linux/udp.h linux/xfrm.h linux/types.h \
+ sys/queue.h
diff --git a/src/include/linux/fib_rules.h b/src/include/linux/fib_rules.h
deleted file mode 100644
index 51da65b68..000000000
--- a/src/include/linux/fib_rules.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef __LINUX_FIB_RULES_H
-#define __LINUX_FIB_RULES_H
-
-#include <linux/types.h>
-#include <linux/rtnetlink.h>
-
-/* rule is permanent, and cannot be deleted */
-#define FIB_RULE_PERMANENT 0x00000001
-#define FIB_RULE_INVERT 0x00000002
-#define FIB_RULE_UNRESOLVED 0x00000004
-#define FIB_RULE_IIF_DETACHED 0x00000008
-#define FIB_RULE_DEV_DETACHED FIB_RULE_IIF_DETACHED
-#define FIB_RULE_OIF_DETACHED 0x00000010
-
-/* try to find source address in routing lookups */
-#define FIB_RULE_FIND_SADDR 0x00010000
-
-struct fib_rule_hdr {
- __u8 family;
- __u8 dst_len;
- __u8 src_len;
- __u8 tos;
-
- __u8 table;
- __u8 res1; /* reserved */
- __u8 res2; /* reserved */
- __u8 action;
-
- __u32 flags;
-};
-
-enum {
- FRA_UNSPEC,
- FRA_DST, /* destination address */
- FRA_SRC, /* source address */
- FRA_IIFNAME, /* interface name */
-#define FRA_IFNAME FRA_IIFNAME
- FRA_GOTO, /* target to jump to (FR_ACT_GOTO) */
- FRA_UNUSED2,
- FRA_PRIORITY, /* priority/preference */
- FRA_UNUSED3,
- FRA_UNUSED4,
- FRA_UNUSED5,
- FRA_FWMARK, /* mark */
- FRA_FLOW, /* flow/class id */
- FRA_UNUSED6,
- FRA_UNUSED7,
- FRA_UNUSED8,
- FRA_TABLE, /* Extended table id */
- FRA_FWMASK, /* mask for netfilter mark */
- FRA_OIFNAME,
- __FRA_MAX
-};
-
-#define FRA_MAX (__FRA_MAX - 1)
-
-enum {
- FR_ACT_UNSPEC,
- FR_ACT_TO_TBL, /* Pass to fixed table */
- FR_ACT_GOTO, /* Jump to another rule */
- FR_ACT_NOP, /* No operation */
- FR_ACT_RES3,
- FR_ACT_RES4,
- FR_ACT_BLACKHOLE, /* Drop without notification */
- FR_ACT_UNREACHABLE, /* Drop with ENETUNREACH */
- FR_ACT_PROHIBIT, /* Drop with EACCES */
- __FR_ACT_MAX,
-};
-
-#define FR_ACT_MAX (__FR_ACT_MAX - 1)
-
-#endif
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
index 04dc22c00..d27075082 100644
--- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
+++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
@@ -44,7 +44,9 @@
#include <unistd.h>
#include <errno.h>
#include <net/if.h>
+#ifdef HAVE_LINUX_FIB_RULES_H
#include <linux/fib_rules.h>
+#endif
#include "kernel_netlink_net.h"
#include "kernel_netlink_shared.h"
@@ -2098,7 +2100,6 @@ static status_t manage_rule(private_kernel_netlink_net_t *this, int nlmsg_type,
struct rtmsg *msg;
chunk_t chunk;
char *fwmark;
- mark_t mark;
memset(&request, 0, sizeof(request));
hdr = (struct nlmsghdr*)request;
@@ -2124,6 +2125,9 @@ static status_t manage_rule(private_kernel_netlink_net_t *this, int nlmsg_type,
"%s.plugins.kernel-netlink.fwmark", NULL, hydra->daemon);
if (fwmark)
{
+#ifdef HAVE_LINUX_FIB_RULES_H
+ mark_t mark;
+
if (fwmark[0] == '!')
{
msg->rtm_flags |= FIB_RULE_INVERT;
@@ -2136,6 +2140,9 @@ static status_t manage_rule(private_kernel_netlink_net_t *this, int nlmsg_type,
chunk = chunk_from_thing(mark.mask);
netlink_add_attribute(hdr, FRA_FWMASK, chunk, sizeof(request));
}
+#else
+ DBG1(DBG_KNL, "setting firewall mark on routing rule is not supported");
+#endif
}
return this->socket->send_ack(this->socket, hdr);
}