summaryrefslogtreecommitdiff
path: root/main/rtp_engine.c
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/rtp_engine.c
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/rtp_engine.c')
-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) ||