Module: kamailio
Branch: 5.1
Commit: 654aa457ecec7d35061dbb151fd786a303cba473
URL: 
https://github.com/kamailio/kamailio/commit/654aa457ecec7d35061dbb151fd786a303cba473

Author: Jerzy Ptak <jerzy.p...@bbitg.co.uk>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2018-03-01T10:28:34+01:00

rtpengine: added support for DTLS transports

- added ability to explicitly request DTLS transports:
  UDP/TLS/RTP/SAVP and UDP/TLS/RTP/SAVPF

(cherry picked from commit 99695c2827d0ff6e3d25f144678f07548016415d)

---

Modified: src/modules/rtpengine/doc/rtpengine_admin.xml
Modified: src/modules/rtpengine/rtpengine.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/654aa457ecec7d35061dbb151fd786a303cba473.diff
Patch: 
https://github.com/kamailio/kamailio/commit/654aa457ecec7d35061dbb151fd786a303cba473.patch

---

diff --git a/src/modules/rtpengine/doc/rtpengine_admin.xml 
b/src/modules/rtpengine/doc/rtpengine_admin.xml
index 4133eb93c2..9ae72a58bd 100644
--- a/src/modules/rtpengine/doc/rtpengine_admin.xml
+++ b/src/modules/rtpengine/doc/rtpengine_admin.xml
@@ -2159,7 +2159,7 @@ rtpengine_offer();
                                &sdp; substitutions (c=, m=, etc) are 
unaffected by this flag.
                                </para></listitem>
                                <listitem><para>
-                               <emphasis>RTP, SRTP, AVP, AVPF</emphasis> - 
These flags control the &rtp;
+                               <emphasis>RTP, SRTP, DTLS, AVP, AVPF</emphasis> 
- These flags control the &rtp;
                                transport protocol that should be used towards 
the recipient of
                                the &sdp;. If none of them are specified, the 
protocol given in
                                the &sdp; is left untouched. Otherwise, the 
<quote>SRTP</quote> flag indicates that
@@ -2169,8 +2169,8 @@ rtpengine_offer();
                                should be used. See also the next set of flags 
below.
                                </para></listitem>
                                <listitem><para>
-                               <emphasis>RTP/AVP, RTP/SAVP, RTP/AVPF, 
RTP/SAVPF</emphasis> - these serve as
-                               an alternative, more explicit way to select 
between the different &rtp; protocols
+                               <emphasis>RTP/AVP, RTP/SAVP, UDP/TLS/RTP/SAVP, 
RTP/AVPF, RTP/SAVPF, UDP/TLS/RTP/SAVPF</emphasis> - these 
+                               serve as an alternative, more explicit way to 
select between the different &rtp; protocols
                                and profiles supported by the &rtp; proxy. For 
example, giving the flag
                                <quote>RTP/SAVPF</quote> has the same effect as 
giving the two flags
                                <quote>SRTP AVPF</quote>.
diff --git a/src/modules/rtpengine/rtpengine.c 
b/src/modules/rtpengine/rtpengine.c
index 1b3429d3cd..3d4d17718a 100644
--- a/src/modules/rtpengine/rtpengine.c
+++ b/src/modules/rtpengine/rtpengine.c
@@ -1871,6 +1871,8 @@ static const char *transports[] = {
        [0x01]  = "RTP/SAVP",
        [0x02]  = "RTP/AVPF",
        [0x03]  = "RTP/SAVPF",
+       [0x04]  = "UDP/TLS/RTP/SAVP",
+       [0x06]  = "UDP/TLS/RTP/SAVPF",
 };
 
 static int parse_flags(struct ng_flags_parse *ng_flags, struct sip_msg *msg, 
enum rtpe_operation *op,
@@ -1946,6 +1948,8 @@ static int parse_flags(struct ng_flags_parse *ng_flags, 
struct sip_msg *msg, enu
                                        ng_flags->transport |= 0x101;
                                else if (str_eq(&key, "AVPF"))
                                        ng_flags->transport |= 0x102;
+                               else if (str_eq(&key, "DTLS"))
+                                       ng_flags->transport |= 0x104;
                                else
                                        goto generic;
                                goto next;
@@ -2048,6 +2052,23 @@ static int parse_flags(struct ng_flags_parse *ng_flags, 
struct sip_msg *msg, enu
                                        goto next;
                                }
                                break;
+
+                       case 16:
+                               if (str_eq(&key, "UDP/TLS/RTP/SAVP"))
+                                       ng_flags->transport = 0x104;
+                               else
+                                       goto generic;
+                               goto next;
+                               break;
+
+                       case 17:
+                               if (str_eq(&key, "UDP/TLS/RTP/SAVPF"))
+                                       ng_flags->transport = 0x106;
+                               else
+                                       goto generic;
+                               goto next;
+                               break;
+
                }
 
 generic:
@@ -2148,7 +2169,7 @@ static bencode_item_t 
*rtpp_function_call(bencode_buffer_t *bencbuf, struct sip_
                bencode_dictionary_add(ng_flags.dict, "replace", 
ng_flags.replace);
        if ((ng_flags.transport & 0x100))
                bencode_dictionary_add_string(ng_flags.dict, 
"transport-protocol",
-                               transports[ng_flags.transport & 0x003]);
+                               transports[ng_flags.transport & 0x007]);
        if (ng_flags.rtcp_mux && ng_flags.rtcp_mux->child)
                bencode_dictionary_add(ng_flags.dict, "rtcp-mux", 
ng_flags.rtcp_mux);
 


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to