Apologies for Mr. Peter Nixon and updated sqlippool debug

Guilherme Franco guilhermefranco at gmail.com
Mon Sep 25 23:49:00 CEST 2006


Mr. Nixon,

Please accept my humble apologies for the earlier spam.

I would like to test your experimental module sqlippool in Oracle and
in return, contribute somehow with my working configs and tables to
the CVS.

I understand that you are a busy man, so please excuse me if I did bother you.

This question is not directed only to you but I'm asking it because
module rlm_sqlippool have pnixon ownership. Please correct me with I'm
wrong.

With all the help from yours and everyone from freeradius-user-list,
I've managed to make some progress with the sqlippool in Oracle, with
just one error left.

I'm not a SQL newbie, but I'm struggling to debug that error because I
can't see the originating query as it is apparently mounted on the fly
in lib/rlm_sqlippool* objects.

I have C knowledge but didn't discovered what might be causing the
error in rlm_sqlippool.c.

Currently, I'm using freeradius-snapshot-20060925.

I've compiled it with  --enable-developer and ran radiusd -X through gdb.

The error happens even when I'm using the default v1.4 of
sqlippool.conf, without modifying it:
----------------------------------------------------------
Processing the post-auth section of radiusd.conf
modcall:  entering group post-auth for request 0
rlm_sql (sql): Reserving sql socket id: 2
radius_xlat:  'BEGIN'
BEGIN
rlm_sql_oracle: execute query failed in sql_query: ORA-06550: line 1,
column 5: PLS-00103: Encountered the symbol "end-of-file" when
expecting one of the following:     begin case declare exit for goto
if loop mod null pragma    raise return select update while with <an
identifier>    <a double-quoted delimited-identifier> <a bind
variable> <<    close current delete fetch lock insert open rollback
 savepoint set sql execute commit forall merge pipe
rlm_sql_oracle: OCI_SERVER_NORMAL
sqlippool_command: database query error
-----------------------------------------------------------

Next is an output of Oracle's compatible version of sqlippool.conf
that I've made. It works, but the IP from the sql pool does not get
allocated because of the previous error:

-----------------------------------------------------------
UPDATE radippool   SET nasipaddress = '', pool_key = 0,
callingstationid = '',   expiry_time = current_timestamp - interval
'1' second(1)   WHERE pool_key = '2398432'
SELECT framedipaddress FROM radippool   WHERE pool_name = 'FOO' AND
expiry_time < current_timestamp AND ROWNUM = 1   ORDER BY (select
username from radippool where username <> ''), (select
callingstationid from radippool where callingstationid <> ''),
expiry_time   FOR UPDATE
sqlippool_query1: SQL query did not succeed
rlm_sqlippool: ip=[ ] len=0
radius_xlat:  'COMMIT'
COMMIT
rlm_sqlippool: IP number could not be allocated.
rlm_sql (sql): Released sql socket id: 2
rlm_sql (sql): Processing sql_postauth
radius_xlat:  'test_user2'
rlm_sql (sql): sql_set_user escaped user --> 'test_user2'
modcall: group post-auth returns noop for request 0
Sending Access-Accept of id 44 to 172.16.4.1 port 2243
Finished request 0
-----------------------------------------------------------

The question is: What is the complete BEGIN query? so I can debug the
cause of the error through sqlplus.

PS. gdb debug info:

  (gdb) info threads
* 1 Thread 182896320192 (LWP 12546)  0x00000039718bf8f5 in
__select_nocancel () from /lib64/tls/libc.so.6

(gdb) thread apply all bt full

Thread 1 (Thread 182896320192 (LWP 12546)):
#0  0x00000039718bf8f5 in __select_nocancel () from /lib64/tls/libc.so.6
No symbol table info available.
#1  0x0000000000413271 in main (argc=Variable "argc" is not available.
) at radiusd.c:596
        tv = {tv_sec = 1, tv_usec = 625000}
        request = (REQUEST *) 0x74f160
        buffer = "* port 1814", '\0' <repeats 45 times>,
"pôÿ¿\177\000\000\000àôÿ¿\177\000\000\000\021y\000s9\000\000\000`m\023s9\000\000\000pòÿ¿\177\000\000\000@(c)g\225*\000\000\000Ý\226`q9",
'\0' <repeats 11 times>,
"\ay\000s9\000\000\000\021y\000s9\000\000\000\t\000\000\000\000\000\000\000àôÿ¿\177\000\000\000ú\232`q9\000\000\0000/x\225*\000\000\000à3x\225*\000\000\000\2008x\225*\000\000\000(=x\225*\000\000\000\000ðU\225*\000\000\000P*x\225*\000\000\000ØAx\225*\000\000\000¨$x\225*",
'\0' <repeats 11 times>, "`m\023s9"...
        readfds = {fds_bits = {448, 0 <repeats 15 times>}}
        argval = Variable "argval" is not available.

Thank you very much.




More information about the Freeradius-Users mailing list