> Thomas Jalsovsky <[EMAIL PROTECTED]> wrote: > > my nas sends: > > ... > > h323-ivr-out=transactionID:13880 > > h323-ivr-out=type:test.tcl > > ... > > I want to check by the h323-ivr-out line, so I would like to make > > decision (about accept/reject) by the attribute h323-ivr-out which has > > value 'type:<something>'. > > When I test the attribute, the first line is tested and I don't > > know how should I write a rule for this. > > Yes. The current code checks for the FIRST appearance of an > attribute, and stops if it doesn't match. > > It *could* be changed to look for any other copy of an attribute, if > the first one didn't match. That may be preferable, in fact. > > The code in src/main/valuepair.c, function paircmp() should be > changed so that IF there isn't a match, it loops back to check for > another copy of the same attribute. This will slow the server down a > little, but not significantly. > > The patch would be fairly small, too. If people think it's terribly > useful, I'll take a look at doing it in the next few days. > > Alan DeKok.
OK, I see that in the last CVS is the paircmp fix. I compiled the latest CVS, and made som debugs. Unfortunately I can't make it working. rad_recv: Access-Request packet from host 193.41.203.20:1645, id=181, length=244 NAS-IP-Address = 193.41.203.20 Cisco-NAS-Port = "ISDN 3:D:31" NAS-Port-Type = Async User-Name = "160045" h323-conf-id = "h323-conf-id=A0F37603 1AE911D6 B7E0FCCE C908BF0C" Calling-Station-Id = "169" Password = "********************" Cisco-AVPair = "in-portgrp-id=(Local PBX)" Cisco-AVPair = "h323-ivr-out=transactionID:16112" Cisco-AVPair = "h323-ivr-out=type:pp" modcall: entering group authorize modcall[authorize]: module "preprocess" returns ok modcall: entering group redundant rlm_sql: Reserving sql socket id: 19 radius_xlat: 'SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE Username = '160045' ORDER BY id' radius_xlat: 'SELECT radgroupcheck.id,radgroupcheck.GroupName,radgroupcheck.Attribute,radgroupcheck.Value,radgroupcheck.op FROM radgroupcheck,usergroup WHERE usergroup.Username = '160045' AND usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id' radius_xlat: 'SELECT id,UserName,Attribute,Value,op FROM radreply WHERE Username = '160045' ORDER BY id' radius_xlat: 'SELECT radgroupreply.id,radgroupreply.GroupName,radgroupreply.Attribute,radgroupreply.Value,radgroupreply.op FROM radgroupreply,usergroup WHERE usergroup.Username = '160045' AND usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id' rlm_sql: Released sql socket id: 19 rlm_sql: Pairs do not match [] modcall[authorize]: module "sql_primary" returns notfound modcall: group redundant returns notfound modcall: group authorize returns notfound auth: No Auth-Type configuration for the request, rejecting the user auth: Failed to validate the user. I looked for the SQL queryes: mysql> SELECT id,UserName,Attribute,Value,op FROM radcheck WHERE -> Username = '160045' ORDER BY id; +------+----------+----------------+-----------------------------+------+ | id | UserName | Attribute | Value | op | +------+----------+----------------+-----------------------------+------+ | 1856 | 160045 | Crypt-Password | *************************** | NULL | +------+----------+----------------+-----------------------------+------+ mysql> SELECT -> radgroupcheck.id,radgroupcheck.GroupName,radgroupcheck.Attribute,radgroupcheck.Value,radgroupcheck.op -> FROM radgroupcheck,usergroup WHERE usergroup.Username = '160045' AND -> usergroup.GroupName = radgroupcheck.GroupName ORDER BY radgroupcheck.id; +----+-----------+--------------+---------------+------+ | id | GroupName | Attribute | Value | op | +----+-----------+--------------+---------------+------+ | 16 | prepaid | h323-ivr-out | type:pp | NULL | +----+-----------+--------------+---------------+------+ mysql> SELECT id,UserName,Attribute,Value,op FROM radreply WHERE -> Username = '160045' ORDER BY id; Empty set (0.00 sec) mysql> SELECT -> radgroupreply.id,radgroupreply.GroupName,radgroupreply.Attribute,radgroupreply.Value,radgroupreply.op -> FROM radgroupreply,usergroup WHERE usergroup.Username = '160045' AND -> usergroup.GroupName = radgroupreply.GroupName ORDER BY radgroupreply.id; +----+-----------+-------------------+---------------------+------+ | id | GroupName | Attribute | Value | op | +----+-----------+-------------------+---------------------+------+ | 1 | prepaid | Exec-Program-Wait | /scripts/prepaid.pl | NULL | | 3 | prepaid | Cisco-AVPair | h323-ivr-in=type:pp | NULL | +----+-----------+-------------------+---------------------+------+ My tables: mysql> select * from usergroup; +----+------------+---------------+ | id | UserName | GroupName | +----+------------+---------------+ | 2 | 160045 | prepaid | +----+------------+---------------+ Something I do wrong or the paircmp fix doesn't solve this problem? Thanks, Thomas p.s.: If I remove the | 3 | prepaid | Cisco-AVPair | h323-ivr-in=type:pp | NULL | line from radgroupreply, it is working fine, the Exec-Program-Wait is started. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html