struct mi_cmd* lookup_mi_cmd( char *name, int len) { int id; id = get_mi_id(name,len); return lookup_mi_cmd_id( id, name, len); }
int register_mi_cmd( mi_cmd_f f, char *name, char *help, void *param, mi_child_init_f in, unsigned int flags, char* mod_name) { struct mi_cmd *cmds; int id; int len; if (f==0 || name==0) { LM_ERR("invalid params f=%p, name=%s\n", f, name); return -1; } if (flags&MI_NO_INPUT_FLAG && flags&MI_ASYNC_RPL_FLAG) { LM_ERR("invalids flags for <%s> - " "async functions must take input\n",name); } len = strlen(name); id = get_mi_id(name,len); if (lookup_mi_cmd_id( id, name, len)) { LM_ERR("command <%.*s> already registered\n", len, name); return -1; } cmds = (struct mi_cmd*)pkg_realloc( mi_cmds, (mi_cmds_no+1)*sizeof(struct mi_cmd) ); if (cmds==0) { LM_ERR("no more pkg memory\n"); return -1; } mi_cmds = cmds; mi_cmds_no++; cmds = &cmds[mi_cmds_no-1]; cmds->f = f; cmds->init_f = in; cmds->flags = flags; cmds->name.s = name; cmds->name.len = len; cmds->module.s = mod_name; cmds->module.len = strlen(mod_name); cmds->help.s = help; cmds->help.len = help ? strlen(help) : 0; cmds->id = id; cmds->param = param; return 0; }