[OpenSIPS-Devel] Change to listen= syntax to support per-interface advertised address...

Bogdan-Andrei Iancu bogdan at voice-system.ro
Mon Mar 23 09:34:59 CET 2009


Hi Phil,

have you submitted the patch on the tracker? I a cannot find it.

Thanks and regards,
Bogdan

Phil D'Amore wrote:
> Hello:
>
> A while back (around openser 1.3 time) I tried to get some feedback
> for this functionality that I've been using for a while.  Now that I'm
> having to port it to opensips 1.5.0 I figured I'd try to put it out
> here and see what happens:
>
> The patch extends the idea of the advertised_address and advertised_port
> parameters so that it is possible to bind such an address to each
> listen= statement.
> Syntax-wise, it works like this:
>
>    listen=[proto:]host[:port][ AS host[:port]]
>
> This new AS host[:port] syntax binds the advertised address specifically to the
> corresponding socket_info structure.  If such an address is specified, it will
> be used before the address specified as advertised_address, or set in the
> set_advertised_address function for packets being sent on that particular
> socket.  If it is not specified, then the old methods work as before.
>
> The core has been modified so that address tuples using the advertised address
> work interchangeably with the real address where you'd expect them to.
> grep_sock_info and find_si have been updated to allow this.  Therefore, it is
> not necessary to explicitly name your advertised address on an alias= line.
> The following are now equivalent:
>
>    force_send_socket(udp:adv_address:adv_port);
>    force_send_socket(udp:real_address:real_port);
>
> Note we don't specify protocol on the advertised address.  The way I see
> things, it makes no sense to advertise a different protocol, so it inherits the
> protocol of the socket.
>
> Via construction is affected in the same way that the old global
> advertised_address does, except the Via is written specifically for
> the socket used
> to send the message.
>
> Lump substitution is also affected.  The following lump substitutions are aware
> of this new facility:
>
>  SUBST_RCV_IP
>  SUBST_RCV_PORT
>  SUBST_RCV_ALL
>  SUBST_SND_IP
>  SUBST_SND_PORT
>  SUBST_SND_ALL
>
> As a result of this, I was able to stop using record_route_preset in
> my own config, and
> just use standard record_route.  This winds up working much better,
> because double-rr
> works properly, and add_rr_param now works as expected for me, where it was a
> problem using record_route_preset.
>
> Additionally, registrar and usrloc had to be modified:
>
> registrar - update the add_sock_hdr function to put the advertised address in
> the message instead of the real address.  This allows registration information
> to be replicated between multi-homed proxies, and the correct interface on the
> peer can be used.
>
> usrloc - update db_insert_ucontact to store the advertised address in the
> database instead of the real address.  Same reasoning as the mods to registrar.
>
> If there's any interest, I can submit a patch and more details about
> how it works.
>
> Thanks,
> Phil
>
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
>   




More information about the Devel mailing list