Yes, that is,
I comment it to you because you said:
"Unfortunately [...] $si contains the reported remote IP
address, not the
public IP address that the message has been received from."
I think you are trying to get something impossible: the last
router IP through
which the packet arrieved to your OpenSer. That's not
possible, note that
layer 3 (IP) doesn't notify the intermediary IP address in
the received
message, you just can see the source and destination.
No, I'm trying to get to the public IP address of a NATted
SIP UA. This address is not found in the SIP message, but
OpenSER knows it otherwise it couldn't reply to it ;-)
You could try to parse the Via headers to find the correct IP.
--
Greetings,
Alex Hermann