* init module function */
| 165 | * init module function |
| 166 | */ |
| 167 | static int mod_init(void) |
| 168 | { |
| 169 | LM_NOTICE("initializing sockets management module ...\n"); |
| 170 | |
| 171 | /* if not specified, it means that it had never been done anything */ |
| 172 | init_db_url(sock_mgm_db_url , 1 /*can be null*/); |
| 173 | |
| 174 | sock_mgm_table.len = strlen(sock_mgm_table.s); |
| 175 | sock_mgm_socket_col.len = strlen(sock_mgm_socket_col.s); |
| 176 | sock_mgm_adv_col.len = strlen(sock_mgm_adv_col.s); |
| 177 | sock_mgm_tag_col.len = strlen(sock_mgm_tag_col.s); |
| 178 | sock_mgm_flags_col.len = strlen(sock_mgm_flags_col.s); |
| 179 | sock_mgm_tos_col.len = strlen(sock_mgm_tos_col.s); |
| 180 | |
| 181 | if(db_bind_mod(&sock_mgm_db_url, &sock_mgm_db_func) == -1) { |
| 182 | LM_ERR("Failed bind to database\n"); |
| 183 | return -1; |
| 184 | } |
| 185 | |
| 186 | if (!DB_CAPABILITY(sock_mgm_db_func, DB_CAP_QUERY|DB_CAP_FETCH)) { |
| 187 | LM_ERR("Database module does not implement all functions" |
| 188 | " needed by sockets_mgm module\n"); |
| 189 | return -1; |
| 190 | } |
| 191 | |
| 192 | sock_mgm_db_con = sock_mgm_db_func.init(&sock_mgm_db_url); |
| 193 | if (!sock_mgm_db_con) { |
| 194 | LM_ERR("Failed to connect to database\n"); |
| 195 | return -1; |
| 196 | } |
| 197 | |
| 198 | /*verify table versions */ |
| 199 | if(db_check_table_version(&sock_mgm_db_func, sock_mgm_db_con, |
| 200 | &sock_mgm_table, SOCKETS_MGM_TABLE_VERSION) < 0) { |
| 201 | LM_ERR("error during table version check\n"); |
| 202 | return -1; |
| 203 | } |
| 204 | |
| 205 | sock_mgm_version = shm_malloc(sizeof *sock_mgm_version); |
| 206 | if (!sock_mgm_version) { |
| 207 | LM_ERR("oom for sock_mgm_version\n"); |
| 208 | return -1; |
| 209 | } |
| 210 | *sock_mgm_version = 0; |
| 211 | sock_mgm_proc_no = shm_malloc(sizeof *sock_mgm_proc_no); |
| 212 | if (!sock_mgm_proc_no) { |
| 213 | LM_ERR("oom for sock_mgm_proc_no\n"); |
| 214 | return -1; |
| 215 | } |
| 216 | *sock_mgm_proc_no = -1; |
| 217 | sock_mgm_lock = lock_alloc(); |
| 218 | if (!sock_mgm_version || !lock_init(sock_mgm_lock)) { |
| 219 | LM_ERR("initializing sock_mgm_version lock\n"); |
| 220 | return -1; |
| 221 | } |
| 222 | |
| 223 | if (socketpair(AF_UNIX, SOCK_STREAM, 0, sock_mgm_unix) < 0) { |
| 224 | LM_ERR("socketpair failed %d/%s\n", |
nothing calls this directly
no test coverage detected