On Nov 19, 2008 at 00:26, Andrei Pelinescu-Onciul andrei@iptel.org wrote: [...]
mod if: more prototypes and defines
prototypes for module (cmd_function) with 3, 4, 5, 6 and variable number of parameters added. The 3-6 versions just extend the old version with more char* parameters and are kamailio compatible. The variable number of parameters function is something new and experimental. It takes the sip_msg, the number of extra parameters and an array of action_u_t values (the internal routing engine parameters representation).
added a magic value for the parameters numbers, to be used by variable parameter functions (VAR_PARAM_NO)
moved/added the NO_SCRIPT macro (parameters number magic value for functions that should not be called from the script) from tm.
Example for a variable number of parameters function:
static cmd_export_t cmds[]={ {"print", print_f_0, 0, 0, REQUEST_ROUTE}, // overload test {"print", print_f_1, 1, print_fixup_f_1, REQUEST_ROUTE}, {"print", print_f_2, 2, print_fixup_f_2, REQUEST_ROUTE}, {"print", (cmd_function)print_f_var, VAR_PARAM_NO, 0, REQUEST_ROUTE}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ {0, 0, 0, 0, 0} };
...
static int print_f_var(struct sip_msg* msg, int no, action_u_t* vals) { int r; for (r=0; r<no; r++) printf("%s", vals[r].u.string); printf("\n"); return 1; }
You can have fixups too, I omitted them for simplicity.
Andrei