[sr-dev] git:master:0292cae2: evrexec: exposed src ip and port via variable

Daniel-Constantin Mierla miconda at gmail.com
Thu Mar 31 08:24:43 CEST 2022


Module: kamailio
Branch: master
Commit: 0292cae2812628e433cc07af6a45bf229e2ba708
URL: https://github.com/kamailio/kamailio/commit/0292cae2812628e433cc07af6a45bf229e2ba708

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2022-03-31T08:23:58+02:00

evrexec: exposed src ip and port via variable

---

Modified: src/modules/evrexec/evrexec_mod.c

---

Diff:  https://github.com/kamailio/kamailio/commit/0292cae2812628e433cc07af6a45bf229e2ba708.diff
Patch: https://github.com/kamailio/kamailio/commit/0292cae2812628e433cc07af6a45bf229e2ba708.patch

---

diff --git a/src/modules/evrexec/evrexec_mod.c b/src/modules/evrexec/evrexec_mod.c
index e3d131ff9f..253197d100 100644
--- a/src/modules/evrexec/evrexec_mod.c
+++ b/src/modules/evrexec/evrexec_mod.c
@@ -286,6 +286,11 @@ void evrexec_process_socket(evrexec_task_t *it, int idx)
 				NI_NUMERICHOST | NI_NUMERICSERV);
 		if(ret == 0) {
 			LM_DBG("received data from %s port %s\n", srchostval, srcportval);
+			_evrexec_info.srcip.s = srchostval;
+			_evrexec_info.srcip.len = strlen(_evrexec_info.srcip.s);
+			_evrexec_info.srcport.s = srcportval;
+			_evrexec_info.srcport.len = strlen(_evrexec_info.srcport.s);
+			str2sint(&_evrexec_info.srcport, &_evrexec_info.srcportno);
 		}
 
 		_evrexec_info.data.s = rcvbuf;
@@ -424,6 +429,19 @@ static int pv_get_evr(sip_msg_t *msg, pv_param_t *param, pv_value_t *res)
 	switch(param->pvn.u.isname.name.n) {
 		case 0: /* data */
 			return pv_get_strval(msg, param, res, &_evrexec_info.data);
+		case 1: /* srcpip */
+			if(_evrexec_info.srcip.s==NULL) {
+				return pv_get_null(msg, param, res);
+			}
+			return pv_get_strval(msg, param, res, &_evrexec_info.srcip);
+		case 2: /* srcport */
+			if(_evrexec_info.srcport.s==NULL) {
+				return pv_get_null(msg, param, res);
+			}
+			return pv_get_strval(msg, param, res, &_evrexec_info.srcport);
+		case 3: /* srcportno */
+			return pv_get_sintval(msg, param, res, _evrexec_info.srcportno);
+
 		default:
 			return pv_get_null(msg, param, res);
 	}
@@ -445,6 +463,27 @@ static int pv_parse_evr_name(pv_spec_p sp, str *in)
 				goto error;
 			}
 		break;
+		case 5:
+			if(strncmp(in->s, "srcip", 5)==0) {
+				sp->pvp.pvn.u.isname.name.n = 1;
+			} else {
+				goto error;
+			}
+		break;
+		case 7:
+			if(strncmp(in->s, "srcport", 7)==0) {
+				sp->pvp.pvn.u.isname.name.n = 2;
+			} else {
+				goto error;
+			}
+		break;
+		case 9:
+			if(strncmp(in->s, "srcportno", 9)==0) {
+				sp->pvp.pvn.u.isname.name.n = 3;
+			} else {
+				goto error;
+			}
+		break;
 		default:
 			goto error;
 	}




More information about the sr-dev mailing list