--- rtp.c 2004-03-31 05:52:25.000000000 -0600 +++ rtp.c 2004-03-31 05:54:24.000000000 -0600 @@ -47,6 +47,9 @@ static int rtpstart = 0; static int rtpend = 0; +static int do_bindaddr = 0; + +struct in_addr bindaddr; // The value of each payload format mapping: struct rtpPayloadType { @@ -756,6 +759,9 @@ memset(rtp, 0, sizeof(struct ast_rtp)); rtp->them.sin_family = AF_INET; rtp->us.sin_family = AF_INET; + if (do_bindaddr) { + memcpy(&rtp->us.sin_addr, &bindaddr, sizeof(rtp->us.sin_addr)); + } rtp->s = socket(AF_INET, SOCK_DGRAM, 0); rtp->ssrc = rand(); rtp->seqno = rand() & 0xffff; @@ -1429,6 +1435,11 @@ if (rtpend > 65535) rtpend = 65535; } + // get the bind to address... like we should + if ((s = ast_variable_retrieve(cfg, "general", "bindaddr"))) { + inet_aton(s, &bindaddr); + do_bindaddr = 1; + } ast_destroy(cfg); } if (rtpstart >= rtpend) {