浏览代码

nathelper: support filter contacts by server_id

Victor Seva 10 年之前
父节点
当前提交
894796f6f1
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      modules/nathelper/nathelper.c

+ 7 - 3
modules/nathelper/nathelper.c

@@ -358,7 +358,8 @@ static unsigned int raw_ip = 0;
 static unsigned short raw_port = 0;
 static unsigned short raw_port = 0;
 static int nh_keepalive_timeout = 0;
 static int nh_keepalive_timeout = 0;
 static request_method_t sipping_method_id = 0;
 static request_method_t sipping_method_id = 0;
-
+/* filter contacts by server_id */
+static int nh_filter_srvid = 0;
 
 
 /*0-> disabled, 1 ->enabled*/
 /*0-> disabled, 1 ->enabled*/
 unsigned int *natping_state=0;
 unsigned int *natping_state=0;
@@ -426,6 +427,7 @@ static param_export_t params[] = {
 	{"keepalive_timeout",     INT_PARAM, &nh_keepalive_timeout  },
 	{"keepalive_timeout",     INT_PARAM, &nh_keepalive_timeout  },
 	{"udpping_from_path",     INT_PARAM, &udpping_from_path     },
 	{"udpping_from_path",     INT_PARAM, &udpping_from_path     },
 	{"append_sdp_oldmediaip", INT_PARAM, &sdp_oldmediaip        },
 	{"append_sdp_oldmediaip", INT_PARAM, &sdp_oldmediaip        },
+	{"filter_server_id",      INT_PARAM, &nh_filter_srvid },
 
 
 	{0, 0, 0}
 	{0, 0, 0}
 };
 };
@@ -2067,6 +2069,7 @@ nh_timer(unsigned int ticks, void *timer_idx)
 	char *path_ip_str = NULL;
 	char *path_ip_str = NULL;
 	unsigned int path_ip = 0;
 	unsigned int path_ip = 0;
 	unsigned short path_port = 0;
 	unsigned short path_port = 0;
+	int options = 0;
 
 
 	if((*natping_state) == 0)
 	if((*natping_state) == 0)
 		goto done;
 		goto done;
@@ -2079,9 +2082,10 @@ nh_timer(unsigned int ticks, void *timer_idx)
 			goto done;
 			goto done;
 		}
 		}
 	}
 	}
+	if(nh_filter_srvid) options |= GAU_OPT_SERVER_ID;
 	rval = ul.get_all_ucontacts(buf, cblen, (ping_nated_only?ul.nat_flag:0),
 	rval = ul.get_all_ucontacts(buf, cblen, (ping_nated_only?ul.nat_flag:0),
 		((unsigned int)(unsigned long)timer_idx)*natping_interval+iteration,
 		((unsigned int)(unsigned long)timer_idx)*natping_interval+iteration,
-		natping_processes*natping_interval);
+		natping_processes*natping_interval, options);
 	if (rval<0) {
 	if (rval<0) {
 		LM_ERR("failed to fetch contacts\n");
 		LM_ERR("failed to fetch contacts\n");
 		goto done;
 		goto done;
@@ -2097,7 +2101,7 @@ nh_timer(unsigned int ticks, void *timer_idx)
 		}
 		}
 		rval = ul.get_all_ucontacts(buf,cblen,(ping_nated_only?ul.nat_flag:0),
 		rval = ul.get_all_ucontacts(buf,cblen,(ping_nated_only?ul.nat_flag:0),
 		   ((unsigned int)(unsigned long)timer_idx)*natping_interval+iteration,
 		   ((unsigned int)(unsigned long)timer_idx)*natping_interval+iteration,
-		   natping_processes*natping_interval);
+		   natping_processes*natping_interval, options);
 		if (rval != 0) {
 		if (rval != 0) {
 			pkg_free(buf);
 			pkg_free(buf);
 			goto done;
 			goto done;