asterisk/include
Luigi Rizzo e950538bdd Small improvement to the STUN support so it can be used by
sockets other than RTP ones.

The main change is a new API function in main/rtp.c (see there
for a description)

    int ast_stun_request(int s, struct sockaddr_in *dst,
        const char *username, struct sockaddr_in *answer)

which can be used to send an STUN request on a socket, and
optionally wait for a reply and store the STUN_MAPPED_ADDRESS
into the 'answer' argument (obviously, the version that
waits for a reply is blocking, but this is no different
from DNS resolutions).

Internally there are minor modifications to let stun_handle_packet()
be somewhat configurable on how to parse the body of responses.

At the moment i am not committing any change to the clients,
but adding STUN client support is extremely simple, e.g. chan_sip.c
could do something like this:

    + add a variable to store the stun server address;

	static struct sockaddr_in stunaddr = { 0, };   /*!< stun server address */

    + add code to parse a config file of the form "stunaddr=my.stun.server.org:3478"
      (not shown for brevity);

    + right after binding the main sip socket, talk to the stun server to
      determine the externally visible address

	    if (stunaddr.sin_addr.s_addr != 0)
		ast_stun_request(sipsock, &stunaddr, NULL, &externip);

      so now 'externip' is set with the externally visible address.

so it is really trivial.

Similarly ast_stun_request could be called when creating the RTP
socket (possibly adding a struct sockaddr_in field in the struct
ast_rtp to store the externalip).



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-13 16:22:09 +00:00
..
asterisk Small improvement to the STUN support so it can be used by 2007-07-13 16:22:09 +00:00
solaris-compat fix the provided unsetenv for solaris to return an int like it's supposed to 2006-03-29 04:14:12 +00:00
asterisk.h Merge major changes to the way device state is passed around Asterisk. The two 2007-06-01 23:34:43 +00:00
jitterbuf.h Merged revisions 52494,52506 via svnmerge from 2007-01-29 17:03:31 +00:00