Issues with Perl 5.8.9_3 port/package (in combination with FreeRADIUS 2.1.6)

Nick Rogers ncrogers at gmail.com
Tue Jan 5 17:37:33 UTC 2010


I'm having the same problem as outlined in this thread...

http://forums.freebsd.org/showthread.php?t=9280

In short, using the freeradius perl module in conjunction with a perl script
that requires perl modules that use shared libraries seems to be
problematic. Identical setup worked fine under FreeBSD 7.2 +
freeradius-2.1.4 + perl-5.8.9_2.

Any help would be greatly appreciated. Below is a dump that should explain
my specific problem.

rxg# uname -a
FreeBSD rxg.local 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Wed Dec  9 19:07:25
UTC 2009     root at .localdomain:/usr/obj/usr/src/sys/RGNETS  amd64
rxg#
rxg# pkg_info
freeradius-2.1.6    A free RADIUS server implementation
gdbm-1.8.3_3        The GNU database manager
gettext-0.17_1      GNU gettext package
gmake-3.81_3        GNU version of 'make' utility
libiconv-1.13.1     A character set conversion library
libltdl-2.2.6a      System independent dlopen wrapper
p5-Data-Validate-Domain-0.09 Data::Validate::Domain - domain validation
methods
p5-Net-Domain-TLD-1.68 Look up and validate TLDs
p5-YAML-Tiny-1.40   Read/Write YAML files with as little code as possible
perl-5.8.9_3        Practical Extraction and Report Language
python26-2.6.2_3    An interpreted object-oriented programming language
rxg#
rxg# cat /usr/local/etc/raddb/radiusd.conf
user = freeradius
group = freeradius
raddbdir = /usr/local/etc/raddb
logdir = /var/log/radius
libdir = /usr/local/lib
pidfile = /var/run/radiusd/radiusd.pid
prefix = /usr/local
exec_prefix = ${prefix}
localstatedir = /var
sbindir = ${exec_prefix}/sbin
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd
log_file = /var/log/radius/radius.log
log_destination = files
max_request_time = 30
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 256

listen {
    ipaddr = *
    port = 1812
    type = auth
}

listen {
    ipaddr = *
    port = 1813
    type = acct
}

hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log_stripped_names = no
log_auth = yes
log_auth_badpass = no
log_auth_goodpass = no
usercollide = no
lower_user = no
lower_pass = no
nospace_user = no
nospace_pass = no
checkrad = ${sbindir}/checkrad
proxy_requests = no
snmp = no

security {
    max_attributes = 200
    reject_delay = 1
    status_server = no
}

thread pool {
    start_servers = 1
    max_servers = 16
    min_spare_servers = 0
    max_spare_servers = 5
    max_requests_per_server = 0
}

modules {
    perl {
        module = /space/rxg/rxgd/bin/freeradius_hook
    }

    detail {
        detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
        detailperm = 0644
    }

    acct_unique {
        key = "User-Name, Acct-Session-Id, NAS-IP-Address,
Client-IP-Address, NAS-Port"
    }

    eap {
        default_eap_type = peap
        timer_expire     = 60
        ignore_unknown_eap_types = no

        #  Generic Token Card.
        #
        #  Currently, this is only permitted inside of EAP-TTLS,
        #  or EAP-PEAP.  The module "challenges" the user with
        #  text, and the response from the user is taken to be
        #  the User-Password.
        #
        #  Proxying the tunneled EAP-GTC session is a bad idea,
        #  the users password will go over the wire in plain-text,
        #  for anyone to see.
        #
        gtc {
            challenge = "Password: "
            auth_type = perl
        }

        tls {
            private_key_password =
            private_key_file = /etc/ssl/server.key
            certificate_file = /etc/ssl/server.crt
            CA_file = /etc/ssl/server.crt
            dh_file = /usr/local/etc/raddb/dhparam
            random_file = /space/rxg/rxgd/bin/random
        }

        ttls {
            default_eap_type = gtc
            copy_request_to_tunnel = yes
            use_tunneled_reply = yes
        }

        peap {
            default_eap_type = gtc
            copy_request_to_tunnel = yes
            use_tunneled_reply = yes
        }
    }

    radutmp {
        filename = ${logdir}/radutmp
        username = %{User-Name}
        case_sensitive = yes
        check_with_nas = yes
        callerid = "yes"
    }

    radutmp sradutmp {
        filename = ${logdir}/sradutmp
        perm = 0644
        callerid = "no"
    }

    attr_filter {
        attrsfile = ${confdir}/attrs
    }

    counter daily {
        filename = ${raddbdir}/db.daily
        key = User-Name
        count-attribute = Acct-Session-Time
        reset = daily
        counter-name = Daily-Session-Time
        check-name = Max-Daily-Session
        allowed-servicetype = Framed-User
        cache-size = 5000
    }

    preprocess {
        huntgroups = ${confdir}/huntgroups
        hints = ${confdir}/hints
        with_ascend_hack = no
        ascend_channels_per_line = 23
        with_ntdomain_hack = no
        with_specialix_jetstream_hack = no
        with_cisco_vsa_hack = no
    }
}

authorize {
    preprocess
    eap
    perl
}

authenticate {
    Auth-Type PERL {
        perl
    }
    eap
}

preacct {
    preprocess
    acct_unique
}

accounting {
    detail
    radutmp
    perl
}

session {
    radutmp
}

rxg#
rxg# /usr/local/sbin/radiusd -X
FreeRADIUS Version 2.1.6, for host amd64-portbld-freebsd8.0, built on Sep 23
2009 at 05:11:26
Copyright (C) 1999-2009 The FreeRADIUS server project and contributors.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License v2.
Starting - reading configuration files ...
including configuration file /usr/local/etc/raddb/radiusd.conf
group = freeradius
user = freeradius
including dictionary file /usr/local/etc/raddb/dictionary
main {
prefix = "/usr/local"
localstatedir = "/var"
logdir = "/var/log/radius"
libdir = "/usr/local/lib"
radacctdir = "/var/log/radius/radacct"
hostname_lookups = no
max_request_time = 30
cleanup_delay = 5
max_requests = 256
allow_core_dumps = no
pidfile = "/var/run/radiusd/radiusd.pid"
checkrad = "/usr/local/sbin/checkrad"
debug_level = 0
proxy_requests = no
log_auth = yes
log_auth_badpass = no
log_auth_goodpass = no
log_stripped_names = no
 security {
max_attributes = 200
reject_delay = 1
status_server = no
 }
}
radiusd: #### Loading Realms and Home Servers ####
radiusd: #### Loading Clients ####
radiusd: #### Instantiating modules ####
radiusd: #### Loading Virtual Servers ####
server {
 modules {
 Module: Checking authenticate {...} for more modules to load
 Module: Linked to module rlm_perl
 Module: Instantiating perl
  perl {
module = "/space/rxg/rxgd/bin/freeradius_hook"
func_authorize = "authorize"
func_authenticate = "authenticate"
func_accounting = "accounting"
func_preacct = "preacct"
func_checksimul = "checksimul"
func_detach = "detach"
func_xlat = "xlat"
func_pre_proxy = "pre_proxy"
func_post_proxy = "post_proxy"
func_post_auth = "post_auth"
  }
Can't load '/usr/local/lib/perl5/5.8.9/mach/auto/IO/IO.so' for module IO:
/usr/local/lib/perl5/5.8.9/mach/auto/IO/IO.so: Undefined symbol
"PL_sv_undef" at /usr/local/lib/perl5/5.8.9/mach/XSLoader.pm line 70.
 at /usr/local/lib/perl5/5.8.9/mach/IO.pm line 11
Compilation failed in require at
/usr/local/lib/perl5/5.8.9/mach/IO/Handle.pm line 263.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/Handle.pm line 263.
Compilation failed in require at
/usr/local/lib/perl5/5.8.9/mach/IO/Seekable.pm line 101.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/Seekable.pm line 101.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/mach/IO/File.pm
line 133.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/File.pm line 133.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/FileHandle.pm
line 9.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/mach/Storable.pm
line 23.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/Storable.pm line 23.
Compilation failed in require at
/usr/local/lib/perl5/site_perl/5.8.9/Net/Domain/TLD.pm line 10.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/site_perl/5.8.9/Net/Domain/TLD.pm line 10.
Compilation failed in require at
/usr/local/lib/perl5/site_perl/5.8.9/Data/Validate/Domain.pm line 6.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/site_perl/5.8.9/Data/Validate/Domain.pm line 6.
Compilation failed in require at /space/rxg/rxgd/Rxg/Util.pm line 7.
BEGIN failed--compilation aborted at /space/rxg/rxgd/Rxg/Util.pm line 7.
Compilation failed in require at /space/rxg/rxgd/Rxg/ActiveRecord.pm line 8.
BEGIN failed--compilation aborted at /space/rxg/rxgd/Rxg/ActiveRecord.pm
line 8.
Compilation failed in require at
/space/rxg/rxgd/Rxg/ActiveRecord/RadiusServer.pm line 10.
BEGIN failed--compilation aborted at
/space/rxg/rxgd/Rxg/ActiveRecord/RadiusServer.pm line 10.
Compilation failed in require at /space/rxg/rxgd/bin/freeradius_hook line
11.
BEGIN failed--compilation aborted at /space/rxg/rxgd/bin/freeradius_hook
line 11 (#1)
    (F) The module you tried to load failed to load a dynamic extension.
This
    may either mean that you upgraded your version of perl to one that is
    incompatible with your old dynamic extensions (which is known to happen
    between major versions of perl), or (more likely) that your dynamic
    extension was built against an older version of the library that is
    installed on your system. You may need to rebuild your old dynamic
    extensions.

Uncaught exception from user code:
Can't load '/usr/local/lib/perl5/5.8.9/mach/auto/IO/IO.so' for module IO:
/usr/local/lib/perl5/5.8.9/mach/auto/IO/IO.so: Undefined symbol
"PL_sv_undef" at /usr/local/lib/perl5/5.8.9/mach/XSLoader.pm line 70.
 at /usr/local/lib/perl5/5.8.9/mach/IO.pm line 11
Compilation failed in require at
/usr/local/lib/perl5/5.8.9/mach/IO/Handle.pm line 263.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/Handle.pm line 263.
Compilation failed in require at
/usr/local/lib/perl5/5.8.9/mach/IO/Seekable.pm line 101.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/Seekable.pm line 101.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/mach/IO/File.pm
line 133.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/IO/File.pm line 133.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/FileHandle.pm
line 9.
Compilation failed in require at /usr/local/lib/perl5/5.8.9/mach/Storable.pm
line 23.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/5.8.9/mach/Storable.pm line 23.
Compilation failed in require at
/usr/local/lib/perl5/site_perl/5.8.9/Net/Domain/TLD.pm line 10.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/site_perl/5.8.9/Net/Domain/TLD.pm line 10.
Compilation failed in require at
/usr/local/lib/perl5/site_perl/5.8.9/Data/Validate/Domain.pm line 6.
BEGIN failed--compilation aborted at
/usr/local/lib/perl5/site_perl/5.8.9/Data/Validate/Domain.pm line 6.
Compilation failed in require at /space/rxg/rxgd/Rxg/Util.pm line 7.
BEGIN failed--compilation aborted at /space/rxg/rxgd/Rxg/Util.pm line 7.
Compilation failed in require at /space/rxg/rxgd/Rxg/ActiveRecord.pm line 8.
BEGIN failed--compilation aborted at /space/rxg/rxgd/Rxg/ActiveRecord.pm
line 8.
Compilation failed in require at
/space/rxg/rxgd/Rxg/ActiveRecord/RadiusServer.pm line 10.
BEGIN failed--compilation aborted at
/space/rxg/rxgd/Rxg/ActiveRecord/RadiusServer.pm line 10.
Compilation failed in require at /space/rxg/rxgd/bin/freeradius_hook line
11.
BEGIN failed--compilation aborted at /space/rxg/rxgd/bin/freeradius_hook
line 11.
 at /space/rxg/rxgd/bin/freeradius_hook line 11
rlm_perl: perl_parse failed: /space/rxg/rxgd/bin/freeradius_hook not found
or has syntax errors.
/usr/local/etc/raddb/radiusd.conf[69]: Instantiation failed for module
"perl"
/usr/local/etc/raddb/radiusd.conf[173]: Failed to find module "perl".
/usr/local/etc/raddb/radiusd.conf[173]: Failed to parse "perl" entry.
Errors initializing modules
rxg#


More information about the freebsd-ports mailing list