1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Only enable TCP stream's custom data if boost.any is found

This commit is contained in:
Matias Fontanini
2016-09-27 21:46:38 -07:00
parent 52b389afe8
commit fdc6ccdf5c
3 changed files with 30 additions and 2 deletions

View File

@@ -144,10 +144,12 @@ ELSE()
MESSAGE(STATUS "Disabling TCPIP classes") MESSAGE(STATUS "Disabling TCPIP classes")
ENDIF() ENDIF()
# Search for libboost
FIND_PACKAGE(Boost)
# Optionally enable the ACK tracker (on by default) # Optionally enable the ACK tracker (on by default)
OPTION(LIBTINS_ENABLE_ACK_TRACKER "Enable TCP ACK tracking support" ON) OPTION(LIBTINS_ENABLE_ACK_TRACKER "Enable TCP ACK tracking support" ON)
IF(LIBTINS_ENABLE_ACK_TRACKER AND TINS_HAVE_CXX11) IF(LIBTINS_ENABLE_ACK_TRACKER AND TINS_HAVE_CXX11)
FIND_PACKAGE(Boost)
IF (Boost_FOUND) IF (Boost_FOUND)
MESSAGE(STATUS "Enabling TCP ACK tracking support.") MESSAGE(STATUS "Enabling TCP ACK tracking support.")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
@@ -161,6 +163,22 @@ ELSE()
MESSAGE(STATUS "Disabling ACK tracking support") MESSAGE(STATUS "Disabling ACK tracking support")
ENDIF() 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) OPTION(LIBTINS_ENABLE_WPA2_CALLBACKS "Enable WPA2 callback interface" ON)
IF(LIBTINS_ENABLE_WPA2_CALLBACKS AND TINS_HAVE_WPA2_DECRYPTION AND TINS_HAVE_CXX11) IF(LIBTINS_ENABLE_WPA2_CALLBACKS AND TINS_HAVE_WPA2_DECRYPTION AND TINS_HAVE_CXX11)
SET(STATUS "Enabling WPA2 callback interface") SET(STATUS "Enabling WPA2 callback interface")

View File

@@ -19,6 +19,9 @@
/* Have TCP ACK tracking */ /* Have TCP ACK tracking */
#cmakedefine TINS_HAVE_ACK_TRACKER #cmakedefine TINS_HAVE_ACK_TRACKER
/* Have TCP stream custom data */
#cmakedefine TINS_HAVE_TCP_STREAM_CUSTOM_DATA
/* Have GCC builtin swap */ /* Have GCC builtin swap */
#cmakedefine TINS_HAVE_GCC_BUILTIN_SWAP #cmakedefine TINS_HAVE_GCC_BUILTIN_SWAP

View File

@@ -40,10 +40,13 @@
#include <functional> #include <functional>
#include <chrono> #include <chrono>
#include <stdint.h> #include <stdint.h>
#include <boost/any.hpp>
#include "../macros.h" #include "../macros.h"
#include "../hw_address.h" #include "../hw_address.h"
#include "flow.h" #include "flow.h"
#include "config.h"
#ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA
#include <boost/any.hpp>
#endif
namespace Tins { namespace Tins {
@@ -363,6 +366,7 @@ public:
*/ */
bool ack_tracking_enabled() const; bool ack_tracking_enabled() const;
#ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA
/** /**
* \brief Create or retrieve an application-specific payload for this stream. * \brief Create or retrieve an application-specific payload for this stream.
* *
@@ -381,6 +385,7 @@ public:
}; };
return boost::any_cast<T&>(user_data_); return boost::any_cast<T&>(user_data_);
} }
#endif // TINS_HAVE_TCP_STREAM_CUSTOM_DATA
private: private:
static Flow extract_client_flow(const PDU& packet); static Flow extract_client_flow(const PDU& packet);
@@ -409,7 +414,9 @@ private:
bool auto_cleanup_client_; bool auto_cleanup_client_;
bool auto_cleanup_server_; bool auto_cleanup_server_;
#ifdef TINS_HAVE_TCP_STREAM_CUSTOM_DATA
boost::any user_data_; boost::any user_data_;
#endif // TINS_HAVE_TCP_STREAM_CUSTOM_DATA
}; };
} // TCPIP } // TCPIP