Hello all,

I've been trying to figure out a cleaner way to determine the next hop for
a SIP message, mainly for use within the NATMANAGE route for multi-homed
kamailio instances (with three or more network interfaces on the kamailio

So far I have achieved this with a series of nested ifs, depending on
whether the message is a request or a response and by calculating the next
hop based on the various headers (R-URI, Route) and variables ($T_req($Ri),
$dd, ) involved in SIP routing.

A simpler way to do it, of course, would be to use the onsend_route, but
that would most likely introduce an unnecessary overhead for all routed

I recently noticed there a pseudovariable called $nh(key), and I believe I
can use $nh(d) to the same effect. I understand however, that this works
for requests only. Also, the description of this PV in the documentation
reads as follows:

Return attributes of next hop for the SIP request. Address is taken from
> dst_uri, if set, if not from new r-uri or original r-uri.

What is not clear to me is if this covers in-dialog requests with the Route
header set as well. Does the inclusion of a route header set the dst_uri
PV? And if yes, is it safe to rely on dst_uri during request processing or
is it set only after completion of script processing?

Lastly, is there an analogue for SIP responses?

If not, is it safe to rely on first Via header to determine next hop for
responses, or are there any other corner cases I need to heed?

Thanks in advance,

Kamailio (SER) - Users Mailing List

Reply via email to