static int mod_init(void) { int ver; LM_INFO("initializing...\n"); init_db_url( db_url , 0 /*cannot be null*/); domainpolicy_table.len = strlen(domainpolicy_table.s); domainpolicy_col_rule.len = strlen(domainpolicy_col_rule.s); domainpolicy_col_type.len = strlen(domainpolicy_col_type.s); domainpolicy_col_att.len = strlen(domainpolicy_col_att.s); domainpolicy_col_val.len = strlen(domainpolicy_col_val.s); LM_INFO("check for DB module\n"); /* Check if database module has been loaded */ if (domainpolicy_db_bind(&db_url)<0) { LM_ERR("no database module loaded!" " Please make sure that a DB module is loaded first\n"); return -1; } LM_INFO("update length of module variables\n"); /* Update length of module variables */ port_override_avp.len = strlen(port_override_avp.s); transport_override_avp.len = strlen(transport_override_avp.s); domain_prefix_avp.len = strlen(domain_prefix_avp.s); domain_suffix_avp.len = strlen(domain_suffix_avp.s); domain_replacement_avp.len = strlen(domain_replacement_avp.s); send_socket_avp.len = strlen(send_socket_avp.s); /* Check table version */ ver = domainpolicy_db_ver(&db_url, &domainpolicy_table); if (ver < 0) { LM_ERR("failed to query table version\n"); return -1; } else if (ver < DOMAINPOLICY_TABLE_VERSION) { LM_ERR("invalid table version of domainpolicy table\n"); return -1; } /* Assign AVP parameter names */ LM_INFO("AVP\n"); if (parse_avp_spec(&port_override_avp, &port_override_name) < 0) { LM_ERR("invalid port_override_avp!\n"); return -1; } if (parse_avp_spec(&transport_override_avp, &transport_override_name) < 0) { LM_ERR("invalid transport_override_avp!\n"); return -1; } if (parse_avp_spec(&domain_prefix_avp, &domain_prefix_name) < 0) { LM_ERR("invalid domain_prefix_avp!\n"); return -1; } if (parse_avp_spec(&domain_suffix_avp, &domain_suffix_name) < 0) { LM_ERR("invalid domain_suffix_avp!\n"); return -1; } if (parse_avp_spec(&domain_replacement_avp, &domain_replacement_name) < 0) { LM_ERR("invalid domain_replacement_avp!\n"); return -1; } if (parse_avp_spec(&send_socket_avp, &send_socket_name) < 0) { LM_ERR("invalid send_socket_avp!\n"); return -1; } return 0; }
static int mod_init(void) { unsigned int par; int ver; LM_DBG("check for DB module\n"); /* Check if database module has been loaded */ if (domainpolicy_db_bind(&db_url)<0) { LM_ERR("no database module loaded!" " Please make sure that a DB module is loaded first\n"); return -1; } /* Check table version */ ver = domainpolicy_db_ver(&db_url, &domainpolicy_table); if (ver < 0) { LM_ERR("failed to query table version\n"); return -1; } else if (ver < DOMAINPOLICY_TABLE_VERSION) { LM_ERR("invalid table version of domainpolicy table\n"); return -1; } /* Assign AVP parameter names */ LM_DBG("AVP\n"); if (str2int(&port_override_avp, &par) == 0) { if (!par) { LM_ERR("port_override_avp not defined!\n"); return -1; } port_override_name.n = par; port_override_avp_name_str = 0; } else { port_override_name.s = port_override_avp; port_override_avp_name_str = AVP_NAME_STR; } if (str2int(&transport_override_avp, &par) == 0) { if (!par) { LM_ERR(" transport_override_avp not defined!\n"); return -1; } transport_override_name.n = par; transport_override_avp_name_str = 0; } else { transport_override_name.s = transport_override_avp; transport_override_avp_name_str = AVP_NAME_STR; } if (str2int(&domain_prefix_avp, &par) == 0) { if (!par) { LM_ERR("domain_prefix_avp not defined!\n"); return -1; } domain_prefix_name.n = par; domain_prefix_avp_name_str = 0; } else { domain_prefix_name.s = domain_prefix_avp; domain_prefix_avp_name_str = AVP_NAME_STR; } if (str2int(&domain_suffix_avp, &par) == 0) { if (!par) { LM_ERR(" domain_suffix_avp not defined!\n"); return -1; } domain_suffix_name.n = par; domain_suffix_avp_name_str = 0; } else { domain_suffix_name.s = domain_suffix_avp; domain_suffix_avp_name_str = AVP_NAME_STR; } if (str2int(&domain_replacement_avp, &par) == 0) { if (!par) { LM_ERR(" domain_replacement_avp not defined!\n"); return -1; } domain_replacement_name.n = par; domain_replacement_avp_name_str = 0; } else { domain_replacement_name.s = domain_replacement_avp; domain_replacement_avp_name_str = AVP_NAME_STR; } if (str2int(&send_socket_avp, &par) == 0) { if (!par) { LM_ERR(" send_socket_avp not defined!\n"); return -1; } send_socket_name.n = par; send_socket_avp_name_str = 0; } else { send_socket_name.s = send_socket_avp; send_socket_avp_name_str = AVP_NAME_STR; } return 0; }