RTP port management =================== This patch provides additional API capabilities for RTP for the allocation of ports that RTP uses when creating streams. Up to now RTP obtains a range of ports to use from its configuration file 'rtp.conf'. All ports were opened an all interfaces of the host. This package allows each client channel (SIP, MGCP, H323, etc) to select its own range of ports and allows the restriction of binding only on the channel's own interface. The rtp function 'ast_rtp_new' was used to open an RTP channel pair. This has been deprecated, but is still available for code that has not been converted to take advantage of the new features. The new function is 'ast_rtp_create' (as an opposite to ast_rtp_destroy). ast_rtp_create requires an additional argument of *sockaddr_in which contains the IP address information to use in binding. if the pointer to the structure is NULL, RTP will revert to its old behavior. It's the responsibility of the caller to setup the structure correctly. RTP will not check the validity of the address until it fails on bind(). If the address structure contains a non-zero port number, RTP will try to bind to this port and if rtcp is needed, also to port+1. If the port was zero or cannot be successfully bound, RTP will search in its default port range for a successful pair. The default port range can be overruled by the calling channel driver with a call to 'ast_rtp_set_portrange(start,end)' This allows each driver to use custom port ranges. The currently installed RTP port range can be queried with a call to 'ast_rtp_get_portrange(&start, &end)' First implementation is for chan_sip. khb@brose.com