diff options
author | Martin Willi <martin@revosec.ch> | 2014-10-14 11:40:43 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-10-14 16:33:10 +0200 |
commit | 4e37bdbf578e6cc6cb551010ec1c919f3f37c934 (patch) | |
tree | 00ad26f398b2e1ae8dc72ce1d49509a6de376291 | |
parent | 5b2d89b3c33f49df6b29d02d88280aa33f0f6f46 (diff) | |
download | strongswan-4e37bdbf578e6cc6cb551010ec1c919f3f37c934.tar.bz2 strongswan-4e37bdbf578e6cc6cb551010ec1c919f3f37c934.tar.xz |
kernel-pfroute: Check for RTM_IFANNOUNCE availability
This message is not available on OS X.
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c | 10 |
2 files changed, 22 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index dab78a9b4..7a3524ac8 100644 --- a/configure.ac +++ b/configure.ac @@ -629,6 +629,18 @@ AC_COMPILE_IFELSE( [AC_MSG_RESULT([no])] ) +AC_MSG_CHECKING([for RTM_IFANNOUNCE]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/socket.h> + #include <net/if.h> + #include <net/route.h>]], + [[return RTM_IFANNOUNCE;]])], + [AC_MSG_RESULT([yes]); + AC_DEFINE([HAVE_RTM_IFANNOUNCE], [], [have PF_ROUTE RTM_IFANNOUNCE defined])], + [AC_MSG_RESULT([no])] +) + AC_MSG_CHECKING([for IPSEC_MODE_BEET]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( diff --git a/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c b/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c index 8121969fd..26fae0d6b 100644 --- a/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c +++ b/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c @@ -875,6 +875,8 @@ static void process_link(private_kernel_pfroute_net_t *this, } } +#ifdef HAVE_RTM_IFANNOUNCE + /** * Process an RTM_IFANNOUNCE message from the kernel */ @@ -906,6 +908,8 @@ static void process_announce(private_kernel_pfroute_net_t *this, this->lock->unlock(this->lock); } +#endif /* HAVE_RTM_IFANNOUNCE */ + /** * Process an RTM_*ROUTE message from the kernel */ @@ -926,7 +930,9 @@ static bool receive_events(private_kernel_pfroute_net_t *this, int fd, struct rt_msghdr rtm; struct if_msghdr ifm; struct ifa_msghdr ifam; +#ifdef HAVE_RTM_IFANNOUNCE struct if_announcemsghdr ifanm; +#endif }; char buf[sizeof(struct sockaddr_storage) * RTAX_MAX]; } msg; @@ -967,9 +973,11 @@ static bool receive_events(private_kernel_pfroute_net_t *this, int fd, case RTM_IFINFO: hdrlen = sizeof(msg.ifm); break; +#ifdef HAVE_RTM_IFANNOUNCE case RTM_IFANNOUNCE: hdrlen = sizeof(msg.ifanm); break; +#endif /* HAVE_RTM_IFANNOUNCE */ case RTM_ADD: case RTM_DELETE: case RTM_GET: @@ -992,9 +1000,11 @@ static bool receive_events(private_kernel_pfroute_net_t *this, int fd, case RTM_IFINFO: process_link(this, &msg.ifm); break; +#ifdef HAVE_RTM_IFANNOUNCE case RTM_IFANNOUNCE: process_announce(this, &msg.ifanm); break; +#endif /* HAVE_RTM_IFANNOUNCE */ case RTM_ADD: case RTM_DELETE: process_route(this, &msg.rtm); |