[Kamailio-Users] Multiple SIP Proxy Environment / Socket Information
Daniel-Constantin Mierla
miconda at gmail.com
Sat May 2 11:35:58 CEST 2009
Hello,
On 05/02/2009 12:19 AM, Brandon Armstead wrote:
> Daniel,
>
> I got this part working, in the case of the absence of $du (i.e.
> no received parameter) I just exclude it and all works well!
ok. $du is special field that is mostly internally by several modules,
e.g., rr, dispatcher or usrloc. It is not present all the time.
Cheers,
Daniel
> Thanks guys!
>
> * fixed reply to all.
>
> On Thu, Apr 30, 2009 at 1:16 AM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Hello,
>
>
> On 04/29/2009 08:35 PM, Brandon Armstead wrote:
>
> Daniel,
>
> You are correct it is not set for this usrloc. Should I be
> able to just not modify $du in this case?
>
>
> I do not understand what you mean now?!?!
>
> Cheers,
> Daniel
>
> Thanks!
>
>
> On Wed, Apr 29, 2009 at 7:39 AM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>> wrote:
>
> Hello,
>
> $du is set by usrloc only if there is a received value in the
> location record. Can you check if you have it in db?
>
> Cheers,
> Daniel
>
>
>
> On 04/29/2009 11:45 AM, Brandon Armstead wrote:
>
> Daniel,
>
> Yes I'm doing an append_hf("X-Duri: $du\r\n"); inside of
> branch_route[] i.e.:
>
> branch_route[2]
> {
> if(isbflagset(4)){
> # thats me!
> } else {
> # at this point X-Duri is null, so we are not
> saving it
> from the lookup?
> # we need to save this to pass onto Proxy B, however
> the value is NULL at this point, and at the point of
> Proxy B
> (when received).
> append_hf("X-Duri: $avp(s:duri)\r\n");
> if(isbflagset(6)){
> $du = "sip:PROXY_B;transport=udp;";
> }
> }
>
> xlog("L_INFO", "[$ci][branch_route][$T_branch_idx]
> ru=$ru
> fu=$fu tu=$tu si=$si flag=$bF du=$du");
> }
>
> Then when X-Duri reaches Proxy B, if I see the INVITE comes
> from Proxy A, I take X-Duri and restore "$du" with the
> correct
> value.
>
> However this is causing issues now as the value is <null>,
> I've tried saving $du into avp after looking up usrloc,
> I've
> tried simply calling $du in branch_route[], and I've tried
> saving $du in loose_route() into an avp, all to no avail.
>
> What am I missing here as far as passing the value of
> $du from
> branch route to header, to pass along to Proxy B.
>
> Thanks again!
>
> On Wed, Apr 29, 2009 at 2:42 AM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>> wrote:
>
>
>
> On 04/29/2009 11:32 AM, Brandon Armstead wrote:
>
> Daniel,
>
> It looks like you helped me find part of the
> problem,
> apparently Proxy A was sharing same branch flag
> as the
> one I
> used to distinguish which proxy it was. I corrected
> this and
> now branch flag for branch 1 is 00000060, and
> branch 2 is
> 00000040, however now both branches are routed
> appropriately
> to the correct server, however the X-Duri (to
> restore to in
> the INVITE) is null.
>
>
> I may not followed all discussion branch - the
> X-Duri is a
> header
> you append to the message? If yes, it is not visible
> immediately
> in the script, but you can see it when the messages
> is ent
> to the
> network.
>
> Do I need to save this value into an AVP after
> lookup("location")?
>
>
> What you need to do with it? Where is its values
> taken from?
>
> Cheers,
> Daniel
>
> Or should it be readily available in
> branch_route[],
> and for
> some reason my variable is null?
>
> P.S. (recap)
> Proxy A NAT Branch Flag: 5
> Proxy B NAT Branch Flag: 5
>
> (Problem existed as used Flag 5 to distinguish
> "itself" as
> proxy) -- changed this to 4 so now:
>
> Proxy A NAT Branch Flag: 4
> Proxy B NAT Branch Flag: 6
>
> Calls are routed to Proxy B
>
> X-Duri: <null> (as it is null in Proxy A). I'm
> append_hf(X-Duri: $du) inside of branch_route[].
>
> Thanks!
>
> On Wed, Apr 29, 2009 at 2:17 AM,
> Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>
> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>>> wrote:
>
>
>
> On 04/29/2009 11:11 AM, Brandon Armstead wrote:
>
> Daniel,
>
> No that would be the UAC (I have two
> clients
> behind the
> same NAT). The problem is it looks like the
> branch flag is
> not being set for both for some reason (when
> comparing)
> even
> though in the database it is the same?
>
>
> So you have the brach flag for nat and branch
> flags
> for next
> proxy, right? What is the value of branch
> flag? The
> value are
> different indeed, but some flags you are looking
> for might be
> set. It is easier spot if you print the hexa
> format
> of the
> flags
> rather than decimal one.
>
> Cheers,
> Daniel
>
> Take a look at the flag= value from each of
> those logs
> (this
> is one call) to a UAC with two registrations
> line1/line2.
>
> On Wed, Apr 29, 2009 at 2:02 AM,
> Daniel-Constantin Mierla
> <miconda at gmail.com
> <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>
> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>>
> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>
> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
> <mailto:miconda at gmail.com>>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
> <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>>>> wrote:
>
> Hello,
>
>
> On 04/29/2009 10:53 AM, Brandon
> Armstead wrote:
>
> Hey guys,
>
> Still facing a few challenges and
> seeing if
> any further
> input, I'm specifically trying inaki's
> suggestions /
> method,
> but here are the current problems:
>
> sip:/etc/kamailio/m4cfgs# tail -f
> /var/log/openser.log
> | grep
> -v -E 'non-local|repeated' | grep
> branch_route
> Apr 29 07:38:05 db06
> /sbin/kamailio[21279]:
> [77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>>>][branch_route][1]
> ru=sip:CALLEE at 99.XX.XX.XX:5079
> fu=sip:CALLER at sip.example.com
> <mailto:sip%3ACALLER at sip.example.com>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>>
>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>>>
>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>>
>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>
> <mailto:sip%252525253ACALLER at sip.example.com
> <mailto:sip%25252525253ACALLER at sip.example.com>>>>>>
>
>
>
>
> tu=sip:CALLEE at sip.example.com
> <mailto:sip%3ACALLEE at sip.example.com>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>>
>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>>>
>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>>
>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>
> <mailto:sip%252525253ACALLEE at sip.example.com
> <mailto:sip%25252525253ACALLEE at sip.example.com>>>>>>
> si=99.XX.XX.XX
>
>
>
>
> flag=96 du=<null>
>
>
> This call is not sent to Proxy B
> (this is a
> result of bflag
> not being set) ???
>
> is the proxy B at 99.XX.XX.XX:5079? If
> not,
> then set
> $du to the
> address of that proxy. It is null in
> the log
> above.
>
> Cheers,
> Daniel
>
> My question is "Why", I look at
> the AOR /
> usrloc and
> they both
> have the "same exact flags set",
> this call is
> rather sent
> directly to UAC endpoint.
>
> ---
>
> Apr 29 07:38:05 db06
> /sbin/kamailio[21279]:
> [77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>
> <mailto:77e4c600-147767fb at 172.16.1.35
> <mailto:77e4c600-147767fb at 172.16.1.35>>>>>>][branch_route][2]
> ru=sip:CALLEE at 99.XX.XX.XX:5062
> fu=sip:CALLER at sip.example.com
> <mailto:sip%3ACALLER at sip.example.com>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>>
>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>>>
>
> <mailto:sip%3ACALLER at sip.example.com
> <mailto:sip%253ACALLER at sip.example.com>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>>
>
> <mailto:sip%253ACALLER at sip.example.com
> <mailto:sip%25253ACALLER at sip.example.com>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>>
> <mailto:sip%25253ACALLER at sip.example.com
> <mailto:sip%2525253ACALLER at sip.example.com>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>>
> <mailto:sip%2525253ACALLER at sip.example.com
> <mailto:sip%252525253ACALLER at sip.example.com>
> <mailto:sip%252525253ACALLER at sip.example.com
> <mailto:sip%25252525253ACALLER at sip.example.com>>>>>>
>
>
>
>
> tu=sip:CALLEE at sip.example.com
> <mailto:sip%3ACALLEE at sip.example.com>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>>
>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>>>
>
> <mailto:sip%3ACALLEE at sip.example.com
> <mailto:sip%253ACALLEE at sip.example.com>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>>
>
> <mailto:sip%253ACALLEE at sip.example.com
> <mailto:sip%25253ACALLEE at sip.example.com>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>>
> <mailto:sip%25253ACALLEE at sip.example.com
> <mailto:sip%2525253ACALLEE at sip.example.com>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>>
> <mailto:sip%2525253ACALLEE at sip.example.com
> <mailto:sip%252525253ACALLEE at sip.example.com>
> <mailto:sip%252525253ACALLEE at sip.example.com
> <mailto:sip%25252525253ACALLEE at sip.example.com>>>>>>
> si=99.XX.XX.XX
>
>
>
>
> flag=64 du=sip:PROXY_B;transport=udp;
>
>
> This call is sent to Proxy B (however
> Proxy B) -
> however the
> X-Duri (is null) as it is not
> existant in
> Proxy
> A's branch
> route? should I save this from right
> after the
> lookup("location") result into an avp?
>
>
> Again, thank you for all and any help,
> thanks!
>
> On Mon, Apr 27, 2009 at 5:42 PM,
> Brandon
> Armstead
> <brandon at cryy.com
> <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>
> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
> <mailto:brandon at cryy.com>>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
> <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>>>>> wrote:
>
> Klaus, Inaki, Daniel,
>
> Thanks! Sorry I did not
> see this
> email come
> through, I'm
> going to go ahead and give this
> method
> a go,
> and I'll
> update with
> the results, I have optimistic
> views.
>
> As for the reason I was
> rewriting $ru and
> setting $du to
> null, is
> because originally when I just
> changed
> $du to the
> 'destination
> proxy' it did not seem to work
> at all
> (I do
> not even
> recall
> what
> exactly what was happening)
> however I
> decided
> to just
> change $ru,
> and have the other proxy just
> "lookup"
> the usrloc
> information
> again. Again, this method looks
> interesting and
> I'll let
> you guys
> know how it goes, thanks for
> all the input
> and help!
>
> Sincerely,
> Brandon.
>
>
> On Fri, Apr 24, 2009 at 1:18
> AM, Klaus
> Darilion
> <klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>
>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>>
>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>
>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>>>> wrote:
>
>
>
> Brandon Armstead schrieb:
>
> Klaus,
>
> So I took you and
> Inaki's
> input and
> essentially
> constructed a setup like so
> after the
> lookup("location") call:
>
> if(isbflagset(1)){
> $du = null;
> $rd = "P1";
> } else if(isbflagset(2)){
> $du = null;
> $rd = "P2";
> } else if(isbflagset(3)){
> $du = null;
> $rd = "P3";
> } else if(isbflagset(4)){
> $du = null;
> $rd = "P4";
> }
>
>
> 1. The above code has to be
> in the
> branch_route
> block -
> otherwise multiple
> registrations
> of a single
> user are not
> handled correctly.
>
> 2. you are rewriting the
> RURI. You
> should
> not do
> that
> as some
> clients wants to the in the
> RURI
> the Contact
> provided
> during
> REGISTER.
>
> 3. probably you use
> fix_nated_register() to
> store the
> public
> IP:port of the client too.
> After
> lookup, this
> information is
> written to DURI. Thus, by
> setting
> $du you
> overwrite
> this info.
> You should put it into a
> special
> header
> so that
> you can
> restore it in the other proxy.
>
> Here a snippet how it
> should work
> (untested, no
> warranty): ( I
> use the term "originating"
> proxy
> for the
> proxy which
> received
> the INVITE and the term
> "serving"
> proxy
> for the
> proxy which
> handles the
> connection/registration of a
> certain SIP
> client).
>
> e.g:
> Alice -----INVITE----->
> P1------->P2----->Bob2
> / \
> / \
> / V
> V
> P3---->Bob3
> Bob1
>
> Bob's client Bob1 is
> connected to P1.
> Bob's client Bob2 is
> connected to P2.
> Bob's client Bob3 is
> connected to P3.
>
> So, P1 is the originating
> proxy.
> P2 is the
> serving proxy of
> Bob2. ....
>
> We do NAT traversal (note:
> we must
> not call
> fix_nated_contact() for
> messages sent
> between the
> proxies!):
> the originating proxy for the
> call-leg to the
> caller, the
> serving proxy for the
> call-leg to
> the callee.
> The RTP proxy will be
> managed by the
> originating
> proxy
> only.
>
>
>
> route{
> if (loose_route()) {
> ... additional loose route
> processing...
> if
> (check_route_param("rtpproxy=yes")) {
> force_rtp_proxy();
> setbflag(7);
> }
>
> # downstream: in-dialog
> request is in
> the same
> direction as the
> # initial request
> if (
> (check_route_param("nat=caller") &&
> is_direction("downstream"))
> ||
> (check_route_param("nat=callee") &&
> is_direction("upstream"))) {
> fix_nated_contact();
> } else if
> (check_route_param("nat=both") {
> fix_nated_contact();
> setbflag(8);
> } else {
> setbflag(8);
> }
>
> t_on_reply("1");
> t_relay();
> exit();
> }
> ...
>
> # I am proxy 1
> if ((src_ip=ip.of.proxy.2) ||
> (src_ip=ip.of.proxy.3)...) {
> # request comes from other
> proxy,
> that
> means I
> am the
> # serving proxy
> # do not lookup(), RURI is
> already set and
> # DURI is provided in our
> X-DURI
> header
> $du = $header(X-DURI);
> # we do not care about an RTP
> proxy because
> that's the
> task
> of the
> # proxy which performed the
> lookup() (the
> originating
> proxy)
> # add some record-route
> cookie to
> mark
> that we
> should
> perform
> # SIP NAT traversal for
> the callee
> add_rr_param(";nat=callee");
> # activate reply_route to
> fix_nated_contact of
> callee
> setbflag(8); # flag 8 =
> fix contact
> t_on_reply("1");
> record_route();
> t_relay();
> exit;
> }
>
> ...
> # a new request - thus I am the
> originating proxy
>
> if ($dU looks like phone
> number) {
> ... route to Gateway....
> exit;
> }
>
> if (!lookup("location")) {
> sl_send_reply("404","not
> found");
> exit;
> }
> # activate branch route to have
> dedicated
> routing per
> branch
> t_on_branch("1");
>
> # activate reply route to
> activate
> RTP proxy
> t_on_reply("1");
>
> # NAT traversal
> fix_nated_contact();
>
> record_route();
> t_relay();
> exit;
> }
>
> branch_route[1]{
> if(isbflagset(1)){
> # oh, that's me
>
> # add some record-route
> cookie
> to mark
> that we
> should
> perform
> # SIP NAT traversal for the
> callee and
> caller
> add_rr_param(";nat=both");
>
> # add some record-route
> cookie
> to mark
> that we are
> # in charge for the RTP proxy
>
> add_rr_param(";rtpproxy=yes");
>
> force_rtp_proxy();
> setbflag(7); # flag 7 =
> RTP proxy
> } else {
> # add some record-route
> cookie
> to mark
> that we
> should
> perform
> # SIP NAT traversal for
> the caller
> add_rr_param(";nat=caller");
>
> # we have to route the
> request
> to the
> serving
> proxy
> # write DURI in the header
> append_hf("X-DURI: $du");
> if(isbflagset(2)){
> $du =
> sip:ip.of.proxy.2;transport=udp;
> } else if(isbflagset(3)){
> $du =
> sip:ip.of.proxy.3;transport=udp;
> } else if(isbflagset(4)){
> $du =
> sip:ip.of.proxy.4;transport=udp;
> }
> }
> }
>
> reply_route[1]{
> if (isbflagset(7) &&
> has_body("application/sdp")) {
> force_rtp_proxy()
> }
> if (isbflagset(8)) {
> fix_nated_contact()
> }
> }
>
>
>
> Note: this code does not care
> about the
> received
> socket
> of the
> proxy. Thus it works if the
> proxy
> listens
> only
> on one port.
>
> regards
> klaus
>
>
> On each Proxy, I
> changed the code
> appropriately
> excluding
> the Proxy from itself
> (so it
> does not
> forward to
> itself).
> I'm noticing weird
> behavior
> however
> as it
> seems as if
> what is happening is it
> created other
> issues
> such as:
>
> [INCOMING SERVER] -> P1
> -> P2
> -> P1
> -> (loop?)
>
> Also I setup this test
> amongst two
> development
> servers (in
> which case it worked
> without
> issues).
> Once I
> included in
> more development instances
> into the
> ring it
> seemed
> as if
> the flags were being
> set when
> they should
> not be?
>
> I.e. I placed a call
> FROM UA1
> (with
> bflag 5 SET)
> From the
> above example
> configuration ^
> code.
> If you
> notice
> (flag
> 5) is missing. To UA2
> (Flag 3),
> again this
> looked
> to be
> doing some strange
> things such as
> acting as
> if another
> flag was set when it should
> not have
> been, thus
> forwarding
> to the wrong proxy or the
> wrong proxy
> order. Do
> you guys
> have any further
> thoughts or
> input on
> this?
> Thanks!
>
> On Thu, Apr 23, 2009 at
> 12:31 AM,
> Klaus Darilion
>
> <klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>
>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>>>>
>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>>
> <mailto:klaus.mailinglists at pernau.at
> <mailto:klaus.mailinglists at pernau.at>
> <mailto:
>
> ...
>
> [Message clipped]
>
>
--
Daniel-Constantin Mierla
http://www.asipto.com/
More information about the sr-users
mailing list