Browse Source

pv: added $Ras - return local received address in socket format

Daniel-Constantin Mierla 3 years ago
parent
commit
2aae3ee39e
3 changed files with 18 additions and 0 deletions
  1. 3 0
      src/modules/pv/pv.c
  2. 12 0
      src/modules/pv/pv_core.c
  3. 3 0
      src/modules/pv/pv_core.h

+ 3 - 0
src/modules/pv/pv.c

@@ -406,6 +406,9 @@ static pv_export_t mod_pvs[] = {
 	{{"rz", (sizeof("rz")-1)}, /* */
 		PVT_OTHER, pv_get_ruri_attr, 0,
 		0, 0, pv_init_iname, 5},
+	{{"Ras", (sizeof("Ras")-1)}, /* */
+		PVT_OTHER, pv_get_rcvaddr_socket, 0,
+		0, 0, 0, 0},
 	{{"Ri", (sizeof("Ri")-1)}, /* */
 		PVT_OTHER, pv_get_rcvip, 0,
 		0, 0, 0, 0},

+ 12 - 0
src/modules/pv/pv_core.c

@@ -932,6 +932,18 @@ int pv_get_rcvaddr_uri_full(struct sip_msg *msg, pv_param_t *param,
 	return pv_get_rcvaddr_uri_helper(msg, param, 1, res);
 }
 
+int pv_get_rcvaddr_socket(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res)
+{
+	if(msg==NULL)
+		return -1;
+
+	if(msg->rcv.bind_address==NULL || msg->rcv.bind_address->sock_str.s==NULL) {
+		return pv_get_null(msg, param, res);
+	}
+	return pv_get_strval(msg, param, res, &msg->rcv.bind_address->sock_str);
+}
+
 int pv_get_rcv_advertised_ip(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res)
 {

+ 3 - 0
src/modules/pv/pv_core.h

@@ -166,6 +166,9 @@ int pv_get_rcvaddr_uri(struct sip_msg *msg, pv_param_t *param,
 int pv_get_rcvaddr_uri_full(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);
 
+int pv_get_rcvaddr_socket(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res);
+
 int pv_get_rcvsname(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);