--- /dev/null
+
+find_path (HS_INCLUDE_DIR NAMES hs/hs_compile.h)
+
+find_library(HS_LIBRARIES NAMES hs)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(HS REQUIRED_VARS HS_INCLUDE_DIR HS_LIBRARIES)
+
+mark_as_advanced(HS_INCLUDE_DIR HS_LIBRARIES)
+
+
set_if_true (BUILD_PIGLET PIGLET)
set_if_true (ENABLE_PROFILE PROFILE)
set_if_true (ENABLE_SHELL BUILD_SHELL)
-
set_if_true (BUILD_PIGLET PIGLET)
set_if_true (STATIC_PIGLETS STATIC_PIGLETS)
find_package(ZLIB REQUIRED)
# optional libraries
-find_package(LibHS QUIET)
find_package(LibLZMA QUIET)
find_package(OpenSSL QUIET)
find_package(Asciidoc QUIET)
find_package(DBLATEX QUIET)
find_package(Ruby QUIET 1.8.7)
+find_package(HS QUIET)
+
check_library_exists (${OPENSSL_CRYPTO_LIBRARIES} MD5_Init "" HAVE_OPENSSL_MD5)
endif()
-if (DEFINED LIBHS_LIBRARIES)
- check_library_exists (${LIBHS_LIBRARIES} hs_scan "" HAVE_HYPERSCAN)
+if (DEFINED HS_LIBRARIES)
+ check_library_exists (${HS_LIBRARIES} hs_scan "" HAVE_HYPERSCAN)
endif()
if (DEFINED LIBLZMA_LIBRARIES)
#cmakedefine HAVE_OPENSSL_MD5 1
+/* hyperscan available */
+#cmakedefine HAVE_HYPERSCAN 1
+
/* lzma available */
#cmakedefine HAVE_LZMA 1
* Enabling debug messages may erroneously affect the number of packets
processed from pcaps
+* It is not possible to build unit tests w/o static plugins.
+
+
==== Config
* Parsing issue with IP lists. can't parse rules with $EXTERNAL_NET
* pcre from http://www.pcre.org for regular expression pattern matching
-* zlib from http://www.zlib.net for decompression
+* zlib >= 1.2.8 from http://www.zlib.net for decompression
* pkgconfig from http://www.freedesktop.org to build the example plugins
# keeping track of external libraries seperately for use in pkg-config.
set(EXTERNAL_LIBRARIES
- ${LUAJIT_LIBRARIES}
- ${PCRE_LIBRARIES}
- ${PCAP_LIBRARIES}
- ${OPENSSL_LIBRARIES}
- ${LIBLZMA_LIBRARIES}
- ${ZLIB_LIBRARIES}
-# ${OPENSSL_CRYPTO_LIBRARY} -- part of OPENSSL_LIBRARIES
${DAQ_LIBRARIES}
${DNET_LIBRARIES}
${CLANG_CXX_LIBRARY}
- ${CMAKE_THREAD_LIBS_INIT} # GCC says we must link to the threads library
${CMAKE_DL_LIBS}
+ ${CMAKE_THREAD_LIBS_INIT} # GCC says we must link to the threads library
+ ${HS_LIBRARIES}
+ ${LIBLZMA_LIBRARIES}
+ ${LUAJIT_LIBRARIES}
+ ${OPENSSL_LIBRARIES}
+# ${OPENSSL_CRYPTO_LIBRARY} -- part of OPENSSL_LIBRARIES
+ ${PCAP_LIBRARIES}
+ ${PCRE_LIBRARIES}
+ ${ZLIB_LIBRARIES}
CACHE INTERNAL "external libraries" FORCE
)
set(EXTERNAL_INCLUDES
${DAQ_INCLUDE_DIR}
- ${PCAP_INCLUDE_DIR}
- ${PCRE_INCLUDE_DIR}
${DNET_INCLUDE_DIR}
+ ${HS_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
+ ${PCAP_INCLUDE_DIR}
+ ${PCRE_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS}
CACHE INTERNAL "external INCLUDES" FORCE
)
if ( HAVE_HYPERSCAN )
set(OPTION_LIST ips_regex.cc ips_regex.h)
-endif
+endif ()
if (STATIC_IPS_OPTIONS)
libips_raw_data_la_LDFLAGS = -export-dynamic -shared
libips_raw_data_la_SOURCES = ips_raw_data.cc
-if HAVE_HYPERSCAN
-optlib_LTLIBRARIES += libips_regex.la
-libips_regex_la_CXXFLAGS = $(AM_CXXFLAGS) -DBUILDING_SO
-libips_regex_la_LDFLAGS = -export-dynamic -shared
-libips_regex_la_SOURCES = ips_regex.cc
-endif
-
optlib_LTLIBRARIES += libips_rem.la
libips_rem_la_CXXFLAGS = $(AM_CXXFLAGS) -DBUILDING_SO
libips_rem_la_LDFLAGS = -export-dynamic -shared
--- /dev/null
+
+add_cpputest(ips_regex_test ips_options
+ ips_options
+ framework
+ sfip
+ catch_tests
+ hs
+)
+
IpsApi* api = (IpsApi*)ips_regex;
api->dtor(opt);
regex_cleanup(snort_conf);
+ api->pterm(snort_conf);
}
};
Cursor c(&pkt);
CHECK(opt->eval(c, &pkt) == DETECTION_OPTION_MATCH);
CHECK(!strcmp((char*)c.start(), " stew *"));
+ CHECK(opt->retry());
}
TEST(ips_regex_option, no_match_delta)
CHECK(opt->is_relative());
CHECK(opt->eval(c, &pkt) == DETECTION_OPTION_NO_MATCH);
+ CHECK(!opt->retry());
}
//-------------------------------------------------------------------------