/* * Copyright (C) 2019 by Sukchan Lee * * This file is part of Open5GS. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "pcrf-context.h" #include "pcrf-fd-path.h" static int initialized = 0; int pcrf_initialize(void) { int rv; pcrf_context_init(); rv = pcrf_context_parse_config(); if (rv != OGS_OK) return rv; rv = ogs_log_config_domain( ogs_app()->logger.domain, ogs_app()->logger.level); if (rv != OGS_OK) return rv; if (ogs_app()->db_uri) { rv = ogs_dbi_mongo_init(ogs_app()->db_uri); if (rv != OGS_OK) return rv; } else if (ogs_app()->db_json[0].apn) { int i; for (i = 0; i < OGS_APP_DB_JSON_MAX_APNS; i++) { if (ogs_app()->db_json[i].apn && ogs_app()->db_json[i].filepath) { rv = ogs_dbi_json_init(ogs_app()->db_json[i].filepath, ogs_app()->db_json[i].apn); if (rv != OGS_OK) return rv; } } } else { ogs_error("No database selected!"); return OGS_ERROR; } rv = pcrf_fd_init(); if (rv != OGS_OK) return OGS_ERROR; initialized = 1; return OGS_OK; } void pcrf_terminate(void) { if (!initialized) return; pcrf_fd_final(); ogs_dbi_final(); pcrf_context_final(); return; }