diff options
Diffstat (limited to 'net-dialup')
8 files changed, 419 insertions, 1927 deletions
diff --git a/net-dialup/freeradius/ChangeLog b/net-dialup/freeradius/ChangeLog index 5e85b859f8a7..4679a47bc47b 100644 --- a/net-dialup/freeradius/ChangeLog +++ b/net-dialup/freeradius/ChangeLog @@ -1,6 +1,17 @@ # ChangeLog for net-dialup/freeradius # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/ChangeLog,v 1.97 2011/10/13 12:16:12 nativemad Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/ChangeLog,v 1.98 2011/11/20 18:54:06 mrness Exp $ + +*freeradius-2.1.12 (20 Nov 2011) + + 20 Nov 2011; Alin Năstac <mrness@gentoo.org> + files/freeradius-2.1.10-qafixes.patch, +freeradius-2.1.12.ebuild, + +files/freeradius-2.1.12-pkglibdir.patch, + +files/freeradius-2.1.12-qafixes.patch, +files/freeradius-2.1.12-ssl.patch, + +files/freeradius-2.1.12-versionless-la-files.patch, +files/radius.init-r2: + Allow radius service to start even if /var/log/radius directory is missing + (#385443). Adapt init script to openrc requirements (#386111). Version bump + with a changed daemon user/group (radius iso radiusd). 13 Oct 2011; Andreas Schuerch <nativemad@gentoo.org> freeradius-2.1.11.ebuild: diff --git a/net-dialup/freeradius/files/freeradius-2.1.10-qafixes.patch b/net-dialup/freeradius/files/freeradius-2.1.10-qafixes.patch index f9d8b2629ea8..a8b21f2d26ae 100644 --- a/net-dialup/freeradius/files/freeradius-2.1.10-qafixes.patch +++ b/net-dialup/freeradius/files/freeradius-2.1.10-qafixes.patch @@ -23,1213 +23,6 @@ diff -Naur freeradius-server-2.1.10.orig/configure.in freeradius-server-2.1.10/c dnl ############################################################# dnl # diff -Naur freeradius-server-2.1.10.orig/configure.in.orig freeradius-server-2.1.10/configure.in.orig ---- freeradius-server-2.1.10.orig/configure.in.orig 1970-01-01 01:00:00.000000000 +0100 -+++ freeradius-server-2.1.10/configure.in.orig 2010-09-28 13:03:56.000000000 +0200 -@@ -0,0 +1,1204 @@ -+dnl ############################################################# -+dnl # -+dnl # For information about autoconf, see: -+dnl # -+dnl # http://www.gnu.org/software/autoconf/ -+dnl # -+dnl # The recommended order is: -+dnl # -+dnl # AC_INIT(file) -+dnl # 0. checks for compiler, libtool, and command line options -+dnl # 1. checks for programs -+dnl # 2. checks for libraries -+dnl # 3. checks for header files -+dnl # 4. checks for typedefs -+dnl # 5. checks for structures and functions -+dnl # 6. checks for compiler characteristics -+dnl # 7. checks for library functions -+dnl # 8. checks for system services -+dnl # AC_OUTPUT([file...]) -+dnl # -+dnl ############################################################# -+ -+AC_PREREQ([2.59]) -+export CFLAGS LIBS LDFLAGS CPPFLAGS -+AC_INIT(src/main/radiusd.c) -+AC_CONFIG_HEADER(src/include/autoconf.h) -+AC_REVISION($Revision: 1.1 $)dnl -+ -+dnl # The version of the software -+RADIUSD_VERSION=`cat VERSION` -+RADIUSD_MAJOR_VERSION=`cat VERSION | sed 's/\..*//'` -+RADIUSD_MINOR_VERSION=`cat VERSION | sed 's/^2\.//'` -+PACKAGE=freeradius -+ -+dnl ############################################################# -+dnl # -+dnl # 0. Checks for compiler, libtool, and command line options. -+dnl # -+dnl ############################################################# -+ -+dnl Check for GNU cc -+AC_PROG_CC -+AC_PROG_CXX -+ -+dnl # -+dnl # check for AIX, to allow us to use some BSD functions -+dnl # must be before macros that call the compiler. -+dnl # -+AC_AIX -+ -+AC_PROG_GCC_TRADITIONAL -+AC_PROG_CC_SUNPRO -+AC_PROG_RANLIB -+ -+dnl Compile in large (2G+) file support. -+AC_SYS_LARGEFILE -+ -+dnl # check for system bytesex -+dnl # AC_DEFINES WORDS_BIGENDIAN -+AC_C_BIGENDIAN -+ -+dnl Find GNU Make. -+AC_CHECK_PROG(GMAKE, gmake, yes, no) -+if test $GMAKE = no; then -+ AC_PATH_PROG(MAKE, make, /usr/local/bin/make) -+else -+ AC_PATH_PROG(MAKE, gmake, /usr/local/gnu/bin/make) -+fi -+makever=`$ac_cv_path_MAKE --version 2>&1 | grep "GNU Make"` -+if test -z "$makever"; then -+ AC_MSG_ERROR(GNU Make is not installed. Please download and install it -+ from ftp://prep.ai.mit.edu/pub/gnu/make/ before continuing.) -+fi -+ -+AC_ARG_WITH(system-libltdl, -+[ --with-system-libltdl Use the libltdl installed in your system (default=use our own)], -+[ -+LIBLTDL="-lltdl" -+INCLTDL= -+LTDL_SUBDIRS= -+], -+[ -+dnl If libltdl isn't installable, set it to be installable. -+[test x"$enable_ltdl_install" = x && enable_ltdl_install=yes] -+AC_LIBLTDL_INSTALLABLE -+ -+dnl tell Makefile to build ltdl if needed -+if test x"$enable_ltdl_install" = x"yes"; then -+ LTDL_SUBDIRS=libltdl -+fi -+]) -+AC_SUBST(LTDL_SUBDIRS) -+ -+dnl use system-wide libtool, if it exists -+AC_ARG_WITH(system-libtool, -+[ --with-system-libtool Use the libtool installed in your system (default=use our own)], -+[ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ], -+[ -+ LIBTOOL="`pwd`/libtool" -+ AC_SUBST(LIBTOOL) -+ dnl ensure that we're looking for dlopen -+ AC_LIBTOOL_DLOPEN -+ -+ dnl Figure out how to build shared libraries -+ AC_PROG_LIBTOOL -+]) -+ -+ -+dnl Put this in later, when all distributed modules use autoconf. -+dnl AC_ARG_WITH(disablemodulefoo, -+dnl [ --without-rlm_foo Disables module compilation. Module list:] -+dnl esyscmd([find src/modules -type d -name rlm_\* -print |\ -+dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\ -+dnl awk '{print " "$0}'])) -+ -+AC_ARG_ENABLE(strict-dependencies, -+[ --enable-strict-dependencies Fail configure on lack of module dependancy.]) -+ -+dnl extra argument: --with-docdir -+docdir='${datadir}/doc/freeradius' -+AC_MSG_CHECKING(docdir) -+AC_ARG_WITH(docdir, -+[ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ], -+[ case "$withval" in -+ no) -+ docdir=no -+ ;; -+ yes) -+ ;; -+ [[\\/$]]* | ?:[[\\/]]* ) -+ docdir="$withval" -+ ;; -+ *) -+ AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval]) -+ ;; -+ esac ] -+) -+AC_SUBST(docdir) -+AC_MSG_RESULT($docdir) -+if test "x$docdir" = xno; then -+ AC_MSG_WARN(Documentation files will NOT be installed.) -+fi -+ -+dnl extra argument: --with-logdir -+logdir='${localstatedir}/log/radius' -+AC_MSG_CHECKING(logdir) -+AC_ARG_WITH(logdir, -+[ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ], -+[ case "$withval" in -+ no) -+ AC_MSG_ERROR(Need logdir) -+ ;; -+ yes) -+ ;; -+ [[\\/$]]* | ?:[[\\/]]* ) -+ logdir="$withval" -+ ;; -+ *) -+ AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval]) -+ ;; -+ esac ] -+) -+AC_SUBST(logdir) -+AC_MSG_RESULT($logdir) -+ -+dnl extra argument: --with-radacctdir -+radacctdir='${logdir}/radacct' -+AC_MSG_CHECKING(radacctdir) -+AC_ARG_WITH(radacctdir, -+[ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ], -+[ case "$withval" in -+ no) -+ AC_MSG_ERROR(Need radacctdir) -+ ;; -+ yes) -+ ;; -+ [[\\/$]]* | ?:[[\\/]]* ) -+ radacctdir="$withval" -+ ;; -+ *) -+ AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval]) -+ ;; -+ esac ] -+) -+AC_SUBST(radacctdir) -+AC_MSG_RESULT($radacctdir) -+ -+dnl extra argument: --with-raddbdir -+raddbdir='${sysconfdir}/raddb' -+AC_MSG_CHECKING(raddbdir) -+AC_ARG_WITH(raddbdir, -+[ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ], -+[ case "$withval" in -+ no) -+ AC_MSG_ERROR(Need raddbdir) -+ ;; -+ yes) -+ ;; -+ [[\\/$]]* | ?:[[\\/]]* ) -+ raddbdir="$withval" -+ ;; -+ *) -+ AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval]) -+ ;; -+ esac ] -+) -+AC_SUBST(raddbdir) -+AC_MSG_RESULT($raddbdir) -+ -+dnl extra argument: --with-ascend-binary -+ASCEND_BINARY=yes -+AC_ARG_WITH(ascend-binary, -+[ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)], -+[ case "$withval" in -+ yes) -+ ;; -+ *) -+ ASCEND_BINARY="" -+ esac ] -+) -+if test "X$ASCEND_BINARY" = "Xyes"; then -+ AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes]) -+fi -+ -+dnl extra argument: --with-threads -+WITH_THREADS=yes -+AC_ARG_WITH(threads, -+[ --with-threads Use threads, if available. (default=yes) ], -+[ case "$withval" in -+ yes) -+ ;; -+ *) -+ WITH_THREADS="" -+ esac ] -+) -+ -+dnl extra argument: --with-vmps -+WITH_VMPS=yes -+AC_ARG_WITH(vmps, -+[ --with-vmps Compile in VMPS support. (default=yes)], -+[ case "$withval" in -+ yes) -+ ;; -+ *) -+ WITH_VMPS=no -+ esac ] -+) -+if test "x$WITH_VMPS" = "xyes"; then -+ AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support]) -+fi -+ -+dnl extra argument: --with-dhcp -+AC_ARG_WITH(dhcp, -+[ --with-dhcp Compile in DHCP support. (default=no)], -+[ case "$withval" in -+ yes) -+ AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP]) -+ ;; -+ *) -+ ;; -+ esac ] -+) -+ -+ -+dnl # -+dnl # Allow the user to specify a list of modules to be linked -+dnl # statically to the server. -+dnl # -+STATIC_MODULES= -+AC_ARG_WITH(static_modules, -+[ --with-static-modules=QUOTED-MODULE-LIST],[ -+ for i in $withval; do -+ STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la" -+ done -+]) -+ -+MODULES= -+AC_ARG_WITH(modules, -+[ --with-modules=QUOTED-MODULE-LIST],[ -+ for i in $withval; do -+ MODULES="$MODULES $i" -+ done -+]) -+ -+dnl # -+dnl # Enable developer C compiler warnings -+dnl # -+AC_ARG_ENABLE(developer, -+[ --enable-developer Enables features of interest to developers.], -+[ case "$enableval" in -+ no) -+ developer=no -+ ;; -+ *) -+ developer=yes -+ esac ] -+) -+ -+if test "x$developer" != "xno" -a -d $srcdir/CVS; then -+ dnl turn on the developer flag when taken from a CVS checkout (not a release) -+ developer="yes" -+fi -+ -+if test "x$developer" != "xno" -a -d $srcdir/.git; then -+ dnl turn on the developer flag when taken from a git checkout (not a release) -+ developer="yes" -+fi -+ -+dnl extra argument: --with-experimental-modules -+EXPERIMENTAL= -+AC_ARG_WITH(experimental-modules, -+[ --with-experimental-modules Use experimental and unstable modules. (default=no) ], -+[ case "$withval" in -+ yes) -+ EXPERIMENTAL=yes -+ ;; -+ *) -+ esac ] -+) -+ -+dnl extra argument: --with-openssl -+WITH_OPENSSL=yes -+AC_ARG_WITH(openssl, -+[ --with-openssl Use OpenSSL. (default=yes)], -+[ case "$withval" in -+ no) -+ WITH_OPENSSL=no -+ ;; -+ *) -+ WITH_OPENSSL=yes -+ ;; -+ esac ] -+) -+ -+dnl # -+dnl # extra argument: --with-openssl-includes=dir -+dnl # -+OPENSSL_INCLUDE_DIR= -+AC_ARG_WITH(openssl-includes, -+[ --with-openssl-includes=DIR Directory to look for OpenSSL include files], -+[ case "$withval" in -+ *) OPENSSL_INCLUDE_DIR="$withval" -+ ;; -+ esac ] -+) -+ -+dnl # -+dnl # extra argument: --with-openssl-libraries=dir -+dnl # -+OPENSSL_LIB_DIR= -+AC_ARG_WITH(openssl-libraries, -+[ --with-openssl-libraries=DIR Directory to look for OpenSSL library files], -+[ case "$withval" in -+ *) OPENSSL_LIB_DIR="$withval" -+ ;; -+ esac ] -+) -+ -+dnl # -+dnl # These next two arguments don't actually do anything. They're -+dnl # place holders so that the top-level configure script can tell -+dnl # the user how to configure lower-level modules -+dnl # -+ -+dnl # -+dnl # extra argument: --with-rlm-FOO-lib-dir -+dnl # -+AC_ARG_WITH(rlm-FOO-lib-dir, -+[ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO], -+[ case "$withval" in -+ *) -+ ;; -+ esac ] -+) -+ -+dnl # -+dnl # extra argument: --with-rlm-FOO-include-dir -+dnl # -+AC_ARG_WITH(rlm-FOO-include-dir, -+[ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO], -+[ case "$withval" in -+ *) -+ ;; -+ esac ] -+) -+ -+dnl See what include-style is used by the make program. -+dnl AC_MSG_CHECKING(include style for make) -+dnl echo "include /dev/null" > testmake.$$ -+dnl echo "all:" >> testmake.$$ -+dnl make -f testmake.$$ >/dev/null 2>&1 -+dnl if test $? = 0 -+dnl then -+dnl INCLUDE=include -+dnl IQUOTE= -+dnl else -+dnl INCLUDE=.include -+dnl IQUOTE='"' -+dnl fi -+dnl rm -f testmake.$$ -+dnl AC_MSG_RESULT(" $INCLUDE") -+dnl AC_SUBST(INCLUDE) -+dnl AC_SUBST(IQUOTE) -+ -+dnl extra argument: --with-udpfromto -+WITH_UDPFROMTO=no -+AC_ARG_WITH(udpfromto, -+[ --with-udpfromto Compile in UDPFROMTO support. (default=no)], -+[ case "$withval" in -+ yes) -+ WITH_UDPFROMTO=yes -+ ;; -+ *) -+ WITH_UDPFROMTO=no -+ esac ] -+) -+ -+if test "x$WITH_UDPFROMTO" = "xyes"; then -+ AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto]) -+fi -+ -+dnl ############################################################# -+dnl # -+dnl # 1. Checks for programs -+dnl # -+dnl ############################################################# -+ -+CHECKRAD=checkrad.pl -+AC_PATH_PROG(PERL, perl, /usr/local/bin/perl) -+if test "x$ac_cv_path_PERL" = "x"; then -+ AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work) -+fi -+AC_PATH_PROG(SNMPGET, snmpget) -+if test "x$ac_cv_path_SNMPGET" = "x"; then -+ AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work) -+fi -+ -+AC_PATH_PROG(SNMPWALK, snmpwalk) -+if test "x$ac_cv_path_SNMPWALK" = "x"; then -+ AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work) -+fi -+ -+AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers) -+ -+dnl FIXME This is truly gross. -+missing_dir=`cd $ac_aux_dir && pwd` -+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -+ -+AC_PATH_PROG(LOCATE,locate) -+AC_PATH_PROG(DIRNAME,dirname) -+AC_PATH_PROG(GREP,grep) -+ -+dnl ############################################################# -+dnl # -+dnl # 2. Checks for libraries -+dnl # -+dnl ############################################################# -+ -+dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD) -+old_CFLAGS=$CFLAGS -+if test "x$WITH_THREADS" = "xyes"; then -+ if test $ac_cv_prog_suncc = "yes"; then -+ CFLAGS="$CFLAGS -mt" -+ fi -+ -+ AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ]) -+ -+dnl # -+dnl # pthread stuff is usually in -lpthread -+dnl # or in -lc_r, on *BSD -+dnl # -+dnl # On Some systems, we need extra pre-processor flags, to get them to -+dnl # to do the threading properly. -+dnl # -+ AC_CHECK_LIB(pthread, pthread_create, -+ [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" -+ LIBS="$LIBS -lpthread" ], -+ AC_CHECK_LIB(c_r, pthread_create, -+ [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ], -+ [ WITH_THREADS="no" ] -+ ) -+ ) -+fi -+ -+dnl # -+dnl # If we have NO pthread libraries, remove any knowledge of threads. -+dnl # -+if test "x$WITH_THREADS" != "xyes"; then -+ CFLAGS=$old_CFLAGS -+ ac_cv_header_pthread_h="no" -+ WITH_THREADS=no -+else -+ dnl # -+ dnl # We need sem_init() and friends, as they're the friendliest -+ dnl # semaphore functions for threading. -+ dnl # -+ dnl # HP/UX requires linking with librt, too, to get the sem_* symbols. -+ dnl # Some systems have them in -lsem -+ dnl # Solaris has them in -lposix4 -+ dnl # NetBSD has them in -lsemaphore -+ -+ AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore, -+ [], -+ [AC_MSG_ERROR(-lsem not found. You may want to download it from ftp://ftp.to.gd-es.com/pub/BSDI/libsem.tar.bz2 or ftp://ftp.freeradius.org/pub/radius/contrib/libsem.tar.gz)] -+ ) -+fi -+ -+dnl Check if we need -lsocket -+AC_CHECK_LIB(socket, getsockname) -+ -+dnl Check for -lresolv -+dnl This library may be needed later. -+AC_CHECK_LIB(resolv, inet_aton) -+ -+dnl Check if we need -lnsl. Usually if we want to -+dnl link against -lsocket we need to include -lnsl as well. -+AC_CHECK_LIB(nsl, inet_ntoa) -+ -+dnl Check for OpenSSL libraries. -+OPENSSL_LIBS= -+if test "x$WITH_OPENSSL" = xyes; then -+ old_LIBS=$LIBS -+ old_LDFLAGS="$LDFLAGS" -+ if test "x$OPENSSL_LIB_DIR" != "x"; then -+ LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR" -+ fi -+ AC_CHECK_LIB(crypto, DH_new, -+ [ -+ LIBS="-lcrypto $LIBS" -+ AC_DEFINE(HAVE_LIBCRYPTO, 1, -+ [Define to 1 if you have the `crypto' library (-lcrypto).]) -+ AC_CHECK_LIB(ssl, SSL_new, -+ [ -+ AC_DEFINE(HAVE_LIBSSL, 1, -+ [Define to 1 if you have the `ssl' library (-lssl).]) -+ if test "x$OPENSSL_LIB_DIR" != "x"; then -+ OPENSSL_LIBS="-L$OPENSSL_LIB_DIR" -+ fi -+ OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto" -+ ], []) -+ ], []) -+ LIBS=$old_LIBS -+ LDFLAGS="$old_LDFLAGS" -+fi -+ -+AC_CHECK_LIB(ws2_32, htonl) -+ -+dnl Check the pcap library for the RADIUS sniffer. -+PCAP_LIBS= -+AC_CHECK_LIB(pcap, pcap_open_live, -+ [ PCAP_LIBS="-lpcap" -+ AC_DEFINE(HAVE_LIBPCAP, 1, -+ [Define to 1 if you have the `pcap' library (-lpcap).]) -+ ], -+ [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ]) -+ -+AC_LIB_READLINE -+ -+dnl ############################################################# -+dnl # -+dnl # 3. Checks for header files -+dnl # -+dnl ############################################################# -+ -+dnl # -+dnl # Interix requires us to set -D_ALL_SOURCE, otherwise -+dnl # getopt will be #included, but won't link. <sigh> -+dnl # -+dnl # -+case "$host" in -+*-interix*) -+ CFLAGS="$CFLAGS -D_ALL_SOURCE" -+ ;; -+*-darwin*) -+ CFLAGS="$CFLAGS -DDARWIN" -+ LIBS="-framework DirectoryService $LIBS" -+ ;; -+esac -+ -+AC_HEADER_DIRENT -+AC_HEADER_STDC -+AC_HEADER_TIME -+AC_HEADER_SYS_WAIT -+ -+AC_CHECK_HEADERS( \ -+ unistd.h \ -+ crypt.h \ -+ errno.h \ -+ resource.h \ -+ sys/resource.h \ -+ getopt.h \ -+ malloc.h \ -+ utmp.h \ -+ utmpx.h \ -+ signal.h \ -+ sys/select.h \ -+ syslog.h \ -+ inttypes.h \ -+ stdint.h \ -+ stdio.h \ -+ netdb.h \ -+ semaphore.h \ -+ arpa/inet.h \ -+ netinet/in.h \ -+ sys/types.h \ -+ sys/socket.h \ -+ winsock.h \ -+ sys/time.h \ -+ sys/wait.h \ -+ sys/security.h \ -+ fcntl.h \ -+ sys/fcntl.h \ -+ sys/prctl.h \ -+ sys/un.h \ -+ glob.h \ -+ prot.h \ -+ pwd.h \ -+ grp.h \ -+ sia.h \ -+ siad.h -+) -+ -+dnl FreeBSD requires sys/socket.h before net/if.h -+AC_CHECK_HEADERS(net/if.h, [], [], -+[#ifdef HAVE_SYS_SOCKET_H -+# include <sys/socket.h> -+# endif -+]) -+ -+REGEX=no -+AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file])) -+if test "x$ac_cv_header_regex_h" = "xyes"; then -+ REGEX_EXTENDED=no -+ REGEX=yes -+ AC_EGREP_CPP(yes, -+ [#include <regex.h> -+ #ifdef REG_EXTENDED -+ yes -+ #endif -+ ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes]) -+fi -+AC_SUBST(REGEX) -+AC_SUBST(REGEX_EXTENDED) -+ -+dnl # -+dnl # other checks which require headers -+dnl # -+if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes" -+then -+ AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication]) -+fi -+ -+if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes" -+then -+ AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication]) -+fi -+ -+dnl Check for OpenSSL includes. -+OPENSSL_INCLUDE="-DNO_OPENSSL" -+if test "x$WITH_OPENSSL" = xyes; then -+ if test "x$OPENSSL_LIBS" = "x"; then -+ AC_MSG_NOTICE([skipping test for openssl/ssl.h]) -+ else -+ old_CPPFLAGS=$CPPFLAGS -+ if test "x$OPENSSL_INCLUDE_DIR" != "x"; then -+ CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR" -+ fi -+ dnl # stupid RedHat shit -+ CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5" -+ AC_CHECK_HEADERS( \ -+ openssl/ssl.h \ -+ openssl/crypto.h \ -+ openssl/err.h \ -+ openssl/evp.h \ -+ openssl/engine.h, -+ [], -+ OPENSSL_LIBS= -+ ) -+ if test "x$OPENSSL_LIBS" != "x"; then -+ AC_MSG_CHECKING([for OpenSSL version >= 0.9.7]) -+ AC_EGREP_CPP(yes, -+ [#include <openssl/crypto.h> -+ #if (OPENSSL_VERSION_NUMBER >= 0x00907000L) -+ yes -+ #endif -+ ], goodssl="yes") -+ if test "x$goodssl" != "xyes"; then -+ AC_MSG_RESULT(no) -+ OPENSSL_LIBS= -+ else -+ AC_MSG_RESULT(yes) -+ if test "x$OPENSSL_INCLUDE_DIR" != "x"; then -+ OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5" -+ else -+ OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5" -+ fi -+ fi -+ fi -+ CPPFLAGS=$old_CPPFLAGS -+ fi -+fi -+AC_SUBST(OPENSSL_INCLUDE) -+AC_SUBST(OPENSSL_LIBS) -+export OPENSSL_LIBS -+ -+dnl Check the pcap includes for the RADIUS sniffer. -+if test "x$PCAP_LIBS" = x; then -+ AC_MSG_NOTICE([skipping test for pcap.h.]) -+else -+ AC_CHECK_HEADER(pcap.h, -+ AC_DEFINE(HAVE_PCAP_H, 1, -+ [Define to 1 if you have the <pcap.h> header file.]), -+ [ PCAP_LIBS= -+ AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.]) -+ ]) -+fi -+AC_SUBST(PCAP_LIBS) -+ -+dnl ############################################################# -+dnl # -+dnl # 4. Checks for typedefs -+dnl # -+dnl ############################################################# -+ -+dnl # -+dnl # Ensure that these are defined -+dnl # -+AC_TYPE_OFF_T -+AC_TYPE_PID_T -+AC_TYPE_SIZE_T -+AC_TYPE_UID_T -+ -+dnl check for socklen_t -+FR_CHECK_TYPE_INCLUDE([ -+#ifdef HAVE_SYS_TYPES_H -+#include <sys/types.h> -+#endif -+#ifdef HAVE_SYS_SOCKET_H -+#include <sys/socket.h> -+#endif -+],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it]) -+ -+dnl check for uint8_t -+FR_CHECK_TYPE_INCLUDE([ -+#ifdef HAVE_INTTYPES_H -+#include <inttypes.h> -+#endif -+#ifdef HAVE_STDINT_H -+#include <stdint.h> -+#endif -+],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic]) -+ -+dnl check for uint16_t -+FR_CHECK_TYPE_INCLUDE([ -+#ifdef HAVE_INTTYPES_H -+#include <inttypes.h> -+#endif -+#ifdef HAVE_STDINT_H -+#include <stdint.h> -+#endif -+],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic]) -+ -+dnl check for uint32_t -+FR_CHECK_TYPE_INCLUDE([ -+#ifdef HAVE_INTTYPES_H -+#include <inttypes.h> -+#endif -+#ifdef HAVE_STDINT_H -+#include <stdint.h> -+#endif -+],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer]) -+ -+AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [ -+#ifdef HAVE_NETINET_IN_H -+#include <netinet/in.h> -+#endif -+]) -+ -+AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [ -+#ifdef HAVE_NETINET_IN_H -+#include <netinet/in.h> -+#endif -+#ifdef HAVE_SYS_SOCKET_H -+#include <sys/socket.h> -+#endif -+]) -+ -+AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [ -+#ifdef HAVE_NETINET_IN_H -+#include <netinet/in.h> -+#endif -+]) -+ -+AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [ -+#ifdef HAVE_SYS_TYPES_H -+#include <sys/types.h> -+#endif -+#ifdef HAVE_SYS_SOCKET_H -+#include <sys/socket.h> -+#endif -+#ifdef HAVE_NETDB_H -+#include <netdb.h> -+#endif -+]) -+ -+dnl ############################################################# -+dnl # -+dnl # 5. Checks for structures and functions -+dnl # -+dnl ############################################################# -+AC_CHECK_FUNCS( \ -+ getopt_long \ -+ lockf \ -+ strsignal \ -+ sigaction \ -+ sigprocmask \ -+ pthread_sigmask \ -+ snprintf \ -+ vsnprintf \ -+ setsid \ -+ strncasecmp \ -+ strcasecmp \ -+ localtime_r \ -+ ctime_r \ -+ gmtime_r \ -+ strsep \ -+ inet_aton \ -+ inet_pton \ -+ inet_ntop \ -+ setlinebuf \ -+ setvbuf \ -+ getusershell \ -+ initgroups \ -+ getaddrinfo \ -+ getnameinfo \ -+ closefrom \ -+ gettimeofday \ -+ getpeereid \ -+ setuid \ -+ setresuid \ -+ getresuid \ -+ strlcat \ -+ strlcpy -+) -+RADIUSD_NEED_DECLARATIONS( \ -+ crypt \ -+ strncasecmp \ -+ strcasecmp \ -+ inet_aton \ -+ setlinebuf \ -+ getusershell \ -+ endusershell -+) -+ -+AC_TYPE_SIGNAL -+ -+dnl # check if we have utmpx.h -+dnl # if so, check if struct utmpx has entry ut_xtime -+dnl # if not, set it to define ut_xtime == ut_tv.tv_sec -+if test "x$ac_cv_header_utmpx_h" = "xyes" -+then -+ FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime) -+ if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x" -+ then -+ AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx]) -+ fi -+fi -+ -+dnl # struct ip_pktinfo -+FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr) -+if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes" -+then -+ AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)]) -+fi -+ -+dnl # struct in6_pktinfo -+FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr) -+if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes" -+then -+ AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)]) -+fi -+ -+dnl ############################################################# -+dnl # -+dnl # 6. Checks for compiler characteristics -+dnl # -+dnl ############################################################# -+ -+dnl # -+dnl # Ensure that these are defined -+dnl # -+AC_C_CONST -+ -+dnl # -+dnl # See if this is OS/2 -+dnl # -+AC_MSG_CHECKING(type of OS) -+OS=`uname -s` -+AC_MSG_RESULT($OS) -+if test "$OS" = "OS/2"; then -+ LIBPREFIX= -+else -+ LIBPREFIX=lib -+fi -+AC_SUBST(LIBPREFIX) -+ -+dnl # -+dnl # Set Default CFLAGS -+dnl # -+if test "x$GCC" = "xyes"; then -+ CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE" -+fi -+ -+AC_MSG_CHECKING(for developer gcc flags) -+if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then -+ devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef" -+ CFLAGS="$CFLAGS $devflags" -+ INSTALLSTRIP="" -+ AC_MSG_RESULT(yes. Using $devflags) -+else -+ devflags="" -+ CFLAGS="$CFLAGS -DNDEBUG" -+ INSTALLSTRIP="" -+ AC_MSG_RESULT(no.) -+fi -+ -+FR_TLS -+ -+dnl ############################################################# -+dnl # -+dnl # 7. Checks for library functions -+dnl # -+dnl ############################################################# -+ -+old_LIBS="$LIBS" -+LIBS="$LIBS $LIBLTDL" -+AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function])) -+LIBS="$old_LIBS" -+ -+dnl Check for libcrypt -+dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD) -+AC_CHECK_LIB(crypt, crypt, -+ CRYPTLIB="-lcrypt" -+) -+if test "$CRYPTLIB" != ""; then -+ AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]) -+else -+ AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])) -+fi -+ -+dnl Check for libcipher -+AC_CHECK_LIB(cipher, setkey, -+ CRYPTLIB="${CRYPTLIB} -lcipher" -+) -+AC_SUBST(CRYPTLIB) -+ -+dnl Check the style of gethostbyaddr, in order of preference -+dnl GNU (_r eight args) -+AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r]) -+dnl SYSV (_r six args) -+AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r]) -+dnl BSD (three args, may not be thread safe) -+AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r]) -+dnl Tru64 has BSD version, but it is thread safe -+dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM -+dnl We need #stdio.h to define NULL on FreeBSD (at least) -+gethostbyaddrrstyle="" -+AC_MSG_CHECKING([gethostbyaddr_r() syntax]) -+case "$host" in -+*-freebsd*) -+dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r. -+dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we -+dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU -+dnl style support. -+ AC_CHECK_DECLS([gethostbyaddr_r], [], [ -+ AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, -+ [style of gethostbyaddr_r functions ]) -+ gethostbyaddrrstyle=BSD -+ AC_MSG_WARN([FreeBSD overridden to BSD-style]) -+ ], [ -+#ifdef HAVE_NETDB_H -+#include <netdb.h> -+#endif -+]) -+ ;; -+esac -+if test "x$gethostbyaddrrstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [ -+ AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ]) -+ gethostbyaddrrstyle=GNU -+]) -+fi -+if test "x$gethostbyaddrrstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [ -+ AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ]) -+ gethostbyaddrrstyle=SYSV -+ ]) -+fi -+if test "x$gethostbyaddrrstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyaddr(NULL, 0, 0) ], [ -+ AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ]) -+ gethostbyaddrrstyle=BSD -+ ]) -+fi -+ -+if test "x$gethostbyaddrrstyle" = "x"; then -+ AC_MSG_RESULT([none! It must not exist, here.]) -+else -+ AC_MSG_RESULT([${gethostbyaddrrstyle}-style]) -+fi -+ -+if test "x$gethostbyaddrrstyle" = "xBSD"; then -+ AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ]) -+fi -+ -+dnl Check the style of gethostbyname, in order of preference -+dnl GNU (_r seven args) -+dnl SYSV (_r five args) -+dnl BSD (two args, may not be thread safe) -+dnl Tru64 has BSD version, but it _is_ thread safe -+dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM -+dnl We need #stdio.h to define NULL on FreeBSD (at least) -+gethostbynamerstyle="" -+AC_MSG_CHECKING([gethostbyname_r() syntax]) -+AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [ -+ AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ]) -+ gethostbynamerstyle=GNU -+]) -+if test "x$gethostbynamerstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [ -+ AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ]) -+ gethostbynamerstyle=SYSV -+ ]) -+fi -+if test "x$gethostbynamerstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <stdio.h> -+#include <netdb.h> -+], [ gethostbyname(NULL) ], [ -+ AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ]) -+ gethostbynamerstyle=BSD -+ ]) -+fi -+ -+if test "x$gethostbynamerstyle" = "x"; then -+ AC_MSG_RESULT([none! It must not exist, here.]) -+else -+ AC_MSG_RESULT([${gethostbynamerstyle}-style]) -+fi -+ -+if test "x$gethostbynamerstyle" = "xBSD"; then -+ AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ]) -+fi -+ -+dnl check for non-posix solaris ctime_r (extra buflen int arg) -+AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r]) -+AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r]) -+ctimerstyle="" -+AC_MSG_CHECKING([ctime_r() syntax]) -+AC_TRY_LINK([ -+#include <time.h> -+], [ ctime_r(NULL, NULL, 0) ], [ -+ AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function]) -+ ctimerstyle="SOLARIS" -+]) -+if test "x$ctimerstyle" = "x"; then -+ AC_TRY_LINK([ -+#include <time.h> -+], [ ctime_r(NULL, NULL) ], [ -+ AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function]) -+ ctimerstyle="POSIX" -+ ]) -+fi -+ -+if test "x$ctimerstyle" = "x"; then -+ AC_MSG_RESULT([none! It must not exist, here.]) -+else -+ AC_MSG_RESULT([${ctimerstyle}-style]) -+fi -+ -+AC_SUBST(HOSTINFO, $host) -+ -+dnl ############################################################# -+dnl # -+dnl # 8. Checks for system services -+dnl # -+dnl ############################################################# -+ -+dnl # -+dnl # Figure out where libtool is located, -+dnl # -+top_builddir=`pwd` -+export top_builddir -+AC_MSG_RESULT([top_builddir=$top_builddir]) -+dnl # AC_SUBST(top_builddir) -+AC_SUBST(LIBLTDL) -+AC_SUBST(INCLTDL) -+ -+dnl import libtool stuff -+ -+dnl ############################################################# -+dnl # -+dnl # Configure in any module directories. -+dnl # -+dnl ############################################################# -+ -+mysubdirs="$LIBLTDLPATH" -+if test "x$EXPERIMENTAL" = "xyes"; then -+ bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'` -+ dnl # get rid of LF's. -+ mysubdirs=`echo $mysubdirs $bar` -+else -+ dnl # -+ dnl # Find 'configure' in ONLY the stable modules -+ dnl # -+ for bar in `cat "${srcdir}"/src/modules/stable`; do -+ if test -f "${srcdir}"/src/modules/$bar/configure; then -+ mysubdirs="$mysubdirs src/modules/$bar" -+ fi -+ done -+fi -+ -+dnl ############################################################ -+dnl # make modules by list -+dnl ############################################################# -+if test "x$EXPERIMENTAL" = "xyes"; then -+ for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do -+ MODULES="$MODULES $foo" -+ done -+else -+ dnl # -+ dnl # make ONLY the stable modules -+ dnl # -+ for foo in `cat "${srcdir}"/src/modules/stable`; do -+ MODULES="$MODULES $foo" -+ done -+fi -+ -+dnl # -+dnl # Don't change the variable name here. Autoconf goes bonkers -+dnl # if you do. -+dnl # -+AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs) -+AC_SUBST(MODULES) -+ -+dnl ############################################################# -+dnl # -+dnl # And finally, output the results. -+dnl # -+dnl ############################################################# -+ -+AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h]) -+AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)]) -+AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)]) -+AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)]) -+ -+dnl # -+dnl # Substitute whatever libraries we found to be necessary -+dnl # -+AC_SUBST(LIBS) -+AC_SUBST(INSTALLSTRIP) -+ -+USE_SHARED_LIBS=$enable_shared -+AC_SUBST(USE_SHARED_LIBS) -+USE_STATIC_LIBS=$enable_static -+AC_SUBST(USE_STATIC_LIBS) -+AC_SUBST(STATIC_MODULES) -+AC_SUBST(RADIUSD_MAJOR_VERSION) -+AC_SUBST(RADIUSD_MINOR_VERSION) -+AC_SUBST(RADIUSD_VERSION) -+ -+AC_OUTPUT(\ -+ ./Make.inc \ -+ ./src/include/build-radpaths-h \ -+ ./src/main/Makefile \ -+ ./src/main/checkrad.pl \ -+ ./src/main/radlast \ -+ ./src/main/radtest \ -+ ./scripts/rc.radiusd \ -+ ./scripts/radwatch \ -+ ./scripts/radiusd.cron.daily \ -+ ./scripts/radiusd.cron.monthly \ -+ ./scripts/cryptpasswd \ -+ ./raddb/dictionary \ -+ ./raddb/radrelay.conf \ -+ ./raddb/radiusd.conf -+) diff -Naur freeradius-server-2.1.10.orig/src/include/radiusd.h freeradius-server-2.1.10/src/include/radiusd.h --- freeradius-server-2.1.10.orig/src/include/radiusd.h 2010-09-28 13:03:56.000000000 +0200 +++ freeradius-server-2.1.10/src/include/radiusd.h 2011-02-09 17:42:53.000000000 +0100 @@ -1242,662 +35,6 @@ diff -Naur freeradius-server-2.1.10.orig/src/include/radiusd.h freeradius-server const char **ptr, int evaluate_it, int *presult); int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, diff -Naur freeradius-server-2.1.10.orig/src/include/radiusd.h.orig freeradius-server-2.1.10/src/include/radiusd.h.orig ---- freeradius-server-2.1.10.orig/src/include/radiusd.h.orig 1970-01-01 01:00:00.000000000 +0100 -+++ freeradius-server-2.1.10/src/include/radiusd.h.orig 2010-09-28 13:03:56.000000000 +0200 -@@ -0,0 +1,653 @@ -+#ifndef RADIUSD_H -+#define RADIUSD_H -+/* -+ * radiusd.h Structures, prototypes and global variables -+ * for the FreeRADIUS server. -+ * -+ * Version: $Id: freeradius-2.1.10-qafixes.patch,v 1.1 2011/05/26 15:31:45 hwoarang Exp $ -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+ * -+ * Copyright 1999,2000,2002,2003,2004,2005,2006,2007,2008 The FreeRADIUS server project -+ * -+ */ -+ -+#include <freeradius-devel/ident.h> -+RCSIDH(radiusd_h, "$Id: freeradius-2.1.10-qafixes.patch,v 1.1 2011/05/26 15:31:45 hwoarang Exp $") -+ -+#include <freeradius-devel/libradius.h> -+#include <freeradius-devel/radpaths.h> -+#include <freeradius-devel/conf.h> -+#include <freeradius-devel/conffile.h> -+#include <freeradius-devel/event.h> -+ -+typedef struct auth_req REQUEST; -+ -+#ifdef HAVE_PTHREAD_H -+#include <pthread.h> -+#endif -+ -+#ifndef NDEBUG -+#define REQUEST_MAGIC (0xdeadbeef) -+#endif -+ -+/* -+ * New defines for minimizing the size of the server, to strip -+ * out functionality. In order to ensure that people don't have -+ * to re-run "configure", after "cvs update", we play some -+ * special games with the defines. i.e. any top-level "configure" -+ * option should set both WITH_FOO and WITHOUT_FOO. After a few -+ * weeks, the WITHOUT_FOO can be deleted from the configure script. -+ */ -+#ifndef WITHOUT_PROXY -+#define WITH_PROXY (1) -+#endif -+ -+#ifndef WITHOUT_DETAIL -+#define WITH_DETAIL (1) -+#endif -+ -+#ifndef WITHOUT_SESSION_MGMT -+#define WITH_SESSION_MGMT (1) -+#endif -+ -+#ifndef WITHOUT_UNLANG -+#define WITH_UNLANG (1) -+#endif -+ -+#ifndef WITHOUT_ACCOUNTING -+#define WITH_ACCOUNTING (1) -+#else -+#ifdef WITH_SESSION_MGMT -+#error WITH_SESSION_MGMT is defined, but WITH_ACCOUNTING is not. Session management requires accounting. -+#endif -+#ifdef WITH_DETAIL -+#error WITH_DETAIL is defined, but WITH_ACCOUNTING is not. Detail file reading requires accounting. -+#endif -+#endif -+ -+#ifndef WITHOUT_DYNAMIC_CLIENTS -+#define WITH_DYNAMIC_CLIENTS (1) -+#endif -+ -+#ifndef WITHOUT_STATS -+#define WITH_STATS -+#endif -+ -+#ifndef WITHOUT_COMMAND_SOCKET -+#ifdef HAVE_SYS_UN_H -+#define WITH_COMMAND_SOCKET (1) -+#else -+#define WITHOUT_COMMAND_SOCKET (1) -+#endif -+#endif -+ -+#ifndef WITHOUT_COA -+#define WITH_COA (1) -+#ifndef WITH_PROXY -+#error WITH_COA requires WITH_PROXY -+#endif -+#endif -+ -+#include <freeradius-devel/stats.h> -+#include <freeradius-devel/realms.h> -+ -+ -+/* -+ * See util.c -+ */ -+typedef struct request_data_t request_data_t; -+ -+typedef struct radclient { -+ fr_ipaddr_t ipaddr; -+ int prefix; -+ char *longname; -+ char *secret; -+ char *shortname; -+ int message_authenticator; -+ char *nastype; -+ char *login; -+ char *password; -+ char *server; -+ int number; /* internal use only */ -+ const CONF_SECTION *cs; -+#ifdef WITH_STATS -+ fr_stats_t *auth; -+#ifdef WITH_ACCOUNTING -+ fr_stats_t *acct; -+#endif -+#endif -+ -+#ifdef WITH_DYNAMIC_CLIENTS -+ int lifetime; -+ int dynamic; /* was dynamically defined */ -+ time_t created; -+ time_t last_new_client; -+ char *client_server; -+ int rate_limit; -+#endif -+ -+#ifdef WITH_COA -+ char *coa_name; -+ home_server *coa_server; -+ home_pool_t *coa_pool; -+#endif -+} RADCLIENT; -+ -+/* -+ * Types of listeners. -+ * -+ * Ordered by priority! -+ */ -+typedef enum RAD_LISTEN_TYPE { -+ RAD_LISTEN_NONE = 0, -+#ifdef WITH_PROXY -+ RAD_LISTEN_PROXY, -+#endif -+ RAD_LISTEN_AUTH, -+#ifdef WITH_ACCOUNTING -+ RAD_LISTEN_ACCT, -+#endif -+#ifdef WITH_DETAIL -+ RAD_LISTEN_DETAIL, -+#endif -+#ifdef WITH_VMPS -+ RAD_LISTEN_VQP, -+#endif -+#ifdef WITH_DHCP -+ RAD_LISTEN_DHCP, -+#endif -+#ifdef WITH_COMMAND_SOCKET -+ RAD_LISTEN_COMMAND, -+#endif -+#ifdef WITH_COA -+ RAD_LISTEN_COA, -+#endif -+ RAD_LISTEN_MAX -+} RAD_LISTEN_TYPE; -+ -+ -+/* -+ * For listening on multiple IP's and ports. -+ */ -+typedef struct rad_listen_t rad_listen_t; -+typedef void (*radlog_func_t)(int, int, REQUEST *, const char *, ...); -+ -+#define REQUEST_DATA_REGEX (0xadbeef00) -+#define REQUEST_MAX_REGEX (8) -+ -+struct auth_req { -+#ifndef NDEBUG -+ uint32_t magic; /* for debugging only */ -+#endif -+ RADIUS_PACKET *packet; -+#ifdef WITH_PROXY -+ RADIUS_PACKET *proxy; -+#endif -+ RADIUS_PACKET *reply; -+#ifdef WITH_PROXY -+ RADIUS_PACKET *proxy_reply; -+#endif -+ VALUE_PAIR *config_items; -+ VALUE_PAIR *username; -+ VALUE_PAIR *password; -+ -+ struct main_config_t *root; -+ -+ request_data_t *data; -+ RADCLIENT *client; -+#ifdef HAVE_PTHREAD_H -+ pthread_t child_pid; -+#endif -+ time_t timestamp; -+ unsigned int number; /* internal server number */ -+ -+ rad_listen_t *listener; -+#ifdef WITH_PROXY -+ rad_listen_t *proxy_listener; -+#endif -+ -+ -+ int simul_max; /* see modcall.c && xlat.c */ -+#ifdef WITH_SESSION_MGMT -+ int simul_count; -+ int simul_mpp; /* WEIRD: 1 is false, 2 is true */ -+#endif -+ -+ int options; /* miscellanous options */ -+ const char *module; /* for debugging unresponsive children */ -+ const char *component; /* ditto */ -+ -+ struct timeval received; -+ struct timeval when; /* to wake up */ -+ int delay; -+ -+ int master_state; -+ int child_state; -+ RAD_LISTEN_TYPE priority; -+ -+ fr_event_t *ev; -+ struct timeval next_when; -+ fr_event_callback_t next_callback; -+ -+ int in_request_hash; -+#ifdef WITH_PROXY -+ int in_proxy_hash; -+ -+ home_server *home_server; -+ home_pool_t *home_pool; /* for dynamic failover */ -+ -+ struct timeval proxy_when; -+ -+ int num_proxied_requests; -+ int num_proxied_responses; -+#endif -+ -+ const char *server; -+ REQUEST *parent; -+ radlog_func_t radlog; /* logging function, if set */ -+#ifdef WITH_COA -+ REQUEST *coa; -+ int num_coa_requests; -+#endif -+}; /* REQUEST typedef */ -+ -+#define RAD_REQUEST_OPTION_NONE (0) -+#define RAD_REQUEST_OPTION_DEBUG (1) -+#define RAD_REQUEST_OPTION_DEBUG2 (2) -+#define RAD_REQUEST_OPTION_DEBUG3 (3) -+#define RAD_REQUEST_OPTION_DEBUG4 (4) -+ -+#define REQUEST_ACTIVE (1) -+#define REQUEST_STOP_PROCESSING (2) -+#define REQUEST_COUNTED (3) -+ -+#define REQUEST_QUEUED (1) -+#define REQUEST_RUNNING (2) -+#define REQUEST_PROXIED (3) -+#define REQUEST_REJECT_DELAY (4) -+#define REQUEST_CLEANUP_DELAY (5) -+#define REQUEST_DONE (6) -+ -+/* -+ * Function handler for requests. -+ */ -+typedef int (*RAD_REQUEST_FUNP)(REQUEST *); -+ -+typedef struct radclient_list RADCLIENT_LIST; -+ -+typedef struct pair_list { -+ const char *name; -+ VALUE_PAIR *check; -+ VALUE_PAIR *reply; -+ int lineno; -+ int order; -+ struct pair_list *next; -+ struct pair_list *lastdefault; -+} PAIR_LIST; -+ -+ -+typedef int (*rad_listen_recv_t)(rad_listen_t *, RAD_REQUEST_FUNP *, REQUEST **); -+typedef int (*rad_listen_send_t)(rad_listen_t *, REQUEST *); -+typedef int (*rad_listen_print_t)(const rad_listen_t *, char *, size_t); -+typedef int (*rad_listen_encode_t)(rad_listen_t *, REQUEST *); -+typedef int (*rad_listen_decode_t)(rad_listen_t *, REQUEST *); -+ -+struct rad_listen_t { -+ struct rad_listen_t *next; /* should be rbtree stuff */ -+ -+ /* -+ * For normal sockets. -+ */ -+ RAD_LISTEN_TYPE type; -+ int fd; -+ const char *server; -+ int status; -+ -+ rad_listen_recv_t recv; -+ rad_listen_send_t send; -+ rad_listen_encode_t encode; -+ rad_listen_decode_t decode; -+ rad_listen_print_t print; -+ -+ void *data; -+ -+#ifdef WITH_STATS -+ fr_stats_t stats; -+#endif -+}; -+ -+#define RAD_LISTEN_STATUS_INIT (0) -+#define RAD_LISTEN_STATUS_KNOWN (1) -+#define RAD_LISTEN_STATUS_CLOSED (2) -+#define RAD_LISTEN_STATUS_FINISH (3) -+ -+typedef enum radlog_dest_t { -+ RADLOG_STDOUT = 0, -+ RADLOG_FILES, -+ RADLOG_SYSLOG, -+ RADLOG_STDERR, -+ RADLOG_NULL, -+ RADLOG_NUM_DEST -+} radlog_dest_t; -+ -+typedef struct main_config_t { -+ struct main_config *next; -+ int refcount; -+ fr_ipaddr_t myip; /* from the command-line only */ -+ int port; /* from the command-line only */ -+ int log_auth; -+ int log_auth_badpass; -+ int log_auth_goodpass; -+ int allow_core_dumps; -+ int debug_level; -+ int proxy_requests; -+ int reject_delay; -+ int status_server; -+ int max_request_time; -+ int cleanup_delay; -+ int max_requests; -+#ifdef DELETE_BLOCKED_REQUESTS -+ int kill_unresponsive_children; -+#endif -+ char *log_file; -+ char *checkrad; -+ const char *pid_file; -+ rad_listen_t *listen; -+ int syslog_facility; -+ int radlog_fd; -+ radlog_dest_t radlog_dest; -+ CONF_SECTION *config; -+ const char *name; -+ const char *auth_badpass_msg; -+ const char *auth_goodpass_msg; -+} MAIN_CONFIG_T; -+ -+#define DEBUG if(debug_flag)log_debug -+#define DEBUG2 if (debug_flag > 1)log_debug -+#define DEBUG3 if (debug_flag > 2)log_debug -+#define DEBUG4 if (debug_flag > 3)log_debug -+ -+#if __GNUC__ >= 3 -+#define RDEBUG(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 1, request, fmt, ## __VA_ARGS__) -+#define RDEBUG2(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 2, request, fmt, ## __VA_ARGS__) -+#define RDEBUG3(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 3, request, fmt, ## __VA_ARGS__) -+#define RDEBUG4(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 4, request, fmt, ## __VA_ARGS__) -+#else -+#define RDEBUG DEBUG -+#define RDEBUG2 DEBUG2 -+#define RDEBUG3 DEBUG3 -+#define RDEBUG4 DEBUG4 -+#endif -+ -+#define SECONDS_PER_DAY 86400 -+#define MAX_REQUEST_TIME 30 -+#define CLEANUP_DELAY 5 -+#define MAX_REQUESTS 256 -+#define RETRY_DELAY 5 -+#define RETRY_COUNT 3 -+#define DEAD_TIME 120 -+ -+#define L_DBG 1 -+#define L_AUTH 2 -+#define L_INFO 3 -+#define L_ERR 4 -+#define L_PROXY 5 -+#define L_ACCT 6 -+#define L_CONS 128 -+ -+#ifndef FALSE -+#define FALSE 0 -+#endif -+#ifndef TRUE -+/* -+ * This definition of true as NOT false is definitive. :) Making -+ * it '1' can cause problems on stupid platforms. See articles -+ * on C portability for more information. -+ */ -+#define TRUE (!FALSE) -+#endif -+ -+/* for paircompare_register */ -+typedef int (*RAD_COMPARE_FUNC)(void *instance, REQUEST *,VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR *, VALUE_PAIR **); -+ -+typedef enum request_fail_t { -+ REQUEST_FAIL_UNKNOWN = 0, -+ REQUEST_FAIL_NO_THREADS, /* no threads to handle it */ -+ REQUEST_FAIL_DECODE, /* rad_decode didn't like it */ -+ REQUEST_FAIL_PROXY, /* call to proxy modules failed */ -+ REQUEST_FAIL_PROXY_SEND, /* proxy_send didn't like it */ -+ REQUEST_FAIL_NO_RESPONSE, /* we weren't told to respond, so we reject */ -+ REQUEST_FAIL_HOME_SERVER, /* the home server didn't respond */ -+ REQUEST_FAIL_HOME_SERVER2, /* another case of the above */ -+ REQUEST_FAIL_HOME_SERVER3, /* another case of the above */ -+ REQUEST_FAIL_NORMAL_REJECT, /* authentication failure */ -+ REQUEST_FAIL_SERVER_TIMEOUT /* the server took too long to process the request */ -+} request_fail_t; -+ -+/* -+ * Global variables. -+ * -+ * We really shouldn't have this many. -+ */ -+extern const char *progname; -+extern int debug_flag; -+extern const char *radacct_dir; -+extern const char *radlog_dir; -+extern const char *radlib_dir; -+extern const char *radius_dir; -+extern const char *radius_libdir; -+extern uint32_t expiration_seconds; -+extern int log_stripped_names; -+extern int log_auth_detail; -+extern const char *radiusd_version; -+void radius_signal_self(int flag); -+ -+#define RADIUS_SIGNAL_SELF_NONE (0) -+#define RADIUS_SIGNAL_SELF_HUP (1 << 0) -+#define RADIUS_SIGNAL_SELF_TERM (1 << 1) -+#define RADIUS_SIGNAL_SELF_EXIT (1 << 2) -+#define RADIUS_SIGNAL_SELF_DETAIL (1 << 3) -+#define RADIUS_SIGNAL_SELF_NEW_FD (1 << 4) -+#define RADIUS_SIGNAL_SELF_MAX (1 << 5) -+ -+ -+/* -+ * Function prototypes. -+ */ -+ -+/* acct.c */ -+int rad_accounting(REQUEST *); -+ -+/* session.c */ -+int rad_check_ts(uint32_t nasaddr, unsigned int port, const char *user, -+ const char *sessionid); -+int session_zap(REQUEST *request, uint32_t nasaddr, -+ unsigned int port, const char *user, -+ const char *sessionid, uint32_t cliaddr, -+ char proto,int session_time); -+ -+/* radiusd.c */ -+#undef debug_pair -+void debug_pair(VALUE_PAIR *); -+void debug_pair_list(VALUE_PAIR *); -+int log_err (char *); -+ -+/* util.c */ -+void (*reset_signal(int signo, void (*func)(int)))(int); -+void request_free(REQUEST **request); -+int rad_mkdir(char *directory, int mode); -+int rad_checkfilename(const char *filename); -+void *rad_malloc(size_t size); /* calls exit(1) on error! */ -+REQUEST *request_alloc(void); -+REQUEST *request_alloc_fake(REQUEST *oldreq); -+REQUEST *request_alloc_coa(REQUEST *request); -+int request_data_add(REQUEST *request, -+ void *unique_ptr, int unique_int, -+ void *opaque, void (*free_opaque)(void *)); -+void *request_data_get(REQUEST *request, -+ void *unique_ptr, int unique_int); -+void *request_data_reference(REQUEST *request, -+ void *unique_ptr, int unique_int); -+int rad_copy_string(char *dst, const char *src); -+int rad_copy_variable(char *dst, const char *from); -+ -+/* client.c */ -+RADCLIENT_LIST *clients_init(void); -+void clients_free(RADCLIENT_LIST *clients); -+RADCLIENT_LIST *clients_parse_section(CONF_SECTION *section); -+void client_free(RADCLIENT *client); -+int client_add(RADCLIENT_LIST *clients, RADCLIENT *client); -+#ifdef WITH_DYNAMIC_CLIENTS -+void client_delete(RADCLIENT_LIST *clients, RADCLIENT *client); -+RADCLIENT *client_create(RADCLIENT_LIST *clients, REQUEST *request); -+#endif -+RADCLIENT *client_find(const RADCLIENT_LIST *clients, -+ const fr_ipaddr_t *ipaddr); -+RADCLIENT *client_findbynumber(const RADCLIENT_LIST *clients, -+ int number); -+RADCLIENT *client_find_old(const fr_ipaddr_t *ipaddr); -+int client_validate(RADCLIENT_LIST *clients, RADCLIENT *master, -+ RADCLIENT *c); -+RADCLIENT *client_read(const char *filename, int in_server, int flag); -+ -+ -+/* files.c */ -+int pairlist_read(const char *file, PAIR_LIST **list, int complain); -+void pairlist_free(PAIR_LIST **); -+ -+/* version.c */ -+void version(void); -+ -+/* log.c */ -+int vradlog(int, const char *, va_list ap); -+int radlog(int, const char *, ...) -+#ifdef __GNUC__ -+ __attribute__ ((format (printf, 2, 3))) -+#endif -+; -+int log_debug(const char *, ...) -+#ifdef __GNUC__ -+ __attribute__ ((format (printf, 1, 2))) -+#endif -+; -+void vp_listdebug(VALUE_PAIR *vp); -+void radlog_request(int lvl, int priority, REQUEST *request, const char *msg, ...) -+#ifdef __GNUC__ -+ __attribute__ ((format (printf, 4, 5))) -+#endif -+; -+ -+/* auth.c */ -+char *auth_name(char *buf, size_t buflen, REQUEST *request, int do_cli); -+int rad_authenticate (REQUEST *); -+int rad_postauth(REQUEST *); -+ -+/* exec.c */ -+int radius_exec_program(const char *, REQUEST *, int, -+ char *user_msg, int msg_len, -+ VALUE_PAIR *input_pairs, -+ VALUE_PAIR **output_pairs, -+ int shell_escape); -+ -+/* timestr.c */ -+int timestr_match(char *, time_t); -+ -+/* valuepair.c */ -+int paircompare_register(int attr, int otherattr, -+ RAD_COMPARE_FUNC func, -+ void *instance); -+void paircompare_unregister(int attr, RAD_COMPARE_FUNC func); -+int paircompare(REQUEST *req, VALUE_PAIR *request, VALUE_PAIR *check, -+ VALUE_PAIR **reply); -+void pairxlatmove(REQUEST *, VALUE_PAIR **to, VALUE_PAIR **from); -+int radius_compare_vps(REQUEST *request, VALUE_PAIR *check, VALUE_PAIR *vp); -+int radius_callback_compare(REQUEST *req, VALUE_PAIR *request, -+ VALUE_PAIR *check, VALUE_PAIR *check_pairs, -+ VALUE_PAIR **reply_pairs); -+int radius_find_compare(int attribute); -+VALUE_PAIR *radius_paircreate(REQUEST *request, VALUE_PAIR **vps, -+ int attribute, int type); -+VALUE_PAIR *radius_pairmake(REQUEST *request, VALUE_PAIR **vps, -+ const char *attribute, const char *value, -+ int operator); -+ -+/* xlat.c */ -+typedef size_t (*RADIUS_ESCAPE_STRING)(char *out, size_t outlen, const char *in); -+ -+int radius_xlat(char * out, int outlen, const char *fmt, -+ REQUEST * request, RADIUS_ESCAPE_STRING func); -+typedef size_t (*RAD_XLAT_FUNC)(void *instance, REQUEST *, char *, char *, size_t, RADIUS_ESCAPE_STRING func); -+int xlat_register(const char *module, RAD_XLAT_FUNC func, -+ void *instance); -+void xlat_unregister(const char *module, RAD_XLAT_FUNC func); -+void xlat_free(void); -+ -+/* threads.c */ -+extern int thread_pool_init(CONF_SECTION *cs, int *spawn_flag); -+extern int thread_pool_addrequest(REQUEST *, RAD_REQUEST_FUNP); -+extern pid_t rad_fork(void); -+extern pid_t rad_waitpid(pid_t pid, int *status); -+extern int total_active_threads(void); -+extern void thread_pool_lock(void); -+extern void thread_pool_unlock(void); -+extern void thread_pool_queue_stats(int *array); -+ -+#ifndef HAVE_PTHREAD_H -+#define rad_fork(n) fork() -+#define rad_waitpid(a,b) waitpid(a,b, 0) -+#endif -+ -+/* mainconfig.c */ -+/* Define a global config structure */ -+extern struct main_config_t mainconfig; -+ -+int read_mainconfig(int reload); -+int free_mainconfig(void); -+void hup_mainconfig(void); -+void fr_suid_down(void); -+void fr_suid_up(void); -+void fr_suid_down_permanent(void); -+ -+/* listen.c */ -+void listen_free(rad_listen_t **head); -+int listen_init(CONF_SECTION *cs, rad_listen_t **head); -+rad_listen_t *proxy_new_listener(fr_ipaddr_t *ipaddr, int exists); -+RADCLIENT *client_listener_find(const rad_listen_t *listener, -+ const fr_ipaddr_t *ipaddr, int src_port); -+#ifdef WITH_STATS -+RADCLIENT_LIST *listener_find_client_list(const fr_ipaddr_t *ipaddr, -+ int port); -+rad_listen_t *listener_find_byipaddr(const fr_ipaddr_t *ipaddr, int port); -+#endif -+ -+/* event.c */ -+int radius_event_init(CONF_SECTION *cs, int spawn_flag); -+void radius_event_free(void); -+int radius_event_process(void); -+void radius_handle_request(REQUEST *request, RAD_REQUEST_FUNP fun); -+int received_request(rad_listen_t *listener, -+ RADIUS_PACKET *packet, REQUEST **prequest, -+ RADCLIENT *client); -+REQUEST *received_proxy_response(RADIUS_PACKET *packet); -+void event_new_fd(rad_listen_t *listener); -+ -+/* evaluate.c */ -+int radius_evaluate_condition(REQUEST *request, int modreturn, int depth, -+ const char **ptr, int evaluate_it, int *presult); -+int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, -+ VALUE_PAIR *input_vps, const char *name); -+void radius_pairmove(REQUEST *request, VALUE_PAIR **to, VALUE_PAIR *from); -+#endif /*RADIUSD_H*/ diff -Naur freeradius-server-2.1.10.orig/src/lib/Makefile freeradius-server-2.1.10/src/lib/Makefile --- freeradius-server-2.1.10.orig/src/lib/Makefile 2010-09-28 13:03:56.000000000 +0200 +++ freeradius-server-2.1.10/src/lib/Makefile 2011-02-09 17:42:53.000000000 +0100 @@ -1911,69 +48,6 @@ diff -Naur freeradius-server-2.1.10.orig/src/lib/Makefile freeradius-server-2.1. $(LT_OBJS): $(INCLUDES) diff -Naur freeradius-server-2.1.10.orig/src/lib/Makefile.orig freeradius-server-2.1.10/src/lib/Makefile.orig ---- freeradius-server-2.1.10.orig/src/lib/Makefile.orig 1970-01-01 01:00:00.000000000 +0100 -+++ freeradius-server-2.1.10/src/lib/Makefile.orig 2010-09-28 13:03:56.000000000 +0200 -@@ -0,0 +1,60 @@ -+# -+# Makefile -+# -+# Version: $Id: freeradius-2.1.10-qafixes.patch,v 1.1 2011/05/26 15:31:45 hwoarang Exp $ -+# -+ -+include ../../Make.inc -+ -+SRCS = dict.c filters.c hash.c hmac.c hmacsha1.c isaac.c log.c \ -+ misc.c missing.c md4.c md5.c print.c radius.c rbtree.c \ -+ sha1.c snprintf.c strlcat.c strlcpy.c token.c udpfromto.c \ -+ valuepair.c fifo.c packet.c event.c getaddrinfo.c vqp.c \ -+ heap.c dhcp.c -+ -+LT_OBJS = $(SRCS:.c=.lo) -+ -+INCLUDES = ../include/radius.h ../include/libradius.h \ -+ ../include/missing.h ../include/autoconf.h \ -+ ../include/ident.h -+ -+CFLAGS += -D_LIBRADIUS -I$(top_builddir)/src -+ -+# if you have problems with things that need SHA1-HMAC, this will -+# dump the key and the input to the hash so you can compare to what -+# the other end is doing. -+#CFLAGS += -DHMAC_SHA1_DATA_PROBLEMS -+ -+ifeq ($(USE_SHARED_LIBS),yes) -+LINK_MODE = -export-dynamic -+else -+LINK_MODE = -static -+endif -+ -+TARGET = $(LIBPREFIX)freeradius-radius -+ -+# Define new rule for libtool objects -+%.lo : %.c -+ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< -+ -+.PHONY: all clean install reconfig -+all: $(TARGET).la -+ -+$(TARGET).la: $(LT_OBJS) -+ $(LIBTOOL) --mode=link $(CC) -release $(RADIUSD_VERSION) \ -+ $(LDFLAGS) $(LINK_MODE) -o $@ -rpath $(libdir) $^ -+ -+$(LT_OBJS): $(INCLUDES) -+ -+clean: -+ rm -f *.o *.lo $(TARGET).la -+ rm -rf .libs -+ -+install: all -+ $(INSTALL) -d -m 755 $(R)$(libdir) -+ $(LIBTOOL) --mode=install $(INSTALL) -c $(TARGET).la \ -+ $(R)$(libdir)/$(TARGET).la -+ rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; -+ ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la -+ -+reconfig: diff -Naur freeradius-server-2.1.10.orig/src/main/listen.c freeradius-server-2.1.10/src/main/listen.c --- freeradius-server-2.1.10.orig/src/main/listen.c 2010-09-28 13:03:56.000000000 +0200 +++ freeradius-server-2.1.10/src/main/listen.c 2011-02-09 17:42:53.000000000 +0100 diff --git a/net-dialup/freeradius/files/freeradius-2.1.12-pkglibdir.patch b/net-dialup/freeradius/files/freeradius-2.1.12-pkglibdir.patch new file mode 100644 index 000000000000..207619b65921 --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-2.1.12-pkglibdir.patch @@ -0,0 +1,61 @@ +diff -Nru freeradius-server-2.1.12.orig//Make.inc.in freeradius-server-2.1.12/Make.inc.in +--- freeradius-server-2.1.12.orig//Make.inc.in 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/Make.inc.in 2011-11-20 13:04:20.000000000 +0100 +@@ -10,6 +10,7 @@ + sysconfdir = @sysconfdir@ + localstatedir = @localstatedir@ + libdir = @libdir@ ++pkglibdir = @libdir@/freeradius + bindir = @bindir@ + sbindir = @sbindir@ + docdir = @docdir@ +diff -Nru freeradius-server-2.1.12.orig//raddb/radiusd.conf.in freeradius-server-2.1.12/raddb/radiusd.conf.in +--- freeradius-server-2.1.12.orig//raddb/radiusd.conf.in 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/raddb/radiusd.conf.in 2011-11-20 13:04:20.000000000 +0100 +@@ -103,7 +103,7 @@ + # make + # make install + # +-libdir = @libdir@ ++libdir = @libdir@/freeradius + + # pidfile: Where to place the PID of the RADIUS server. + # +diff -Nru freeradius-server-2.1.12.orig//src/modules/Makefile freeradius-server-2.1.12/src/modules/Makefile +--- freeradius-server-2.1.12.orig//src/modules/Makefile 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/modules/Makefile 2011-11-20 13:04:20.000000000 +0100 +@@ -12,7 +12,7 @@ + @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common + + install: +- $(INSTALL) -d -m 755 $(R)$(libdir) ++ $(INSTALL) -d -m 755 $(R)$(pkglibdir) + @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common + + clean: +diff -Nru freeradius-server-2.1.12.orig//src/modules/rules.mak freeradius-server-2.1.12/src/modules/rules.mak +--- freeradius-server-2.1.12.orig//src/modules/rules.mak 2011-11-20 12:48:22.000000000 +0100 ++++ freeradius-server-2.1.12/src/modules/rules.mak 2011-11-20 13:04:20.000000000 +0100 +@@ -123,7 +123,7 @@ + $(TARGET).la: $(LT_OBJS) + $(LIBTOOL) --mode=link $(CC) -release $(RADIUSD_VERSION) \ + -module $(LINK_MODE) $(LDFLAGS) $(RLM_LDFLAGS) -o $@ \ +- -rpath $(libdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS) ++ -rpath $(pkglibdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS) + + ####################################################################### + # +@@ -164,11 +164,11 @@ + # Do any module-specific installation. + # + # If there isn't a TARGET defined, then don't do anything. +-# Otherwise, install the libraries into $(libdir) ++# Otherwise, install the libraries into $(pkglibdir) + # + install: + @[ "x$(RLM_INSTALL)" = "x" ] || $(MAKE) $(MFLAGS) $(RLM_INSTALL) + if [ "x$(TARGET)" != "x" ]; then \ + $(LIBTOOL) --mode=install $(INSTALL) -c \ +- $(TARGET).la $(R)$(libdir)/$(TARGET).la || exit $$?; \ ++ $(TARGET).la $(R)$(pkglibdir)/$(TARGET).la || exit $$?; \ + fi diff --git a/net-dialup/freeradius/files/freeradius-2.1.12-qafixes.patch b/net-dialup/freeradius/files/freeradius-2.1.12-qafixes.patch new file mode 100644 index 000000000000..6b8c2f6c7a4b --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-2.1.12-qafixes.patch @@ -0,0 +1,89 @@ +diff -Nru freeradius-server-2.1.12.orig//configure.in freeradius-server-2.1.12/configure.in +--- freeradius-server-2.1.12.orig//configure.in 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/configure.in 2011-11-20 12:50:50.000000000 +0100 +@@ -577,7 +577,19 @@ + ], + [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ]) + +-AC_LIB_READLINE ++AC_CHECK_LIB(readline, readline, ++ [ LIBREADLINE="-lreadline" ++ AC_DEFINE(HAVE_LIBREADLINE, 1, ++ [Define to 1 if you have a readline compatible library.]) ++ AC_DEFINE(HAVE_READLINE_READLINE_H, 1, ++ [Define to 1 if you have the <readline/readline.h> header file.]) ++ AC_DEFINE(HAVE_READLINE_HISTORY, 1, ++ [Define if your readline library has \`add_history']) ++ AC_DEFINE(HAVE_READLINE_HISTORY_H, 1, ++ [Define to 1 if you have the <readline/history.h> header file.]) ++ ], ++ [ LIBREADLINE="" ]) ++AC_SUBST(LIBREADLINE) + + dnl ############################################################# + dnl # +diff -Nru freeradius-server-2.1.12.orig//src/include/radiusd.h freeradius-server-2.1.12/src/include/radiusd.h +--- freeradius-server-2.1.12.orig//src/include/radiusd.h 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/include/radiusd.h 2011-11-20 12:50:50.000000000 +0100 +@@ -652,6 +652,7 @@ + void event_new_fd(rad_listen_t *listener); + + /* evaluate.c */ ++int radius_get_vp(REQUEST *request, const char *name, VALUE_PAIR **vp_p); + int radius_evaluate_condition(REQUEST *request, int modreturn, int depth, + const char **ptr, int evaluate_it, int *presult); + int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, +diff -Nru freeradius-server-2.1.12.orig//src/lib/Makefile freeradius-server-2.1.12/src/lib/Makefile +--- freeradius-server-2.1.12.orig//src/lib/Makefile 2011-11-20 12:48:22.000000000 +0100 ++++ freeradius-server-2.1.12/src/lib/Makefile 2011-11-20 12:50:50.000000000 +0100 +@@ -42,7 +42,7 @@ + + $(TARGET).la: $(LT_OBJS) + $(LIBTOOL) --mode=link $(CC) -release $(RADIUSD_VERSION) \ +- $(LDFLAGS) $(LINK_MODE) -o $@ -rpath $(libdir) $^ ++ $(LDFLAGS) $(LINK_MODE) -o $@ -rpath $(libdir) $^ $(LIBS) + + $(LT_OBJS): $(INCLUDES) + +diff -Nru freeradius-server-2.1.12.orig//src/main/listen.c freeradius-server-2.1.12/src/main/listen.c +--- freeradius-server-2.1.12.orig//src/main/listen.c 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/main/listen.c 2011-11-20 12:50:50.000000000 +0100 +@@ -49,6 +49,9 @@ + #include <fcntl.h> + #endif + ++#ifdef WITH_UDPFROMTO ++#include <freeradius-devel/udpfromto.h> ++#endif + + /* + * We'll use this below. +diff -Nru freeradius-server-2.1.12.orig//src/modules/rlm_passwd/rlm_passwd.c freeradius-server-2.1.12/src/modules/rlm_passwd/rlm_passwd.c +--- freeradius-server-2.1.12.orig//src/modules/rlm_passwd/rlm_passwd.c 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/modules/rlm_passwd/rlm_passwd.c 2011-11-20 12:50:50.000000000 +0100 +@@ -247,8 +247,7 @@ + + static struct mypasswd * get_next(char *name, struct hashtable *ht) + { +-#define passwd ((struct mypasswd *) ht->buffer) +- struct mypasswd * hashentry; ++ struct mypasswd * hashentry, * passwd; + char buffer[1024]; + int len; + char *list, *nextlist; +@@ -267,6 +266,7 @@ + } + /* printf("try to find in file\n"); */ + if (!ht->fp) return NULL; ++ passwd = (struct mypasswd *) ht->buffer; + while (fgets(buffer, 1024,ht->fp)) { + if(*buffer && *buffer!='\n' && (len = string_to_entry(buffer, ht->nfields, ht->delimiter, passwd, sizeof(ht->buffer)-1)) && + (!ht->ignorenis || (*buffer !='-' && *buffer != '+') ) ){ +@@ -288,7 +288,6 @@ + fclose(ht->fp); + ht->fp = NULL; + return NULL; +-#undef passwd + } + + static struct mypasswd * get_pw_nam(char * name, struct hashtable* ht) diff --git a/net-dialup/freeradius/files/freeradius-2.1.12-ssl.patch b/net-dialup/freeradius/files/freeradius-2.1.12-ssl.patch new file mode 100644 index 000000000000..6488c87a429f --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-2.1.12-ssl.patch @@ -0,0 +1,11 @@ +diff -Nru freeradius-server-2.1.12.orig//src/modules/rlm_eap/libeap/Makefile freeradius-server-2.1.12/src/modules/rlm_eap/libeap/Makefile +--- freeradius-server-2.1.12.orig//src/modules/rlm_eap/libeap/Makefile 2011-11-20 12:48:22.000000000 +0100 ++++ freeradius-server-2.1.12/src/modules/rlm_eap/libeap/Makefile 2011-11-20 12:49:19.000000000 +0100 +@@ -9,6 +9,7 @@ + SRCS = eapcommon.c eapcrypto.c eapsimlib.c fips186prf.c + ifneq ($(OPENSSL_LIBS),) + SRCS += cb.c eap_tls.c mppe_keys.c tls.c ++LIBS += $(OPENSSL_LIBS) + endif + LT_OBJS = $(SRCS:.c=.lo) + INCLUDES = eap_types.h eap_tls.h diff --git a/net-dialup/freeradius/files/freeradius-2.1.12-versionless-la-files.patch b/net-dialup/freeradius/files/freeradius-2.1.12-versionless-la-files.patch new file mode 100644 index 000000000000..c3cd082479c9 --- /dev/null +++ b/net-dialup/freeradius/files/freeradius-2.1.12-versionless-la-files.patch @@ -0,0 +1,40 @@ +diff -Nru freeradius-server-2.1.12.orig//src/lib/Makefile freeradius-server-2.1.12/src/lib/Makefile +--- freeradius-server-2.1.12.orig//src/lib/Makefile 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/lib/Makefile 2011-11-20 12:47:22.000000000 +0100 +@@ -54,7 +54,5 @@ + $(INSTALL) -d -m 755 $(R)$(libdir) + $(LIBTOOL) --mode=install $(INSTALL) -c $(TARGET).la \ + $(R)$(libdir)/$(TARGET).la +- rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; +- ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la + + reconfig: +diff -Nru freeradius-server-2.1.12.orig//src/modules/rlm_eap/libeap/Makefile freeradius-server-2.1.12/src/modules/rlm_eap/libeap/Makefile +--- freeradius-server-2.1.12.orig//src/modules/rlm_eap/libeap/Makefile 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/modules/rlm_eap/libeap/Makefile 2011-11-20 12:47:22.000000000 +0100 +@@ -44,5 +44,3 @@ + install: all + $(LIBTOOL) --mode=install $(INSTALL) -c $(TARGET).la \ + $(R)$(libdir)/$(TARGET).la +- rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; +- ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la +diff -Nru freeradius-server-2.1.12.orig//src/modules/rlm_sql/drivers/rules.mak freeradius-server-2.1.12/src/modules/rlm_sql/drivers/rules.mak +--- freeradius-server-2.1.12.orig//src/modules/rlm_sql/drivers/rules.mak 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/modules/rlm_sql/drivers/rules.mak 2011-11-20 12:47:22.000000000 +0100 +@@ -147,6 +147,4 @@ + if [ "x$(TARGET)" != "x" ]; then \ + $(LIBTOOL) --mode=install $(INSTALL) -c \ + $(TARGET).la $(R)$(libdir)/$(TARGET).la || exit $$?; \ +- rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; \ +- ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la || exit $$?; \ + fi +diff -Nru freeradius-server-2.1.12.orig//src/modules/rules.mak freeradius-server-2.1.12/src/modules/rules.mak +--- freeradius-server-2.1.12.orig//src/modules/rules.mak 2011-09-30 16:12:07.000000000 +0200 ++++ freeradius-server-2.1.12/src/modules/rules.mak 2011-11-20 12:47:22.000000000 +0100 +@@ -171,6 +171,4 @@ + if [ "x$(TARGET)" != "x" ]; then \ + $(LIBTOOL) --mode=install $(INSTALL) -c \ + $(TARGET).la $(R)$(libdir)/$(TARGET).la || exit $$?; \ +- rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; \ +- ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la || exit $$?; \ + fi diff --git a/net-dialup/freeradius/files/radius.init-r2 b/net-dialup/freeradius/files/radius.init-r2 new file mode 100644 index 000000000000..107bbd9cc3ba --- /dev/null +++ b/net-dialup/freeradius/files/radius.init-r2 @@ -0,0 +1,56 @@ +#!/sbin/runscript + +extra_started_commands="reload" + +depend() { + need net + use dns +} + +checkconfig() { + if [ ! -d /var/run/radiusd ] && ! mkdir /var/run/radiusd ; then + eerror "Failed to create /var/run/radiusd" + return 1 + fi + + if [ ! -f /etc/raddb/radiusd.conf ] ; then + eerror "No /etc/raddb/radiusd.conf file exists!" + return 1 + fi + + RADIUSD_USER=`grep '^ *user *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3` + RADIUSD_GROUP=`grep '^ *group *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3` + if [ -n "${RADIUSD_USER}" ] && ! getent passwd ${RADIUSD_USER} > /dev/null ; then + eerror "${RADIUSD_USER} user missing!" + return 1 + fi + if [ -n "${RADIUSD_GROUP}" ] && ! getent group ${RADIUSD_GROUP} > /dev/null ; then + eerror "${RADIUSD_GROUP} group missing!" + return 1 + fi + + local dirs=/var/run/radiusd + [ -d /var/log/radius ] && dirs="${dirs} /var/log/radius" + chown -R "${RADIUSD_USER:-root}:${RADIUSD_GROUP:-root}" ${dirs} && \ + chmod -R u+rwX,g+rX ${dirs} || return 1 +} + +start() { + checkconfig || return 1 + + ebegin "Starting radiusd" + start-stop-daemon --start --quiet --exec /usr/sbin/radiusd -- ${RADIUSD_OPTS} >/dev/null + eend $? +} + +stop () { + ebegin "Stopping radiusd" + start-stop-daemon --stop --quiet --pidfile=/var/run/radiusd/radiusd.pid + eend $? +} + +reload () { + ebegin "Reloading radiusd" + kill -HUP `</var/run/radiusd/radiusd.pid` + eend $? +} diff --git a/net-dialup/freeradius/freeradius-2.1.12.ebuild b/net-dialup/freeradius/freeradius-2.1.12.ebuild new file mode 100644 index 000000000000..f13ea87c1565 --- /dev/null +++ b/net-dialup/freeradius/freeradius-2.1.12.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/freeradius-2.1.12.ebuild,v 1.1 2011/11/20 18:54:06 mrness Exp $ + +EAPI="4" + +inherit eutils multilib pam autotools libtool + +DESCRIPTION="Highly configurable free RADIUS server" +SRC_URI="ftp://ftp.freeradius.org/pub/radius/${PN}-server-${PV}.tar.gz" +HOMEPAGE="http://www.freeradius.org/" + +KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86" +LICENSE="GPL-2" +SLOT="0" +IUSE="bindist debug edirectory firebird frascend frxp kerberos ldap mysql pam postgres snmp ssl threads +udpfromto" + +RDEPEND="!net-dialup/cistronradius + !net-dialup/gnuradius + >=sys-libs/db-3.2 + sys-libs/gdbm + sys-libs/readline + net-libs/libpcap + dev-lang/perl + snmp? ( net-analyzer/net-snmp ) + mysql? ( virtual/mysql ) + postgres? ( dev-db/postgresql-server ) + !bindist? ( firebird? ( dev-db/firebird ) ) + pam? ( sys-libs/pam ) + ssl? ( dev-libs/openssl ) + ldap? ( net-nds/openldap ) + kerberos? ( virtual/krb5 ) + frxp? ( dev-lang/python )" +DEPEND="${RDEPEND}" + +REQUIRED_USE="frxp? ( threads )" + +S="${WORKDIR}/${PN}-server-${PV}" + +pkg_setup() { + if use edirectory && ! use ldap ; then + eerror "Cannot add integration with Novell's eDirectory without having LDAP support!" + eerror "Either you select ldap USE flag or remove edirectory" + die "edirectory needs ldap" + fi + if has_version '<net-dialup/freeradius-2.1.12'; then + elog "Please rename radiusd group/user as radius" + elog "and update /etc/raddb/radius.conf accordingly!" + else + enewgroup radius + enewuser radius -1 -1 /var/log/radius radius + fi +} + +src_prepare() { + epatch "${FILESDIR}/${P}-versionless-la-files.patch" + epatch "${FILESDIR}/${P}-ssl.patch" + epatch "${FILESDIR}/${P}-qafixes.patch" + epatch "${FILESDIR}/${P}-pkglibdir.patch" + + append-flags -lpthread + # kill modules we don't use + if ! use ssl; then + einfo "removing rlm_eap_{tls,ttls,ikev2,peap} modules (no use ssl)" + rm -rf src/modules/rlm_eap/types/rlm_eap_{tls,ttls,ikev2,peap} + fi + if ! use ldap; then + einfo "removing rlm_ldap (no use ldap)" + rm -rf src/modules/rlm_ldap + fi + if ! use kerberos; then + einfo "removing rlm_krb5 (no use kerberos)" + rm -rf src/modules/rlm_krb5 + fi + if ! use pam; then + einfo "removing rlm_pam (no use pam)" + rm -rf src/modules/rlm_pam + fi + if ! use mysql; then + einfo "removing rlm_sql_mysql (no use mysql)" + rm -rf src/modules/rlm_sql/drivers/rlm_sql_mysql + sed -i -e '/rlm_sql_mysql/d' src/modules/rlm_sql/stable + fi + if ! use postgres; then + einfo "removing rlm_sql_postgresql (no use postgres)" + rm -rf src/modules/rlm_sql/drivers/rlm_sql_postgresql + sed -i -e '/rlm_sql_postgresql/d' src/modules/rlm_sql/stable + fi + if use bindist || ! use firebird; then + einfo "removing rlm_sql_firebird (use bindist or no use firebird)" + rm -rf src/modules/rlm_sql/drivers/rlm_sql_firebird + sed -i -e '/rlm_sql_firebird/d' src/modules/rlm_sql/stable + fi + + # These are needed for fixing libtool-2 related issues (#261189) + # Keep these lines even if you don't patch *.{in,am} files! + eautoreconf + elibtoolize +} + +src_configure() { + local myconf="\ + $(use_enable debug developer) \ + $(use_with snmp) \ + $(use_with frascend ascend-binary) \ + $(use_with frxp experimental-modules) \ + $(use_with udpfromto) \ + $(use_with edirectory edir) \ + $(use_with threads)" + + # fix bug #77613 + if has_version app-crypt/heimdal; then + myconf="${myconf} --enable-heimdal-krb5" + fi + + econf --disable-static --disable-ltdl-install --with-system-libtool \ + --localstatedir=/var ${myconf} || die "econf failed" +} + +src_compile() { + emake -j1 || die "emake failed" +} + +src_install() { + dodir /etc + dodir /var/log + dodir /var/run + diropts -m0750 -o root -g radiusd + dodir /etc/raddb + diropts -m0750 -o radiusd -g radiusd + dodir /var/log/radius + keepdir /var/log/radius/radacct + dodir /var/run/radiusd + diropts + + make R="${D}" install || die "make install failed" + sed -i -e 's:^#user *= *nobody:user = radiusd:;s:^#group *= *nobody:group = radiusd:' \ + "${D}"/etc/raddb/radiusd.conf + chown -R root:radiusd "${D}"/etc/raddb/* + + pamd_mimic_system radiusd auth account password session + + mv "${D}/usr/share/doc/${PN}" "${D}/usr/share/doc/${PF}" + dodoc CREDITS + + rm "${D}/usr/sbin/rc.radiusd" + + newinitd "${FILESDIR}/radius.init-r2" radiusd + newconfd "${FILESDIR}/radius.conf" radiusd +} |