remove all local config related freeDiameter
This commit is contained in:
parent
d32c4b9743
commit
64d03a8cf1
|
@ -5,10 +5,10 @@ SUBDIRS = extensions gx s6a
|
|||
noinst_LTLIBRARIES = libfd.la
|
||||
|
||||
libfd_la_SOURCES = \
|
||||
fd_context.h fd_message.h fd_logger.h fd_init.h fd_lib.h
|
||||
fd_message.h fd_logger.h fd_init.h fd_lib.h
|
||||
|
||||
nodist_libfd_la_SOURCES = \
|
||||
libapp_sip.c fd_context.c fd_message.c fd_logger.c fd_init.c
|
||||
libapp_sip.c fd_message.c fd_logger.c fd_init.c
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/lib/core/include
|
||||
|
|
|
@ -1,113 +0,0 @@
|
|||
#define TRACE_MODULE _fd_context
|
||||
|
||||
#include "core_debug.h"
|
||||
#include "core_lib.h"
|
||||
#include "core_file.h"
|
||||
|
||||
#include "fd_context.h"
|
||||
|
||||
static struct fd_context_t self;
|
||||
|
||||
int fd_context_init(int mode)
|
||||
{
|
||||
memset(&self, 0, sizeof(struct fd_context_t));
|
||||
|
||||
self.mode = mode;
|
||||
self.duration = 10; /* 10 seconds */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct fd_context_t* fd_self()
|
||||
{
|
||||
return &self;
|
||||
}
|
||||
|
||||
static int fd_default_context()
|
||||
{
|
||||
struct peer_info fddpi;
|
||||
struct addrinfo hints, *ai;
|
||||
int ret;
|
||||
int disc = 0;
|
||||
|
||||
/* disable SCTP */
|
||||
fd_g_config->cnf_flags.no_sctp = 1;
|
||||
|
||||
fd_g_config->cnf_diamid = self.cnf_diamid;
|
||||
fd_os_validate_DiameterIdentity(
|
||||
&fd_g_config->cnf_diamid, &fd_g_config->cnf_diamid_len, 1);
|
||||
fd_g_config->cnf_diamrlm = self.cnf_diamrlm;
|
||||
fd_os_validate_DiameterIdentity(
|
||||
&fd_g_config->cnf_diamrlm, &fd_g_config->cnf_diamrlm_len, 1);
|
||||
if (self.cnf_addr == NULL)
|
||||
return CORE_ERROR;
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
|
||||
if (self.cnf_addr == NULL)
|
||||
return CORE_ERROR;
|
||||
ret = getaddrinfo(self.cnf_addr, NULL, &hints, &ai);
|
||||
if (ret)
|
||||
return CORE_ERROR;
|
||||
|
||||
fd_ep_add_merge( &fd_g_config->cnf_endpoints,
|
||||
ai->ai_addr, ai->ai_addrlen, EP_FL_CONF),
|
||||
freeaddrinfo(ai);
|
||||
|
||||
if (self.cnf_port)
|
||||
fd_g_config->cnf_port = self.cnf_port;
|
||||
if (self.cnf_port_tls)
|
||||
fd_g_config->cnf_port_tls = self.cnf_port_tls;
|
||||
|
||||
memset(&fddpi, 0, sizeof(fddpi));
|
||||
fddpi.config.pic_flags.persist = PI_PRST_ALWAYS;
|
||||
fddpi.config.pic_flags.pro3 = PI_P3_IP;
|
||||
fddpi.config.pic_flags.pro4 = PI_P4_TCP;
|
||||
fddpi.config.pic_flags.alg = PI_ALGPREF_TCP;
|
||||
fddpi.config.pic_flags.sec |= PI_SEC_NONE;
|
||||
|
||||
fddpi.config.pic_port = self.pic_port;
|
||||
fddpi.pi_diamid = self.pi_diamid;
|
||||
|
||||
fd_list_init( &fddpi.pi_endpoints, NULL );
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICHOST;
|
||||
if (self.pi_addr == NULL)
|
||||
return CORE_ERROR;
|
||||
ret = getaddrinfo(self.pi_addr, NULL, &hints, &ai);
|
||||
if (ret)
|
||||
return CORE_ERROR;
|
||||
|
||||
fd_ep_add_merge( &fddpi.pi_endpoints,
|
||||
ai->ai_addr, ai->ai_addrlen, EP_FL_CONF | (disc ?: EP_ACCEPTALL) );
|
||||
fd_peer_add ( &fddpi, NULL, NULL, NULL );
|
||||
|
||||
freeaddrinfo(ai);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
status_t fd_set_default_context()
|
||||
{
|
||||
char * buf = NULL, *b;
|
||||
size_t len = 0;
|
||||
|
||||
CHECK_FCT( fd_default_context() );
|
||||
|
||||
/* The following module use data from the configuration */
|
||||
int fd_rtdisp_init(void);
|
||||
CHECK_FCT( fd_rtdisp_init() );
|
||||
|
||||
/* Display configuration */
|
||||
b = fd_conf_dump(&buf, &len, NULL);
|
||||
LOG_SPLIT(FD_LOG_NOTICE, NULL,
|
||||
b ?: "<Error during configuration dump...>", NULL);
|
||||
free(buf);
|
||||
|
||||
/* Since some extensions might have modified the definitions from the dict_base_protocol, we only load the objects now */
|
||||
int fd_msg_init(void);
|
||||
CHECK_FCT( fd_msg_init() );
|
||||
|
||||
return CORE_OK;
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
#ifndef __FD_CONTEXT_H__
|
||||
#define __FD_CONTEXT_H__
|
||||
|
||||
#include "core_errno.h"
|
||||
|
||||
#include "freeDiameter/freeDiameter-host.h"
|
||||
#include "freeDiameter/libfdcore.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* This is default diameter configuration if there is no config file
|
||||
* The Configuration : No TLS, Only TCP */
|
||||
struct fd_context_t {
|
||||
/* Diameter Identity of the local peer (FQDN -- ASCII) */
|
||||
char *cnf_diamid;
|
||||
/* Diameter realm of the local peer, default to realm part of cnf_diamid */
|
||||
char *cnf_diamrlm;
|
||||
/* IP address of the local peer */
|
||||
char *cnf_addr;
|
||||
|
||||
/* the local port for legacy Diameter (default: 3868) in host byte order */
|
||||
c_uint16_t cnf_port;
|
||||
/* the local port for Diameter/TLS (default: 5658) in host byte order */
|
||||
c_uint16_t cnf_port_tls;
|
||||
|
||||
/* (supposedly) UTF-8, \0 terminated.
|
||||
* The Diameter Identity of the remote peer. */
|
||||
char *pi_diamid;
|
||||
char *pi_addr; /* IP address of the remote peer */
|
||||
c_uint16_t pic_port; /* port to connect to. 0: default. */
|
||||
|
||||
#define FD_MODE_SERVER 0x1
|
||||
#define FD_MODE_CLIENT 0x2
|
||||
int mode; /* default FD_MODE_SERVER | FD_MODE_CLIENT */
|
||||
|
||||
int duration; /* default 10 */
|
||||
struct fd_stats {
|
||||
unsigned long long nb_echoed; /* server */
|
||||
unsigned long long nb_sent; /* client */
|
||||
unsigned long long nb_recv; /* client */
|
||||
unsigned long long nb_errs; /* client */
|
||||
unsigned long shortest; /* fastest answer, in microseconds */
|
||||
unsigned long longest; /* slowest answer, in microseconds */
|
||||
unsigned long avg; /* average answer time, in microseconds */
|
||||
} stats;
|
||||
|
||||
pthread_mutex_t stats_lock;
|
||||
};
|
||||
|
||||
CORE_DECLARE(int) fd_context_init(int mode);
|
||||
CORE_DECLARE(struct fd_context_t*) fd_self();
|
||||
|
||||
CORE_DECLARE(status_t) fd_set_default_context(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* ! __FD_CONTEXT_H__ */
|
|
@ -5,14 +5,13 @@
|
|||
#include "core_signal.h"
|
||||
#include "core_semaphore.h"
|
||||
|
||||
#include "fd_context.h"
|
||||
#include "fd_logger.h"
|
||||
#include "fd_lib.h"
|
||||
|
||||
static void fd_gnutls_log_func(int level, const char *str);
|
||||
static void fd_log_func(int printlevel, const char *format, va_list ap);
|
||||
|
||||
int fd_init(const char *conffile)
|
||||
int fd_init(int mode, const char *conffile)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -34,20 +33,13 @@ int fd_init(const char *conffile)
|
|||
}
|
||||
|
||||
/* Parse the configuration file */
|
||||
if (conffile)
|
||||
{
|
||||
CHECK_FCT_DO( fd_core_parseconf(conffile), goto error );
|
||||
}
|
||||
else
|
||||
{
|
||||
CHECK_FCT_DO( fd_set_default_context(), goto error );
|
||||
}
|
||||
CHECK_FCT_DO( fd_core_parseconf(conffile), goto error );
|
||||
|
||||
/* Initialize FD Message */
|
||||
CHECK_FCT( fd_message_init() );
|
||||
|
||||
/* Initialize FD logger */
|
||||
CHECK_FCT_DO( fd_logger_init(), goto error );
|
||||
CHECK_FCT_DO( fd_logger_init(mode), goto error );
|
||||
|
||||
/* Start the servers */
|
||||
CHECK_FCT_DO( fd_core_start(), goto error );
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "freeDiameter/freeDiameter-host.h"
|
||||
#include "freeDiameter/libfdcore.h"
|
||||
|
||||
#include "fd_context.h"
|
||||
#include "fd_message.h"
|
||||
#include "fd_logger.h"
|
||||
|
||||
|
@ -18,7 +17,7 @@ extern "C" {
|
|||
#define MME_IDENTITY "mme.localdomain" /* Default MME Identity */
|
||||
#define HSS_IDENTITY "hss.localdomain" /* Default HSS Identity */
|
||||
|
||||
CORE_DECLARE(int) fd_init(const char *conffile);
|
||||
CORE_DECLARE(int) fd_init(int mode, const char *conffile);
|
||||
CORE_DECLARE(void) fd_final(void);
|
||||
|
||||
int fd_avp_search_avp ( struct avp * groupedavp,
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
|
||||
#include "core_debug.h"
|
||||
|
||||
#include "fd_context.h"
|
||||
#include "fd_logger.h"
|
||||
|
||||
static struct fd_logger_t self;
|
||||
|
||||
static struct fd_hook_hdl *logger_hdl = NULL;
|
||||
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
|
||||
static pthread_t fd_stats_th = (pthread_t)NULL;
|
||||
|
@ -16,14 +17,19 @@ static void fd_logger_cb(enum fd_hook_type type, struct msg * msg,
|
|||
void * regdata);
|
||||
static void * fd_stats_worker(void * arg);
|
||||
|
||||
int fd_logger_init()
|
||||
int fd_logger_init(int mode)
|
||||
{
|
||||
uint32_t mask_peers = HOOK_MASK( HOOK_PEER_CONNECT_SUCCESS );
|
||||
|
||||
memset(&self, 0, sizeof(struct fd_logger_t));
|
||||
|
||||
self.mode = mode;
|
||||
self.duration = 60; /* 60 seconds */
|
||||
|
||||
CHECK_FCT( fd_hook_register(
|
||||
mask_peers, fd_logger_cb, NULL, NULL, &logger_hdl) );
|
||||
|
||||
CHECK_POSIX( pthread_mutex_init(&fd_self()->stats_lock, NULL) );
|
||||
CHECK_POSIX( pthread_mutex_init(&self.stats_lock, NULL) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -31,11 +37,16 @@ int fd_logger_init()
|
|||
void fd_logger_final()
|
||||
{
|
||||
CHECK_FCT_DO( fd_thr_term(&fd_stats_th), );
|
||||
CHECK_POSIX_DO( pthread_mutex_destroy(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_destroy(&self.stats_lock), );
|
||||
|
||||
if (logger_hdl) { CHECK_FCT_DO( fd_hook_unregister( logger_hdl ), ); }
|
||||
}
|
||||
|
||||
struct fd_logger_t* fd_logger_self()
|
||||
{
|
||||
return &self;
|
||||
}
|
||||
|
||||
int fd_logger_stats_start()
|
||||
{
|
||||
/* Start the statistics thread */
|
||||
|
@ -100,12 +111,12 @@ static void * fd_stats_worker(void * arg)
|
|||
/* Now, loop until canceled */
|
||||
while (1) {
|
||||
/* Display statistics every XX seconds */
|
||||
sleep(fd_self()->duration);
|
||||
sleep(self.duration);
|
||||
|
||||
/* Now, get the current stats */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
memcpy(©, &fd_self()->stats, sizeof(struct fd_stats));
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&self.stats_lock), );
|
||||
memcpy(©, &self.stats, sizeof(struct fd_stats));
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&self.stats_lock), );
|
||||
|
||||
/* Get the current execution time */
|
||||
CHECK_SYS_DO( clock_gettime(CLOCK_REALTIME, &now), );
|
||||
|
@ -125,11 +136,11 @@ static void * fd_stats_worker(void * arg)
|
|||
(long)(now.tv_nsec + 1000000000 - start.tv_nsec) / 1000);
|
||||
}
|
||||
|
||||
if (fd_self()->mode & FD_MODE_SERVER) {
|
||||
if (self.mode & FD_MODE_SERVER) {
|
||||
d_trace(3, " Server: %llu message(s) echoed\n",
|
||||
copy.nb_echoed);
|
||||
}
|
||||
if (fd_self()->mode & FD_MODE_CLIENT) {
|
||||
if (self.mode & FD_MODE_CLIENT) {
|
||||
d_trace(3, " Client:\n");
|
||||
d_trace(3, " %llu message(s) sent\n", copy.nb_sent);
|
||||
d_trace(3, " %llu error(s) received\n", copy.nb_errs);
|
||||
|
|
|
@ -10,9 +10,31 @@
|
|||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(int) fd_logger_init();
|
||||
struct fd_logger_t {
|
||||
|
||||
#define FD_MODE_SERVER 0x1
|
||||
#define FD_MODE_CLIENT 0x2
|
||||
int mode; /* default FD_MODE_SERVER | FD_MODE_CLIENT */
|
||||
|
||||
int duration; /* default 10 */
|
||||
struct fd_stats {
|
||||
unsigned long long nb_echoed; /* server */
|
||||
unsigned long long nb_sent; /* client */
|
||||
unsigned long long nb_recv; /* client */
|
||||
unsigned long long nb_errs; /* client */
|
||||
unsigned long shortest; /* fastest answer, in microseconds */
|
||||
unsigned long longest; /* slowest answer, in microseconds */
|
||||
unsigned long avg; /* average answer time, in microseconds */
|
||||
} stats;
|
||||
|
||||
pthread_mutex_t stats_lock;
|
||||
};
|
||||
|
||||
CORE_DECLARE(int) fd_logger_init(int mode);
|
||||
CORE_DECLARE(void) fd_logger_final();
|
||||
|
||||
CORE_DECLARE(struct fd_logger_t*) fd_logger_self();
|
||||
|
||||
CORE_DECLARE(int) fd_logger_stats_start();
|
||||
|
||||
typedef void (*fd_logger_user_handler)(
|
||||
|
|
|
@ -44,13 +44,12 @@ status_t app_initialize(char *config_path, char *log_path)
|
|||
|
||||
if (pid == 0)
|
||||
{
|
||||
if (pgw_sem1) semaphore_post(pgw_sem1);
|
||||
|
||||
d_trace(1, "PGW try to initialize\n");
|
||||
rv = pgw_initialize();
|
||||
d_assert(rv == CORE_OK,, "Failed to intialize PGW");
|
||||
d_trace(1, "PGW initialize...done\n");
|
||||
|
||||
if (pgw_sem1) semaphore_post(pgw_sem1);
|
||||
if (pgw_sem2) semaphore_wait(pgw_sem2);
|
||||
|
||||
if (rv == CORE_OK)
|
||||
|
@ -93,13 +92,12 @@ status_t app_initialize(char *config_path, char *log_path)
|
|||
if (pgw_sem1) semaphore_delete(pgw_sem1);
|
||||
if (pgw_sem2) semaphore_delete(pgw_sem2);
|
||||
|
||||
if (sgw_sem1) semaphore_post(sgw_sem1);
|
||||
|
||||
d_trace(1, "SGW try to initialize\n");
|
||||
rv = sgw_initialize();
|
||||
d_assert(rv == CORE_OK,, "Failed to intialize SGW");
|
||||
d_trace(1, "SGW initialize...done\n");
|
||||
|
||||
if (sgw_sem1) semaphore_post(sgw_sem1);
|
||||
if (sgw_sem2) semaphore_wait(sgw_sem2);
|
||||
|
||||
if (rv == CORE_OK)
|
||||
|
@ -144,13 +142,12 @@ status_t app_initialize(char *config_path, char *log_path)
|
|||
if (sgw_sem1) semaphore_delete(sgw_sem1);
|
||||
if (sgw_sem2) semaphore_delete(sgw_sem2);
|
||||
|
||||
if (hss_sem1) semaphore_post(hss_sem1);
|
||||
|
||||
d_trace(1, "HSS try to initialize\n");
|
||||
rv = hss_initialize();
|
||||
d_assert(rv == CORE_OK,, "Failed to intialize HSS");
|
||||
d_trace(1, "HSS initialize...done\n");
|
||||
|
||||
if (hss_sem1) semaphore_post(hss_sem1);
|
||||
if (hss_sem2) semaphore_wait(hss_sem2);
|
||||
|
||||
if (rv == CORE_OK)
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
noinst_LTLIBRARIES = libhss.la
|
||||
|
||||
libhss_la_SOURCES = \
|
||||
milenage.h hss_kdf.h hss_context.h hss_fd.h hss_s6a_handler.h
|
||||
milenage.h hss_kdf.h hss_context.h hss_s6a_handler.h
|
||||
|
||||
nodist_libhss_la_SOURCES = \
|
||||
milenage.c hss_kdf.c hss_init.c hss_context.c hss_fd.c hss_s6a_handler.c
|
||||
milenage.c hss_kdf.c hss_init.c hss_context.c hss_s6a_handler.c
|
||||
|
||||
libhss_la_DEPENDENCIES = \
|
||||
$(top_srcdir)/lib/core/src/libcore.la \
|
||||
|
|
|
@ -51,11 +51,6 @@ status_t hss_context_final(void)
|
|||
|
||||
static status_t hss_context_prepare()
|
||||
{
|
||||
self.mme_s6a_port = DIAMETER_PORT;
|
||||
self.mme_s6a_tls_port = DIAMETER_SECURE_PORT;
|
||||
self.hss_s6a_port = DIAMETER_PORT;
|
||||
self.hss_s6a_tls_port = DIAMETER_SECURE_PORT;
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
|
@ -82,7 +77,6 @@ status_t hss_context_parse_config()
|
|||
typedef enum {
|
||||
START, ROOT,
|
||||
HSS_START, HSS_ROOT,
|
||||
MME_START, MME_ROOT,
|
||||
SKIP, STOP
|
||||
} parse_state;
|
||||
parse_state state = START;
|
||||
|
@ -90,10 +84,8 @@ status_t hss_context_parse_config()
|
|||
|
||||
size_t root_tokens = 0;
|
||||
size_t hss_tokens = 0;
|
||||
size_t mme_tokens = 0;
|
||||
size_t skip_tokens = 0;
|
||||
int i, j, m, n;
|
||||
int arr, size;
|
||||
int i, j;
|
||||
|
||||
rv = hss_context_prepare();
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
@ -119,10 +111,6 @@ status_t hss_context_parse_config()
|
|||
{
|
||||
state = HSS_START;
|
||||
}
|
||||
else if (jsmntok_equal(json, t, "MME") == 0)
|
||||
{
|
||||
state = MME_START;
|
||||
}
|
||||
else
|
||||
{
|
||||
state = SKIP;
|
||||
|
@ -148,40 +136,6 @@ status_t hss_context_parse_config()
|
|||
{
|
||||
self.fd_conf_path = jsmntok_to_string(json, t+1);
|
||||
}
|
||||
else if (jsmntok_equal(json, t, "NETWORK") == 0)
|
||||
{
|
||||
m = 1;
|
||||
size = 1;
|
||||
|
||||
if ((t+1)->type == JSMN_ARRAY)
|
||||
{
|
||||
m = 2;
|
||||
}
|
||||
|
||||
for (arr = 0; arr < size; arr++)
|
||||
{
|
||||
for (n = 1; n > 0; m++, n--)
|
||||
{
|
||||
n += (t+m)->size;
|
||||
|
||||
if (jsmntok_equal(json, t+m, "S6A_ADDR") == 0)
|
||||
{
|
||||
self.hss_s6a_addr =
|
||||
jsmntok_to_string(json, t+m+1);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.hss_s6a_port = atoi(v);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_TLS_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.hss_s6a_tls_port = atoi(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
state = SKIP;
|
||||
stack = HSS_ROOT;
|
||||
|
@ -191,58 +145,6 @@ status_t hss_context_parse_config()
|
|||
if (hss_tokens == 0) stack = ROOT;
|
||||
break;
|
||||
}
|
||||
case MME_START:
|
||||
{
|
||||
state = MME_ROOT;
|
||||
mme_tokens = t->size;
|
||||
|
||||
break;
|
||||
}
|
||||
case MME_ROOT:
|
||||
{
|
||||
if (jsmntok_equal(json, t, "NETWORK") == 0)
|
||||
{
|
||||
m = 1;
|
||||
size = 1;
|
||||
|
||||
if ((t+1)->type == JSMN_ARRAY)
|
||||
{
|
||||
m = 2;
|
||||
}
|
||||
|
||||
for (arr = 0; arr < size; arr++)
|
||||
{
|
||||
for (n = 1; n > 0; m++, n--)
|
||||
{
|
||||
n += (t+m)->size;
|
||||
|
||||
if (jsmntok_equal(json, t+m, "S6A_ADDR") == 0)
|
||||
{
|
||||
self.mme_s6a_addr =
|
||||
jsmntok_to_string(json, t+m+1);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.mme_s6a_port = atoi(v);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_TLS_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.mme_s6a_tls_port = atoi(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
state = SKIP;
|
||||
stack = MME_ROOT;
|
||||
skip_tokens = t->size;
|
||||
|
||||
mme_tokens--;
|
||||
if (mme_tokens == 0) stack = ROOT;
|
||||
break;
|
||||
}
|
||||
case SKIP:
|
||||
{
|
||||
skip_tokens += t->size;
|
||||
|
@ -287,8 +189,6 @@ status_t hss_context_setup_trace_module()
|
|||
d_trace_level(&_hss_s6a_handler, fd);
|
||||
extern int _fd_init;
|
||||
d_trace_level(&_fd_init, fd);
|
||||
extern int _fd_context;
|
||||
d_trace_level(&_fd_context, fd);
|
||||
extern int _fd_logger;
|
||||
d_trace_level(&_fd_logger, fd);
|
||||
}
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
#define TRACE_MODULE _hss_fd
|
||||
|
||||
#include "fd_lib.h"
|
||||
|
||||
#include "hss_context.h"
|
||||
|
||||
int hss_fd_init(void)
|
||||
{
|
||||
fd_context_init(FD_MODE_SERVER);
|
||||
|
||||
if (hss_self()->fd_conf_path == NULL)
|
||||
{
|
||||
/* This is default diameter configuration if there is no config file
|
||||
* The Configuration : No TLS, Only TCP */
|
||||
|
||||
fd_self()->cnf_diamid = HSS_IDENTITY;
|
||||
fd_self()->cnf_diamrlm = FD_REALM;
|
||||
fd_self()->cnf_addr = hss_self()->hss_s6a_addr;
|
||||
fd_self()->cnf_port = hss_self()->hss_s6a_port;
|
||||
fd_self()->cnf_port_tls = hss_self()->hss_s6a_tls_port;
|
||||
|
||||
fd_self()->pi_diamid = MME_IDENTITY;
|
||||
fd_self()->pi_addr = hss_self()->mme_s6a_addr;
|
||||
fd_self()->pic_port = hss_self()->mme_s6a_port;
|
||||
}
|
||||
|
||||
CHECK_FCT( fd_init(hss_self()->fd_conf_path) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hss_fd_final(void)
|
||||
{
|
||||
fd_final();
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef __HSS_FD_H__
|
||||
#define __HSS_FD_H__
|
||||
|
||||
#include "core_errno.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(int) hss_fd_init(void);
|
||||
CORE_DECLARE(void) hss_fd_final(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __HSS_FD_H__ */
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
#define TRACE_MODULE _hss_init
|
||||
|
||||
#include "hss_context.h"
|
||||
#include "hss_fd.h"
|
||||
#include "hss_s6a_handler.h"
|
||||
|
||||
static int initialized = 0;
|
||||
|
@ -23,9 +22,6 @@ status_t hss_initialize(void)
|
|||
rv = hss_db_init();
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
||||
ret = hss_fd_init();
|
||||
if (ret != 0) return CORE_ERROR;
|
||||
|
||||
ret = hss_s6a_init();
|
||||
if (ret != CORE_OK) return CORE_ERROR;
|
||||
|
||||
|
@ -39,7 +35,6 @@ void hss_terminate(void)
|
|||
if (!initialized) return;
|
||||
|
||||
hss_s6a_final();
|
||||
hss_fd_final();
|
||||
|
||||
hss_db_final();
|
||||
hss_context_final();
|
||||
|
|
|
@ -161,9 +161,9 @@ static int hss_air_cb( struct msg **msg, struct avp *avp,
|
|||
CHECK_FCT( fd_msg_send(msg, NULL, NULL) );
|
||||
|
||||
/* Add this value to the stats */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
fd_self()->stats.nb_echoed++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
fd_logger_self()->stats.nb_echoed++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -439,9 +439,9 @@ static int hss_ulr_cb( struct msg **msg, struct avp *avp,
|
|||
CHECK_FCT( fd_msg_send(msg, NULL, NULL) );
|
||||
|
||||
/* Add this value to the stats */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
fd_self()->stats.nb_echoed++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
fd_logger_self()->stats.nb_echoed++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -457,6 +457,8 @@ int hss_s6a_init(void)
|
|||
{
|
||||
struct disp_when data;
|
||||
|
||||
CHECK_FCT( fd_init(FD_MODE_SERVER, hss_self()->fd_conf_path) );
|
||||
|
||||
/* Install objects definitions for this application */
|
||||
CHECK_FCT( s6a_dict_init() );
|
||||
|
||||
|
@ -494,4 +496,6 @@ void hss_s6a_final(void)
|
|||
if (hdl_ulr) {
|
||||
(void) fd_disp_unregister(&hdl_ulr, NULL);
|
||||
}
|
||||
|
||||
fd_final();
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ libmme_la_SOURCES = \
|
|||
mme_kdf.h kasumi.h snow_3g.h zuc.h \
|
||||
mme_event.h mme_context.h \
|
||||
s1ap_build.h s1ap_handler.h s1ap_conv.h s1ap_path.h \
|
||||
mme_fd.h mme_s6a_handler.h \
|
||||
mme_s6a_handler.h \
|
||||
nas_conv.h nas_security.h nas_path.h \
|
||||
emm_handler.h emm_build.h \
|
||||
esm_handler.h esm_build.h \
|
||||
|
@ -17,7 +17,7 @@ nodist_libmme_la_SOURCES = \
|
|||
mme_kdf.c kasumi.c snow_3g.c zuc.c \
|
||||
mme_init.c mme_event.c mme_context.c \
|
||||
s1ap_sm.c s1ap_build.c s1ap_handler.c s1ap_conv.c s1ap_path.c \
|
||||
mme_fd.c mme_s6a_handler.c \
|
||||
mme_s6a_handler.c \
|
||||
nas_conv.c nas_security.c nas_path.c \
|
||||
emm_sm.c emm_handler.c emm_build.c \
|
||||
esm_sm.c esm_handler.c esm_build.c \
|
||||
|
|
|
@ -215,7 +215,6 @@ status_t mme_context_parse_config()
|
|||
|
||||
typedef enum {
|
||||
START, ROOT,
|
||||
HSS_START, HSS_ROOT,
|
||||
MME_START, MME_ROOT,
|
||||
SGW_START, SGW_ROOT,
|
||||
SKIP, STOP
|
||||
|
@ -224,7 +223,6 @@ status_t mme_context_parse_config()
|
|||
parse_state stack = STOP;
|
||||
|
||||
size_t root_tokens = 0;
|
||||
size_t hss_tokens = 0;
|
||||
size_t mme_tokens = 0;
|
||||
size_t sgw_tokens = 0;
|
||||
size_t skip_tokens = 0;
|
||||
|
@ -251,11 +249,7 @@ status_t mme_context_parse_config()
|
|||
}
|
||||
case ROOT:
|
||||
{
|
||||
if (jsmntok_equal(json, t, "HSS") == 0)
|
||||
{
|
||||
state = HSS_START;
|
||||
}
|
||||
else if (jsmntok_equal(json, t, "MME") == 0)
|
||||
if (jsmntok_equal(json, t, "MME") == 0)
|
||||
{
|
||||
state = MME_START;
|
||||
}
|
||||
|
@ -275,59 +269,6 @@ status_t mme_context_parse_config()
|
|||
|
||||
break;
|
||||
}
|
||||
case HSS_START:
|
||||
{
|
||||
state = HSS_ROOT;
|
||||
hss_tokens = t->size;
|
||||
|
||||
break;
|
||||
}
|
||||
case HSS_ROOT:
|
||||
{
|
||||
if (jsmntok_equal(json, t, "NETWORK") == 0)
|
||||
{
|
||||
m = 1;
|
||||
size = 1;
|
||||
|
||||
if ((t+1)->type == JSMN_ARRAY)
|
||||
{
|
||||
m = 2;
|
||||
}
|
||||
|
||||
for (arr = 0; arr < size; arr++)
|
||||
{
|
||||
for (n = 1; n > 0; m++, n--)
|
||||
{
|
||||
n += (t+m)->size;
|
||||
|
||||
if (jsmntok_equal(json, t+m, "S6A_ADDR") == 0)
|
||||
{
|
||||
self.hss_s6a_addr =
|
||||
jsmntok_to_string(json, t+m+1);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.hss_s6a_port = atoi(v);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_TLS_PORT")
|
||||
== 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.hss_s6a_tls_port = atoi(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
state = SKIP;
|
||||
stack = HSS_ROOT;
|
||||
skip_tokens = t->size;
|
||||
|
||||
hss_tokens--;
|
||||
if (hss_tokens == 0) stack = ROOT;
|
||||
break;
|
||||
}
|
||||
case MME_START:
|
||||
{
|
||||
state = MME_ROOT;
|
||||
|
@ -362,22 +303,7 @@ status_t mme_context_parse_config()
|
|||
{
|
||||
n += (t+m)->size;
|
||||
|
||||
if (jsmntok_equal(json, t+m, "S6A_ADDR") == 0)
|
||||
{
|
||||
self.mme_s6a_addr =
|
||||
jsmntok_to_string(json, t+m+1);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.mme_s6a_port = atoi(v);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S6A_TLS_PORT") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.mme_s6a_tls_port = atoi(v);
|
||||
}
|
||||
else if (jsmntok_equal(json, t+m, "S1AP_ADDR") == 0)
|
||||
if (jsmntok_equal(json, t+m, "S1AP_ADDR") == 0)
|
||||
{
|
||||
char *v = jsmntok_to_string(json, t+m+1);
|
||||
if (v) self.s1ap_addr = inet_addr(v);
|
||||
|
@ -827,8 +753,6 @@ status_t mme_context_setup_trace_module()
|
|||
d_trace_level(&_mme_s6a_handler, fd);
|
||||
extern int _fd_init;
|
||||
d_trace_level(&_fd_init, fd);
|
||||
extern int _fd_context;
|
||||
d_trace_level(&_fd_context, fd);
|
||||
extern int _fd_logger;
|
||||
d_trace_level(&_fd_logger, fd);
|
||||
}
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
#define TRACE_MODULE _mme_fd
|
||||
|
||||
#include "fd_lib.h"
|
||||
|
||||
#include "mme_context.h"
|
||||
|
||||
int mme_fd_init(void)
|
||||
{
|
||||
fd_context_init(FD_MODE_CLIENT);
|
||||
|
||||
if (mme_self()->fd_conf_path == NULL)
|
||||
{
|
||||
/* This is default diameter configuration if there is no config file
|
||||
* The Configuration : No TLS, Only TCP */
|
||||
|
||||
fd_self()->cnf_diamid = MME_IDENTITY;
|
||||
fd_self()->cnf_diamrlm = FD_REALM;
|
||||
fd_self()->cnf_addr = mme_self()->mme_s6a_addr;
|
||||
fd_self()->cnf_port = mme_self()->mme_s6a_port;
|
||||
fd_self()->cnf_port_tls = mme_self()->mme_s6a_tls_port;
|
||||
|
||||
fd_self()->pi_diamid = HSS_IDENTITY;
|
||||
fd_self()->pi_addr = mme_self()->hss_s6a_addr;
|
||||
fd_self()->pic_port = mme_self()->hss_s6a_port;
|
||||
}
|
||||
|
||||
CHECK_FCT( fd_init(mme_self()->fd_conf_path) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void mme_fd_final(void)
|
||||
{
|
||||
fd_final();
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef __MME_FD_H__
|
||||
#define __MME_FD_H__
|
||||
|
||||
#include "core_errno.h"
|
||||
|
||||
#include "mme_context.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(int) mme_fd_init(void);
|
||||
CORE_DECLARE(void) mme_fd_final(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __MME_FD_H__ */
|
||||
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
#include "mme_event.h"
|
||||
|
||||
#include "mme_fd.h"
|
||||
#include "mme_s6a_handler.h"
|
||||
|
||||
static thread_id sm_thread;
|
||||
|
@ -30,9 +29,6 @@ status_t mme_initialize()
|
|||
rv = mme_context_setup_trace_module();
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
||||
ret = mme_fd_init();
|
||||
if (ret != 0) return CORE_ERROR;
|
||||
|
||||
ret = mme_s6a_init();
|
||||
if (ret != 0) return CORE_ERROR;
|
||||
|
||||
|
@ -54,7 +50,6 @@ void mme_terminate(void)
|
|||
thread_delete(sm_thread);
|
||||
|
||||
mme_s6a_final();
|
||||
mme_fd_final();
|
||||
|
||||
mme_context_final();
|
||||
|
||||
|
|
|
@ -186,32 +186,33 @@ out:
|
|||
mme_event_send(&e);
|
||||
|
||||
/* Free the message */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
dur = ((ts.tv_sec - mi->ts.tv_sec) * 1000000) +
|
||||
((ts.tv_nsec - mi->ts.tv_nsec) / 1000);
|
||||
if (fd_self()->stats.nb_recv)
|
||||
if (fd_logger_self()->stats.nb_recv)
|
||||
{
|
||||
/* Ponderate in the avg */
|
||||
fd_self()->stats.avg = (fd_self()->stats.avg *
|
||||
fd_self()->stats.nb_recv + dur) / (fd_self()->stats.nb_recv + 1);
|
||||
fd_logger_self()->stats.avg = (fd_logger_self()->stats.avg *
|
||||
fd_logger_self()->stats.nb_recv + dur) /
|
||||
(fd_logger_self()->stats.nb_recv + 1);
|
||||
/* Min, max */
|
||||
if (dur < fd_self()->stats.shortest)
|
||||
fd_self()->stats.shortest = dur;
|
||||
if (dur > fd_self()->stats.longest)
|
||||
fd_self()->stats.longest = dur;
|
||||
if (dur < fd_logger_self()->stats.shortest)
|
||||
fd_logger_self()->stats.shortest = dur;
|
||||
if (dur > fd_logger_self()->stats.longest)
|
||||
fd_logger_self()->stats.longest = dur;
|
||||
}
|
||||
else
|
||||
{
|
||||
fd_self()->stats.shortest = dur;
|
||||
fd_self()->stats.longest = dur;
|
||||
fd_self()->stats.avg = dur;
|
||||
fd_logger_self()->stats.shortest = dur;
|
||||
fd_logger_self()->stats.longest = dur;
|
||||
fd_logger_self()->stats.avg = dur;
|
||||
}
|
||||
if (error)
|
||||
fd_self()->stats.nb_errs++;
|
||||
fd_logger_self()->stats.nb_errs++;
|
||||
else
|
||||
fd_self()->stats.nb_recv++;
|
||||
fd_logger_self()->stats.nb_recv++;
|
||||
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
/* Display how long it took */
|
||||
if (ts.tv_nsec > mi->ts.tv_nsec)
|
||||
|
@ -324,9 +325,9 @@ void mme_s6a_send_air(mme_ue_t *mme_ue)
|
|||
CHECK_FCT_DO( fd_msg_send(&req, mme_s6a_aia_cb, svg), goto out );
|
||||
|
||||
/* Increment the counter */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
fd_self()->stats.nb_sent++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
fd_logger_self()->stats.nb_sent++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
d_trace(3, "[S6A] Authentication-Information-Request : UE[%s] --> HSS\n",
|
||||
mme_ue->imsi_bcd);
|
||||
|
@ -658,32 +659,33 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
|
|||
mme_event_send(&e);
|
||||
|
||||
/* Free the message */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
dur = ((ts.tv_sec - mi->ts.tv_sec) * 1000000) +
|
||||
((ts.tv_nsec - mi->ts.tv_nsec) / 1000);
|
||||
if (fd_self()->stats.nb_recv)
|
||||
if (fd_logger_self()->stats.nb_recv)
|
||||
{
|
||||
/* Ponderate in the avg */
|
||||
fd_self()->stats.avg = (fd_self()->stats.avg *
|
||||
fd_self()->stats.nb_recv + dur) / (fd_self()->stats.nb_recv + 1);
|
||||
fd_logger_self()->stats.avg = (fd_logger_self()->stats.avg *
|
||||
fd_logger_self()->stats.nb_recv + dur) /
|
||||
(fd_logger_self()->stats.nb_recv + 1);
|
||||
/* Min, max */
|
||||
if (dur < fd_self()->stats.shortest)
|
||||
fd_self()->stats.shortest = dur;
|
||||
if (dur > fd_self()->stats.longest)
|
||||
fd_self()->stats.longest = dur;
|
||||
if (dur < fd_logger_self()->stats.shortest)
|
||||
fd_logger_self()->stats.shortest = dur;
|
||||
if (dur > fd_logger_self()->stats.longest)
|
||||
fd_logger_self()->stats.longest = dur;
|
||||
}
|
||||
else
|
||||
{
|
||||
fd_self()->stats.shortest = dur;
|
||||
fd_self()->stats.longest = dur;
|
||||
fd_self()->stats.avg = dur;
|
||||
fd_logger_self()->stats.shortest = dur;
|
||||
fd_logger_self()->stats.longest = dur;
|
||||
fd_logger_self()->stats.avg = dur;
|
||||
}
|
||||
if (error)
|
||||
fd_self()->stats.nb_errs++;
|
||||
fd_logger_self()->stats.nb_errs++;
|
||||
else
|
||||
fd_self()->stats.nb_recv++;
|
||||
fd_logger_self()->stats.nb_recv++;
|
||||
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
/* Display how long it took */
|
||||
if (ts.tv_nsec > mi->ts.tv_nsec)
|
||||
|
@ -791,9 +793,9 @@ void mme_s6a_send_ulr(mme_ue_t *mme_ue)
|
|||
CHECK_FCT_DO( fd_msg_send(&req, mme_s6a_ula_cb, svg), goto out );
|
||||
|
||||
/* Increment the counter */
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_self()->stats_lock), );
|
||||
fd_self()->stats.nb_sent++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_self()->stats_lock), );
|
||||
CHECK_POSIX_DO( pthread_mutex_lock(&fd_logger_self()->stats_lock), );
|
||||
fd_logger_self()->stats.nb_sent++;
|
||||
CHECK_POSIX_DO( pthread_mutex_unlock(&fd_logger_self()->stats_lock), );
|
||||
|
||||
d_trace(3, "[S6A] Update-Location-Request : UE[%s] --> HSS\n",
|
||||
mme_ue->imsi_bcd);
|
||||
|
@ -807,6 +809,8 @@ int mme_s6a_init(void)
|
|||
{
|
||||
pool_init(&mme_s6a_sess_pool, MAX_NUM_SESSION_STATE);
|
||||
|
||||
CHECK_FCT( fd_init(FD_MODE_CLIENT, mme_self()->fd_conf_path) );
|
||||
|
||||
/* Install objects definitions for this application */
|
||||
CHECK_FCT( s6a_dict_init() );
|
||||
|
||||
|
@ -822,6 +826,8 @@ void mme_s6a_final(void)
|
|||
{
|
||||
CHECK_FCT_DO( fd_sess_handler_destroy(&mme_s6a_reg, NULL), );
|
||||
|
||||
fd_final();
|
||||
|
||||
if (pool_size(&mme_s6a_sess_pool) != pool_avail(&mme_s6a_sess_pool))
|
||||
d_error("%d not freed in mme_s6a_sess_pool[%d] of S6A-SM",
|
||||
pool_size(&mme_s6a_sess_pool) - pool_avail(&mme_s6a_sess_pool),
|
||||
|
|
|
@ -10,7 +10,7 @@ libpgw_la_SOURCES = \
|
|||
nodist_libpgw_la_SOURCES = \
|
||||
pgw_init.c pgw_event.c pgw_context.c pgw_sm.c \
|
||||
pgw_gtp_path.c pgw_s5c_handler.c \
|
||||
pgw_fd.c pgw_gx_handler.c
|
||||
pgw_gx_handler.c
|
||||
|
||||
libpgw_la_DEPENDENCIES = \
|
||||
$(top_srcdir)/lib/core/src/libcore.la \
|
||||
|
|
|
@ -433,8 +433,6 @@ status_t pgw_context_setup_trace_module()
|
|||
d_trace_level(&_pgw_gx_handler, fd);
|
||||
extern int _fd_init;
|
||||
d_trace_level(&_fd_init, fd);
|
||||
extern int _fd_context;
|
||||
d_trace_level(&_fd_context, fd);
|
||||
extern int _fd_logger;
|
||||
d_trace_level(&_fd_logger, fd);
|
||||
}
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
#define TRACE_MODULE _pgw_fd
|
||||
|
||||
#include "fd_lib.h"
|
||||
|
||||
#include "pgw_context.h"
|
||||
|
||||
int pgw_fd_init(void)
|
||||
{
|
||||
fd_context_init(FD_MODE_CLIENT);
|
||||
|
||||
CHECK_FCT( fd_init(pgw_self()->fd_conf_path) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pgw_fd_final(void)
|
||||
{
|
||||
fd_final();
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef __PGW_FD_H__
|
||||
#define __PGW_FD_H__
|
||||
|
||||
#include "core_errno.h"
|
||||
|
||||
#include "pgw_context.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(int) pgw_fd_init(void);
|
||||
CORE_DECLARE(void) pgw_fd_final(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __PGW_FD_H__ */
|
||||
|
|
@ -33,6 +33,8 @@ int pgw_gx_init(void)
|
|||
{
|
||||
pool_init(&pgw_gx_sess_pool, MAX_NUM_SESSION_STATE);
|
||||
|
||||
CHECK_FCT( fd_init(FD_MODE_CLIENT, pgw_self()->fd_conf_path) );
|
||||
|
||||
/* Install objects definitions for this application */
|
||||
CHECK_FCT( gx_dict_init() );
|
||||
|
||||
|
@ -48,6 +50,8 @@ void pgw_gx_final(void)
|
|||
{
|
||||
CHECK_FCT_DO( fd_sess_handler_destroy(&pgw_gx_reg, NULL), );
|
||||
|
||||
fd_final();
|
||||
|
||||
if (pool_size(&pgw_gx_sess_pool) != pool_avail(&pgw_gx_sess_pool))
|
||||
d_error("%d not freed in pgw_gx_sess_pool[%d] of S6A-SM",
|
||||
pool_size(&pgw_gx_sess_pool) - pool_avail(&pgw_gx_sess_pool),
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "pgw_context.h"
|
||||
#include "pgw_event.h"
|
||||
|
||||
#include "pgw_fd.h"
|
||||
#include "pgw_gx_handler.h"
|
||||
|
||||
static thread_id sm_thread;
|
||||
|
@ -20,9 +19,7 @@ static int initialized = 0;
|
|||
status_t pgw_initialize()
|
||||
{
|
||||
status_t rv;
|
||||
#if 0
|
||||
int ret;
|
||||
#endif
|
||||
|
||||
rv = pgw_context_init();
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
@ -36,13 +33,8 @@ status_t pgw_initialize()
|
|||
rv = pgw_ip_pool_generate();
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
||||
#if 0
|
||||
ret = pgw_fd_init();
|
||||
if (ret != 0) return CORE_ERROR;
|
||||
|
||||
ret = pgw_gx_init();
|
||||
if (ret != 0) return CORE_ERROR;
|
||||
#endif
|
||||
|
||||
rv = thread_create(&sm_thread, NULL, sm_main, NULL);
|
||||
if (rv != CORE_OK) return rv;
|
||||
|
@ -61,10 +53,7 @@ void pgw_terminate(void)
|
|||
thread_delete(net_thread);
|
||||
thread_delete(sm_thread);
|
||||
|
||||
#if 0
|
||||
pgw_gx_final();
|
||||
pgw_fd_final();
|
||||
#endif
|
||||
|
||||
pgw_context_final();
|
||||
|
||||
|
|
Loading…
Reference in New Issue