]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add option to disable srtp with --disble-srtp
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 2 May 2011 16:33:57 +0000 (11:33 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 2 May 2011 16:33:57 +0000 (11:33 -0500)
src/switch_rtp.c

index 13ce9639c86424a63d6e2217ea63aa2fa3009377..038401da198f7eaa4dcc7144977aa8c784dc9bb4 100644 (file)
@@ -81,6 +81,7 @@ static int zrtp_on = 0;
 
 #ifdef _MSC_VER
 #pragma pack()
+#define ENABLE_SRTP
 #endif
 
 static switch_hash_t *alloc_hash = NULL;
@@ -844,14 +845,20 @@ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool)
 
        }
 #endif
+#ifdef ENABLE_SRTP
        srtp_init();
+#endif
        switch_mutex_init(&port_lock, SWITCH_MUTEX_NESTED, pool);
        global_init = 1;
 }
 
 SWITCH_DECLARE(void) switch_rtp_get_random(void *buf, uint32_t len)
 {
+#ifdef ENABLE_SRTP
        crypto_get_random(buf, len);
+#else
+       switch_stun_random_string(buf, len, NULL);
+#endif
 }
 
 
@@ -888,7 +895,9 @@ SWITCH_DECLARE(void) switch_rtp_shutdown(void)
                zrtp_down(zrtp_global);
        }
 #endif
+#ifdef ENABLE_SRTP
        crypto_kernel_shutdown();
+#endif
 
 }
 
@@ -1357,6 +1366,10 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess
                                                                                                                  switch_rtp_crypto_direction_t direction,
                                                                                                                  uint32_t index, switch_rtp_crypto_key_type_t type, unsigned char *key, switch_size_t keylen)
 {
+#ifndef ENABLE_SRTP
+       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SRTP NOT SUPPORTED IN THIS BUILD!\n");
+       return SWITCH_STATUS_FALSE;
+#else
        switch_rtp_crypto_key_t *crypto_key;
        srtp_policy_t *policy;
        err_status_t stat;
@@ -1471,6 +1484,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess
 
 
        return SWITCH_STATUS_SUCCESS;
+#endif
 }
 
 SWITCH_DECLARE(switch_status_t) switch_rtp_set_interval(switch_rtp_t *rtp_session, uint32_t ms_per_packet, uint32_t samples_per_interval)
@@ -2117,6 +2131,7 @@ SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session)
                switch_rtp_disable_vad(*rtp_session);
        }
 
+#ifdef ENABLE_SRTP
        if (switch_test_flag((*rtp_session), SWITCH_RTP_FLAG_SECURE_SEND)) {
                srtp_dealloc((*rtp_session)->send_ctx);
                (*rtp_session)->send_ctx = NULL;
@@ -2128,6 +2143,8 @@ SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session)
                (*rtp_session)->recv_ctx = NULL;
                switch_clear_flag((*rtp_session), SWITCH_RTP_FLAG_SECURE_RECV);
        }
+#endif
+
 #ifdef ENABLE_ZRTP
        /* ZRTP */
        if (zrtp_on) {
@@ -2515,7 +2532,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
                                break;
                        }
 #endif
-
+                       
+#ifdef ENABLE_SRTP
                        if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_RECV)) {
                                int sbytes = (int) *bytes;
                                err_status_t stat = 0;
@@ -2553,6 +2571,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
 
                                *bytes = sbytes;
                        }
+#endif
                }
        }
 
@@ -2630,6 +2649,7 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t
                *bytes = 0;
        }
 
+#ifdef ENABLE_SRTP
        if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_RECV)) {
                int sbytes = (int) *bytes;
                err_status_t stat = 0;
@@ -2653,6 +2673,7 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t
                *bytes = sbytes;
                
        }
+#endif
 
 
 #ifdef ENABLE_ZRTP
@@ -2894,6 +2915,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                                                                switch_test_flag(other_rtp_session, SWITCH_RTP_FLAG_ENABLE_RTCP)) {
                                                                *other_rtp_session->rtcp_send_msg.body = *rtp_session->rtcp_recv_msg.body;
 
+#ifdef ENABLE_SRTP
                                                                if (switch_test_flag(other_rtp_session, SWITCH_RTP_FLAG_SECURE_SEND)) {
                                                                        int sbytes = (int) rtcp_bytes;
                                                                        int stat = srtp_protect_rtcp(other_rtp_session->send_ctx, &other_rtp_session->rtcp_send_msg.header, &sbytes);
@@ -2902,6 +2924,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
                                                                        }
                                                                        rtcp_bytes = sbytes;
                                                                }
+#endif
 
 #ifdef ENABLE_ZRTP
                                                                /* ZRTP Send */
@@ -3713,7 +3736,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
                        switch_swap_linear((int16_t *)send_msg->body, (int) datalen);
                }
 
-
+#ifdef ENABLE_SRTP
                if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND)) {
                        int sbytes = (int) bytes;
                        err_status_t stat;
@@ -3740,6 +3763,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
 
                        bytes = sbytes;
                }
+#endif
 #ifdef ENABLE_ZRTP
                /* ZRTP Send */
                if (1) {
@@ -3844,7 +3868,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
                        sr->oc = htonl((rtp_session->stats.outbound.raw_bytes - rtp_session->stats.outbound.packet_count * sizeof(srtp_hdr_t)));
 
                        rtcp_bytes = sizeof(switch_rtcp_hdr_t) + sizeof(struct switch_rtcp_senderinfo);
-
+#ifdef ENABLE_SRTP
                        if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND)) {
                                int sbytes = (int) rtcp_bytes;
                                int stat = srtp_protect_rtcp(rtp_session->send_ctx, &rtp_session->rtcp_send_msg.header, &sbytes);
@@ -3853,6 +3877,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
                                }
                                rtcp_bytes = sbytes;
                        }
+#endif
 
 #ifdef ENABLE_ZRTP
                        /* ZRTP Send */
@@ -4137,6 +4162,7 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session,
 
        bytes = rtp_header_len + datalen;
 
+#ifdef ENABLE_SRTP
        if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND)) {
                int sbytes = (int) bytes;
                err_status_t stat;
@@ -4160,6 +4186,7 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session,
                }
                bytes = sbytes;
        }
+#endif
 #ifdef ENABLE_ZRTP
        /* ZRTP Send */
        if (1) {