diff --git a/configure b/configure index f3440e5cb1c00ea460ff74a19872f7f7e77b36ea..e88be6865a8891a8c9fdc9d4bc8e901eaabee9ed 100755 --- a/configure +++ b/configure @@ -768,6 +768,10 @@ PBX_OPENSSL OPENSSL_DIR OPENSSL_INCLUDE OPENSSL_LIB +PBX_SRTP_GET_VERSION +SRTP_GET_VERSION_DIR +SRTP_GET_VERSION_INCLUDE +SRTP_GET_VERSION_LIB PBX_SRTP_SHUTDOWN SRTP_SHUTDOWN_DIR SRTP_SHUTDOWN_INCLUDE @@ -1315,6 +1319,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1501,6 +1506,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1753,6 +1759,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1890,7 +1905,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -2043,6 +2058,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -12298,6 +12314,18 @@ PBX_SRTP_SHUTDOWN=0 +SRTP_GET_VERSION_DESCRIP="SRTP Library Version Function" +SRTP_GET_VERSION_OPTION=srtp +SRTP_GET_VERSION_DIR=${SRTP_DIR} + +PBX_SRTP_GET_VERSION=0 + + + + + + + OPENSSL_DESCRIP="OpenSSL Secure Sockets Layer" OPENSSL_OPTION="ssl" PBX_OPENSSL=0 @@ -15016,7 +15044,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15062,7 +15090,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15086,7 +15114,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15131,7 +15159,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15155,7 +15183,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -16455,6 +16483,8 @@ main () if (*(data + i) != *(data3 + i)) return 14; close (fd); + free (data); + free (data3); return 0; } _ACEOF @@ -30924,6 +30954,102 @@ fi +if test "x${PBX_SRTP_GET_VERSION}" != "x1" -a "${USE_SRTP_GET_VERSION}" != "no"; then + pbxlibdir="" + # if --with-SRTP_GET_VERSION=DIR has been specified, use it. + if test "x${SRTP_GET_VERSION_DIR}" != "x"; then + if test -d ${SRTP_GET_VERSION_DIR}/lib; then + pbxlibdir="-L${SRTP_GET_VERSION_DIR}/lib" + else + pbxlibdir="-L${SRTP_GET_VERSION_DIR}" + fi + fi + + ast_ext_lib_check_save_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} " + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for srtp_get_version_string in -lsrtp2" >&5 +$as_echo_n "checking for srtp_get_version_string in -lsrtp2... " >&6; } +if ${ac_cv_lib_srtp2_srtp_get_version_string+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsrtp2 ${pbxlibdir} $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char srtp_get_version_string (); +int +main () +{ +return srtp_get_version_string (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_srtp2_srtp_get_version_string=yes +else + ac_cv_lib_srtp2_srtp_get_version_string=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_srtp2_srtp_get_version_string" >&5 +$as_echo "$ac_cv_lib_srtp2_srtp_get_version_string" >&6; } +if test "x$ac_cv_lib_srtp2_srtp_get_version_string" = xyes; then : + AST_SRTP_GET_VERSION_FOUND=yes +else + AST_SRTP_GET_VERSION_FOUND=no +fi + + CFLAGS="${ast_ext_lib_check_save_CFLAGS}" + + + # now check for the header. + if test "${AST_SRTP_GET_VERSION_FOUND}" = "yes"; then + SRTP_GET_VERSION_LIB="${pbxlibdir} -lsrtp2 " + # if --with-SRTP_GET_VERSION=DIR has been specified, use it. + if test "x${SRTP_GET_VERSION_DIR}" != "x"; then + SRTP_GET_VERSION_INCLUDE="-I${SRTP_GET_VERSION_DIR}/include" + fi + SRTP_GET_VERSION_INCLUDE="${SRTP_GET_VERSION_INCLUDE} " + + # check for the header + ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${SRTP_GET_VERSION_INCLUDE}" + ac_fn_c_check_header_mongrel "$LINENO" "srtp2/srtp.h" "ac_cv_header_srtp2_srtp_h" "$ac_includes_default" +if test "x$ac_cv_header_srtp2_srtp_h" = xyes; then : + SRTP_GET_VERSION_HEADER_FOUND=1 +else + SRTP_GET_VERSION_HEADER_FOUND=0 +fi + + + CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}" + + if test "x${SRTP_GET_VERSION_HEADER_FOUND}" = "x0" ; then + SRTP_GET_VERSION_LIB="" + SRTP_GET_VERSION_INCLUDE="" + else + + PBX_SRTP_GET_VERSION=1 + cat >>confdefs.h <<_ACEOF +#define HAVE_SRTP_GET_VERSION 1 +_ACEOF + + fi + fi +fi + + + # libsrtp2 removed support for PRNG, so we require OpenSSL if test "x$PBX_OPENSSL" != x1; then @@ -31205,6 +31331,102 @@ _ACEOF fi + +if test "x${PBX_SRTP_GET_VERSION}" != "x1" -a "${USE_SRTP_GET_VERSION}" != "no"; then + pbxlibdir="" + # if --with-SRTP_GET_VERSION=DIR has been specified, use it. + if test "x${SRTP_GET_VERSION_DIR}" != "x"; then + if test -d ${SRTP_GET_VERSION_DIR}/lib; then + pbxlibdir="-L${SRTP_GET_VERSION_DIR}/lib" + else + pbxlibdir="-L${SRTP_GET_VERSION_DIR}" + fi + fi + + ast_ext_lib_check_save_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} " + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for srtp_get_version_string in -lsrtp" >&5 +$as_echo_n "checking for srtp_get_version_string in -lsrtp... " >&6; } +if ${ac_cv_lib_srtp_srtp_get_version_string+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsrtp ${pbxlibdir} $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char srtp_get_version_string (); +int +main () +{ +return srtp_get_version_string (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_srtp_srtp_get_version_string=yes +else + ac_cv_lib_srtp_srtp_get_version_string=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_srtp_srtp_get_version_string" >&5 +$as_echo "$ac_cv_lib_srtp_srtp_get_version_string" >&6; } +if test "x$ac_cv_lib_srtp_srtp_get_version_string" = xyes; then : + AST_SRTP_GET_VERSION_FOUND=yes +else + AST_SRTP_GET_VERSION_FOUND=no +fi + + CFLAGS="${ast_ext_lib_check_save_CFLAGS}" + + + # now check for the header. + if test "${AST_SRTP_GET_VERSION_FOUND}" = "yes"; then + SRTP_GET_VERSION_LIB="${pbxlibdir} -lsrtp " + # if --with-SRTP_GET_VERSION=DIR has been specified, use it. + if test "x${SRTP_GET_VERSION_DIR}" != "x"; then + SRTP_GET_VERSION_INCLUDE="-I${SRTP_GET_VERSION_DIR}/include" + fi + SRTP_GET_VERSION_INCLUDE="${SRTP_GET_VERSION_INCLUDE} " + + # check for the header + ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${SRTP_GET_VERSION_INCLUDE}" + ac_fn_c_check_header_mongrel "$LINENO" "srtp/srtp.h" "ac_cv_header_srtp_srtp_h" "$ac_includes_default" +if test "x$ac_cv_header_srtp_srtp_h" = xyes; then : + SRTP_GET_VERSION_HEADER_FOUND=1 +else + SRTP_GET_VERSION_HEADER_FOUND=0 +fi + + + CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}" + + if test "x${SRTP_GET_VERSION_HEADER_FOUND}" = "x0" ; then + SRTP_GET_VERSION_LIB="" + SRTP_GET_VERSION_INCLUDE="" + else + + PBX_SRTP_GET_VERSION=1 + cat >>confdefs.h <<_ACEOF +#define HAVE_SRTP_GET_VERSION 1 +_ACEOF + + fi + fi +fi + + fi fi diff --git a/configure.ac b/configure.ac index 0823e1de4c76b8d07142dc71053df3b3632b07ab..b9fed9b2aad02e3d102c6945ddcc47d810f51d6b 100644 --- a/configure.ac +++ b/configure.ac @@ -580,6 +580,7 @@ AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite]) AST_EXT_LIB_SETUP([SQLITE3], [SQLite], [sqlite3]) AST_EXT_LIB_SETUP([SRTP], [Secure RTP], [srtp]) AST_EXT_LIB_SETUP_OPTIONAL([SRTP_SHUTDOWN], [SRTP Library Shutdown Function], [SRTP], [srtp]) +AST_EXT_LIB_SETUP_OPTIONAL([SRTP_GET_VERSION], [SRTP Library Version Function], [SRTP], [srtp]) AST_EXT_LIB_SETUP([OPENSSL], [OpenSSL Secure Sockets Layer], [ssl]) AST_EXT_LIB_SETUP_OPTIONAL([RT], [Realtime functions], [rt]) AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv]) @@ -2555,6 +2556,7 @@ AST_EXT_LIB_CHECK_SHARED([SRTP], [srtp2], [srtp_init], [srtp2/srtp.h], [], [], [ if test "x$PBX_SRTP" = x1; then AST_EXT_LIB_CHECK([SRTP_SHUTDOWN], [srtp2], [srtp_shutdown], [srtp2/srtp.h]) + AST_EXT_LIB_CHECK([SRTP_GET_VERSION], [srtp2], [srtp_get_version_string], [srtp2/srtp.h]) # libsrtp2 removed support for PRNG, so we require OpenSSL if test "x$PBX_OPENSSL" != x1; @@ -2586,6 +2588,7 @@ then if test "x$PBX_SRTP" = x1; then AST_EXT_LIB_CHECK([SRTP_SHUTDOWN], [srtp], [srtp_shutdown], [srtp/srtp.h]) + AST_EXT_LIB_CHECK([SRTP_GET_VERSION], [srtp], [srtp_get_version_string], [srtp/srtp.h]) fi fi diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 739f2fb7eca35361128bde8122f5e4c34ba915a8..bb8fa52c6e839a33e395e9a24922677efc60cde7 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -859,6 +859,9 @@ /* Define to 1 if you have the Secure RTP library. */ #undef HAVE_SRTP +/* Define to 1 if SRTP has the SRTP Library Version Function feature. */ +#undef HAVE_SRTP_GET_VERSION + /* Define to 1 if SRTP has the SRTP Library Shutdown Function feature. */ #undef HAVE_SRTP_SHUTDOWN diff --git a/menuselect/configure b/menuselect/configure index 8efb6372e82920e98f39891d12b5d635668c224a..fd7d24b87be6a9675003ce103857f453872c588b 100755 --- a/menuselect/configure +++ b/menuselect/configure @@ -692,6 +692,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -772,6 +773,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' @@ -1024,6 +1026,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1161,7 +1172,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1314,6 +1325,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] diff --git a/res/res_srtp.c b/res/res_srtp.c index a03cb05923eccefbaecd3f580b929ba03b399d7a..d2d2457ae8121d6a7241f0b332afa0568fe5b103 100644 --- a/res/res_srtp.c +++ b/res/res_srtp.c @@ -601,7 +601,11 @@ static int res_srtp_init(void) return -1; } +#ifdef HAVE_SRTP_GET_VERSION ast_verb(2, "%s initialized\n", srtp_get_version_string()); +#else + ast_verb(2, "libsrtp initialized\n"); +#endif g_initialized = 1; return 0;