Hello list,
I'm using openser 1.0 and I'm using auth_radius and avp_radius to retrieve
all my user's preferences via AVPs. Everything works very well except, that
I cannot retrieve AVPs with value of i:0xhex. I'm trying to implement the
ACL example in
http://www.voice-system.ro/docs/avpops/ar01s08.html
In my radius config I have the following:
UserName Attribute op Value
Sipuser SIP-AVP = #102#0x08
In my openser.cfg I have the following:
...
if (uri=~"^sip:[0-9]{10}@") {
# Send to PSTN Gateway
xlog("L_N", " DOMESTIC CALL: from $fU to $rU\n");
if (avp_check("i:102", "and/i:0x01")) {
route(4); #NAT Test
route(5); #PSTN Route
} else {
xlog("L_N", " CALL NOT ALLOWED: from $fU to $rU, please
check $fU's ACL\n");
sl_send_reply("503", "Service Unavailable");
};
return;
};
...
This is the debug message that I get from openser:
0(25052) ERROR:auth_radius:extract_avp: invalid AVP numrical value '0x08'
# ------------------------------------------------------------------------
So I tried to cheat, by copying i:102 to a temporary AVP i:302 with the N
flag to convert the string to numerical value, like so:
UserName Attribute op Value
Sipuser SIP-AVP = #102:0x08
Openser.cfg:
if (uri=~"^sip:[0-9]{10}@") {
# Send to PSTN Gateway
if (avp_copy("i:102","i:302/n") &&
avp_check("i:302", "and/i:0x01"))
{
route(4); #NAT Test
route(5); #PSTN Route
} else {
xlog("L_N", " CALL NOT ALLOWED: from $fU to $rU, please
check $fU's ACL\n");
sl_send_reply("503", "Service Unavailable");
};
return;
};
This is the debug message that I get from openser:
0(25135) ERROR:avpops:copy_avp: cannot convert str to int
# ------------------------------------------------------------------------
And finally, I tried to force it by having the value as string, but try to
use the ANDing op, like so:
UserName Attribute op Value
Sipuser SIP-AVP = #102:0x08
Openser.cfg:
...
if (uri=~"^sip:[0-9]{10}@") {
# Send to PSTN Gateway
if (avp_check("i:102", "and/i:0x01")) {
route(4); #NAT Test
route(5); #PSTN Route
} else {
xlog("L_N", " CALL NOT ALLOWED: from $fU to $rU, please
check $fU's ACL\n");
sl_send_reply("503", "Service Unavailable");
};
return;
};
...
This is the debug message that I get from openser:
0(25140) ERROR:avpops:check_avp: value types don't match
# ------------------------------------------------------------------------
It seems to me that the problem lies in auth_radius by not allowing
extraction of AVPs with numerical values in hex. If we can get that work
work, I think the rest should work fine without any alterations.
Thanks for your help in advance!
Lenir