Преглед изворни кода

msrp: new parameter use_path_addr

- specify host and port for usage in Use-Path header
Daniel-Constantin Mierla пре 12 година
родитељ
комит
830af85c45
4 измењених фајлова са 67 додато и 28 уклоњено
  1. 35 20
      modules/msrp/README
  2. 20 1
      modules/msrp/doc/msrp_admin.xml
  3. 5 2
      modules/msrp/msrp_cmap.c
  4. 7 5
      modules/msrp/msrp_mod.c

+ 35 - 20
modules/msrp/README

@@ -36,6 +36,7 @@ Alex Balashov
               3.3. timer_interval (int)
               3.3. timer_interval (int)
               3.4. auth_min_expires (int)
               3.4. auth_min_expires (int)
               3.5. auth_max_expires (int)
               3.5. auth_max_expires (int)
+              3.6. use_path_addr (str)
 
 
         4. Functions
         4. Functions
 
 
@@ -64,16 +65,17 @@ Alex Balashov
    1.3. Set timer_interval parameter
    1.3. Set timer_interval parameter
    1.4. Set auth_min_expires parameter
    1.4. Set auth_min_expires parameter
    1.5. Set auth_max_expires parameter
    1.5. Set auth_max_expires parameter
-   1.6. msrp usage
-   1.7. msrp_reply usage
-   1.8. msrp_is_request usage
-   1.9. msrp_is_reply usage
-   1.10. msrp_set_dst usage
-   1.11. msrp_relay_flags usage
-   1.12. msrp_reply_flags usage
-   1.13. msrp_cmap_save usage
-   1.14. msrp_cmap_lookup usage
-   1.15. Event Route
+   1.6. Set use_path_addr parameter
+   1.7. msrp_relay usage
+   1.8. msrp_reply usage
+   1.9. msrp_is_request usage
+   1.10. msrp_is_reply usage
+   1.11. msrp_set_dst usage
+   1.12. msrp_relay_flags usage
+   1.13. msrp_reply_flags usage
+   1.14. msrp_cmap_save usage
+   1.15. msrp_cmap_lookup usage
+   1.16. Event Route
 
 
 Chapter 1. Admin Guide
 Chapter 1. Admin Guide
 
 
@@ -92,6 +94,7 @@ Chapter 1. Admin Guide
         3.3. timer_interval (int)
         3.3. timer_interval (int)
         3.4. auth_min_expires (int)
         3.4. auth_min_expires (int)
         3.5. auth_max_expires (int)
         3.5. auth_max_expires (int)
+        3.6. use_path_addr (str)
 
 
    4. Functions
    4. Functions
 
 
@@ -167,6 +170,7 @@ Chapter 1. Admin Guide
    3.3. timer_interval (int)
    3.3. timer_interval (int)
    3.4. auth_min_expires (int)
    3.4. auth_min_expires (int)
    3.5. auth_max_expires (int)
    3.5. auth_max_expires (int)
+   3.6. use_path_addr (str)
 
 
 3.1. sipmsg (int)
 3.1. sipmsg (int)
 
 
@@ -228,6 +232,17 @@ modparam("msrp", "auth_min_expiresl", 90)
 modparam("msrp", "auth_max_expiresl", 1800)
 modparam("msrp", "auth_max_expiresl", 1800)
 ...
 ...
 
 
+3.6. use_path_addr (str)
+
+   The hostname:port to be used when building Use-Path header.
+
+   Default value is NULL (server IP and port are used).
+
+   Example 1.6. Set use_path_addr parameter
+...
+modparam("msrp", "use_path_addr", "msrp.kamailio.org:5061")
+...
+
 4. Functions
 4. Functions
 
 
    4.1. msrp_relay()
    4.1. msrp_relay()
@@ -249,7 +264,7 @@ modparam("msrp", "auth_max_expiresl", 1800)
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.6. msrp usage
+   Example 1.7. msrp_relay usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     msrp_relay();
     msrp_relay();
@@ -264,7 +279,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.7. msrp_reply usage
+   Example 1.8. msrp_reply usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     msrp_reply("403", "Not allowed");
     msrp_reply("403", "Not allowed");
@@ -277,7 +292,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.8. msrp_is_request usage
+   Example 1.9. msrp_is_request usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     if(msrp_is_request())
     if(msrp_is_request())
@@ -294,7 +309,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.9. msrp_is_reply usage
+   Example 1.10. msrp_is_reply usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     if(msrp_is_reply())
     if(msrp_is_reply())
@@ -314,7 +329,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.10. msrp_set_dst usage
+   Example 1.11. msrp_set_dst usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     ...
     ...
@@ -333,7 +348,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.11. msrp_relay_flags usage
+   Example 1.12. msrp_relay_flags usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     ...
     ...
@@ -352,7 +367,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.12. msrp_reply_flags usage
+   Example 1.13. msrp_reply_flags usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     ...
     ...
@@ -368,7 +383,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.13. msrp_cmap_save usage
+   Example 1.14. msrp_cmap_save usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     ...
     ...
@@ -383,7 +398,7 @@ event_route[msrp:frame-in] {
 
 
    This function can be used in ANY_ROUTE.
    This function can be used in ANY_ROUTE.
 
 
-   Example 1.14. msrp_cmap_lookup usage
+   Example 1.15. msrp_cmap_lookup usage
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {
     ...
     ...
@@ -490,7 +505,7 @@ Content-Type: text/plain
    Next is an example of configuration file with the routing block for
    Next is an example of configuration file with the routing block for
    MSRP frames. In this config, the SIP traffic is rejected.
    MSRP frames. In this config, the SIP traffic is rejected.
 
 
-   Example 1.15. Event Route
+   Example 1.16. Event Route
 ...
 ...
 
 
 #!KAMAILIO
 #!KAMAILIO

+ 20 - 1
modules/msrp/doc/msrp_admin.xml

@@ -180,6 +180,25 @@ modparam("msrp", "auth_min_expiresl", 90)
 ...
 ...
 modparam("msrp", "auth_max_expiresl", 1800)
 modparam("msrp", "auth_max_expiresl", 1800)
 ...
 ...
+</programlisting>
+		</example>
+	</section>
+	<section>
+		<title><varname>use_path_addr</varname> (str)</title>
+		<para>
+		The hostname:port to be used when building Use-Path header.
+		</para>
+		<para>
+		<emphasis>
+			Default value is NULL (server IP and port are used).
+		</emphasis>
+		</para>
+		<example>
+		<title>Set <varname>use_path_addr</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("msrp", "use_path_addr", "msrp.kamailio.org:5061")
+...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
 	</section>
 	</section>
@@ -202,7 +221,7 @@ modparam("msrp", "auth_max_expiresl", 1800)
 		This function can be used in ANY_ROUTE.
 		This function can be used in ANY_ROUTE.
 		</para>
 		</para>
 		<example>
 		<example>
-		<title><function>msrp</function> usage</title>
+		<title><function>msrp_relay</function> usage</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
 event_route[msrp:frame-in] {
 event_route[msrp:frame-in] {

+ 5 - 2
modules/msrp/msrp_cmap.c

@@ -42,6 +42,7 @@ static sruid_t _msrp_sruid;
 
 
 extern int msrp_auth_min_expires;
 extern int msrp_auth_min_expires;
 extern int msrp_auth_max_expires;
 extern int msrp_auth_max_expires;
+extern str msrp_use_path_addr;
 
 
 /**
 /**
  *
  *
@@ -298,13 +299,15 @@ int msrp_cmap_save(msrp_frame_t *mf)
 	{
 	{
 		srcaddr.len = snprintf(sbuf, MSRP_SBUF_SIZE,
 		srcaddr.len = snprintf(sbuf, MSRP_SBUF_SIZE,
 				"Use-Path: msrps://%.*s/%.*s;tcp\r\nExpires: %d\r\n",
 				"Use-Path: msrps://%.*s/%.*s;tcp\r\nExpires: %d\r\n",
-				srcsock.len-4, srcsock.s+4,
+				(msrp_use_path_addr.s)?msrp_use_path_addr.len:(srcsock.len-4),
+				(msrp_use_path_addr.s)?msrp_use_path_addr.s:(srcsock.s+4),
 				_msrp_sruid.uid.len, _msrp_sruid.uid.s,
 				_msrp_sruid.uid.len, _msrp_sruid.uid.s,
 				expires);
 				expires);
 	} else {
 	} else {
 		srcaddr.len = snprintf(sbuf, MSRP_SBUF_SIZE,
 		srcaddr.len = snprintf(sbuf, MSRP_SBUF_SIZE,
 				"Use-Path: msrp://%.*s/%.*s;tcp\r\nExpires: %d\r\n",
 				"Use-Path: msrp://%.*s/%.*s;tcp\r\nExpires: %d\r\n",
-				srcsock.len-4, srcsock.s+4,
+				(msrp_use_path_addr.s)?msrp_use_path_addr.len:(srcsock.len-4),
+				(msrp_use_path_addr.s)?msrp_use_path_addr.s:(srcsock.s+4),
 				_msrp_sruid.uid.len, _msrp_sruid.uid.s,
 				_msrp_sruid.uid.len, _msrp_sruid.uid.s,
 				expires);
 				expires);
 	}
 	}

+ 7 - 5
modules/msrp/msrp_mod.c

@@ -68,6 +68,7 @@ int msrp_cmap_size = 0;
 int msrp_auth_min_expires = 60;
 int msrp_auth_min_expires = 60;
 int msrp_auth_max_expires = 3600;
 int msrp_auth_max_expires = 3600;
 int msrp_timer_interval = 60;
 int msrp_timer_interval = 60;
+str msrp_use_path_addr = { 0 };
 
 
 static int msrp_frame_received(void *data);
 static int msrp_frame_received(void *data);
 sip_msg_t *msrp_fake_sipmsg(msrp_frame_t *mf);
 sip_msg_t *msrp_fake_sipmsg(msrp_frame_t *mf);
@@ -111,11 +112,12 @@ static cmd_export_t cmds[]={
 };
 };
 
 
 static param_export_t params[]={
 static param_export_t params[]={
-	{"sipmsg",            INT_PARAM,   &msrp_param_sipmsg},
-	{"cmap_size",         INT_PARAM,   &msrp_cmap_size},
-	{"auth_min_expires",  INT_PARAM,   &msrp_auth_min_expires},
-	{"auth_max_expires",  INT_PARAM,   &msrp_auth_max_expires},
-	{"timer_interval",    INT_PARAM,   &msrp_timer_interval},
+	{"sipmsg",            PARAM_INT,   &msrp_param_sipmsg},
+	{"cmap_size",         PARAM_INT,   &msrp_cmap_size},
+	{"auth_min_expires",  PARAM_INT,   &msrp_auth_min_expires},
+	{"auth_max_expires",  PARAM_INT,   &msrp_auth_max_expires},
+	{"timer_interval",    PARAM_INT,   &msrp_timer_interval},
+	{"use_path_addr",     PARAM_STR,   &msrp_use_path_addr},
 	{0, 0, 0}
 	{0, 0, 0}
 };
 };