summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2009-06-18 15:20:17 +0000
committerMark Michelson <mmichelson@digium.com>2009-06-18 15:20:17 +0000
commitdce6a54a4a8bd2a36cdc72d6d111df6a252436a0 (patch)
tree71dde57cae86290e715b1392b9985c98ff99908b /main
parenta11ac5ae2f1961cab2806dc9618dcdc7247b252f (diff)
Trunk implementation of setting an alternate RTP source.
This contains the interface by which we can let an rtp instance know that it might start receiving audio from a new source. This is similar in nature to revision 197588 of Asterisk 1.4. Review: https://reviewboard.asterisk.org/r/276 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@201583 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/rtp_engine.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 85ee9b69f..cb4caafdd 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -50,6 +50,8 @@ struct ast_rtp_instance {
struct sockaddr_in local_address;
/*! Address that we are sending RTP to */
struct sockaddr_in remote_address;
+ /*! Alternate address that we are receiving RTP from */
+ struct sockaddr_in alt_remote_address;
/*! Instance that we are bridged to if doing remote or local bridging */
struct ast_rtp_instance *bridged;
/*! Payload and packetization information */
@@ -373,6 +375,20 @@ int ast_rtp_instance_set_remote_address(struct ast_rtp_instance *instance, struc
return 0;
}
+int ast_rtp_instance_set_alt_remote_address(struct ast_rtp_instance *instance, struct sockaddr_in *address)
+{
+ instance->alt_remote_address.sin_addr = address->sin_addr;
+ instance->alt_remote_address.sin_port = address->sin_port;
+
+ /* oink */
+
+ if (instance->engine->alt_remote_address_set) {
+ instance->engine->alt_remote_address_set(instance, &instance->alt_remote_address);
+ }
+
+ return 0;
+}
+
int ast_rtp_instance_get_local_address(struct ast_rtp_instance *instance, struct sockaddr_in *address)
{
if ((address->sin_family != AF_INET) ||