summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
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) ||