res_srtp: Add support for libsrtp2

ASTERISK-25294 #close
Reported by: Tzafrir Cohen

ASTERISK-26976 #close
Reported by: Alex

Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40
This commit is contained in:
Sean Bright
2017-05-26 12:06:34 -04:00
parent d4ccd3a6c0
commit 5e9cd1f20d
6 changed files with 461 additions and 58 deletions

351
configure vendored
View File

@@ -32621,6 +32621,308 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
if test "x${PBX_SRTP}" != "x1" -a "${USE_SRTP}" != "no"; then
pbxlibdir=""
# if --with-SRTP=DIR has been specified, use it.
if test "x${SRTP_DIR}" != "x"; then
if test -d ${SRTP_DIR}/lib; then
pbxlibdir="-L${SRTP_DIR}/lib"
else
pbxlibdir="-L${SRTP_DIR}"
fi
fi
pbxfuncname="srtp_init"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
AST_SRTP_FOUND=yes
else
ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} "
as_ac_Lib=`$as_echo "ac_cv_lib_srtp2_${pbxfuncname}" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -lsrtp2" >&5
$as_echo_n "checking for ${pbxfuncname} in -lsrtp2... " >&6; }
if eval \${$as_ac_Lib+:} 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 ${pbxfuncname} ();
int
main ()
{
return ${pbxfuncname} ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval "$as_ac_Lib=yes"
else
eval "$as_ac_Lib=no"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
AST_SRTP_FOUND=yes
else
AST_SRTP_FOUND=no
fi
CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
fi
# now check for the header.
if test "${AST_SRTP_FOUND}" = "yes"; then
SRTP_LIB="${pbxlibdir} -lsrtp2 "
# if --with-SRTP=DIR has been specified, use it.
if test "x${SRTP_DIR}" != "x"; then
SRTP_INCLUDE="-I${SRTP_DIR}/include"
fi
SRTP_INCLUDE="${SRTP_INCLUDE} "
if test "xsrtp2/srtp.h" = "x" ; then # no header, assume found
SRTP_HEADER_FOUND="1"
else # check for the header
ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
CPPFLAGS="${CPPFLAGS} ${SRTP_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_HEADER_FOUND=1
else
SRTP_HEADER_FOUND=0
fi
CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
fi
if test "x${SRTP_HEADER_FOUND}" = "x0" ; then
SRTP_LIB=""
SRTP_INCLUDE=""
else
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
SRTP_LIB=""
fi
PBX_SRTP=1
cat >>confdefs.h <<_ACEOF
#define HAVE_SRTP 1
_ACEOF
cat >>confdefs.h <<_ACEOF
#define HAVE_SRTP_VERSION 2
_ACEOF
fi
fi
fi
if test "x${PBX_SRTP}" = "x1"; then
ast_ext_lib_check_shared_saved_libs="${LIBS}"
ast_ext_lib_check_shared_saved_ldflags="${LDFLAGS}"
ast_ext_lib_check_shared_saved_cflags="${CFLAGS}"
LIBS="${LIBS} ${SRTP_LIB} "
LDFLAGS="${LDFLAGS} -shared -fPIC"
CFLAGS="${CFLAGS} ${SRTP_INCLUDE} "
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the ability of -lsrtp2 to be linked in a shared object" >&5
$as_echo_n "checking for the ability of -lsrtp2 to be linked in a shared object... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <srtp2/srtp.h>
int
main ()
{
srtp_init();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** libsrtp2 could not be linked as a shared object." >&5
$as_echo "$as_me: WARNING: *** libsrtp2 could not be linked as a shared object." >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Try compiling libsrtp2 manually. Configure libsrtp2" >&5
$as_echo "$as_me: WARNING: *** Try compiling libsrtp2 manually. Configure libsrtp2" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** with ./configure --prefix=/usr replacing /usr with" >&5
$as_echo "$as_me: WARNING: *** with ./configure --prefix=/usr replacing /usr with" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** the prefix of your choice, and then make with" >&5
$as_echo "$as_me: WARNING: *** the prefix of your choice, and then make with" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** 'make libsrtp2.so'" >&5
$as_echo "$as_me: WARNING: *** 'make libsrtp2.so'" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** After re-installing libsrtp2, re-run the Asterisk" >&5
$as_echo "$as_me: WARNING: *** After re-installing libsrtp2, re-run the Asterisk" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** configure script." >&5
$as_echo "$as_me: WARNING: *** configure script." >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** If you do not need SRTP support re-run configure" >&5
$as_echo "$as_me: WARNING: *** If you do not need SRTP support re-run configure" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** with the --without-srtp option." >&5
$as_echo "$as_me: WARNING: *** with the --without-srtp option." >&2;}
exit 1
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="${ast_ext_lib_check_shared_saved_cflags}"
LDFLAGS="${ast_ext_lib_check_shared_saved_ldflags}"
LIBS="${ast_ext_lib_check_shared_saved_libs}"
fi
if test "x$PBX_SRTP" = x1;
then
if test "x${PBX_SRTP_SHUTDOWN}" != "x1" -a "${USE_SRTP_SHUTDOWN}" != "no"; then
pbxlibdir=""
# if --with-SRTP_SHUTDOWN=DIR has been specified, use it.
if test "x${SRTP_SHUTDOWN_DIR}" != "x"; then
if test -d ${SRTP_SHUTDOWN_DIR}/lib; then
pbxlibdir="-L${SRTP_SHUTDOWN_DIR}/lib"
else
pbxlibdir="-L${SRTP_SHUTDOWN_DIR}"
fi
fi
pbxfuncname="srtp_shutdown"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
AST_SRTP_SHUTDOWN_FOUND=yes
else
ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} "
as_ac_Lib=`$as_echo "ac_cv_lib_srtp2_${pbxfuncname}" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -lsrtp2" >&5
$as_echo_n "checking for ${pbxfuncname} in -lsrtp2... " >&6; }
if eval \${$as_ac_Lib+:} 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 ${pbxfuncname} ();
int
main ()
{
return ${pbxfuncname} ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval "$as_ac_Lib=yes"
else
eval "$as_ac_Lib=no"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
AST_SRTP_SHUTDOWN_FOUND=yes
else
AST_SRTP_SHUTDOWN_FOUND=no
fi
CFLAGS="${ast_ext_lib_check_save_CFLAGS}"
fi
# now check for the header.
if test "${AST_SRTP_SHUTDOWN_FOUND}" = "yes"; then
SRTP_SHUTDOWN_LIB="${pbxlibdir} -lsrtp2 "
# if --with-SRTP_SHUTDOWN=DIR has been specified, use it.
if test "x${SRTP_SHUTDOWN_DIR}" != "x"; then
SRTP_SHUTDOWN_INCLUDE="-I${SRTP_SHUTDOWN_DIR}/include"
fi
SRTP_SHUTDOWN_INCLUDE="${SRTP_SHUTDOWN_INCLUDE} "
if test "xsrtp2/srtp.h" = "x" ; then # no header, assume found
SRTP_SHUTDOWN_HEADER_FOUND="1"
else # check for the header
ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
CPPFLAGS="${CPPFLAGS} ${SRTP_SHUTDOWN_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_SHUTDOWN_HEADER_FOUND=1
else
SRTP_SHUTDOWN_HEADER_FOUND=0
fi
CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"
fi
if test "x${SRTP_SHUTDOWN_HEADER_FOUND}" = "x0" ; then
SRTP_SHUTDOWN_LIB=""
SRTP_SHUTDOWN_INCLUDE=""
else
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
SRTP_SHUTDOWN_LIB=""
fi
PBX_SRTP_SHUTDOWN=1
cat >>confdefs.h <<_ACEOF
#define HAVE_SRTP_SHUTDOWN 1
_ACEOF
fi
fi
fi
# libsrtp2 removed support for PRNG, so we require OpenSSL
if test "x$PBX_OPENSSL" != x1;
then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** OpenSSL required when using libsrtp2, checking for libsrtp instead." >&5
$as_echo "$as_me: WARNING: *** OpenSSL required when using libsrtp2, checking for libsrtp instead." >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
PBX_SRTP=0
fi
fi
if test "x$PBX_SRTP" != x1;
then
if test "x${PBX_SRTP}" != "x1" -a "${USE_SRTP}" != "no"; then
pbxlibdir=""
# if --with-SRTP=DIR has been specified, use it.
@@ -32717,6 +33019,10 @@ fi
PBX_SRTP=1
cat >>confdefs.h <<_ACEOF
#define HAVE_SRTP 1
_ACEOF
cat >>confdefs.h <<_ACEOF
#define HAVE_SRTP_VERSION 1
_ACEOF
fi
@@ -32725,20 +33031,19 @@ fi
if test "$PBX_SRTP" = "1";
then
saved_libs="${LIBS}"
saved_ldflags="${LDFLAGS}"
saved_cflags="${CFLAGS}"
LIBS="${LIBS} ${SRTP_LIB}"
LDFLAGS="${LDFLAGS} -shared -fPIC"
CFLAGS="${CFLAGS} ${SRTP_INCLUDE}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the ability of -lsrtp to be linked in a shared object" >&5
if test "x${PBX_SRTP}" = "x1"; then
ast_ext_lib_check_shared_saved_libs="${LIBS}"
ast_ext_lib_check_shared_saved_ldflags="${LDFLAGS}"
ast_ext_lib_check_shared_saved_cflags="${CFLAGS}"
LIBS="${LIBS} ${SRTP_LIB} "
LDFLAGS="${LDFLAGS} -shared -fPIC"
CFLAGS="${CFLAGS} ${SRTP_INCLUDE} "
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the ability of -lsrtp to be linked in a shared object" >&5
$as_echo_n "checking for the ability of -lsrtp to be linked in a shared object... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <srtp/srtp.h>
#include <srtp/srtp.h>
int
main ()
{
@@ -32750,12 +33055,16 @@ srtp_init();
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
$as_echo "$as_me: WARNING: ***" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** libsrtp could not be linked as a shared object." >&5
@@ -32766,8 +33075,8 @@ $as_echo "$as_me: WARNING: *** Try compiling libsrtp manually. Configure libsrtp
$as_echo "$as_me: WARNING: *** with ./configure CFLAGS=-fPIC --prefix=/usr" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** replacing /usr with the prefix of your choice." >&5
$as_echo "$as_me: WARNING: *** replacing /usr with the prefix of your choice." >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** After re-installing libsrtp" >&5
$as_echo "$as_me: WARNING: *** After re-installing libsrtp" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** After re-installing libsrtp, re-run the Asterisk" >&5
$as_echo "$as_me: WARNING: *** After re-installing libsrtp, re-run the Asterisk" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** configure script." >&5
$as_echo "$as_me: WARNING: *** configure script." >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***" >&5
@@ -32779,15 +33088,19 @@ $as_echo "$as_me: WARNING: *** with the --without-srtp option." >&2;}
exit 1
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS="${saved_libs}"
LDFLAGS="${saved_ldflags}"
CFLAGS="${saved_cflags}"
CFLAGS="${ast_ext_lib_check_shared_saved_cflags}"
LDFLAGS="${ast_ext_lib_check_shared_saved_ldflags}"
LIBS="${ast_ext_lib_check_shared_saved_libs}"
fi
if test "x$PBX_SRTP" = x1;
then
if test "x${PBX_SRTP_SHUTDOWN}" != "x1" -a "${USE_SRTP_SHUTDOWN}" != "no"; then
pbxlibdir=""
# if --with-SRTP_SHUTDOWN=DIR has been specified, use it.
@@ -32891,6 +33204,8 @@ _ACEOF
fi
fi
fi
for ver in 2.0 2.2 2.4 2.6; do