Hi, AFAIK kamailio does not add Path header for a REGISTER that is routed to another server. Adding it should be straightforward:
There is no need for a new script function. Instead use the existing loose_route() function, but:
If the request method is REGISTER then add Path header(s) instead of Record-Route header(s), which the exact SAME value (this includes Outbound flow token and ;ob param, when implemented). No more.
Cheers.
2012/8/8 Iñaki Baz Castillo ibc@aliax.net
Hi, AFAIK kamailio does not add Path header for a REGISTER that is routed to another server. Adding it should be straightforward:
There is no need for a new script function. Instead use the existing loose_route() function, but:
If the request method is REGISTER then add Path header(s) instead of Record-Route header(s), which the exact SAME value (this includes Outbound flow token and ;ob param, when implemented). No more.
Ok, there is already support for this via:
http://kamailio.org/docs/modules/3.3.x/modules_k/path.html#id2537563
I didn't realize of it. I expect that add_path() is just a wrapper on top of loose_route() by replacing "Record-Route" with "Path".
Cheers.
-- Iñaki Baz Castillo ibc@aliax.net
On 08.08.2012 12:55, Iñaki Baz Castillo wrote:
2012/8/8 Iñaki Baz Castillo ibc@aliax.net
Hi, AFAIK kamailio does not add Path header for a REGISTER that is routed to another server. Adding it should be straightforward:
There is no need for a new script function. Instead use the existing loose_route() function, but:
If the request method is REGISTER then add Path header(s) instead of Record-Route header(s), which the exact SAME value (this includes Outbound flow token and ;ob param, when implemented). No more.
Ok, there is already support for this via:
http://kamailio.org/docs/modules/3.3.x/modules_k/path.html#id2537563
I didn't realize of it. I expect that add_path() is just a wrapper on top of loose_route() by replacing "Record-Route" with "Path".
Not exactly. I takes care of choosing the proper IP address (outgoing interface) but does not add double-headers like RR does. Further, the add_path_received() function is useful for far-end NAT traversal.
regards Klaus
2012/8/8 Klaus Darilion klaus.mailinglists@pernau.at:
Not exactly. I takes care of choosing the proper IP address (outgoing interface) but does not add double-headers like RR does.
I don't understand why. If we require double RR (in same cases as when there is transport bridging) then we also need double Path in the same cases. The registrar will send us (to kamailio) an initial request with Route header(s) mirroring the Path header(s) we added to the REGISTER, so we need double Path in the same cases in which we need double RR. Am I wrong?
On 08.08.2012 13:09, Iñaki Baz Castillo wrote:
2012/8/8 Klaus Darilion klaus.mailinglists@pernau.at:
Not exactly. I takes care of choosing the proper IP address (outgoing interface) but does not add double-headers like RR does.
I don't understand why. If we require double RR (in same cases as when there is transport bridging) then we also need double Path in the same cases. The registrar will send us (to kamailio) an initial request with Route header(s) mirroring the Path header(s) we added to the REGISTER, so we need double Path in the same cases in which we need double RR. Am I wrong?
I think so. Double RR is needed when multihoming is used:
client<---------ext-kamailio-int--------->registrar
The client needs to see "ext" as next hop whereas the registrar needs to see "int" as next hop during in-dialog requests
The "path" is only used by the registrar (as pre-loaded route set on out-of-dialog requests). Thus, as only the registrar uses the learned path, only the "int" IP address needs to be added to path.
regards Klaus