fixed more uClibc issues

should compile against a uClibc > 0.9.28 (untested)
This commit is contained in:
Martin Willi 2006-12-15 14:22:56 +00:00
parent abff42f8bf
commit 4986554f1a
3 changed files with 30 additions and 8 deletions

21
HACKING
View File

@ -2,6 +2,9 @@
strongSwan - Development strongSwan - Development
------------------------- -------------------------
Subversion repository
---------------------
For interested developers, we have a public repository. To check out and For interested developers, we have a public repository. To check out and
compile the code, you need the following tools: compile the code, you need the following tools:
@ -33,3 +36,21 @@ Then you're in, start the build as usual:
./configure [options] ./configure [options]
make make
make install make install
uClibc support
--------------
Support for uClibc is still work in progress. To get startet with strongSwan
on uClibc, yoou need version which supports getifaddrs ( > 0.9.28).
Additionally, you need the at least the following options:
String and Stdio Support --->
[*] Support glibc's register_printf_function()
[*] Support the '%m' specifier in printf format strings
General Library Settings --->
[*] Support global constructors and destructors
We must reduce the number of printf handlers, as uClibc only supports 10 of
them. It is fairly untested yet, so don't except to get it running without
further tweaks.

View File

@ -88,7 +88,7 @@ AC_PROG_INSTALL
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
AC_PROG_LEX AC_PROG_LEX
AC_PROG_YACC AC_PROG_YACC
AC_PROG_CC(intel) AC_PROG_CC()
AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin]) AC_PATH_PROG([GPERF], [gperf], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin]) AC_PATH_PROG([PERL], [perl], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
@ -96,7 +96,7 @@ dnl ==========================
dnl check required libraries dnl check required libraries
dnl ========================== dnl ==========================
AC_CHECK_FUNCS(backtrace getifaddrs) AC_CHECK_FUNCS(backtrace)
AC_HAVE_LIBRARY([gmp],[LIBS="$LIBS"],[AC_MSG_ERROR([GNU Multi Precision library gmp not found])]) AC_HAVE_LIBRARY([gmp],[LIBS="$LIBS"],[AC_MSG_ERROR([GNU Multi Precision library gmp not found])])
if test "$ldap" = "true"; then if test "$ldap" = "true"; then

View File

@ -75,6 +75,11 @@
#define IPV6_2292PKTINFO 2 #define IPV6_2292PKTINFO 2
#endif /*IPV6_2292PKTINFO*/ #endif /*IPV6_2292PKTINFO*/
/* missing on uclibc */
#ifndef IPV6_IPSEC_POLICY
#define IPV6_IPSEC_POLICY 34
#endif /*IPV6_IPSEC_POLICY*/
typedef struct private_socket_t private_socket_t; typedef struct private_socket_t private_socket_t;
/** /**
@ -545,13 +550,11 @@ static int open_send_socket(private_socket_t *this, int family, u_int16_t port)
} }
/* bypass outgoung IKE traffic on send socket */ /* bypass outgoung IKE traffic on send socket */
memset(&policy, 0, sizeof(policy));
policy.sadb_x_policy_len = sizeof(policy) / sizeof(u_int64_t); policy.sadb_x_policy_len = sizeof(policy) / sizeof(u_int64_t);
policy.sadb_x_policy_exttype = SADB_X_EXT_POLICY; policy.sadb_x_policy_exttype = SADB_X_EXT_POLICY;
policy.sadb_x_policy_type = IPSEC_POLICY_BYPASS; policy.sadb_x_policy_type = IPSEC_POLICY_BYPASS;
policy.sadb_x_policy_dir = IPSEC_DIR_OUTBOUND; policy.sadb_x_policy_dir = IPSEC_DIR_OUTBOUND;
policy.sadb_x_policy_reserved = 0;
policy.sadb_x_policy_id = 0;
policy.sadb_x_policy_priority = 0;
if (setsockopt(skt, sol, ipsec_policy, &policy, sizeof(policy)) < 0) if (setsockopt(skt, sol, ipsec_policy, &policy, sizeof(policy)) < 0)
{ {
@ -687,13 +690,11 @@ static int open_recv_socket(private_socket_t *this, int family)
} }
/* bypass incomining IKE traffic on this socket */ /* bypass incomining IKE traffic on this socket */
memset(&policy, 0, sizeof(policy));
policy.sadb_x_policy_len = sizeof(policy) / sizeof(u_int64_t); policy.sadb_x_policy_len = sizeof(policy) / sizeof(u_int64_t);
policy.sadb_x_policy_exttype = SADB_X_EXT_POLICY; policy.sadb_x_policy_exttype = SADB_X_EXT_POLICY;
policy.sadb_x_policy_type = IPSEC_POLICY_BYPASS; policy.sadb_x_policy_type = IPSEC_POLICY_BYPASS;
policy.sadb_x_policy_dir = IPSEC_DIR_INBOUND; policy.sadb_x_policy_dir = IPSEC_DIR_INBOUND;
policy.sadb_x_policy_reserved = 0;
policy.sadb_x_policy_id = 0;
policy.sadb_x_policy_priority = 0;
if (setsockopt(skt, sol, ipsec_policy, &policy, sizeof(policy)) < 0) if (setsockopt(skt, sol, ipsec_policy, &policy, sizeof(policy)) < 0)
{ {