Hello, Daniel-Constantin! I see attached two patches:
docs.patch - some documentation changes functions.patch: + patch 'bout IPv4 (ipaddr) attributes + in radius_load_callee_avps/radius_load_caller_avps when common_response set 1, avp's set even in negative radius response (usable for error handle). Looks like I successfully combine kamailio and abills via radius. -- WBR, Victor JID: coy...@bks.tv JID: coy...@bryansktel.ru I use FREE operation system: 3.9.2-calculate GNU/Linux
diff --git a/modules/misc_radius/functions.c b/modules/misc_radius/functions.c index 7a2468b..50c63cf 100644 --- a/modules/misc_radius/functions.c +++ b/modules/misc_radius/functions.c @@ -196,11 +196,12 @@ static void generate_avps(struct attr *attrs, VALUE_PAIR* received) do { \ if ((_len) != 0) { \ if ((_len) == -1) { \ - if (_attrs[_attr].t != PW_TYPE_INTEGER) { \ - LM_ERR("attribute %d is not of type integer\n", \ - _attrs[_attr].v); \ - goto error; \ - } \ + if (_attrs[_attr].t != PW_TYPE_INTEGER) \ + if (_attrs[_attr].t != PW_TYPE_IPADDR) { \ + LM_ERR("attribute %d is not of type integer or ipaddr\n", \ + _attrs[_attr].v); \ + goto error; \ + } \ } \ if (!rc_avpair_add( rh, &send, _attrs[_attr].v, _val, _len, 0)) { \ LM_ERR("failed to add %s, %d\n", _attrs[_attr].n, _attr); \ @@ -274,6 +275,7 @@ int radius_load_caller_avps(struct sip_msg* _m, char* _caller, char* _s2) return 1; } else { rc_avpair_free(send); + if (common_response) generate_avps_rad(received); rc_avpair_free(received); #ifdef REJECT_RC if (res == REJECT_RC) { @@ -359,6 +361,7 @@ int radius_load_callee_avps(struct sip_msg* _m, char* _callee, char* _s2) return 1; } else { rc_avpair_free(send); + if (common_response) generate_avps_rad(received); rc_avpair_free(received); #ifdef REJECT_RC if (res == REJECT_RC) {
diff --git a/modules/misc_radius/doc/misc_radius_admin.xml b/modules/misc_radius/doc/misc_radius_admin.xml index aff0973..d39cd06 100644 --- a/modules/misc_radius/doc/misc_radius_admin.xml +++ b/modules/misc_radius/doc/misc_radius_admin.xml @@ -307,18 +307,35 @@ modparam("misc_radius", "use_sip_uri_host", 1) <title><varname>common_response</varname> (integer)</title> <para> Set it to 1 if you need common radius response attributes to - be added as AVPs. + be added as AVPs in <function moreinfo="none">radius_load_caller_avps</function> + and <function moreinfo="none">radius_load_callee_avps</function> + with name as radius attribute name and value as radius attribute value. </para> <para> Default value is <quote>0</quote>. </para> <example> - <title><varname>common_response</varname> parameter usage</title> + <title>radius responce with <varname>common_response</varname> value 1</title> <programlisting format="linespecific"> +modparam("misc_radius", "common_response", 1) ... -modparam("misc_radius", "common_response", 21) +radius_load_caller_avps($fU); </programlisting> - </example> + Sending Access-Accept of id 60 to 192.168.25.32 port 59736 + Session-Timeout = 4261674 + next-hop-ip = "SIP/00111222333444@cisco-out" + SIP-AVP = "email:sr-users@lists.sip-router.org session-timeout#161 next-hop-ip:h323/0001...@myvoip-gate.kamailio.org" + session-protocol = "SIP" + +$avp(Session-Timeout) has integer value 4261674 +$avp(next-hop-ip) has string value "SIP/005555777888@cisco-out" +$avp(session-protocol) has string value "SIP" +$avp(SIP-AVP) has string value "email:sr-users@lists.sip-router.org session-timeout#161 next-hop-ip:h323/0001...@myvoip-gate.kamailio.org" + + When recieving negative response, check appropriate avp's: + $avp(Reply-Message) = "Not enough money on deposit '-89.83'. Rejected" + $avp(Filter-Id) = "neg_deposit" + </example> </section> </section>
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users