Issue with a new module and radiusd: symbol lookup error
Luca Adamo
lucamerica at hotmail.com
Tue Sep 23 14:19:01 CEST 2008
Hi everybody,
I'm using a self compiled version of FreeRADIUS 2.1.0 on a Linux x86
box running ubuntu 8.04 updated.
I've been able to succesfully install and configure the server and to
run some test using a D-Link access-point getting a regular Access-
Accept.
My troubles started when I decided to implement a new module. My
module has a structure similar to the sql module in fact it is used to
query a MySQL database. I have been able to make this module connect
to the database and to perform some operation on the reply packet
during the postauth phase (basically adding attributes).
I also wanted to use this module, rlm_wimax_qos, in the authorize
phase but here I got stuck because a symbol lookup error.
I'm providing all the details I can, first of all the final part of
radiusd -X command:
Module: Linked to module rlm_wimax_qos
Module: Instantiating wimax_qos
wimax_qos {
driver = "rlm_sql_mysql"
server = "localhost"
port = ""
login = "root"
password = "rootpass"
radius_db = "radiusDB"
read_groups = yes
sqltrace = no
sqltracefile = "/usr/local/var/log/radius/sqltrace.sql"
readclients = no
deletestalesessions = yes
num_sql_socks = 5
sql_user_name = "%{User-Name}"
default_user_profile = ""
nas_query = "SELECT id,nasname,shortname,type,secret FROM nas"
authorize_check_query = ""
authorize_reply_query = ""
authorize_group_check_query = ""
authorize_group_reply_query = ""
accounting_onoff_query = ""
accounting_update_query = ""
accounting_update_query_alt = ""
accounting_start_query = ""
accounting_start_query_alt = ""
accounting_stop_query = ""
accounting_stop_query_alt = ""
connect_failure_retry_delay = 60
simul_count_query = ""
simul_verify_query = ""
postauth_query = "INSERT into radpostauth (user, pass, reply, date)
values ('%{User-Name}', '%{User-Password:-Chap-Password}', '%
{reply:Packet-Type}', NOW())"
qos_profile_query = "SELECT qos_id FROM class_table WHERE
EAP_Inner_GID='%{reply:EAP-Inner-GID}' AND EAP_Outer_GID='%{reply:EAP-
Outer-GID}'"
qos_get_attribute_query = "SELECT id,qos_id,attribute,value,op FROM
qos_profile_table WHERE qos_id=%{reply:Qos_Id}"
nas_capability_query = "SELECT
NAS_DHCP_Support,DHCP_Proxy_Relay,MIP_FA_Address,type,nasname FROM
nas_table WHERE nasname='%{NAS-IP-Address}'"
dhcp_sec_assoc_query = "SELECT
DHCP_RK_Key_ID,DHCP_RK_Lifetime,DHCP_RK FROM dhcp_handling_table WHERE
DHCPv4_Server='%{reply:WiMAX-DHCPv4-Server}'"
dhcp_sec_existid_query = "SELECT
DHCP_RK_Key_ID,DHCP_RK_Lifetime,DHCP_RK FROM dhcp_handling_table WHERE
DHCP_RK_Key_ID ='%{packet:WiMAX-DHCP-RK-Key-Id}'"
dhcp_sec_update_query = "INSERT INTO dhcp_handling_table
(DHCPv4_Server,DHCP_RK_Key_ID,DHCP_RK_Lifetime,DHCP_RK) VALUES ('%
{reply:WiMAX-DHCPv4-Server}','%{reply:gen_WiMAX-DHCP-RK-Key-ID}','%
{reply:gen_WiMAX-DHCP-RK-Lifetime}','%{reply:gen_WiMAX-DHCP-RK}')"
dhcp_rm_old_key_query = "DELETE FROM dhcp_handling_table WHERE
DHCPv4_Server='%{reply:WiMAX-DHCPv4-Server}'"
static_only_config = "1"
dhcp_rk_timeout = "36000"
safe-characters =
"@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
}
rlm_sql (wimax_qos): Driver rlm_sql_mysql (module rlm_sql_mysql)
loaded and linked
rlm_sql (wimax_qos): Attempting to connect to root at localhost:/radiusDB
radiusd: symbol lookup error: /usr/local/lib/rlm_wimax_qos-2.1.0.so:
undefined symbol: sql_init_socketpool
Then I'm also providing the relevant portion of the radiusd.conf file.
Please note that no problems occur if I only "call" the module during
postauth. In this phase the module's behaviour is the one expected.
authorize {
preprocess
auth_log
wimax_qos
eap
}
authenticate {
eap
mschap
}
preacct {
preprocess
acct_unique
suffix
files
}
accounting {
detail
radutmp
sql
}
session {
radutmp
sql
}
post-auth {
wimax_qos
}
Finally I can provide the last part of the module code, the one where
I set the function that serves as an entry point during the authorize
phase.
module_t rlm_wimax_qos = {
RLM_MODULE_INIT,
"wimax_qos",
RLM_TYPE_THREAD_SAFE, /* type */
wimax_qos_instantiate, /* instantiation */
wimax_qos_detach, /* detach */
{
NULL, /* authentication */
wimax_qos_authorize, /* authorization */
NULL, /* preaccounting */
NULL, /* accounting */
NULL, /* checksimul */
NULL, /* pre-proxy */
NULL, /* post-proxy */
wimax_qos_postauth, /* post-auth */
},
};
I have tried by best to understand where the error below comes from.
Compiling goes fine, no errors are found. If I put the module under
authorize in radiusd.conf the error happen, otherwise everything is
going fine (but nothing of what i want is performed during authorize).
I'm keeping saying this because I want to point out that the issue is
configuration dependent and that my code works in certain
circumstances (i.e. the symbol is not missing from the dynamic library).
rlm_sql (wimax_qos): Driver rlm_sql_mysql (module rlm_sql_mysql)
loaded and linked
rlm_sql (wimax_qos): Attempting to connect to root at localhost:/radiusDB
radiusd: symbol lookup error: /usr/local/lib/rlm_wimax_qos-2.1.0.so:
undefined symbol: sql_init_socketpool
If someone has a clue everything is welcome, and If more details are
needed I can do my best to provide them.
Thank you,
Lu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20080923/17f2f95a/attachment.html>
More information about the Freeradius-Users
mailing list