HI Carlos,
Thanks for reply.
In my case the key is SIP Server IP. My kamailio Proxy is connected to
many sip server IPs say 5. I want to limit maximum channels per sip server
ip. So I set max channels per sip server ip as
cnxcc_set_max_channels("$var(client1)", "$var(max_chan)"); and my
$var(client1) = "10.97.116.36"; is one of 5 sip servers connected to
Kamalio.
Now I use your cnxcc_get_channel_count("$rd", "$var(count1)"))
value(count1) to compare to the max_limit of the channels allowed for this
sip server. Psuedo Variable $rd is coming correctly that is same as sips
erver IP[$var(client1)].
But the problem is that cnxcc_get_channel_count("$rd",
"$var(count1)"))
is always setting the value 1 in $var(count1) variable even though there
are more calls runnning than what was set to be max_chan (which was 100 in
my case).
Any pointers to achieve this matter ?
On Tue, Jun 3, 2014 at 2:18 PM, Carlos Ruiz Díaz <
carlos.ruizdiaz(a)gmail.com> wrote:
Hi Rahul,
I don't understand your example. In that case, you are always using
"10.97.116.36"
as key, meaning that all calls will be hanging from same root.
If you want to use the request-uri domain part, use $rd, not the full
$ru. This will of course lead to 1 call being reported always, since
request-URIs tend to be different from each other.
Regards,
Carlos
On Tue, Jun 3, 2014 at 7:01 AM, Rahul MathuR <rahul.ultimate(a)gmail.com>
wrote:
> Hi Carlos,
>
> Sorry for coming late on this one.
>
> the ruri value in my example is '10.97.116.36'
> and i have tried to configure kamailio to only cater 100 simultaneous
> calls on this SIP Server (10.97.116.36), after that it is to send 403.
>
> Below is the sample logic from kamailio.cfg
>
>
***********************************************************************************************************************
> #Below lines to show an example of how I am maintaining the business
> for Concurrent Call Restriction
> route[CNXCC]
> {
>
> $var(client1) = "10.97.116.36";
> $var(max_chan) = 100;
> #!ifdef CNXCC_CHANNEL
> xlog("L_INFO", "Setting up channel based credit
control");
>
> $var(max_chan1) = 0;
> $var(retcode) = cnxcc_set_max_channels("$var(client1)",
> "$var(max_chan)");
>
> if ($var(retcode) == -1) {
> xlog("Error setting up credit control");
> return;
> }
>
> $var(count1) = -1;
>
> if (!cnxcc_get_channel_count("$rd", "$var(count1)")) {
> xlog("Error getting customer's channel count");
> }
> xlog("RAHUL : CNXCC ROUTE: $var(client1) has $var(count1)
> call(s)");
> xlog("L_INFO", "CNXCC ROUTE: $var(client1) has $var(count1)
> call(s)");
>
>
> if ($var(count1) == $var(max_chan1)) {
> xlog("Too many channels for customer");
> sl_send_reply(403, "Forbidden");
>
> exit;
> }
> #!endif
>
>
******************************************************************************************************************************************************
>
> Now the problem that I am facing is that with multiple UACs (all with
> same ruri - 10.97.116.36) dialing some pstn numbers, the value of "count1"
> remains 1 for all cases. Hence, my purpose is defeated because the
> restriction is not being laid and more than 'max_chan' no. of callers are
> able to make the call.
>
> Could you please help me achieve this goal.
>
> Thanks !
>
>
>
> On Sat, May 17, 2014 at 2:22 AM, Carlos Ruiz Díaz <
> carlos.ruizdiaz(a)gmail.com> wrote:
>
>> max_chan is equal to zero? You should put a positive value in here in
>> order to make sense the function call.
>>
>> Also, you are using for one call the ID "x.y.z.a", and for the other
>> one $rd. Both should be the same for calls that suppose to be organized in
>> the same group.
>>
>> Please take a look at the docs.
>>
>>
>> On Fri, May 16, 2014 at 7:52 PM, Rahul MathuR <
>> rahul.ultimate(a)gmail.com> wrote:
>>
>>> Further, from the logs it seems that cnxcc_set_max_channels is
>>> returning -1 and I have no idea why it is failing.
>>>
>>>
>>> On Sat, May 17, 2014 at 5:48 AM, Rahul MathuR <
>>> rahul.ultimate(a)gmail.com> wrote:
>>>
>>>> Hello Carlos,
>>>>
>>>> Many thanks for your help.
>>>> I followed the steps you mentioned for CNXCC. But even after making
>>>> the max. calls to 0, I am still able to connect the call. Below is the
>>>> excerpt from kamailio.cfg
>>>>
>>>> request_route {
>>>> setflag(DLG_FLAG);
>>>> # per request initial checks
>>>> route(REQINIT);
>>>> # NAT detection
>>>> route(NATDETECT);
>>>> .
>>>> .
>>>> .
>>>>
>>>> if (is_method("INVITE")) {
>>>> route(CNXCC);
>>>> }
>>>> }
>>>>
>>>> #Below lines added by Rahul for Concurrent Call Restriction
>>>> route[CNXCC]
>>>> {
>>>>
>>>> $var(client1) = "x.y.z.a";
>>>>
>>>> #!ifdef CNXCC_CHANNEL
>>>> xlog("L_INFO", "Setting up channel based credit
control");
>>>>
>>>> $var(max_chan1) = 0;
>>>> $var(retcode) =
cnxcc_set_max_channels("$var(client1)",
>>>> "$var(max_chan)");
>>>>
>>>> if ($var(retcode) == -1) {
>>>> xlog("Error setting up credit control");
>>>> return;
>>>> }
>>>>
>>>> $var(count1) = -1;
>>>>
>>>> if (!cnxcc_get_channel_count("$rd",
"$var(count1)")) {
>>>> xlog("Error getting customer's channel
count");
>>>> }
>>>> xlog("RAHUL : CNXCC ROUTE: $var(client) has $var(count)
>>>> call(s)");
>>>> xlog("L_INFO", "CNXCC ROUTE: $var(client) has
$var(count)
>>>> call(s)");
>>>>
>>>> if ($var(count1) == $var(max_chan1)) {
>>>> xlog("Too many channels for customer");
>>>> sl_send_reply(403, "Forbidden");
>>>>
>>>> #if (!cnxcc_terminate_all("$var(client)")) {
>>>> # xlog("Error terminating customer's
calls");
>>>> #}
>>>>
>>>> exit;
>>>> }
>>>> #!endif
>>>>
>>>>
>>>> Could you please guide me where am I doing wrong ?
>>>>
>>>>
>>>> On Sat, May 17, 2014 at 3:01 AM, Carlos Ruiz Díaz <
>>>> carlos.ruizdiaz(a)gmail.com> wrote:
>>>>
>>>>> Any pseudo variable should work.
>>>>>
>>>>> I don't exactly know how your business work, but I'd suggest
that
>>>>> instead of using from header domain, use the domain part of the
>>>>> request-uri, $rd.
>>>>>
>>>>> Regards,
>>>>> Carlos
>>>>>
>>>>>
>>>>> On Fri, May 16, 2014 at 4:28 PM, Rahul MathuR <
>>>>> rahul.ultimate(a)gmail.com> wrote:
>>>>>
>>>>>> Thank you very much Carlos !
>>>>>>
>>>>>> One last thing, can I use $fd in cnxcc_set_max_channels as below
>>>>>> -
>>>>>> cnxcc_set_max_channels("$fd",
"$var(max_chan)");
>>>>>> to restrict the simultaneous calls hitting a particular domain ?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, May 17, 2014 at 2:03 AM, Carlos Ruiz Díaz <
>>>>>> carlos.ruizdiaz(a)gmail.com> wrote:
>>>>>>
>>>>>>> Create a profile [1], and count the number of calls of that
>>>>>>> profile [2].
>>>>>>>
>>>>>>> Alternatively, you can use cnxcc module [3].
>>>>>>>
>>>>>>> [1]
>>>>>>>
http://kamailio.org/docs/modules/stable/modules/dialog.html#idp1919576
>>>>>>> [2]
>>>>>>>
http://kamailio.org/docs/modules/stable/modules/dialog.html#idp1964064
>>>>>>> [3]
>>>>>>>
http://kamailio.org/docs/modules/stable/modules/cnxcc.html#idp132608
>>>>>>>
>>>>>>>
>>>>>>> On Fri, May 16, 2014 at 3:28 PM, Rahul MathuR <
>>>>>>> rahul.ultimate(a)gmail.com> wrote:
>>>>>>>
>>>>>>>> *Hello,*
>>>>>>>>
>>>>>>>> *Please accept my apologies for asking a simple question
- Is there any example which shows how can I create the dialog profile **value based on
the SIP domain or SIP Server IP (IP like- 112.23.134.5). I** need to control many SIP
Server IPs with limited channels to each with my** Kamailio Proxy.*
>>>>>>>>
>>>>>>>> *I am a newbie to kamailio world.*
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *-- Warm Regds.MathuRahul*
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> sr-dev mailing list
>>>>>>>> sr-dev(a)lists.sip-router.org
>>>>>>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Carlos
>>>>>>>
http://caruizdiaz.com
>>>>>>>
http://ngvoice.com
>>>>>>> +52 55 3048 3303
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> sr-dev mailing list
>>>>>>> sr-dev(a)lists.sip-router.org
>>>>>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Warm Regds.
>>>>>> MathuRahul
>>>>>>
>>>>>> _______________________________________________
>>>>>> sr-dev mailing list
>>>>>> sr-dev(a)lists.sip-router.org
>>>>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Carlos
>>>>>
http://caruizdiaz.com
>>>>>
http://ngvoice.com
>>>>> +52 55 3048 3303
>>>>>
>>>>> _______________________________________________
>>>>> sr-dev mailing list
>>>>> sr-dev(a)lists.sip-router.org
>>>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Warm Regds.
>>>> MathuRahul
>>>>
>>>
>>>
>>>
>>> --
>>> Warm Regds.
>>> MathuRahul
>>>
>>> _______________________________________________
>>> sr-dev mailing list
>>> sr-dev(a)lists.sip-router.org
>>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>
>>>
>>
>>
>> --
>> Carlos
>>
http://caruizdiaz.com
>>
http://ngvoice.com
>> +52 55 3048 3303
>>
>> _______________________________________________
>> sr-dev mailing list
>> sr-dev(a)lists.sip-router.org
>>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>
>>
>
>
> --
> Warm Regds.
> MathuRahul
>
> _______________________________________________
> sr-dev mailing list
> sr-dev(a)lists.sip-router.org
>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
--
Carlos
http://caruizdiaz.com
http://ngvoice.com
+52 55 3048 3303
_______________________________________________
sr-dev mailing list
sr-dev(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
--
Warm Regds.
MathuRahul
_______________________________________________
sr-dev mailing list
sr-dev(a)lists.sip-router.org