Module: kamailio Branch: master Commit: e8374898485b5c43d2693a6b9371d46f54538940 URL: https://github.com/kamailio/kamailio/commit/e8374898485b5c43d2693a6b9371d46f54538940
Author: Daniel-Constantin Mierla <[email protected]> Committer: Daniel-Constantin Mierla <[email protected]> Date: 2026-01-07T16:28:34+01:00 corex: functions for managing via-body flags --- Modified: src/modules/corex/corex_mod.c --- Diff: https://github.com/kamailio/kamailio/commit/e8374898485b5c43d2693a6b9371d46f54538940.diff Patch: https://github.com/kamailio/kamailio/commit/e8374898485b5c43d2693a6b9371d46f54538940.patch --- diff --git a/src/modules/corex/corex_mod.c b/src/modules/corex/corex_mod.c index 9f22b445ece..a4f9c669759 100644 --- a/src/modules/corex/corex_mod.c +++ b/src/modules/corex/corex_mod.c @@ -79,6 +79,10 @@ static int w_via_reply_add_xavp_params(sip_msg_t *msg, char *pflags, char *p2); static int w_is_faked_msg(sip_msg_t *msg, char *p1, char *p2); static int w_is_socket_name(sip_msg_t *msg, char *psockname, char *p2); +static int w_msg_vbflag_set(sip_msg_t *msg, char *pflag, char *p2); +static int w_msg_vbflag_reset(sip_msg_t *msg, char *pflag, char *p2); +static int w_msg_vbflag_is_set(sip_msg_t *msg, char *pflag, char *p2); + static int fixup_file_op(void **param, int param_no); static int fixup_free_file_op(void **param, int param_no); @@ -185,6 +189,12 @@ static cmd_export_t cmds[] = { {"is_faked_msg", (cmd_function)w_is_faked_msg, 0, 0, 0, ANY_ROUTE}, {"is_socket_name", (cmd_function)w_is_socket_name, 1, fixup_spve_null, fixup_free_spve_null, ANY_ROUTE}, + {"msg_vbflag_set", (cmd_function)w_msg_vbflag_set, 1, + fixup_igp_null, fixup_free_igp_null, ANY_ROUTE}, + {"msg_vbflag_reset", (cmd_function)w_msg_vbflag_reset, 1, + fixup_igp_null, fixup_free_igp_null, ANY_ROUTE}, + {"msg_vbflag_is_set", (cmd_function)w_msg_vbflag_is_set, 1, + fixup_igp_null, fixup_free_igp_null, ANY_ROUTE}, {0, 0, 0, 0, 0, 0} }; @@ -750,6 +760,80 @@ static int w_msg_iflag_is_set(sip_msg_t *msg, char *pflag, char *p2) return -2; } +/** + * + */ +static int ki_msg_vbflag_is_set(sip_msg_t *msg, int fval) +{ + if((flag_t)fval > MAX_FLAG) + return -1; + if(msg->vbflags & (fval << 1)) { + return 1; + } + return -1; +} + +/** + * + */ +static int w_msg_vbflag_is_set(sip_msg_t *msg, char *flag, char *s2) +{ + int fval = 0; + if(fixup_get_ivalue(msg, (gparam_t *)flag, &fval) != 0) { + LM_ERR("no flag value\n"); + return -1; + } + return ki_msg_vbflag_is_set(msg, fval); +} + +/** + * + */ +static int ki_msg_vbflag_reset(sip_msg_t *msg, int fval) +{ + if((flag_t)fval > MAX_FLAG) + return -1; + msg->vbflags &= ~(1 << fval); + return 1; +} + +/** + * + */ +static int w_msg_vbflag_reset(sip_msg_t *msg, char *flag, char *s2) +{ + int fval = 0; + if(fixup_get_ivalue(msg, (gparam_t *)flag, &fval) != 0) { + LM_ERR("no flag value\n"); + return -1; + } + return ki_msg_vbflag_reset(msg, fval); +} + +/** + * + */ +static int ki_msg_vbflag_set(sip_msg_t *msg, int fval) +{ + if((flag_t)fval > MAX_FLAG) + return -1; + msg->vbflags |= (1 << fval); + return 1; +} + +/** + * + */ +static int w_msg_vbflag_set(sip_msg_t *msg, char *flag, char *s2) +{ + int fval = 0; + if(fixup_get_ivalue(msg, (gparam_t *)flag, &fval) != 0) { + LM_ERR("no flag value\n"); + return -1; + } + return ki_msg_vbflag_set(msg, fval); +} + /** * */ _______________________________________________ Kamailio - Development Mailing List -- [email protected] To unsubscribe send an email to [email protected] Important: keep the mailing list in the recipients, do not reply only to the sender!
