+androsyn 2008/07/29 15:26:55 UTC (25795)
+ Log:
+ some sanity checks in the rb_open path
+
+ Modified:
+ libratbox/trunk/src/commio.c (File Modified)
+
+
+androsyn 2008/07/29 14:47:48 UTC (25793)
+ Log:
+ pass new_F along to rb_ssl_accept_setup instead of the fd itself
+
+ Modified:
+ libratbox/trunk/include/commio-ssl.h (File Modified)
+ libratbox/trunk/src/commio.c (File Modified)
+ libratbox/trunk/src/gnutls.c (File Modified)
+ libratbox/trunk/src/nossl.c (File Modified)
+ libratbox/trunk/src/openssl.c (File Modified)
+
+
+androsyn 2008/07/28 23:14:29 UTC (25791)
+ Log:
+ log if rb_open returns NULL on accept and close the fd..this shouldn't happen and the real cause needs to be found
+
+ Modified:
+ libratbox/trunk/src/commio.c (File Modified)
+
+
+androsyn 2008/07/11 18:21:57 UTC (25705)
+ Log:
+ add a newline at the end of arc4random.c
+
+ Modified:
+ libratbox/trunk/src/arc4random.c (File Modified)
+
+
+androsyn 2008/07/10 18:34:03 UTC (25699)
+ Log:
+ i'm doing good today..move the ifdefs down
+
+ Modified:
+ libratbox/trunk/src/arc4random.c (File Modified)
+
+
+androsyn 2008/07/10 18:32:34 UTC (25697)
+ Log:
+ remove some debugging code
+
+ Modified:
+ libratbox/trunk/src/arc4random.c (File Modified)
+ libratbox/trunk/src/nossl.c (File Modified)
+
+
+androsyn 2008/07/10 18:30:19 UTC (25695)
+ Log:
+ add a missing ; and add arc4random.h too
+
+ Modified:
+ libratbox/trunk/include/arc4random.h (File Added)
+ libratbox/trunk/src/openssl.c (File Modified)
+
+
+androsyn 2008/07/10 18:27:23 UTC (25693)
+ Log:
+ forgot a prototype for rb_get_pseudo_random
+
+ Modified:
+ libratbox/trunk/include/rb_commio.h (File Modified)
+
+
+androsyn 2008/07/10 18:05:43 UTC (25691)
+ Log:
+ fix a typo
+
+ Modified:
+ libratbox/trunk/src/nossl.c (File Modified)
+
+
+androsyn 2008/07/10 17:13:27 UTC (25689)
+ Log:
+ - Add arc4random as a source for random bytes in the nossl.c case.
+ - Add in a pseudo random source function as well. This is really only different on OpenSSL.
+
+
+
+ Modified:
+ libratbox/trunk/configure (File Modified)
+ libratbox/trunk/configure.ac (File Modified)
+ libratbox/trunk/include/libratbox_config.h.in (File Modified)
+ libratbox/trunk/src/Makefile.am (File Modified)
+ libratbox/trunk/src/Makefile.in (File Modified)
+ libratbox/trunk/src/arc4random.c (File Added)
+ libratbox/trunk/src/export-syms.txt (File Modified)
+ libratbox/trunk/src/gnutls.c (File Modified)
+ libratbox/trunk/src/nossl.c (File Modified)
+ libratbox/trunk/src/openssl.c (File Modified)
+
+
+androsyn 2008/07/06 18:57:15 UTC (25683)
+ Log:
+ change a rb_uint8_t to uint8_t
+
+ Modified:
+ libratbox/trunk/configure (File Modified)
+ libratbox/trunk/configure.ac (File Modified)
+
+
+androsyn 2008/07/06 05:15:22 UTC (25681)
+ Log:
+ fix the socklen_t stuff
+
+ Modified:
+ libratbox/trunk/configure (File Modified)
+ libratbox/trunk/configure.ac (File Modified)
+ libratbox/trunk/include/libratbox_config.h.in (File Modified)
+
+
+androsyn 2008/07/06 04:33:03 UTC (25679)
+ Log:
+ get rid of some testing code that snuck into the last commit
+
+ Modified:
+ libratbox/trunk/configure (File Modified)
+ libratbox/trunk/configure.ac (File Modified)
+
+
+androsyn 2008/07/06 04:13:05 UTC (25675)
+ Log:
+ remove the rb_uint/rb_int stuff as we require a C99 compiler and this is standard now. Also add a better check for socklen_t
+
+ Modified:
+ libratbox/trunk/acinclude.m4 (File Modified)
+ libratbox/trunk/configure (File Modified)
+ libratbox/trunk/configure.ac (File Modified)
+ libratbox/trunk/include/commio-int.h (File Modified)
+ libratbox/trunk/include/libratbox_config.h.in (File Modified)
+ libratbox/trunk/include/rb_commio.h (File Modified)
+ libratbox/trunk/include/rb_linebuf.h (File Modified)
+ libratbox/trunk/src/Makefile.in (File Modified)
+ libratbox/trunk/src/balloc.c (File Modified)
+ libratbox/trunk/src/commio.c (File Modified)
+ libratbox/trunk/src/crypt.c (File Modified)
+ libratbox/trunk/src/epoll.c (File Modified)
+ libratbox/trunk/src/rawbuf.c (File Modified)
+
+
+androsyn 2008/07/06 03:10:23 UTC (25673)
+ Log:
+ a few minor cleanups
+
+ Modified:
+ libratbox/trunk/src/commio.c (File Modified)
+
+
androsyn 2008/06/24 14:04:50 UTC (25588)
Log:
move some of the common accept code into a function
])
-# RB_TYPE_INTMAX_T
-# -----------------
-AC_DEFUN([RB_TYPE_INTMAX_T],
-[
- AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
- AC_CHECK_TYPE([intmax_t],
- [AC_DEFINE([HAVE_INTMAX_T], 1,
- [Define to 1 if the system has the type `intmax_t'.]) ac_cv_c_intmax_t=yes],
- [test $ac_cv_type_long_long_int = yes \
- && ac_type='long long int' \
- || ac_type='long int'
- AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
- [Define to the widest signed integer type
- if <stdint.h> and <inttypes.h> do not define.]) ac_cv_c_intmax_t="$ac_type"])
-])
-
-
-# RB_TYPE_UINTMAX_T
-# -----------------
-AC_DEFUN([RB_TYPE_UINTMAX_T],
-[
- AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
- AC_CHECK_TYPE([uintmax_t],
- [AC_DEFINE([HAVE_UINTMAX_T], 1,
- [Define to 1 if the system has the type `uintmax_t'.]) ac_cv_c_uintmax_t=yes],
- [test $ac_cv_type_unsigned_long_long_int = yes \
- && ac_type='unsigned long long int' \
- || ac_type='unsigned long int'
- AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
- [Define to the widest unsigned integer type
- if <stdint.h> and <inttypes.h> do not define.]) ac_cv_c_uintmax_t="$ac_type"])
-])
-
-
-# RB_TYPE_INTPTR_T
-# -----------------
-AC_DEFUN([RB_TYPE_INTPTR_T],
-[
- AC_CHECK_TYPE([intptr_t],
- [AC_DEFINE([HAVE_INTPTR_T], 1,
- [Define to 1 if the system has the type `intptr_t'.]) ac_cv_c_intptr_t=yes],
- [for ac_type in 'int' 'long int' 'long long int'; do
- AC_COMPILE_IFELSE(
- [AC_LANG_BOOL_COMPILE_TRY(
- [AC_INCLUDES_DEFAULT],
- [[sizeof (void *) <= sizeof ($ac_type)]])],
- [AC_DEFINE_UNQUOTED([intptr_t], [$ac_type],
- [Define to the type of a signed integer type wide enough to
- hold a pointer, if such a type exists, and if the system
- does not define it.]) ac_cv_c_intptr_t="$ac_type"
- ac_type=])
- test -z "$ac_type" && break
- done])
-])
-
-
-# RB_TYPE_UINTPTR_T
-# -----------------
-AC_DEFUN([RB_TYPE_UINTPTR_T],
-[
- AC_CHECK_TYPE([uintptr_t],
- [AC_DEFINE([HAVE_UINTPTR_T], 1,
- [Define to 1 if the system has the type `uintptr_t'.]) ac_cv_c_uintptr_t=yes],
- [for ac_type in 'unsigned int' 'unsigned long int' \
- 'unsigned long long int'; do
- AC_COMPILE_IFELSE(
- [AC_LANG_BOOL_COMPILE_TRY(
- [AC_INCLUDES_DEFAULT],
- [[sizeof (void *) <= sizeof ($ac_type)]])],
- [AC_DEFINE_UNQUOTED([uintptr_t], [$ac_type],
- [Define to the type of an unsigned integer type wide enough to
- hold a pointer, if such a type exists, and if the system
- does not define it.]) ac_cv_c_uintptr_t="$ac_type"
- ac_type=])
- test -z "$ac_type" && break
- done])
-])
-
dnl IPv6 support macros..pretty much swiped from wget
dnl RB_PROTO_INET6
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for libratbox devel.
#
-# $Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+# $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
-$Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
_ACEOF
exit
fi
localstatedir='${prefix}'
fi
-
- { echo "$as_me:$LINENO: checking for int8_t" >&5
-echo $ECHO_N "checking for int8_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int8_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_int8_t=no
- for ac_type in 'int8_t' 'int' 'long int' \
- 'long long int' 'short int' 'signed char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 1)
- < ($ac_type) (((($ac_type) 1 << (8 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- case $ac_type in
- int8_t) ac_cv_c_int8_t=yes ;;
- *) ac_cv_c_int8_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_int8_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int8_t" >&5
-echo "${ECHO_T}$ac_cv_c_int8_t" >&6; }
- case $ac_cv_c_int8_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<_ACEOF
-#define int8_t $ac_cv_c_int8_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for int16_t" >&5
-echo $ECHO_N "checking for int16_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int16_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_int16_t=no
- for ac_type in 'int16_t' 'int' 'long int' \
- 'long long int' 'short int' 'signed char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 1)
- < ($ac_type) (((($ac_type) 1 << (16 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- case $ac_type in
- int16_t) ac_cv_c_int16_t=yes ;;
- *) ac_cv_c_int16_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_int16_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int16_t" >&5
-echo "${ECHO_T}$ac_cv_c_int16_t" >&6; }
- case $ac_cv_c_int16_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<_ACEOF
-#define int16_t $ac_cv_c_int16_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for int32_t" >&5
-echo $ECHO_N "checking for int32_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int32_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_int32_t=no
- for ac_type in 'int32_t' 'int' 'long int' \
- 'long long int' 'short int' 'signed char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 1)
- < ($ac_type) (((($ac_type) 1 << (32 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- case $ac_type in
- int32_t) ac_cv_c_int32_t=yes ;;
- *) ac_cv_c_int32_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_int32_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int32_t" >&5
-echo "${ECHO_T}$ac_cv_c_int32_t" >&6; }
- case $ac_cv_c_int32_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<_ACEOF
-#define int32_t $ac_cv_c_int32_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_int64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_int64_t=no
- for ac_type in 'int64_t' 'int' 'long int' \
- 'long long int' 'short int' 'signed char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1)
- < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 2))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- case $ac_type in
- int64_t) ac_cv_c_int64_t=yes ;;
- *) ac_cv_c_int64_t=$ac_type ;;
-esac
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_int64_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_int64_t" >&5
-echo "${ECHO_T}$ac_cv_c_int64_t" >&6; }
- case $ac_cv_c_int64_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<_ACEOF
-#define int64_t $ac_cv_c_int64_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for uint8_t" >&5
-echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint8_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_uint8_t=no
- for ac_type in 'uint8_t' 'unsigned int' 'unsigned long int' \
- 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (8 - 1) == 1)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- case $ac_type in
- uint8_t) ac_cv_c_uint8_t=yes ;;
- *) ac_cv_c_uint8_t=$ac_type ;;
-esac
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_uint8_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint8_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint8_t" >&6; }
- case $ac_cv_c_uint8_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT8_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint8_t $ac_cv_c_uint8_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for uint16_t" >&5
-echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint16_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_uint16_t=no
- for ac_type in 'uint16_t' 'unsigned int' 'unsigned long int' \
- 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (16 - 1) == 1)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- case $ac_type in
- uint16_t) ac_cv_c_uint16_t=yes ;;
- *) ac_cv_c_uint16_t=$ac_type ;;
-esac
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_uint16_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint16_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint16_t" >&6; }
- case $ac_cv_c_uint16_t in #(
- no|yes) ;; #(
- *)
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint16_t $ac_cv_c_uint16_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for uint32_t" >&5
-echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint32_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_uint32_t=no
- for ac_type in 'uint32_t' 'unsigned int' 'unsigned long int' \
- 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (32 - 1) == 1)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- case $ac_type in
- uint32_t) ac_cv_c_uint32_t=yes ;;
- *) ac_cv_c_uint32_t=$ac_type ;;
-esac
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_uint32_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint32_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint32_t" >&6; }
- case $ac_cv_c_uint32_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT32_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint32_t $ac_cv_c_uint32_t
-_ACEOF
-;;
- esac
-
-
- { echo "$as_me:$LINENO: checking for uint64_t" >&5
-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6; }
-if test "${ac_cv_c_uint64_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_uint64_t=no
- for ac_type in 'uint64_t' 'unsigned int' 'unsigned long int' \
- 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(($ac_type) -1 >> (64 - 1) == 1)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- case $ac_type in
- uint64_t) ac_cv_c_uint64_t=yes ;;
- *) ac_cv_c_uint64_t=$ac_type ;;
-esac
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_uint64_t" != no && break
- done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_uint64_t" >&5
-echo "${ECHO_T}$ac_cv_c_uint64_t" >&6; }
- case $ac_cv_c_uint64_t in #(
- no|yes) ;; #(
- *)
-
-cat >>confdefs.h <<\_ACEOF
-#define _UINT64_T 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint64_t $ac_cv_c_uint64_t
-_ACEOF
-;;
- esac
-
-
-
- { echo "$as_me:$LINENO: checking for intptr_t" >&5
-echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_intptr_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef intptr_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_intptr_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_intptr_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_intptr_t" >&6; }
-if test $ac_cv_type_intptr_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTPTR_T 1
-_ACEOF
- ac_cv_c_intptr_t=yes
-else
- for ac_type in 'int' 'long int' 'long long int'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
-
-cat >>confdefs.h <<_ACEOF
-#define intptr_t $ac_type
-_ACEOF
- ac_cv_c_intptr_t="$ac_type"
- ac_type=
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test -z "$ac_type" && break
- done
-fi
-
-
-
- { echo "$as_me:$LINENO: checking for long long int" >&5
-echo $ECHO_N "checking for long long int... $ECHO_C" >&6; }
-if test "${ac_cv_type_long_long_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- typedef int a[((-9223372036854775807LL < 0
- && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-long long int llmax = 9223372036854775807ll;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- if test "$cross_compiling" = yes; then
- ac_cv_type_long_long_int=yes
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
-int
-main ()
-{
-long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_long_long_int=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_long_long_int=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
-echo "${ECHO_T}$ac_cv_type_long_long_int" >&6; }
- if test $ac_cv_type_long_long_int = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LONG_LONG_INT 1
-_ACEOF
-
- fi
-
-
-
- { echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_intmax_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef intmax_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_intmax_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_intmax_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_intmax_t" >&6; }
-if test $ac_cv_type_intmax_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTMAX_T 1
-_ACEOF
- ac_cv_c_intmax_t=yes
-else
- test $ac_cv_type_long_long_int = yes \
- && ac_type='long long int' \
- || ac_type='long int'
-
-cat >>confdefs.h <<_ACEOF
-#define intmax_t $ac_type
-_ACEOF
- ac_cv_c_intmax_t="$ac_type"
-fi
-
-
-
- { echo "$as_me:$LINENO: checking for unsigned long long int" >&5
-echo $ECHO_N "checking for unsigned long long int... $ECHO_C" >&6; }
-if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-unsigned long long int ull = 18446744073709551615ULL;
- typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-unsigned long long int ullmax = 18446744073709551615ull;
- return (ull << 63 | ull >> 63 | ull << i | ull >> i
- | ullmax / ull | ullmax % ull);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- ac_cv_type_unsigned_long_long_int=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_unsigned_long_long_int=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
-echo "${ECHO_T}$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG_INT 1
-_ACEOF
-
- fi
-
-
-
- { echo "$as_me:$LINENO: checking for uintmax_t" >&5
-echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_uintmax_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef uintmax_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_uintmax_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_uintmax_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6; }
-if test $ac_cv_type_uintmax_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
- ac_cv_c_uintmax_t=yes
-else
- test $ac_cv_type_unsigned_long_long_int = yes \
- && ac_type='unsigned long long int' \
- || ac_type='unsigned long int'
-
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
- ac_cv_c_uintmax_t="$ac_type"
-fi
-
-
-
- { echo "$as_me:$LINENO: checking for uintptr_t" >&5
-echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_uintptr_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-typedef uintptr_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
- return 0;
-if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_uintptr_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_uintptr_t=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6; }
-if test $ac_cv_type_uintptr_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTPTR_T 1
-_ACEOF
- ac_cv_c_uintptr_t=yes
-else
- for ac_type in 'unsigned int' 'unsigned long int' \
- 'unsigned long long int'; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
-
-cat >>confdefs.h <<_ACEOF
-#define uintptr_t $ac_type
-_ACEOF
- ac_cv_c_uintptr_t="$ac_type"
- ac_type=
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test -z "$ac_type" && break
- done
-fi
-
-
-
{ echo "$as_me:$LINENO: checking for pid_t" >&5
echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; }
if test "${ac_cv_type_pid_t+set}" = set; then
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-
-#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-
-
typedef socklen_t ac__type_new_;
int
{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
if test $ac_cv_type_socklen_t = yes; then
- :
+ rb_socklen_t=socklen_t
else
-cat >>confdefs.h <<\_ACEOF
-#define socklen_t unsigned int
+ { echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6; }
+ if test "${rb_socklen_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ rb_socklen_t=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t unsigned long "unsigned long"; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int getpeername (int, $arg2 *, $t *);
+
+int
+main ()
+{
+
+$t len;
+getpeername(0,0,&len);
+
+ ;
+ return 0;
+}
_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+ rb_socklen_t="$t"
+ break
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ done
+
+ if test "x$rb_socklen_t" = x; then
+ { { echo "$as_me:$LINENO: error: Cannot find a type to use in place of socklen_t" >&5
+echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+fi
+
+ { echo "$as_me:$LINENO: result: $rb_socklen_t" >&5
+echo "${ECHO_T}$rb_socklen_t" >&6; }
fi
+
+
+
+
# Check whether --enable-ipv6 was given.
if test "${enable_ipv6+set}" = set; then
enableval=$enable_ipv6; ipv6=$enableval
-for ac_func in socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl
+
+
+for ac_func in socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-for dtype in uint64_t uint32_t uint16_t uint8_t int64_t int32_t int16_t int8_t intmax_t intptr_t uintmax_t uintptr_t
-do
- var="\$ac_cv_c_${dtype}"
- t_type=$(eval echo $var);
- if test "x$t_type" = "xyes"; then
- eval rb_$dtype="\"$dtype\""
- else
- eval rb_$dtype="\"$t_type\""
- fi
-done
-
ac_config_commands="$ac_config_commands include/librb-config.h"
#
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
- rb_uint64_t="$rb_uint64_t"
- rb_uint32_t="$rb_uint32_t"
- rb_uint16_t="$rb_uint16_t"
- rb_uint8_t="$rb_uint8_t"
- rb_int64_t="$rb_int64_t"
- rb_int32_t="$rb_int32_t"
- rb_int16_t="$rb_int16_t"
- rb_int8_t="$rb_int8_t"
- rb_intmax_t="$rb_intmax_t"
- rb_intptr_t="$rb_intptr_t"
- rb_uintmax_t="$rb_uintmax_t"
- rb_uintptr_t="$rb_uintptr_t"
if test x$ac_cv_header_stdc = xyes; then
rb_header_stdc=yes
fi
if test x$ac_cv_header_winsock2_h = xyes; then
rb_winsock2_h=yes
fi
- if test x$ac_cv_type_socklen_t = xyes; then
- rb_socklen_t="socklen_t"
- else
- rb_socklen_t="unsigned int"
- fi
+
+ rb_socklen_t=$rb_socklen_t
+
if test "x$rb_have_sockaddr_storage" = "xyes"; then
rb_sockaddr_storage="yes"
else
echo '#include <errno.h>' >> $outfile
fi
+echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
+
+
if test "x$rb_sockaddr_sa_len" = "xyes"; then
echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile
fi
-echo "typedef $rb_uint64_t rb_uint64_t;" >> $outfile
-echo "typedef $rb_uint32_t rb_uint32_t;" >> $outfile
-echo "typedef $rb_uint16_t rb_uint16_t;" >> $outfile
-echo "typedef $rb_uint8_t rb_uint8_t;" >> $outfile
-echo "typedef $rb_int64_t rb_int64_t;" >> $outfile
-echo "typedef $rb_int32_t rb_int32_t;" >> $outfile
-echo "typedef $rb_int16_t rb_int16_t;" >> $outfile
-echo "typedef $rb_int8_t rb_int8_t;" >> $outfile
-echo "typedef $rb_intmax_t rb_intmax_t;" >> $outfile
-echo "typedef $rb_intptr_t rb_intptr_t;" >> $outfile
-echo "typedef $rb_uintmax_t rb_uintmax_t;" >> $outfile
-echo "typedef $rb_uintptr_t rb_uintptr_t;" >> $outfile
-echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
-
if test "x$rb_sockaddr_storage" = "xyes"; then
echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
else
- echo 'struct rb_sockaddr_storage { rb_uint8_t _padding128; };' >> $outfile
+ echo 'struct rb_sockaddr_storage { uint8_t _padding128; };' >> $outfile
fi
cat >> $outfile <<\_______EOF
-dnl $Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $
+dnl $Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $
dnl Process this file with autoconf to produce a configure script.
dnl TODO: clean up all the OpenSSL and shared module checking stuff;
AC_PREREQ(2.60)
AUTOMAKE_OPTIONS = 1.10
dnl Sneaky way to get an Id tag into the configure script
-AC_COPYRIGHT([$Id: configure.ac 25574 2008-06-20 21:49:06Z androsyn $])
+AC_COPYRIGHT([$Id: configure.ac 25689 2008-07-10 17:13:27Z androsyn $])
AC_INIT([libratbox],[devel])
AM_INIT_AUTOMAKE(AC_PACKAGE_TARNAME, AC_PACKAGE_VERSION, -)
localstatedir='${prefix}'
fi
-AC_TYPE_INT8_T
-AC_TYPE_INT16_T
-AC_TYPE_INT32_T
-AC_TYPE_INT64_T
-AC_TYPE_UINT8_T
-AC_TYPE_UINT16_T
-AC_TYPE_UINT32_T
-AC_TYPE_UINT64_T
-
-RB_TYPE_INTPTR_T
-RB_TYPE_INTMAX_T
-RB_TYPE_UINTMAX_T
-RB_TYPE_UINTPTR_T
-
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
#endif
]])
-AC_CHECK_TYPE(socklen_t, ,
-[AC_DEFINE([socklen_t], [unsigned int],
-[If we don't have a real socklen_t, unsigned int is good enough.])],
-[
-#ifdef HAVE_SYS_TYPES_H
+AC_CHECK_TYPE([socklen_t], rb_socklen_t=socklen_t,[
+ AC_MSG_CHECKING([for socklen_t equivalent])
+ AC_CACHE_VAL([rb_socklen_t],
+ [
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ rb_socklen_t=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t unsigned long "unsigned long"; do
+ AC_TRY_COMPILE([
#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
+int getpeername (int, $arg2 *, $t *);
+],[
+$t len;
+getpeername(0,0,&len);
+],[
+ rb_socklen_t="$t"
+ break
])
+ done
+ done
+
+ if test "x$rb_socklen_t" = x; then
+ AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+ fi
+ ])
+ AC_MSG_RESULT($rb_socklen_t)],
+ [#include <sys/types.h>
+#include <sys/socket.h>])
+
+
+
+
AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),[ipv6=$enableval],[ipv6=yes])
dnl check for various functions...
-AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl])
+AC_CHECK_FUNCS([socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn strlcpy strlcat strnlen fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage])
AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep]))
AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create]))
AC_SUBST(RB_PREFIX)
-for dtype in uint64_t uint32_t uint16_t uint8_t int64_t int32_t int16_t int8_t intmax_t intptr_t uintmax_t uintptr_t
-do
- var="\$ac_cv_c_${dtype}"
- t_type=$(eval echo $var);
- if test "x$t_type" = "xyes"; then
- eval rb_$dtype="\"$dtype\""
- else
- eval rb_$dtype="\"$t_type\""
- fi
-done
-
AC_CONFIG_COMMANDS([include/librb-config.h],
[
outfile=include/librb-config.h.tmp
echo '#include <errno.h>' >> $outfile
fi
+echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
+
+
if test "x$rb_sockaddr_sa_len" = "xyes"; then
echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile
fi
-echo "typedef $rb_uint64_t rb_uint64_t;" >> $outfile
-echo "typedef $rb_uint32_t rb_uint32_t;" >> $outfile
-echo "typedef $rb_uint16_t rb_uint16_t;" >> $outfile
-echo "typedef $rb_uint8_t rb_uint8_t;" >> $outfile
-echo "typedef $rb_int64_t rb_int64_t;" >> $outfile
-echo "typedef $rb_int32_t rb_int32_t;" >> $outfile
-echo "typedef $rb_int16_t rb_int16_t;" >> $outfile
-echo "typedef $rb_int8_t rb_int8_t;" >> $outfile
-echo "typedef $rb_intmax_t rb_intmax_t;" >> $outfile
-echo "typedef $rb_intptr_t rb_intptr_t;" >> $outfile
-echo "typedef $rb_uintmax_t rb_uintmax_t;" >> $outfile
-echo "typedef $rb_uintptr_t rb_uintptr_t;" >> $outfile
-echo "typedef $rb_socklen_t rb_socklen_t;" >> $outfile
-
if test "x$rb_sockaddr_storage" = "xyes"; then
echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile
else
- echo 'struct rb_sockaddr_storage { rb_uint8_t _padding[128]; };' >> $outfile
+ echo 'struct rb_sockaddr_storage { uint8_t _padding[128]; };' >> $outfile
fi
cat >> $outfile <<\_______EOF
fi
],[
- rb_uint64_t="$rb_uint64_t"
- rb_uint32_t="$rb_uint32_t"
- rb_uint16_t="$rb_uint16_t"
- rb_uint8_t="$rb_uint8_t"
- rb_int64_t="$rb_int64_t"
- rb_int32_t="$rb_int32_t"
- rb_int16_t="$rb_int16_t"
- rb_int8_t="$rb_int8_t"
- rb_intmax_t="$rb_intmax_t"
- rb_intptr_t="$rb_intptr_t"
- rb_uintmax_t="$rb_uintmax_t"
- rb_uintptr_t="$rb_uintptr_t"
if test x$ac_cv_header_stdc = xyes; then
rb_header_stdc=yes
fi
if test x$ac_cv_header_winsock2_h = xyes; then
rb_winsock2_h=yes
fi
- if test x$ac_cv_type_socklen_t = xyes; then
- rb_socklen_t="socklen_t"
- else
- rb_socklen_t="unsigned int"
- fi
+
+ rb_socklen_t=$rb_socklen_t
+
if test "x$rb_have_sockaddr_storage" = "xyes"; then
rb_sockaddr_storage="yes"
else
--- /dev/null
+
+
+#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM)
+void arc4random_stir(void);
+uint32_t arc4random(void);
+void arc4random_addrandom(uint8_t *dat, int datlen);
+#endif
\ No newline at end of file
*/
rb_dlink_node node;
int fd; /* So we can use the rb_fde_t as a callback ptr */
- rb_uint8_t flags;
- rb_uint8_t type;
+ uint8_t flags;
+ uint8_t type;
int pflags;
char *desc;
PF *read_handler;
void rb_ssl_start_accepted(rb_fde_t *new_F, ACCB *cb, void *data, int timeout);
void rb_ssl_start_connected(rb_fde_t *F, CNCB *callback, void *data, int timeout);
void rb_connect_tcp_ssl(rb_fde_t *F, struct sockaddr *dest, struct sockaddr *clocal, int socklen, CNCB *callback, void *data, int timeout);
-void rb_ssl_accept_setup(rb_fde_t *F, int new_fd, struct sockaddr *st, int addrlen);
+void rb_ssl_accept_setup(rb_fde_t *F, rb_fde_t *new_F, struct sockaddr *st, int addrlen);
void rb_ssl_shutdown(rb_fde_t *F);
ssize_t rb_ssl_read(rb_fde_t *F, void *buf, size_t count);
ssize_t rb_ssl_write(rb_fde_t *F, const void *buf, size_t count);
*/
#undef HAVE_ALLOCA_H
+/* Define to 1 if you have the `arc4random' function. */
+#undef HAVE_ARC4RANDOM
+
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
+/* Define to 1 if you have the `getrusage' function. */
+#undef HAVE_GETRUSAGE
+
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Has GnuTLS */
#undef HAVE_GNUTLS
-/* Define to 1 if the system has the type `intmax_t'. */
-#undef HAVE_INTMAX_T
-
-/* Define to 1 if the system has the type `intptr_t'. */
-#undef HAVE_INTPTR_T
-
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the `kevent' function. */
#undef HAVE_KEVENT
-/* Define to 1 if the system has the type `long long int'. */
-#undef HAVE_LONG_LONG_INT
-
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <time.h> header file. */
#undef HAVE_TIME_H
-/* Define to 1 if the system has the type `uintmax_t'. */
-#undef HAVE_UINTMAX_T
-
-/* Define to 1 if the system has the type `uintptr_t'. */
-#undef HAVE_UINTPTR_T
-
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if the system has the type `unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP
# undef _GNU_SOURCE
#endif
-/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
- #define below would cause a syntax error. */
-#undef _UINT32_T
-
-/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
- #define below would cause a syntax error. */
-#undef _UINT64_T
-
-/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
- #define below would cause a syntax error. */
-#undef _UINT8_T
-
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
#undef inline
#endif
-/* Define to the type of a signed integer type of width exactly 16 bits if
- such a type exists and the standard includes do not define it. */
-#undef int16_t
-
-/* Define to the type of a signed integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-#undef int32_t
-
-/* Define to the type of a signed integer type of width exactly 64 bits if
- such a type exists and the standard includes do not define it. */
-#undef int64_t
-
-/* Define to the type of a signed integer type of width exactly 8 bits if such
- a type exists and the standard includes do not define it. */
-#undef int8_t
-
-/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
- not define. */
-#undef intmax_t
-
-/* Define to the type of a signed integer type wide enough to hold a pointer,
- if such a type exists, and if the system does not define it. */
-#undef intptr_t
-
/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
-/* If we don't have a real socklen_t, unsigned int is good enough. */
-#undef socklen_t
-
/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
-/* Define to the type of an unsigned integer type of width exactly 16 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint16_t
-
-/* Define to the type of an unsigned integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint32_t
-
-/* Define to the type of an unsigned integer type of width exactly 64 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint64_t
-
-/* Define to the type of an unsigned integer type of width exactly 8 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint8_t
-
-/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
- do not define. */
-#undef uintmax_t
-
-/* Define to the type of an unsigned integer type wide enough to hold a
- pointer, if such a type exists, and if the system does not define it. */
-#undef uintptr_t
-
/* Define as `fork' if `vfork' does not work. */
#undef vfork
--- /dev/null
+/* include/libratbox_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* This is a Cygwin system */
+#undef CYGWIN
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <crypt.h> header file. */
+#undef HAVE_CRYPT_H
+
+/* Define to 1 if you have devpoll */
+#undef HAVE_DEVPOLL
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `epoll_ctl' function. */
+#undef HAVE_EPOLL_CTL
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if you have the `fstat' function. */
+#define HAVE_FSTAT 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `kevent' function. */
+#undef HAVE_KEVENT
+
+/* Define to 1 if the system has the type `long long int'. */
+#define HAVE_LONG_LONG_INT 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define if you have nanosleep */
+#define HAVE_NANOSLEEP 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Has OpenSSL */
+#undef HAVE_OPENSSL
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the `port_create' function. */
+#undef HAVE_PORT_CREATE
+
+/* Define to 1 if you have the <port.h> header file. */
+#undef HAVE_PORT_H
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#define HAVE_POSIX_SPAWN 1
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `signalfd' function. */
+#undef HAVE_SIGNALFD
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Define to 1 if you have the <spawn.h> header file. */
+#undef HAVE_SPAWN_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcat' function. */
+#undef HAVE_STRLCAT
+
+/* Define to 1 if you have the `strlcpy' function. */
+#undef HAVE_STRLCPY
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtok_r' function. */
+#define HAVE_STRTOK_R 1
+
+/* Define to 1 if the system has the type `struct sockaddr_in6'. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the <sys/devpoll.h> header file. */
+#undef HAVE_SYS_DEVPOLL_H
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+#undef HAVE_SYS_EPOLL_H
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+#undef HAVE_SYS_EVENT_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/signalfd.h> header file. */
+#undef HAVE_SYS_SIGNALFD_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define if you have timer_create */
+#undef HAVE_TIMER_CREATE
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if the system has the type `uintmax_t'. */
+#define HAVE_UINTMAX_T 1
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#define HAVE_UINTPTR_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the `vfork' function. */
+#define HAVE_VFORK 1
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you are on windows */
+#undef HAVE_WIN32
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#define HAVE_WORKING_VFORK 1
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* This is a MinGW system */
+#undef MINGW
+
+/* Define this to disable debugging support. */
+#undef NDEBUG
+
+/* Define if your system needs crypt. */
+#undef NEED_CRYPT
+
+/* Define to 1 if you wish to disable the block allocator. */
+#undef NOBALLOC
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Defined to mark profiling is enabled */
+#undef RATBOX_PROFILE
+
+/* Prefix where libratbox is installed. */
+#define RB_PREFIX "/ratbox"
+
+/* Define to 1 if sockaddr has a 'sa_len' member. */
+#undef SOCKADDR_IN_HAS_LEN
+
+/* Define this to enable soft asserts. */
+#undef SOFT_ASSERT
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if we can use timer_create(CLOCK_REALTIME,...) */
+#undef USE_TIMER_CREATE
+
+/* This is a Windows system */
+#undef WINDOWS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT64_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT8_T
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline inline
+#endif
+
+/* Define to the type of a signed integer type of width exactly 16 bits if
+ such a type exists and the standard includes do not define it. */
+#undef int16_t
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef int32_t
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef int64_t
+
+/* Define to the type of a signed integer type of width exactly 8 bits if such
+ a type exists and the standard includes do not define it. */
+#undef int8_t
+
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+ not define. */
+#undef intmax_t
+
+/* Define to the type of a signed integer type wide enough to hold a pointer,
+ if such a type exists, and if the system does not define it. */
+#undef intptr_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* If system does not define sa_family_t, define it here. */
+#undef sa_family_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* If we don't have a real socklen_t, unsigned int is good enough. */
+#undef socklen_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint16_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint64_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint8_t
+
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+ do not define. */
+#undef uintmax_t
+
+/* Define to the type of an unsigned integer type wide enough to hold a
+ pointer, if such a type exists, and if the system does not define it. */
+#undef uintptr_t
+
+/* Define as `fork' if `vfork' does not work. */
+#define vfork fork
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: rb_commio.h 25327 2008-05-08 19:32:13Z androsyn $
+ * $Id: rb_commio.h 25693 2008-07-10 18:27:23Z androsyn $
*/
#ifndef RB_LIB_H
void rb_fdlist_init(int closeall, int maxfds, size_t heapsize);
-rb_fde_t * rb_open(int, rb_uint8_t, const char *);
+rb_fde_t * rb_open(int, uint8_t, const char *);
void rb_close(rb_fde_t *);
void rb_dump_fd(DUMPCB *, void *xdata);
void rb_note(rb_fde_t *, const char *);
int rb_send_fd_buf(rb_fde_t *xF, rb_fde_t **F, int count, void *data, size_t datasize);
int rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int count);
-void rb_set_type(rb_fde_t *F, rb_uint8_t type);
-rb_uint8_t rb_get_type(rb_fde_t *F);
+void rb_set_type(rb_fde_t *F, uint8_t type);
+uint8_t rb_get_type(rb_fde_t *F);
const char *rb_get_iotype(void);
int rb_init_prng(const char *path, prng_seed_t seed_type);
int rb_get_random(void *buf, size_t len);
+int rb_get_pseudo_random(void *buf, size_t len);
void rb_ssl_start_accepted(rb_fde_t *new_F, ACCB *cb, void *data, int timeout);
void rb_ssl_start_connected(rb_fde_t *F, CNCB *callback, void *data, int timeout);
int rb_supports_ssl(void);
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: rb_linebuf.h 25227 2008-04-12 22:20:43Z jilles $
+ * $Id: rb_linebuf.h 25675 2008-07-06 04:13:05Z androsyn $
*/
#ifndef RB_LIB_H
typedef struct _buf_line
{
char buf[BUF_DATA_SIZE + 2];
- rb_uint8_t terminated; /* Whether we've terminated the buffer */
- rb_uint8_t raw; /* Whether this linebuf may hold 8-bit data */
+ uint8_t terminated; /* Whether we've terminated the buffer */
+ uint8_t raw; /* Whether this linebuf may hold 8-bit data */
int len; /* How much data we've got */
int refcount; /* how many linked lists are we in? */
} buf_line_t;
-# $Id: Makefile.am 25532 2008-06-11 14:40:44Z androsyn $
+# $Id: Makefile.am 25689 2008-07-10 17:13:27Z androsyn $
AUTOMAKE_OPTIONS = foreign
select.c \
kqueue.c \
rawbuf.c \
- patricia.c
+ patricia.c \
+ arc4random.c
-libratbox_la_LDFLAGS = -version-info 3:0:0 -no-undefined -export-symbols export-syms.txt
+libratbox_la_LDFLAGS = -avoid-version -no-undefined -export-symbols export-syms.txt
libratbox_la_LIBADD = @CRYPT_LIB@ @SSL_LIBS@ @GNUTLS_LIBS@
lib_LTLIBRARIES = libratbox.la
@SET_MAKE@
-# $Id: Makefile.am 25532 2008-06-11 14:40:44Z androsyn $
+# $Id: Makefile.am 25689 2008-07-10 17:13:27Z androsyn $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
commio.lo openssl.lo gnutls.lo nossl.lo event.lo ratbox_lib.lo \
rb_memory.lo linebuf.lo snprintf.lo tools.lo helper.lo \
devpoll.lo epoll.lo poll.lo ports.lo sigio.lo select.lo \
- kqueue.lo rawbuf.lo patricia.lo
+ kqueue.lo rawbuf.lo patricia.lo arc4random.lo
libratbox_la_OBJECTS = $(am_libratbox_la_OBJECTS)
libratbox_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
select.c \
kqueue.c \
rawbuf.c \
- patricia.c
+ patricia.c \
+ arc4random.c
-libratbox_la_LDFLAGS = -version-info 3:0:0 -no-undefined -export-symbols export-syms.txt
+libratbox_la_LDFLAGS = -avoid-version -no-undefined -export-symbols export-syms.txt
libratbox_la_LIBADD = @CRYPT_LIB@ @SSL_LIBS@ @GNUTLS_LIBS@
lib_LTLIBRARIES = libratbox.la
all: all-am
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc4random.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balloc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypt.Plo@am__quote@
--- /dev/null
+/* $Id: arc4random.c 25705 2008-07-11 18:21:57Z androsyn $ */
+/* $$$: arc4random.c 2005/02/08 robert */
+/* $NetBSD: arc4random.c,v 1.5.2.1 2004/03/26 22:52:50 jmc Exp $ */
+/* $OpenBSD: arc4random.c,v 1.6 2001/06/05 05:05:38 pvalchev Exp $ */
+
+/*
+ * Arc4 random number generator for OpenBSD.
+ * Copyright 1996 David Mazieres <dm@lcs.mit.edu>.
+ *
+ * Modification and redistribution in source and binary forms is
+ * permitted provided that due credit is given to the author and the
+ * OpenBSD project by leaving this copyright notice intact.
+ */
+
+/*
+ * This code is derived from section 17.1 of Applied Cryptography,
+ * second edition, which describes a stream cipher allegedly
+ * compatible with RSA Labs "RC4" cipher (the actual description of
+ * which is a trade secret). The same algorithm is used as a stream
+ * cipher called "arcfour" in Tatu Ylonen's ssh package.
+ *
+ * Here the stream cipher has been modified always to include the time
+ * when initializing the state. That makes it impossible to
+ * regenerate the same random sequence twice, so this can't be used
+ * for encryption, but will generate good random numbers.
+ *
+ * RC4 is a registered trademark of RSA Laboratories.
+ */
+
+
+#include <libratbox_config.h>
+#include <ratbox_lib.h>
+
+#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_ARC4RANDOM)
+
+#include "arc4random.h"
+
+#ifdef HAVE_GETRUSAGE
+#include <sys/resource.h>
+#endif
+
+
+
+struct arc4_stream {
+ uint8_t i;
+ uint8_t j;
+ uint8_t s[256];
+};
+
+
+static int rs_initialized;
+static struct arc4_stream rs;
+
+static inline void arc4_init(struct arc4_stream *);
+static inline void arc4_addrandom(struct arc4_stream *, uint8_t *, int);
+static void arc4_stir(struct arc4_stream *);
+static inline uint8_t arc4_getbyte(struct arc4_stream *);
+static inline uint32_t arc4_getword(struct arc4_stream *);
+
+static inline void
+arc4_init(struct arc4_stream *as)
+{
+ int n;
+
+ for (n = 0; n < 256; n++)
+ as->s[n] = n;
+ as->i = 0;
+ as->j = 0;
+}
+
+static inline void
+arc4_addrandom(struct arc4_stream *as, uint8_t *dat, int datlen)
+{
+ int n;
+ uint8_t si;
+
+ as->i--;
+ for (n = 0; n < 256; n++) {
+ as->i = (as->i + 1);
+ si = as->s[as->i];
+ as->j = (as->j + si + dat[n % datlen]);
+ as->s[as->i] = as->s[as->j];
+ as->s[as->j] = si;
+ }
+ as->j = as->i;
+}
+
+static void
+arc4_stir(struct arc4_stream *as)
+{
+ struct timeval tv;
+ pid_t pid;
+ int n;
+ /* XXX this doesn't support egd sources or similiar */
+
+ pid = getpid();
+ arc4_addrandom(as, (void *)&pid, sizeof(pid));
+
+ rb_gettimeofday(&tv, NULL);
+ arc4_addrandom(as, (void *)&tv.tv_sec, sizeof(&tv.tv_sec));
+ arc4_addrandom(as, (void *)&tv.tv_usec, sizeof(&tv.tv_usec));
+ rb_gettimeofday(&tv, NULL);
+ arc4_addrandom(as, (void *)&tv.tv_usec, sizeof(&tv.tv_usec));
+
+#if defined(HAVE_GETRUSAGE) && RUSAGE_SELF
+ {
+ struct rusage buf;
+ getrusage(RUSAGE_SELF, &buf);
+ arc4_addrandom(as, (void *)&buf, sizeof(buf));
+ memset(&buf, 0, sizeof(buf))
+ }
+#endif
+
+#if !defined(WIN32)
+ {
+ uint8_t rnd[128];
+ int fd;
+ fd = open("/dev/urandom", O_RDONLY);
+ if (fd != -1)
+ {
+ read(fd, rnd, sizeof(rnd));
+ close(fd);
+ arc4_addrandom(as, (void *)rnd, sizeof(rnd));
+ }
+ }
+#else
+ {
+ LARGE_INTEGER performanceCount;
+ if (QueryPerformanceCounter (&performanceCount))
+ {
+ arc4_addrandom(as, (void *)&performanceCount, sizeof(performanceCount));
+ }
+ }
+#endif
+
+
+ /*
+ * Throw away the first N words of output, as suggested in the
+ * paper "Weaknesses in the Key Scheduling Algorithm of RC4"
+ * by Fluher, Mantin, and Shamir.
+ * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps
+ * N = 256 in our case.
+ */
+ for (n = 0; n < 256 * 4; n++)
+ arc4_getbyte(as);
+}
+
+static inline uint8_t
+arc4_getbyte(struct arc4_stream *as)
+{
+ uint8_t si, sj;
+
+ as->i = (as->i + 1);
+ si = as->s[as->i];
+ as->j = (as->j + si);
+ sj = as->s[as->j];
+ as->s[as->i] = sj;
+ as->s[as->j] = si;
+ return (as->s[(si + sj) & 0xff]);
+}
+
+static inline uint32_t
+arc4_getword(struct arc4_stream *as)
+{
+ uint32_t val;
+ val = arc4_getbyte(as) << 24;
+ val |= arc4_getbyte(as) << 16;
+ val |= arc4_getbyte(as) << 8;
+ val |= arc4_getbyte(as);
+ return val;
+}
+
+void
+arc4random_stir(void)
+{
+ if (!rs_initialized) {
+ arc4_init(&rs);
+ rs_initialized = 1;
+ }
+ arc4_stir(&rs);
+}
+
+void
+arc4random_addrandom(uint8_t *dat, int datlen)
+{
+ if (!rs_initialized)
+ arc4random_stir();
+ arc4_addrandom(&rs, dat, datlen);
+}
+
+uint32_t
+arc4random(void)
+{
+ if (!rs_initialized)
+ arc4random_stir();
+ return arc4_getword(&rs);
+}
+
+#endif
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: balloc.c 25375 2008-05-16 15:19:51Z androsyn $
+ * $Id: balloc.c 25675 2008-07-06 04:13:05Z androsyn $
*/
/*
{
rb_heap_block *b;
unsigned long i;
- rb_uintptr_t offset;
+ uintptr_t offset;
/* Setup the initial data structure. */
b = rb_malloc(sizeof(rb_heap_block));
{
return (1);
}
- offset = (rb_uintptr_t)b->elems;
+ offset = (uintptr_t)b->elems;
/* Setup our blocks now */
for (i = 0; i < bh->elemsPerBlock; i++, offset += (bh->elemSize + sizeof(rb_heap_block *)))
{
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: commio.c 25375 2008-05-16 15:19:51Z androsyn $
+ * $Id: commio.c 25795 2008-07-29 15:26:55Z androsyn $
*/
#include <libratbox_config.h>
#include <ratbox_lib.h>
add_fd(int fd)
{
rb_fde_t *F = rb_find_fd(fd);
- rb_dlink_list *list;
/* look up to see if we have it already */
if(F != NULL)
F = rb_bh_alloc(fd_heap);
F->fd = fd;
- list = &rb_fd_table[rb_hash_fd(fd)];
- rb_dlinkAdd(F, &F->node, list);
+ rb_dlinkAdd(F, &F->node, &rb_fd_table[rb_hash_fd(fd)]);
return(F);
}
static inline void
remove_fd(rb_fde_t *F)
{
- rb_dlink_list *list;
-
if(F == NULL || !IsFDOpen(F))
return;
- list = &rb_fd_table[rb_hash_fd(F->fd)];
- rb_dlinkMoveNode(&F->node, list, &closed_list);
+ rb_dlinkMoveNode(&F->node, &rb_fd_table[rb_hash_fd(F->fd)], &closed_list);
}
static void
new_F = rb_open(new_fd, RB_FD_SOCKET, "Incoming Connection");
+ if(new_F == NULL)
+ {
+ rb_lib_log("rb_accept: new_F == NULL on incoming connection. Closing new_fd == %d\n", new_fd);
+ close(new_fd);
+ continue;
+ }
+
if(rb_unlikely(!rb_set_nb(new_F)))
{
rb_get_errno();
#ifdef HAVE_SSL
if(F->type & RB_FD_SSL)
{
- rb_ssl_accept_setup(F, new_fd, (struct sockaddr *)&st, addrlen);
+ rb_ssl_accept_setup(F, new_F, (struct sockaddr *)&st, addrlen);
}
else
#endif /* HAVE_SSL */
F = rb_open(fd, RB_FD_SOCKET, note);
if(F == NULL)
+ {
+ rb_lib_log("rb_socket: rb_open returns NULL on FD %d: %s, closing fd", fd, strerror(errno));
+ close(fd);
return NULL;
-
+ }
/* Set the socket non-blocking, and other wonderful bits */
if(rb_unlikely(!rb_set_nb(F)))
{
memset(&in4, 0, sizeof(struct sockaddr_in));
in4.sin_family = AF_INET;
in4.sin_port = in6->sin6_port;
- in4.sin_addr.s_addr = ((rb_uint32_t *) & in6->sin6_addr)[3];
+ in4.sin_addr.s_addr = ((uint32_t *) & in6->sin6_addr)[3];
memcpy(in, &in4, sizeof(struct sockaddr_in));
}
return;
/* Called to open a given filedescriptor */
rb_fde_t *
-rb_open(int fd, rb_uint8_t type, const char *desc)
+rb_open(int fd, uint8_t type, const char *desc)
{
- rb_fde_t *F = add_fd(fd);
+ rb_fde_t *F;
lrb_assert(fd >= 0);
+ F = add_fd(fd);
+
+ lrb_assert(!IsFDOpen(F));
if(rb_unlikely(IsFDOpen(F)))
{
+ const char *fdesc;
+ if(F != NULL && F->desc != NULL)
+ fdesc = F->desc;
+ else
+ fdesc = "NULL";
+ rb_lib_log("Trying to rb_open an already open FD: %d desc: %d", fd, fdesc);
return NULL;
}
- lrb_assert(!IsFDOpen(F));
F->fd = fd;
F->type = type;
SetFDOpen(F);
}
void
-rb_set_type(rb_fde_t *F, rb_uint8_t type)
+rb_set_type(rb_fde_t *F, uint8_t type)
{
/* if the caller is calling this, lets assume they have a clue */
F->type = type;
return;
}
-rb_uint8_t
+uint8_t
rb_get_type(rb_fde_t *F)
{
return F->type;
struct cmsghdr *cmsg;
struct iovec iov[1];
struct stat st;
- rb_uint8_t stype = RB_FD_UNKNOWN;
+ uint8_t stype = RB_FD_UNKNOWN;
const char *desc;
int fd, len, x, rfds;
*
* ARCHITECTURE ASSUMPTIONS:
* It is assumed that the 8-byte arrays passed by reference can be
- * addressed as arrays of rb_uint32_t's (ie. the CPU is not picky about
+ * addressed as arrays of uint32_t's (ie. the CPU is not picky about
* alignment).
*/
static u_char inv_comp_perm[56];
static u_char u_sbox[8][64];
static u_char un_pbox[32];
-static rb_uint32_t en_keysl[16], en_keysr[16];
-static rb_uint32_t de_keysl[16], de_keysr[16];
-static rb_uint32_t ip_maskl[8][256], ip_maskr[8][256];
-static rb_uint32_t fp_maskl[8][256], fp_maskr[8][256];
-static rb_uint32_t key_perm_maskl[8][128], key_perm_maskr[8][128];
-static rb_uint32_t comp_maskl[8][128], comp_maskr[8][128];
-static rb_uint32_t saltbits;
-static rb_uint32_t old_salt;
-static rb_uint32_t old_rawkey0, old_rawkey1;
+static uint32_t en_keysl[16], en_keysr[16];
+static uint32_t de_keysl[16], de_keysr[16];
+static uint32_t ip_maskl[8][256], ip_maskr[8][256];
+static uint32_t fp_maskl[8][256], fp_maskr[8][256];
+static uint32_t key_perm_maskl[8][128], key_perm_maskr[8][128];
+static uint32_t comp_maskl[8][128], comp_maskr[8][128];
+static uint32_t saltbits;
+static uint32_t old_salt;
+static uint32_t old_rawkey0, old_rawkey1;
/* Static stuff that stays resident and doesn't change after
* reentrant. */
static u_char init_perm[64], final_perm[64];
static u_char m_sbox[4][4096];
-static rb_uint32_t psbox[4][256];
+static uint32_t psbox[4][256];
2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25
};
-static const rb_uint32_t bits32[32] =
+static const uint32_t bits32[32] =
{
0x80000000, 0x40000000, 0x20000000, 0x10000000,
0x08000000, 0x04000000, 0x02000000, 0x01000000,
};
static const u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
-static const rb_uint32_t *bits28, *bits24;
+static const uint32_t *bits28, *bits24;
static int
des_init(void)
{
int i, j, b, k, inbit, obit;
- rb_uint32_t *p, *il, *ir, *fl, *fr;
+ uint32_t *p, *il, *ir, *fl, *fr;
static int des_initialised = 0;
if (des_initialised==1)
static void
setup_salt(long salt)
{
- rb_uint32_t obit, saltbit;
+ uint32_t obit, saltbit;
int i;
if (salt == (long)old_salt)
static int
des_setkey(const char *key)
{
- rb_uint32_t k0, k1, rawkey0, rawkey1;
+ uint32_t k0, k1, rawkey0, rawkey1;
int shifts, round;
des_init();
- rawkey0 = ntohl(*(const rb_uint32_t *) key);
- rawkey1 = ntohl(*(const rb_uint32_t *) (key + 4));
+ rawkey0 = ntohl(*(const uint32_t *) key);
+ rawkey1 = ntohl(*(const uint32_t *) (key + 4));
if ((rawkey0 | rawkey1)
&& rawkey0 == old_rawkey0
*/
shifts = 0;
for (round = 0; round < 16; round++) {
- rb_uint32_t t0, t1;
+ uint32_t t0, t1;
shifts += key_shifts[round];
static int
-do_des( rb_uint32_t l_in, rb_uint32_t r_in, rb_uint32_t *l_out, rb_uint32_t *r_out, int count)
+do_des( uint32_t l_in, uint32_t r_in, uint32_t *l_out, uint32_t *r_out, int count)
{
/*
* l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
*/
- rb_uint32_t l, r, *kl, *kr, *kl1, *kr1;
- rb_uint32_t f, r48l, r48r;
+ uint32_t l, r, *kl, *kr, *kl1, *kr1;
+ uint32_t f, r48l, r48r;
int round;
if (count == 0) {
#if 0
static int
-des_cipher(const char *in, char *out, rb_uint32_t salt, int count)
+des_cipher(const char *in, char *out, uint32_t salt, int count)
{
- rb_uint32_t l_out, r_out, rawl, rawr;
+ uint32_t l_out, r_out, rawl, rawr;
int retval;
union {
- rb_uint32_t *ui32;
+ uint32_t *ui32;
const char *c;
} trans;
setkey(const char *key)
{
int i, j;
- rb_uint32_t packed_keys[2];
+ uint32_t packed_keys[2];
u_char *p;
p = (u_char *) packed_keys;
void
encrypt(char *block, int flag)
{
- rb_uint32_t io[2];
+ uint32_t io[2];
u_char *p;
int i, j;
static char *
__des_crypt(const char *key, const char *setting)
{
- rb_uint32_t count, salt, l, r0, r1, keybuf[2];
+ uint32_t count, salt, l, r0, r1, keybuf[2];
u_char *p, *q;
static char output[21];
/* MD5 context. */
struct MD5Context {
- rb_uint32_t state[4]; /* state (ABCD) */
- rb_uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */
+ uint32_t state[4]; /* state (ABCD) */
+ uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
};
static void __md5_Update (struct MD5Context *, const char *, unsigned int);
static void __md5_Pad (struct MD5Context *);
static void __md5_Final (char [16], struct MD5Context *);
-static void __md5_Transform (rb_uint32_t [4], const unsigned char [64]);
+static void __md5_Transform (uint32_t [4], const unsigned char [64]);
static const char __md5__magic[] = "$1$"; /* This string is magic for this algorithm. Having
#else /* i386 */
/*
- * __md5_Encodes input (rb_uint32_t) into output (unsigned char). Assumes len is
+ * __md5_Encodes input (uint32_t) into output (unsigned char). Assumes len is
* a multiple of 4.
*/
static void
-__md5_Encode (unsigned char *output, rb_uint32_t *input, unsigned int len)
+__md5_Encode (unsigned char *output, uint32_t *input, unsigned int len)
{
unsigned int i, j;
}
/*
- * __md5_Decodes input (unsigned char) into output (rb_uint32_t). Assumes len is
+ * __md5_Decodes input (unsigned char) into output (uint32_t). Assumes len is
* a multiple of 4.
*/
static void
-__md5_Decode (rb_uint32_t *output, const unsigned char *input, unsigned int len)
+__md5_Decode (uint32_t *output, const unsigned char *input, unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((rb_uint32_t)input[j]) | (((rb_uint32_t)input[j+1]) << 8) |
- (((rb_uint32_t)input[j+2]) << 16) | (((rb_uint32_t)input[j+3]) << 24);
+ output[i] = ((uint32_t)input[j]) | (((uint32_t)input[j+1]) << 8) |
+ (((uint32_t)input[j+2]) << 16) | (((uint32_t)input[j+3]) << 24);
}
#endif /* i386 */
* Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+ (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+ (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+ (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (rb_uint32_t)(ac); \
+ (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
lindex = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
- if ((context->count[0] += ((rb_uint32_t)inputLen << 3))
- < ((rb_uint32_t)inputLen << 3))
+ if ((context->count[0] += ((uint32_t)inputLen << 3))
+ < ((uint32_t)inputLen << 3))
context->count[1]++;
- context->count[1] += ((rb_uint32_t)inputLen >> 29);
+ context->count[1] += ((uint32_t)inputLen >> 29);
partLen = 64 - lindex;
static void
__md5_Transform (state, block)
- rb_uint32_t state[4];
+ uint32_t state[4];
const unsigned char block[64];
{
- rb_uint32_t a, b, c, d, x[16];
+ uint32_t a, b, c, d, x[16];
#if MD5_SIZE_OVER_SPEED > 1
- rb_uint32_t temp;
+ uint32_t temp;
const char *ps;
static const char S[] = {
#endif /* MD5_SIZE_OVER_SPEED > 1 */
#if MD5_SIZE_OVER_SPEED > 0
- const rb_uint32_t *pc;
+ const uint32_t *pc;
const char *pp;
int i;
- static const rb_uint32_t C[] = {
+ static const uint32_t C[] = {
/* round 1 */
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
--- /dev/null
+CFLAGS= /INCLUDE=([-.INCLUDE])/ERROR_LIMIT=5/DEFINE=(_XOPEN_SOURCE_EXTENDED)/NOANSI_ALIAS
+OBJECTS= balloc.obj, commio.obj, crypt.obj, event.obj, -
+ helper.obj, linebuf.obj, nossl.obj, patricia.obj, -
+ poll.obj, ratbox_lib.obj, rawbuf.obj, rb_memory.obj, -
+ snprintf.obj, tools.obj, unix.obj
+
+DEFAULT : RATBOX.OLB($(OBJECTS))
+
+CLEAN :
+ - DELETE *.OBJ;*, *.OLB;*
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: epoll.c 25038 2008-01-23 16:03:08Z androsyn $
+ * $Id: epoll.c 25675 2008-07-06 04:13:05Z androsyn $
*/
#define _GNU_SOURCE 1
/* bleh..work around a glibc header bug on 32bit systems */
struct our_signalfd_siginfo {
- rb_uint32_t signo;
- rb_int32_t err;
- rb_int32_t code;
- rb_uint32_t pid;
- rb_uint32_t uid;
- rb_int32_t fd;
- rb_uint32_t tid;
- rb_uint32_t band;
- rb_uint32_t overrun;
- rb_uint32_t trapno;
- rb_int32_t status;
- rb_int32_t svint;
- rb_uint64_t svptr;
- rb_uint64_t utime;
- rb_uint64_t stime;
- rb_uint64_t addr;
- rb_uint8_t pad[48];
+ uint32_t signo;
+ int32_t err;
+ int32_t code;
+ uint32_t pid;
+ uint32_t uid;
+ int32_t fd;
+ uint32_t tid;
+ uint32_t band;
+ uint32_t overrun;
+ uint32_t trapno;
+ int32_t status;
+ int32_t svint;
+ uint64_t svptr;
+ uint64_t utime;
+ uint64_t stime;
+ uint64_t addr;
+ uint8_t pad[48];
};
rb_supports_ssl
rb_ssl_handshake_count
rb_ssl_clear_handshake_count
+rb_get_pseudo_random
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: gnutls.c 25568 2008-06-20 18:46:08Z androsyn $
+ * $Id: gnutls.c 25793 2008-07-29 14:47:48Z androsyn $
*/
#include <libratbox_config.h>
void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
{
- rb_fde_t *new_F;
-
- new_F = rb_find_fd(new_fd);
new_F->type |= RB_FD_SSL;
new_F->ssl = rb_malloc(sizeof(gnutls_session_t));
new_F->accept = rb_malloc(sizeof(struct acceptdata));
gnutls_set_default_priority(SSL_P(new_F));
gnutls_credentials_set(SSL_P(new_F), GNUTLS_CRD_CERTIFICATE, x509);
gnutls_dh_set_prime_bits(SSL_P(new_F), 1024);
- gnutls_transport_set_ptr(SSL_P(new_F), (gnutls_transport_ptr_t) (long int)new_fd);
+ gnutls_transport_set_ptr(SSL_P(new_F), (gnutls_transport_ptr_t) (long int)rb_get_fd(new_F));
if(do_ssl_handshake(F, rb_ssl_tryaccept))
{
struct acceptdata *ad = F->accept;
return 1;
}
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+ gcry_randomize(buf, length, GCRY_WEAK_RANDOM);
+ return 1;
+}
const char *
rb_get_ssl_strerror(rb_fde_t * F)
#include <libratbox_config.h>
#include <ratbox_lib.h>
-
#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS)
+#include "arc4random.h"
+
#include <commio-int.h>
#include <commio-ssl.h>
return -1;
}
+static void
+rb_stir_arc4random(void *unused)
+{
+ arc4random_stir();
+}
+
+
int rb_init_prng(const char *path, prng_seed_t seed_type)
{
- return -1;
+ /* xxx this ignores the parameters above */
+ arc4random_stir();
+ rb_event_addish("rb_stir_arc4random", rb_stir_arc4random, NULL, 300);
+ return 1;
}
int
rb_get_random(void *buf, size_t length)
{
- return -1;
+ uint32_t rnd = 0, i;
+ uint8_t *xbuf = buf;
+ for (i = 0; i < sizeof(length); i++)
+ {
+ if(i % 4 == 0)
+ rnd = arc4random();
+ xbuf[i] = rnd;
+ rnd >>= 8;
+ }
+ return 1;
+}
+
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+ return rb_get_random(buf, length);
}
+
const char *
rb_get_ssl_strerror(rb_fde_t *F)
{
}
void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
{
return;
}
void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t * F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
{
- rb_fde_t *new_F;
-
- new_F = rb_find_fd(new_fd);
- if(new_F == NULL)
- return;
new_F->type |= RB_FD_SSL;
new_F->ssl = SSL_new(ssl_server_ctx);
new_F->accept = rb_malloc(sizeof(struct acceptdata));
memcpy(&new_F->accept->S, st, addrlen);
new_F->accept->addrlen = addrlen;
- SSL_set_fd((SSL *) new_F->ssl, new_fd);
+ SSL_set_fd((SSL *) new_F->ssl, rb_get_fd(new_F));
rb_setup_ssl_cb(new_F);
rb_ssl_accept_common(new_F);
}
int
rb_get_random(void *buf, size_t length)
{
- if(RAND_status())
- {
- if(RAND_bytes(buf, length) > 0)
- return 1;
- }
- else
+ int ret;
+
+ if((ret = RAND_bytes(buf, length)) == 0)
{
- if(RAND_pseudo_bytes(buf, length) >= 0)
- return 1;
+ /* remove the error from the queue */
+ ERR_get_error();
}
- return 0;
+ return ret;
}
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+ int ret;
+ ret = RAND_pseudo_bytes(buf, length);
+ if(ret < 0)
+ return 0;
+ return 1;
+}
const char *
rb_get_ssl_strerror(rb_fde_t * F)
struct _rawbuf
{
rb_dlink_node node;
- rb_uint8_t data[RAWBUF_SIZE];
+ uint8_t data[RAWBUF_SIZE];
int len;
- rb_uint8_t flushing;
+ uint8_t flushing;
};
struct _rawbuf_head