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!

Reply via email to