libratbox sync - r25796
This commit is contained in:
parent
d36df23a0b
commit
4414eb3c9e
|
@ -1,3 +1,157 @@
|
|||
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
|
||||
|
|
|
@ -22,84 +22,6 @@ AC_DEFUN([AC_SUBST_DIR], [
|
|||
])
|
||||
|
||||
|
||||
# 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
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
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;
|
||||
|
@ -8,7 +8,7 @@ dnl said functions need to be just about as complex as they already are.
|
|||
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, -)
|
||||
|
||||
|
@ -99,20 +99,6 @@ if test "$libexecdir" = '${exec_prefix}/libexec' &&
|
|||
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
|
||||
|
@ -144,21 +130,41 @@ member.])],,[[
|
|||
#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])
|
||||
|
||||
|
@ -218,7 +224,7 @@ AC_CHECK_TYPE([sa_family_t], [],
|
|||
|
||||
|
||||
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]))
|
||||
|
@ -457,17 +463,6 @@ fi
|
|||
|
||||
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
|
||||
|
@ -552,28 +547,17 @@ if test "x$rb_errno_h" = "xyes"; then
|
|||
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
|
||||
|
@ -588,18 +572,6 @@ else
|
|||
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
|
||||
|
@ -661,11 +633,9 @@ 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
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
|
||||
#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
|
|
@ -103,8 +103,8 @@ struct _fde
|
|||
*/
|
||||
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;
|
||||
|
|
|
@ -9,7 +9,7 @@ const char *rb_get_ssl_strerror(rb_fde_t *F);
|
|||
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);
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
*/
|
||||
#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
|
||||
|
||||
|
@ -45,6 +48,9 @@
|
|||
/* 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
|
||||
|
||||
|
@ -54,21 +60,12 @@
|
|||
/* 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
|
||||
|
||||
|
@ -183,18 +180,9 @@
|
|||
/* 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
|
||||
|
||||
|
@ -280,21 +268,6 @@
|
|||
# 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
|
||||
|
||||
|
@ -307,30 +280,6 @@
|
|||
#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
|
||||
|
||||
|
@ -340,38 +289,11 @@
|
|||
/* 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
|
||||
|
|
|
@ -0,0 +1,374 @@
|
|||
/* 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
|
|
@ -21,7 +21,7 @@
|
|||
* 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
|
||||
|
@ -88,7 +88,7 @@ struct rb_iovec
|
|||
|
||||
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 *);
|
||||
|
@ -148,8 +148,8 @@ rb_fde_t *rb_get_fde(int fd);
|
|||
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);
|
||||
|
||||
|
@ -164,6 +164,7 @@ typedef enum {
|
|||
|
||||
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);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* 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
|
||||
|
@ -45,8 +45,8 @@ struct _buf_head;
|
|||
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;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $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
|
||||
|
||||
|
@ -28,10 +28,11 @@ libratbox_la_SOURCES = \
|
|||
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
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
@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@
|
||||
|
@ -58,7 +58,7 @@ am_libratbox_la_OBJECTS = unix.lo win32.lo crypt.lo balloc.lo \
|
|||
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) \
|
||||
|
@ -233,9 +233,10 @@ libratbox_la_SOURCES = \
|
|||
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
|
||||
|
@ -307,6 +308,7 @@ mostlyclean-compile:
|
|||
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@
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
/* $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
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
* 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 $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -225,7 +225,7 @@ newblock(rb_bh * bh)
|
|||
{
|
||||
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));
|
||||
|
@ -237,7 +237,7 @@ newblock(rb_bh * bh)
|
|||
{
|
||||
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 *)))
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* 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>
|
||||
|
@ -80,7 +80,6 @@ static inline rb_fde_t *
|
|||
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)
|
||||
|
@ -88,21 +87,17 @@ add_fd(int fd)
|
|||
|
||||
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
|
||||
|
@ -368,6 +363,13 @@ rb_accept_tryaccept(rb_fde_t *F, void *data)
|
|||
|
||||
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();
|
||||
|
@ -387,7 +389,7 @@ rb_accept_tryaccept(rb_fde_t *F, void *data)
|
|||
#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 */
|
||||
|
@ -715,8 +717,11 @@ rb_socket(int family, int sock_type, int proto, const char *note)
|
|||
|
||||
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)))
|
||||
{
|
||||
|
@ -747,7 +752,7 @@ mangle_mapped_sockaddr(struct sockaddr *in)
|
|||
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;
|
||||
|
@ -796,16 +801,24 @@ rb_fdlist_init(int closeall, int maxfds, size_t heapsize)
|
|||
|
||||
/* 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);
|
||||
|
@ -913,14 +926,14 @@ rb_note(rb_fde_t *F, const char *string)
|
|||
}
|
||||
|
||||
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;
|
||||
|
@ -2002,7 +2015,7 @@ rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int nfds
|
|||
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;
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ rb_crypt(const char *key, const char *salt)
|
|||
*
|
||||
* 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).
|
||||
*/
|
||||
|
||||
|
@ -121,15 +121,15 @@ static u_char inv_key_perm[64];
|
|||
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
|
||||
|
@ -137,7 +137,7 @@ static rb_uint32_t old_rawkey0, old_rawkey1;
|
|||
* 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];
|
||||
|
||||
|
||||
|
||||
|
@ -230,7 +230,7 @@ static const u_char pbox[32] = {
|
|||
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,
|
||||
|
@ -243,7 +243,7 @@ static const rb_uint32_t bits32[32] =
|
|||
};
|
||||
|
||||
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
|
||||
|
@ -268,7 +268,7 @@ static void
|
|||
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)
|
||||
|
@ -401,7 +401,7 @@ des_init(void)
|
|||
static void
|
||||
setup_salt(long salt)
|
||||
{
|
||||
rb_uint32_t obit, saltbit;
|
||||
uint32_t obit, saltbit;
|
||||
int i;
|
||||
|
||||
if (salt == (long)old_salt)
|
||||
|
@ -423,13 +423,13 @@ setup_salt(long 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
|
||||
|
@ -469,7 +469,7 @@ des_setkey(const char *key)
|
|||
*/
|
||||
shifts = 0;
|
||||
for (round = 0; round < 16; round++) {
|
||||
rb_uint32_t t0, t1;
|
||||
uint32_t t0, t1;
|
||||
|
||||
shifts += key_shifts[round];
|
||||
|
||||
|
@ -501,13 +501,13 @@ des_setkey(const char *key)
|
|||
|
||||
|
||||
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) {
|
||||
|
@ -619,12 +619,12 @@ do_des( rb_uint32_t l_in, rb_uint32_t r_in, rb_uint32_t *l_out, rb_uint32_t *r_o
|
|||
|
||||
#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;
|
||||
|
||||
|
@ -650,7 +650,7 @@ void
|
|||
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;
|
||||
|
@ -668,7 +668,7 @@ setkey(const char *key)
|
|||
void
|
||||
encrypt(char *block, int flag)
|
||||
{
|
||||
rb_uint32_t io[2];
|
||||
uint32_t io[2];
|
||||
u_char *p;
|
||||
int i, j;
|
||||
|
||||
|
@ -692,7 +692,7 @@ encrypt(char *block, int flag)
|
|||
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];
|
||||
|
||||
|
@ -885,8 +885,8 @@ __des_crypt(const char *key, const char *setting)
|
|||
|
||||
/* 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 */
|
||||
};
|
||||
|
||||
|
@ -894,7 +894,7 @@ static void __md5_Init (struct MD5Context *);
|
|||
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
|
||||
|
@ -910,12 +910,12 @@ static const unsigned char __md5_itoa64[] = /* 0 ... 63 => ascii - 64 */
|
|||
#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;
|
||||
|
||||
|
@ -928,18 +928,18 @@ __md5_Encode (unsigned char *output, rb_uint32_t *input, unsigned int len)
|
|||
}
|
||||
|
||||
/*
|
||||
* __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 */
|
||||
|
||||
|
@ -957,22 +957,22 @@ __md5_Decode (rb_uint32_t *output, const unsigned char *input, unsigned int len)
|
|||
* 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); \
|
||||
}
|
||||
|
@ -1004,10 +1004,10 @@ static void __md5_Update ( struct MD5Context *context, const char *xinput, unsig
|
|||
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;
|
||||
|
||||
|
@ -1077,13 +1077,13 @@ static void __md5_Final ( char xdigest[16], struct MD5Context *context)
|
|||
|
||||
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[] = {
|
||||
|
@ -1095,11 +1095,11 @@ __md5_Transform (state, block)
|
|||
#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,
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
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;*
|
|
@ -23,7 +23,7 @@
|
|||
* 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
|
||||
|
||||
|
@ -282,23 +282,23 @@ rb_epoll_supports_event(void)
|
|||
|
||||
/* 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];
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -145,3 +145,4 @@ rb_spawn_process
|
|||
rb_supports_ssl
|
||||
rb_ssl_handshake_count
|
||||
rb_ssl_clear_handshake_count
|
||||
rb_get_pseudo_random
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* 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>
|
||||
|
@ -164,11 +164,8 @@ rb_ssl_start_accepted(rb_fde_t * new_F, ACCB * cb, void *data, int timeout)
|
|||
|
||||
|
||||
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));
|
||||
|
@ -183,7 +180,7 @@ rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
|
|||
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;
|
||||
|
@ -485,6 +482,12 @@ rb_get_random(void *buf, size_t length)
|
|||
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)
|
||||
|
|
|
@ -26,9 +26,10 @@
|
|||
|
||||
#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>
|
||||
|
||||
|
@ -54,17 +55,43 @@ rb_ssl_listen(rb_fde_t *F, int backlog)
|
|||
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)
|
||||
{
|
||||
|
@ -104,7 +131,7 @@ rb_ssl_shutdown(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;
|
||||
}
|
||||
|
|
|
@ -204,13 +204,8 @@ rb_ssl_start_accepted(rb_fde_t * new_F, ACCB * cb, void *data, int timeout)
|
|||
|
||||
|
||||
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));
|
||||
|
@ -221,7 +216,7 @@ rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
|
|||
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);
|
||||
}
|
||||
|
@ -578,19 +573,25 @@ rb_init_prng(const char *path, prng_seed_t seed_type)
|
|||
int
|
||||
rb_get_random(void *buf, size_t length)
|
||||
{
|
||||
if(RAND_status())
|
||||
int ret;
|
||||
|
||||
if((ret = RAND_bytes(buf, length)) == 0)
|
||||
{
|
||||
if(RAND_bytes(buf, length) > 0)
|
||||
return 1;
|
||||
/* remove the error from the queue */
|
||||
ERR_get_error();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(RAND_pseudo_bytes(buf, length) >= 0)
|
||||
return 1;
|
||||
}
|
||||
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)
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue