From fdc6ccdf5c2a00b40736958282b11188eec221f8 Mon Sep 17 00:00:00 2001 From: Matias Fontanini Date: Tue, 27 Sep 2016 21:46:38 -0700 Subject: [PATCH] Only enable TCP stream's custom data if boost.any is found --- CMakeLists.txt | 20 +++++++++++++++++++- include/tins/config.h.in | 3 +++ include/tins/tcp_ip/stream.h | 9 ++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 679b95c..1c2e8b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,10 +144,12 @@ ELSE() MESSAGE(STATUS "Disabling TCPIP classes") ENDIF() +# Search for libboost +FIND_PACKAGE(Boost) + # Optionally enable the ACK tracker (on by default) OPTION(LIBTINS_ENABLE_ACK_TRACKER "Enable TCP ACK tracking support" ON) IF(LIBTINS_ENABLE_ACK_TRACKER AND TINS_HAVE_CXX11) - FIND_PACKAGE(Boost) IF (Boost_FOUND) MESSAGE(STATUS "Enabling TCP ACK tracking support.") INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) @@ -161,6 +163,22 @@ ELSE() MESSAGE(STATUS "Disabling ACK tracking support") ENDIF() +# Optionally enable the TCP stream custom data (on by default) +OPTION(LIBTINS_ENABLE_TCP_STREAM_CUSTOM_DATA "Enable TCP stream custom data support" ON) +IF(LIBTINS_ENABLE_TCP_STREAM_CUSTOM_DATA AND TINS_HAVE_CXX11) + IF (Boost_FOUND) + MESSAGE(STATUS "Enabling TCP stream custom data support.") + INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) + SET(TINS_HAVE_TCP_STREAM_CUSTOM_DATA ON) + ELSE() + MESSAGE(WARNING "Disabling TCP stream custom data support as boost.any was not found") + SET(TINS_HAVE_TCP_STREAM_CUSTOM_DATA OFF) + ENDIF() +ELSE() + SET(TINS_HAVE_TCP_STREAM_CUSTOM_DATA OFF) + MESSAGE(STATUS "Disabling TCP stream custom data support") +ENDIF() + OPTION(LIBTINS_ENABLE_WPA2_CALLBACKS "Enable WPA2 callback interface" ON) IF(LIBTINS_ENABLE_WPA2_CALLBACKS AND TINS_HAVE_WPA2_DECRYPTION AND TINS_HAVE_CXX11) SET(STATUS "Enabling WPA2 callback interface") diff --git a/include/tins/config.h.in b/include/tins/config.h.in index 29b2624..979163b 100644 --- a/include/tins/config.h.in +++ b/include/tins/config.h.in @@ -19,6 +19,9 @@ /* Have TCP ACK tracking */ #cmakedefine TINS_HAVE_ACK_TRACKER +/* Have TCP stream custom data */ +#cmakedefine TINS_HAVE_TCP_STREAM_CUSTOM_DATA + /* Have GCC builtin swap */ #cmakedefine TINS_HAVE_GCC_BUILTIN_SWAP diff --git a/include/tins/tcp_ip/stream.h b/include/tins/tcp_ip/stream.h index 2c41cc2..147cba1 100644 --- a/include/tins/tcp_ip/stream.h +++ b/include/tins/tcp_ip/stream.h @@ -40,10 +40,13 @@ #include #include #include -#include #include "../macros.h" #include "../hw_address.h" #include "flow.h" +#include "config.h" +#ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA + #include +#endif namespace Tins { @@ -363,6 +366,7 @@ public: */ bool ack_tracking_enabled() const; + #ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA /** * \brief Create or retrieve an application-specific payload for this stream. * @@ -381,6 +385,7 @@ public: }; return boost::any_cast(user_data_); } + #endif // TINS_HAVE_TCP_STREAM_CUSTOM_DATA private: static Flow extract_client_flow(const PDU& packet); @@ -409,7 +414,9 @@ private: bool auto_cleanup_client_; bool auto_cleanup_server_; + #ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA boost::any user_data_; + #endif // TINS_HAVE_TCP_STREAM_CUSTOM_DATA }; } // TCPIP