浏览代码

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.4. auth_min_expires (int)
               3.5. auth_max_expires (int)
+              3.6. use_path_addr (str)
 
         4. Functions
 
@@ -64,16 +65,17 @@ Alex Balashov
    1.3. Set timer_interval parameter
    1.4. Set auth_min_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
 
@@ -92,6 +94,7 @@ Chapter 1. Admin Guide
         3.3. timer_interval (int)
         3.4. auth_min_expires (int)
         3.5. auth_max_expires (int)
+        3.6. use_path_addr (str)
 
    4. Functions
 
@@ -167,6 +170,7 @@ Chapter 1. Admin Guide
    3.3. timer_interval (int)
    3.4. auth_min_expires (int)
    3.5. auth_max_expires (int)
+   3.6. use_path_addr (str)
 
 3.1. sipmsg (int)
 
@@ -228,6 +232,17 @@ modparam("msrp", "auth_min_expiresl", 90)
 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.1. msrp_relay()
@@ -249,7 +264,7 @@ modparam("msrp", "auth_max_expiresl", 1800)
 
    This function can be used in ANY_ROUTE.
 
-   Example 1.6. msrp usage
+   Example 1.7. msrp_relay usage
 ...
 event_route[msrp:frame-in] {
     msrp_relay();
@@ -264,7 +279,7 @@ event_route[msrp:frame-in] {
 
    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] {
     msrp_reply("403", "Not allowed");
@@ -277,7 +292,7 @@ event_route[msrp:frame-in] {
 
    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] {
     if(msrp_is_request())
@@ -294,7 +309,7 @@ event_route[msrp:frame-in] {
 
    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] {
     if(msrp_is_reply())
@@ -314,7 +329,7 @@ event_route[msrp:frame-in] {
 
    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] {
     ...
@@ -333,7 +348,7 @@ event_route[msrp:frame-in] {
 
    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] {
     ...
@@ -352,7 +367,7 @@ event_route[msrp:frame-in] {
 
    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] {
     ...
@@ -368,7 +383,7 @@ event_route[msrp:frame-in] {
 
    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] {
     ...
@@ -383,7 +398,7 @@ event_route[msrp:frame-in] {
 
    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] {
     ...
@@ -490,7 +505,7 @@ Content-Type: text/plain
    Next is an example of configuration file with the routing block for
    MSRP frames. In this config, the SIP traffic is rejected.
 
-   Example 1.15. Event Route
+   Example 1.16. Event Route
 ...
 
 #!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)
 ...
+</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>
 		</example>
 	</section>
@@ -202,7 +221,7 @@ modparam("msrp", "auth_max_expiresl", 1800)
 		This function can be used in ANY_ROUTE.
 		</para>
 		<example>
-		<title><function>msrp</function> usage</title>
+		<title><function>msrp_relay</function> usage</title>
 		<programlisting format="linespecific">
 ...
 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_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,
 				"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,
 				expires);
 	} else {
 		srcaddr.len = snprintf(sbuf, MSRP_SBUF_SIZE,
 				"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,
 				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_max_expires = 3600;
 int msrp_timer_interval = 60;
+str msrp_use_path_addr = { 0 };
 
 static int msrp_frame_received(void *data);
 sip_msg_t *msrp_fake_sipmsg(msrp_frame_t *mf);
@@ -111,11 +112,12 @@ static cmd_export_t cmds[]={
 };
 
 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}
 };