diff --git a/src/core/kemi.c b/src/core/kemi.c index 9b1d0050a54..526ebf996bd 100644 --- a/src/core/kemi.c +++ b/src/core/kemi.c @@ -274,12 +274,30 @@ static int sr_kemi_core_is_myself_suri(sip_msg_t *msg) if(get_src_uri(msg, 0, &suri)<0) { LM_ERR("cannot src address uri\n"); - return SR_KEMI_FALSE; + return SR_KEMI_FALSE; } return sr_kemi_core_is_myself(msg, &suri); } +/** + * + */ +static int sr_kemi_core_is_myself_srcip(sip_msg_t *msg) +{ + str srcip; + int ret; + + srcip.s = ip_addr2a(&msg->rcv.src_ip); + srcip.len = strlen(srcip.s); + + ret = check_self(&srcip, 0, 0); + if(ret==1) { + return SR_KEMI_TRUE; + } + return SR_KEMI_FALSE; +} + /** * */ @@ -1267,6 +1285,11 @@ static sr_kemi_t _sr_kemi_core[] = { { SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } }, + { str_init(""), str_init("is_myself_srcip"), + SR_KEMIP_BOOL, sr_kemi_core_is_myself_srcip, + { SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, + SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } + }, { str_init(""), str_init("setflag"), SR_KEMIP_BOOL, sr_kemi_core_setflag, { SR_KEMIP_INT, SR_KEMIP_NONE, SR_KEMIP_NONE,