]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #859 in SNORT/snort3 from x-fixes to master
authorMichael Altizer (mialtize) <mialtize@cisco.com>
Mon, 17 Apr 2017 21:01:49 +0000 (17:01 -0400)
committerMichael Altizer (mialtize) <mialtize@cisco.com>
Mon, 17 Apr 2017 21:01:49 +0000 (17:01 -0400)
Squashed commit of the following:

commit 267d90d9291c9d18dfda472511acaeaf7c977b4b
Author: Michael Altizer <mialtize@cisco.com>
Date:   Mon Apr 17 12:34:20 2017 -0400

    gitignore: Add fbstreamer binary

commit aff4153fde73ea38a454d118ef9fa53e86edbe0a
Author: Michael Altizer <mialtize@cisco.com>
Date:   Mon Apr 17 12:33:30 2017 -0400

    fbstreamer: Fix compiler warnings

commit 2ec27c7973532cfbbbb992e69e0b37c9f8441b2b
Author: Michael Altizer <mialtize@cisco.com>
Date:   Mon Apr 17 10:47:40 2017 -0400

    extra: Remove unused config.h inclusions entirely

commit 02967ec532fc2bd9faac28b7bbf2a175f719e19e
Author: Michael Altizer <mialtize@cisco.com>
Date:   Wed Jan 4 17:37:05 2017 -0500

    autoconf: Add macros to extras for C++11 and Visibility support (and use them)

commit 4a2768796608dd9d9cfb9edec9b5962876afcfc5
Author: Michael Altizer <mialtize@cisco.com>
Date:   Wed Jan 4 17:37:41 2017 -0500

    autoconf: Split out visibility checks into their own macro file

commit f171fe0b67b2eb6e813bf8d2613b1c766ad49744
Author: Michael Altizer <mialtize@cisco.com>
Date:   Wed Jan 4 17:30:28 2017 -0500

    loggers: Build alert_sf_socket on all platforms

54 files changed:
.gitignore
configure.ac
extra/.gitignore
extra/configure.ac
extra/m4/ax_cxx_compile_stdcxx.m4 [new file with mode: 0644]
extra/m4/ax_cxx_compile_stdcxx_11.m4 [new file with mode: 0644]
extra/m4/visibility.m4 [new file with mode: 0644]
extra/src/codecs/cd_eapol/cd_eapol.cc
extra/src/codecs/cd_linux_sll/cd_linux_sll.cc
extra/src/codecs/cd_null/cd_null.cc
extra/src/codecs/cd_pflog/cd_pflog.cc
extra/src/codecs/cd_pim/cd_pim.cc
extra/src/codecs/cd_ppp/cd_ppp.cc
extra/src/codecs/cd_raw4/cd_raw4.cc
extra/src/codecs/cd_raw6/cd_raw6.cc
extra/src/codecs/cd_token_ring/cd_token_ring.cc
extra/src/codecs/cd_wlan/cd_wlan.cc
extra/src/daqs/daq_socket/daq_socket.c
extra/src/inspectors/data_log/data_log.cc
extra/src/inspectors/dpx/dpx.cc
extra/src/inspectors/http_server/hi_ad.cc
extra/src/inspectors/http_server/hi_client.cc
extra/src/inspectors/http_server/hi_client_init.cc
extra/src/inspectors/http_server/hi_client_norm.cc
extra/src/inspectors/http_server/hi_cmd_lookup.cc
extra/src/inspectors/http_server/hi_events.cc
extra/src/inspectors/http_server/hi_main.cc
extra/src/inspectors/http_server/hi_mi.cc
extra/src/inspectors/http_server/hi_module.cc
extra/src/inspectors/http_server/hi_norm.cc
extra/src/inspectors/http_server/hi_server.cc
extra/src/inspectors/http_server/hi_server_norm.cc
extra/src/inspectors/http_server/hi_si.cc
extra/src/inspectors/http_server/hi_stream_splitter.cc
extra/src/inspectors/http_server/hi_ui_config.cc
extra/src/inspectors/http_server/hi_ui_iis_unicode_map.cc
extra/src/inspectors/http_server/http_inspect.cc
extra/src/inspectors/http_server/ips_http.cc
extra/src/inspectors/http_server/ips_http_header.cc
extra/src/ips_options/ips_pkt_num/ips_pkt_num.cc
extra/src/ips_options/ips_urg/ips_urg.cc
extra/src/loggers/alert_ex/alert_ex.cc
extra/src/loggers/alert_unixsock/alert_unixsock.cc
extra/src/loggers/log_null/log_null.cc
extra/src/search_engines/lowmem/lowmem.cc
extra/src/search_engines/lowmem/sfksearch.cc
extra/src/search_engines/lowmem/trie_api.cc
extra/src/so_rules/sid_18758/sid_18758.cc
m4/visibility.m4 [new file with mode: 0644]
src/loggers/CMakeLists.txt
src/loggers/Makefile.am
src/loggers/alert_sf_socket.cc
src/loggers/loggers.cc
tools/flatbuffers/fbstreamer.cc

index ebc76c15cf66b2f16c240fb1a87ca05bdcc674a6..b46ba4eccf93cb290038196a4d27289c4eabc8b2 100644 (file)
@@ -58,7 +58,6 @@ doc/snort_manual.chunked.tgz
 doc/snort_manual.tgz
 doc/snort_manual.xml
 doc/version.txt
-extra/m4/*.m4
 extra/rule.xxd
 extra/snort_examples-1.0.tar.gz
 install-sh
@@ -81,6 +80,7 @@ src/test/suite_decl.h
 src/test/suite_list.h
 stamp-h1
 test-driver
+tools/flatbuffers/fbstreamer
 tools/snort2lua/snort2lua
 tools/snort2lua/tags
 tools/u2boat/u2boat
index c34f0de3694c3588aaf4c356aa677d47eb26d571..c32e6fb339dd41c1c22a335481d733c409303559 100644 (file)
@@ -106,38 +106,11 @@ AC_CHECK_PROG(have_w3m,w3m,yes,no)
 AM_CONDITIONAL(MAKE_TEXT_DOC, [test "x$have_w3m" = "xyes" -a "x$have_asciidoc" = "xyes"])
 
 #--------------------------------------------------------------------------
-# visibility foo
+# visibility foo (enable it if we can)
 #--------------------------------------------------------------------------
 
-# modified from gnulib/m4/visibility.m4
-AC_DEFUN([CC_VISIBILITY],
-[
-    AC_REQUIRE([AC_PROG_CC])
-    AC_MSG_CHECKING([for visibility support])
-    gl_save_CPPFLAGS="$CPPFLAGS"
-
-    AC_CACHE_VAL(gl_cv_cc_visibility, [
-        # Add -Werror flag since some compilers, e.g. icc 7.1, don't support it,
-        # but only warn about it instead of compilation failing
-        CPPFLAGS="$CPPFLAGS -Werror -fvisibility=hidden"
-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-            extern __attribute__((__visibility__("hidden"))) int hiddenvar;
-            extern __attribute__((__visibility__("default"))) int exportedvar;
-            extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
-            extern __attribute__((__visibility__("default"))) int exportedfunc (void);]],
-            [[]])],
-            [gl_cv_cc_visibility="yes"],
-            [gl_cv_cc_visibility="no"])
-    ])
-    AC_MSG_RESULT([$gl_cv_cc_visibility])
-    CPPFLAGS="$gl_save_CPPFLAGS"
-    if test "x$gl_cv_cc_visibility" = "xyes"; then
-        CPPFLAGS="$CPPFLAGS -fvisibility=hidden"
-        AC_DEFINE([HAVE_VISIBILITY],[1],
-            [Define if the compiler supports visibility declarations.])
-    fi
-])
-CC_VISIBILITY()
+gl_VISIBILITY()
+CPPFLAGS="$CFLAG_VISIBILITY $CPPFLAGS"
 
 #--------------------------------------------------------------------------
 # thread-local storage foo
index 171b620624c3640c1b7166a56ecabb73282b9aa5..45d55cda83876da4ab264c4fd1992b88edf418f8 100644 (file)
@@ -1,4 +1,4 @@
-Makefile.in
+/Makefile.in
 /aclocal.m4
 /autom4te.cache/
 /compile
@@ -8,6 +8,10 @@ Makefile.in
 /depcomp
 /install-sh
 /ltmain.sh
-/m4/
+/m4/libtool.m4
+/m4/ltoptions.m4
+/m4/ltsugar.m4
+/m4/ltversion.m4
+/m4/lt~obsolete.m4
 /missing
-config.h.in
+/config.h.in
index 0e283f98545b40fcbd23efb5c65778591ba5b7ce..d877dd2bc0cb4405c52b3b419104ed181c9d9354 100644 (file)
@@ -12,7 +12,10 @@ AC_PROG_CXX([clang++ g++])
 
 LT_INIT
 
-AX_CXX_COMPILE_STDCXX_11
+AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
+
+gl_VISIBILITY()
+CPPFLAGS="$CFLAG_VISIBILITY $CPPFLAGS"
 
 PKG_CHECK_MODULES([SNORT3], [snort >= 3])
 
diff --git a/extra/m4/ax_cxx_compile_stdcxx.m4 b/extra/m4/ax_cxx_compile_stdcxx.m4
new file mode 100644 (file)
index 0000000..2c18e49
--- /dev/null
@@ -0,0 +1,562 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXX and
+#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
+#   or '14' (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 4
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [],
+        [$1], [14], [],
+        [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+  ax_cv_cxx_compile_cxx$1,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+    [ax_cv_cxx_compile_cxx$1=yes],
+    [ax_cv_cxx_compile_cxx$1=no])])
+  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++$1 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX$1=0
+    AC_MSG_NOTICE([No compiler with C++$1 support was found])
+  else
+    HAVE_CXX$1=1
+    AC_DEFINE(HAVE_CXX$1,1,
+              [define if the compiler supports basic C++$1 syntax])
+  fi
+  AC_SUBST(HAVE_CXX$1)
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_seperators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
diff --git a/extra/m4/ax_cxx_compile_stdcxx_11.m4 b/extra/m4/ax_cxx_compile_stdcxx_11.m4
new file mode 100644 (file)
index 0000000..3dd5cf9
--- /dev/null
@@ -0,0 +1,40 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++11
+#   standard; if necessary, add switches to CXX and CXXCPP to enable
+#   support.
+#
+#   This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
+#   macro with the version set to C++11.  The two optional arguments are
+#   forwarded literally as the second and third argument respectively.
+#   Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
+#   more information.  If you want to use this macro, you also need to
+#   download the ax_cxx_compile_stdcxx.m4 file.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 16
+
+include([ax_cxx_compile_stdcxx.m4])
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
diff --git a/extra/m4/visibility.m4 b/extra/m4/visibility.m4
new file mode 100644 (file)
index 0000000..77f760c
--- /dev/null
@@ -0,0 +1,76 @@
+# visibility.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl Mac OS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    dnl First, check whether -Werror can be added to the command line, or
+    dnl whether it leads to an error because of some other option that the
+    dnl user has put into $CC $CFLAGS $CPPFLAGS.
+    AC_MSG_CHECKING([whether the -Werror option is usable])
+    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -Werror"
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[]], [[]])],
+        [gl_cv_cc_vis_werror=yes],
+        [gl_cv_cc_vis_werror=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
+    dnl Now check whether visibility declarations are supported.
+    AC_MSG_CHECKING([for simple visibility declarations])
+    AC_CACHE_VAL([gl_cv_cc_visibility], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -fvisibility=hidden"
+      dnl We use the option -Werror and a function dummyfunc, because on some
+      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+      dnl "visibility attribute not supported in this configuration; ignored"
+      dnl at the first function definition in every compilation unit, and we
+      dnl don't want to use the option in this case.
+      if test $gl_cv_cc_vis_werror = yes; then
+        CFLAGS="$CFLAGS -Werror"
+      fi
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+             extern __attribute__((__visibility__("default"))) int exportedvar;
+             extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+             extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+           ]],
+           [[]])],
+        [gl_cv_cc_visibility=yes],
+        [gl_cv_cc_visibility=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_visibility])
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+  AC_SUBST([CFLAG_VISIBILITY])
+  AC_SUBST([HAVE_VISIBILITY])
+  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
index d094d883838fbc8741eb4a8894ca3ea909ed7a56..6f6451b26d96c54caee3a2c0c25d056cab87a371 100644 (file)
 //--------------------------------------------------------------------------
 // cd_eapol.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "codecs/codec_module.h"
 #include "framework/codec.h"
 #include "protocols/eapol.h"
index b280a3815525f7dfedfb881ec35c1a87578a35f2..03d7da203a23e877a9062b211836ec0e6e364e2a 100644 (file)
 //--------------------------------------------------------------------------
 // cd_linux_sll.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "framework/codec.h"
index ba1a990ff3fd975ece3cb7c773aa53d208a4a930..369d4990c9d1527c8304a69937284925ab4e25e6 100644 (file)
 //--------------------------------------------------------------------------
 // cd_null.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "framework/codec.h"
index f3e0fa68c932c79b9e47fbad19fd44be16c0c437..91ae328bf63545590f5cf9f9ecac6d107bd81b94 100644 (file)
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //--------------------------------------------------------------------------
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <net/if.h>
 #include <sfbpf_dlt.h>
 
index a794f40de97755b26aa377ad48a6f8bf1e9fde24..74d96a30bb4706a75c4f3531bd13ccd4916d4527 100644 (file)
 
 // cd_pim.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "framework/codec.h"
 #include "codecs/codec_module.h"
 
index 0dbda126b21e21c7d428f4929e0eb20359eb9877..7f82a5e6c5d2689ec0cda2726937d905b932865c 100644 (file)
 //--------------------------------------------------------------------------
 // cd_ppp.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "framework/codec.h"
index 60b31ea46bd0d5acdd7613a90f865609bb0adcaa..967f0b92b8508b468aa7591410e1f5b333c90fb9 100644 (file)
 //--------------------------------------------------------------------------
 // cd_raw4.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "framework/codec.h"
index 0b8d90851f27f00371325d490471698af61f6362..08d04df2621cf4aeb4cd241bdf71f1fa87b51efe 100644 (file)
 //--------------------------------------------------------------------------
 // cd_raw6.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "framework/codec.h"
index aa37017b91534e508ac2edabb83a9bf8c4e2feee..165f98d3bf7aabb050a5cb640969186900040710 100644 (file)
 //--------------------------------------------------------------------------
 // token_ring.h author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "codecs/codec_module.h"
index cef84f4009b34e8aac4ff88cf402f2a788bc88c8..b1b877b0f2cefbaea5e19a16d7948bd97465703a 100644 (file)
 //--------------------------------------------------------------------------
 // cd_wlan.cc author Josh Rosenbaum <jrosenba@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sfbpf_dlt.h>
 
 #include "codecs/codec_module.h"
index 1afeeead481384e07e538716955b7313844b3462..325941fcdbe4e6c24c5b35235d8d44ffdec288d9 100644 (file)
 */
 /* daq_socket.c author Russ Combs <rucombs@cisco.com> */
 
-#include "daqs/daq_user.h"
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <errno.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
-
+#include <sys/socket.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <sys/unistd.h>
 
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-
 #include <daq_api.h>
 #include <sfbpf_dlt.h>
 
+#include <daqs/daq_user.h>
+
 #define DAQ_MOD_VERSION 0
 #define DAQ_NAME "socket"
 #define DAQ_TYPE (DAQ_TYPE_INTF_CAPABLE | DAQ_TYPE_INLINE_CAPABLE | DAQ_TYPE_MULTI_INSTANCE)
index b46f78eec72a1cf7773a21c5d2e527a9a5e22748..d9f5cd26c3945b88628c2195ca214f8f99a22669 100644 (file)
 //--------------------------------------------------------------------------
 // data_log.cc author Russ Combs <rcombs@sourcefire.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "flow/flow.h"
 #include "framework/data_bus.h"
 #include "framework/inspector.h"
index 902fc5c6d08ee208f50d561588963d5889e762d2..1acdb196a433dff5a785807abf28f11b7815020d 100644 (file)
 //--------------------------------------------------------------------------
 // dpx.cc author Russ Combs <rcombs@sourcefire.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "events/event_queue.h"
 #include "framework/inspector.h"
 #include "framework/module.h"
index d0fdeae103be8a8639c0a7a5d7d6439ce486c51d..bb7b33779d465ef325965e3122e4837e143a2f71 100644 (file)
 **    - 3.2.03:  Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_ad.h"
 
 #include "hi_events.h"
index 86aee024933db68c91d18046e6a20434a1596011..972431fa8cbc6e09766a242f5bf3b41841cd27cd 100644 (file)
 **    - 2.4.05:  Added tab_uri_delimiter config option.  AJM.
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_client.h"
 
 #include "protocols/packet.h"
index c2fabf4008cfc0c1c5e7ee95670468fd391f4a30..8fd732f8203884b02fa0952cbac41e96b8c3aeaa 100644 (file)
 // this file was split from hi_client.cc; look there for the real
 // culprits ;)
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "utils/util_cstring.h"
 
 #include "hi_events.h"
index a663fa5b24c51d92ca4696672279d9a8fb76d9f4..db8557d224bb00344a3cb7e6c1e5866a42d88bbc 100644 (file)
 **      - Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_client_norm.h"
 
 #include "main/snort_debug.h"
index 59a821c1d0022385ecefa33900a181a43bf28033..66850f80669ec29dfed10f60bd3c4ee88861a146 100644 (file)
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //--------------------------------------------------------------------------
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_cmd_lookup.h"
 
 /*
index 1619a9e548a0bd4c1a807da0921e931b26f7098d..f407e8f06881529a5f0f13098ef88b0c9039b8ba 100644 (file)
 //--------------------------------------------------------------------------
 // hi_events.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_events.h"
 
 #include <assert.h>
index 795a0fc60215d4823a089c73d72a36fabbb434d7..e031261e3a6abf4bc1495edd47a7132b6ad6e60d 100644 (file)
 **  - 2.4.05:   Added tab_uri_delimiter config option.  AJM.
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_main.h"
 
 #include "detection/detect.h"
index d9ca94b4ce98a993c6c026f8d14fc7bcb62cf04b..302f627ae94d898656a7d63fa2e991011b6650dc 100644 (file)
 **    - 3.2.03:  Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_mi.h"
 
 #include "protocols/packet.h"
index 6e81547a5bbde56abc072d819c0a6e4866d26ab1..82d7c470b1990265696b05c363ac1f83a8c8bfbc 100644 (file)
 
 // hi_module.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_module.h"
 
 #include "decompress/file_decomp.h"
index 63c193526a474bb0a566c407e08f7761a2e0d6cc..f6bc5e3123047ba27059c1280e61acc681bda885 100644 (file)
 **      - Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_norm.h"
 
 #include "hi_client_norm.h"
index deb7c62d4066176ca2b08a69c9278ac23b9fd2b2..78ac67db6e734a1c6aea4069e3f7e24337f50223 100644 (file)
 **      - Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_server.h"
 
 #include "protocols/packet.h"
index 7426e284cde66350989c3fbf632673afc639d7b7..67632026ac28e176d7528f895af8d320f620b402 100644 (file)
 **      - Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_server_norm.h"
 
 #include "search_engines/search_tool.h"
index 16ee98bab4d4ada5573a0c6f87e3c0d2767091fb..d57ad7f9539e12fb07c4cd7dd29c7f4a4d4a03bc 100644 (file)
 **  - 2.25.03:  Initial Development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_si.h"
 
 #include "protocols/packet.h"
index 8d7fc158862b8036bbf45d3cc20357765c3cfc34..a3fb5acde6f74c6f8dd400befb0fd94f9895459c 100644 (file)
 // * Range, Content-Range, and multipart
 //--------------------------------------------------------------------
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_stream_splitter.h"
 
 #include "events/event_queue.h"
index d99262e6a66957b14e9845261f95293ba0b847a5..1c712995c2cd45b11f0675386e013f59cc680b1e 100644 (file)
 **  - 2.4.05:   Added tab_uri_delimiter config option.  AJM.
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_ui_config.h"
 
 #include "utils/util.h"
index 7f6c70f82b83b801d707904931b7a7c91397c4e4..6674693e64946a9439563cb35b05a88de0626790 100644 (file)
 **    -  Initial development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "hi_ui_iis_unicode_map.h"
 
 #include <sstream>
index d71ab579dc87c9c7773315bc9a99248ad0dd2eda..8e1232600f5b5dc7d850475d84d978a34947aba5 100644 (file)
 **  - 2.10.03:  Initial Development.  DJR
 */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 // FIXIT-L all snort includes should use <form> instead of "form"
 #include "log/messages.h"
 #include "file_api/file_service.h"
index 7aef0fdde4cc8f6c9083673300d5529ba5085b3a..23f3bbf0f30448e521e833bf55fd996ebc94a0cb 100644 (file)
 //--------------------------------------------------------------------------
 // ips_http.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <array>
 
 #include "framework/cursor.h"
index cfd89b8276cf4306c2a45949a189349ac34413e3..40fab7d7dfc1e5eda9e4e88590407f8dd748ffb2 100644 (file)
 //--------------------------------------------------------------------------
 // ips_http_header.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "framework/cursor.h"
 #include "detection/detection_defines.h"
 #include "framework/ips_option.h"
index 4e54e652f8b3ae0089b4ddd4e2e40cbdc3549cb2..a9de0da0b20402132db113f0d3df1c13d2cd26b2 100644 (file)
 
 // ips_pkt_num.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "detection/detection_defines.h"
 #include "framework/decode_data.h"
 #include "framework/ips_option.h"
index dcf5923d0255743b81b18a6b08906d5bd472ea58..b2224c38ab906ad50c1669466862a609c313dd3f 100644 (file)
 
 // ips_urg.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "detection/detection_defines.h"
 #include "framework/ips_option.h"
 #include "framework/module.h"
index 33bfc986acdcc23d4287d3e359ddc12b54623850..bfddf8d639a953ed2a072d3172c7f97a88d34702 100644 (file)
 
 // alert_ex.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <iostream>
 
 #include "detection/signature.h"
index f46fef9811b2773d6c2be5c4f33a4aac8e4ae057..e397c88b12ff24d8d851d311939e306af02304de 100644 (file)
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //--------------------------------------------------------------------------
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include <sys/un.h>
 
 #include "detection/signature.h"
index e0d24a4e465a687294b67dd9a282e85d9f963f2f..e3996f88fa5727fffd9185d3dfa2707c4f6c7fff 100644 (file)
  * alerting, they are completely separate output facilities within Snort.
  */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "framework/logger.h"
 #include "framework/module.h"
 
index e5d76bf9976d1b6af462219aa84add416cbab549..3752b7d250afa51e95faecf09b35df5f1cfa154a 100644 (file)
 */
 // lowmem.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "log/messages.h"
 #include "framework/mpse.h"
 
index b1eaf27be228ec62d87c4ed3164a8c74366eae7b..eadbfa9508143dbd17d436a93851c7103d79e063 100644 (file)
@@ -28,9 +28,6 @@
 *  Keyword-Search: searches the input text for one of multiple keywords,
 *  and supports case sensitivite and case insensitive patterns.
 */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
 
 #include "sfksearch.h"
 
index 5b19cfe9a66729b470b7b803c214e54c45ac0e12..aa025bf5cc697e0727437011d3cd0a651a1956cd 100644 (file)
 //--------------------------------------------------------------------------
 // trie_api.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "framework/base_api.h"
 #include "main/snort_types.h"
 
index 9573136b0c52d77008eccfc36aea2b083587f28b..36e53e4b252f96f1a5b42b5b91623b9bda0afba8 100644 (file)
 //--------------------------------------------------------------------------
 // sid_18758.cc author Russ Combs <rucombs@cisco.com>
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 #include "sid_18758.h"
 
 #include "detection/detection_defines.h"
diff --git a/m4/visibility.m4 b/m4/visibility.m4
new file mode 100644 (file)
index 0000000..77f760c
--- /dev/null
@@ -0,0 +1,76 @@
+# visibility.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl Mac OS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    dnl First, check whether -Werror can be added to the command line, or
+    dnl whether it leads to an error because of some other option that the
+    dnl user has put into $CC $CFLAGS $CPPFLAGS.
+    AC_MSG_CHECKING([whether the -Werror option is usable])
+    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -Werror"
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[]], [[]])],
+        [gl_cv_cc_vis_werror=yes],
+        [gl_cv_cc_vis_werror=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
+    dnl Now check whether visibility declarations are supported.
+    AC_MSG_CHECKING([for simple visibility declarations])
+    AC_CACHE_VAL([gl_cv_cc_visibility], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -fvisibility=hidden"
+      dnl We use the option -Werror and a function dummyfunc, because on some
+      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+      dnl "visibility attribute not supported in this configuration; ignored"
+      dnl at the first function definition in every compilation unit, and we
+      dnl don't want to use the option in this case.
+      if test $gl_cv_cc_vis_werror = yes; then
+        CFLAGS="$CFLAGS -Werror"
+      fi
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+             extern __attribute__((__visibility__("default"))) int exportedvar;
+             extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+             extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+           ]],
+           [[]])],
+        [gl_cv_cc_visibility=yes],
+        [gl_cv_cc_visibility=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_visibility])
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+  AC_SUBST([CFLAG_VISIBILITY])
+  AC_SUBST([HAVE_VISIBILITY])
+  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
index 0b2139ac2b09b30b38cce364bc8cfa6d26bd3a10..195360c354b895df1b0318ce1647cc9c6b487949 100644 (file)
@@ -1,6 +1,7 @@
 
 set (LOGGER_SOURCES
     alert_luajit.cc
+    alert_sf_socket.cc
     log_codecs.cc
     loggers.cc
     loggers.h
@@ -16,14 +17,6 @@ set (PLUGIN_LIST
     unified2.cc
 )
 
-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
-    set ( LOGGER_SOURCES
-        ${LOGGER_SOURCES}
-        alert_sf_socket.cc
-    )
-endif()
-
-
 if (STATIC_LOGGERS)
     add_library ( loggers STATIC
         ${LOGGER_SOURCES}
index f5b4fc7df911c3535368c2b7ff6e612735d46231..ebe861fdd3bf3ed3bf967521bd1e257695d179bf 100644 (file)
@@ -2,6 +2,7 @@
 noinst_LIBRARIES = libloggers.a
 libloggers_a_SOURCES = \
 alert_luajit.cc \
+alert_sf_socket.cc \
 log_codecs.cc \
 loggers.cc \
 loggers.h
@@ -15,10 +16,6 @@ log_hext.cc \
 log_pcap.cc \
 unified2.cc
 
-if LINUX
-libloggers_a_SOURCES += alert_sf_socket.cc
-endif
-
 if STATIC_LOGGERS
 libloggers_a_SOURCES += $(plugin_list)
 
index 8ebf2ef8a91d69b36b0d7309dda15b4b1d02d3e3..011bf207728d7a21475ba9adb9589ad282fd0a6e 100644 (file)
@@ -23,8 +23,6 @@
 #include "config.h"
 #endif
 
-#ifdef __linux__
-
 #include <sys/socket.h>
 #include <sys/un.h>
 
@@ -406,13 +404,10 @@ static LogApi sf_sock_api
     sf_sock_ctor,
     sf_sock_dtor
 };
-#endif   /* __linux__ */
 
 const BaseApi* alert_sf_socket[] =
 {
-#ifdef __linux__
     &sf_sock_api.base,
-#endif
     nullptr
 };
 
index 000315ddf89207f30f71d88891f8725ca0b40fa6..0424f22271e0df32f832fb56a410a5907b22aa41 100644 (file)
@@ -28,9 +28,7 @@
 // to ensure PacketManager::log_protocols() is built into Snort++
 extern const BaseApi* log_codecs[];
 
-#ifdef __linux__
 extern const BaseApi* alert_sf_socket[];
-#endif
 
 #ifdef STATIC_LOGGERS
 extern const BaseApi* alert_csv[];
@@ -46,9 +44,7 @@ void load_loggers()
 {
     // loggers
     PluginManager::load_plugins(log_codecs);
-#ifdef __linux__
     PluginManager::load_plugins(alert_sf_socket);
-#endif
 
 #ifdef STATIC_LOGGERS
     // alerters
index 8c3aaf1be6f3296d341f5da736ba9627736f8365..40f245185e3d3cbb7537237e80089820e080ad48 100644 (file)
@@ -52,7 +52,7 @@ uint8_t opt_flags = 0;
 bool done = false;
 FILE* file;
 
-void help()
+static void help()
 {
     cout << "Flatbuffers Multirecord Streamer for Snort 3\n\n"
          << "Records are output in pairs of YAML objects, representing\n"
@@ -64,7 +64,7 @@ void help()
          << "-t: Tail mode for reading live files\n";
 }
 
-void error(string e)
+static void error(string e)
 {
     if( done )
         return;
@@ -76,7 +76,7 @@ void error(string e)
     exit(-1);
 }
 
-bool tail_read(void* buf, size_t size)
+static bool tail_read(void* buf, size_t size)
 {
     bool tail = opt_flags & OPT_TAIL;
 
@@ -101,7 +101,7 @@ bool tail_read(void* buf, size_t size)
     return true;
 }
 
-uint8_t* read(size_t size, const char* on_error = nullptr)
+static uint8_t* read(size_t size, const char* on_error = nullptr)
 {
     uint8_t* ret = (uint8_t*) malloc(size);
 
@@ -125,10 +125,10 @@ inline T read(const char* on_error = nullptr)
     return ret;
 }
 
-void sigint_handler(int)
+static void sigint_handler(int)
 { done = true; }
 
-bool handle_options(int argc, char* argv[])
+static bool handle_options(int argc, char* argv[])
 {
     int opt;
     while( (opt = getopt(argc, argv, "i:b:a:it")) != -1 )
@@ -168,7 +168,7 @@ bool handle_options(int argc, char* argv[])
     return true;
 }
 
-const reflection::Schema* load_schema(flatbuffers::Parser& parser)
+static const reflection::Schema* load_schema(flatbuffers::Parser& parser)
 {
     auto schema_size = ntohl(read<uint32_t>("Unable to read schema size"));
     auto schema = read(schema_size, "Unable to read schema");
@@ -190,7 +190,7 @@ inline bool is_after_b_stamp(uint64_t timestamp)
 inline bool is_before_a_stamp(uint64_t timestamp)
 { return (opt_flags & OPT_AFTER) && timestamp < a_stamp; }
 
-uint8_t* scan_record(bool skip, uint32_t& size)
+static uint8_t* scan_record(bool skip, uint32_t& size)
 {
     size = ntohl(read<uint32_t>("Unable to read record size"));