This commit is contained in:
Sukchan Lee 2017-08-02 20:04:02 +09:00
commit 13175e9e41
36 changed files with 413 additions and 198 deletions

View File

@ -141,15 +141,7 @@ status_t context_parse_config()
n += (t+m)->size;
char *v = jsmntok_to_string(json, t+m+1);
if (jsmntok_equal(json, t+m, "CONTEXT") == 0)
{
if (v) self.trace_level.context = atoi(v);
}
else if (jsmntok_equal(json, t+m, "SM") == 0)
{
if (v) self.trace_level.sm = atoi(v);
}
else if (jsmntok_equal(json, t+m, "S1AP") == 0)
if (jsmntok_equal(json, t+m, "S1AP") == 0)
{
if (v) self.trace_level.s1ap = atoi(v);
}
@ -165,6 +157,10 @@ status_t context_parse_config()
{
if (v) self.trace_level.gtp = atoi(v);
}
else if (jsmntok_equal(json, t+m, "OTHERS") == 0)
{
if (v) self.trace_level.others = atoi(v);
}
}
}

View File

@ -31,12 +31,11 @@ typedef struct _context_t {
void *database;
struct {
int context;
int sm;
int s1ap;
int nas;
int gtp;
int s6a;
int others;
} trace_level;
} context_t;

View File

@ -25,9 +25,6 @@ extern "C" {
* @{
*/
/** A constant representing a 'large' string. */
#define HUGE_STRING_LEN 8192
/*
* Define the structures used by the CORE general-purpose library.
*/

View File

@ -17,6 +17,7 @@
#define MAX_SIG_DESC_SIZE 256
#define HUGE_STRING_LEN 8192
#define MAX_FILEPATH_LEN 256
#define MAX_ERROR_STRING_LEN 1024

View File

@ -254,7 +254,7 @@ void d_trace_off(int *mod_name)
int d_msg(int tp, int lv, c_time_t t, char *fn, int ln, char *fmt, ...)
{
char str[384] = {0}, fstr[512] = {0}, *ac_str;
char str[384] = {0}, fstr[HUGE_STRING_LEN] = {0}, *ac_str;
time_exp_t te;
size_t n;
char *lv_str[5] = {"NONE", "FATL", "ERRR", "WARN", "INFO"};

View File

@ -1,3 +1,5 @@
#define TRACE_MODULE _mutex
#include "core.h"
#include "core_arch_mutex.h"
#include "core_errno.h"
@ -16,7 +18,7 @@ status_t mutex_init(void)
status_t mutex_final(void)
{
d_print("%d not freed in mutex_pool[%d]\n",
d_trace(1, "%d not freed in mutex_pool[%d]\n",
pool_size(&mutex_pool) - pool_avail(&mutex_pool),
pool_size(&mutex_pool));
pool_final(&mutex_pool);

View File

@ -1,5 +1,6 @@
#include "core.h"
#define TRACE_MODULE _pkbuf
#include "core.h"
#include "core_pkbuf.h"
#include "core_errno.h"
#include "core_lib.h"
@ -82,28 +83,28 @@ status_t pkbuf_final(void)
void pkbuf_show(void)
{
d_print("%d not freed in pkbuf_pool[%d]\n",
d_trace(1, "%d not freed in pkbuf_pool[%d]\n",
pool_size(&pkbuf_pool) - pool_avail(&pkbuf_pool),
pool_size(&pkbuf_pool));
d_print("%d not freed in clbuf_pool[%d]\n",
d_trace(1, "%d not freed in clbuf_pool[%d]\n",
pool_size(&clbuf_pool) - pool_avail(&clbuf_pool),
pool_size(&clbuf_pool));
d_print("%d not freed in cluster128_pool[%d]\n",
d_trace(1, "%d not freed in cluster128_pool[%d]\n",
pool_size(&cluster_128_pool) - pool_avail(&cluster_128_pool),
pool_size(&cluster_128_pool));
d_print("%d not freed in cluster256_pool[%d]\n",
d_trace(1, "%d not freed in cluster256_pool[%d]\n",
pool_size(&cluster_256_pool) - pool_avail(&cluster_256_pool),
pool_size(&cluster_256_pool));
d_print("%d not freed in cluster512_pool[%d]\n",
d_trace(1, "%d not freed in cluster512_pool[%d]\n",
pool_size(&cluster_512_pool) - pool_avail(&cluster_512_pool),
pool_size(&cluster_512_pool));
d_print("%d not freed in cluster1024_pool[%d]\n",
d_trace(1, "%d not freed in cluster1024_pool[%d]\n",
pool_size(&cluster_1024_pool) - pool_avail(&cluster_1024_pool),
pool_size(&cluster_1024_pool));
d_print("%d not freed in cluster2048_pool[%d]\n",
d_trace(1, "%d not freed in cluster2048_pool[%d]\n",
pool_size(&cluster_2048_pool) - pool_avail(&cluster_2048_pool),
pool_size(&cluster_2048_pool));
d_print("%d not freed in cluster8192_pool[%d]\n",
d_trace(1, "%d not freed in cluster8192_pool[%d]\n",
pool_size(&cluster_8192_pool) - pool_avail(&cluster_8192_pool),
pool_size(&cluster_8192_pool));
}

View File

@ -67,7 +67,7 @@ status_t gtp_xact_final(void)
if (gtp_xact_pool_initialized == 1 &&
pool_size(&gtp_xact_pool) == pool_avail(&gtp_xact_pool))
{
d_print("%d not freed in gtp_xact_pool[%d] of GTP Transaction\n",
d_trace(1, "%d not freed in gtp_xact_pool[%d] of GTP Transaction\n",
pool_size(&gtp_xact_pool) - pool_avail(&gtp_xact_pool),
pool_size(&gtp_xact_pool));
index_final(&gtp_xact_pool);

View File

@ -1,7 +1,7 @@
#define TRACE_MODULE _s1ap_recv
#include "core_debug.h"
#include "core_lib.h"
#include "core_param.h"
#include "s1ap_message.h"
static int s1ap_decode_initiating(s1ap_message_t *message,

View File

@ -1,7 +1,7 @@
#define TRACE_MODULE _s1ap_send
#include "core_debug.h"
#include "core_lib.h"
#include "core_param.h"
#include "types.h"
#include "s1ap_message.h"

View File

@ -8,7 +8,7 @@ libs6a_la_SOURCES = \
s6a_lib.h
nodist_libs6a_la_SOURCES = \
s6a_init.c s6a_fd.c s6a_config.c s6a_dict.c
s6a_init.c s6a_fd.c s6a_config.c s6a_hook.c s6a_dict.c
libs6a_la_DEPENDENCIES = \
$(top_srcdir)/lib/base/libbase.la \

View File

@ -1,7 +1,7 @@
#define TRACE_MODULE _s6a
#define TRACE_MODULE _s6a_fd
#include "core_debug.h"
#include "core_lib.h"
#include "core_param.h"
#include "core_signal.h"
#include "core_semaphore.h"
@ -10,7 +10,7 @@
static void s6a_gnutls_log_func(int level, const char *str);
static void s6a_fd_logger(int printlevel, const char *format, va_list ap);
status_t s6a_config_apply();
extern status_t s6a_config_apply();
int s6a_fd_init(const char *conffile)
{
@ -43,6 +43,9 @@ int s6a_fd_init(const char *conffile)
CHECK_FCT_DO( s6a_config_apply(), goto error );
}
/* register debug hook */
CHECK_FCT_DO( s6a_hook_init(), goto error );
/* Start the servers */
CHECK_FCT_DO( fd_core_start(), goto error );
@ -58,6 +61,8 @@ error:
void s6a_fd_final()
{
s6a_hook_final();
CHECK_FCT_DO( fd_core_shutdown(), d_error("fd_core_shutdown() failed") );
CHECK_FCT_DO( fd_core_wait_shutdown_complete(),
d_error("fd_core_wait_shutdown_complete() failed"));

149
lib/s6a/s6a_hook.c Normal file
View File

@ -0,0 +1,149 @@
#define TRACE_MODULE _s6a_hook
#include "core_debug.h"
#include "s6a_lib.h"
static struct fd_hook_hdl *s6a_hook_hdl = NULL;
static char * buf = NULL;
static size_t len;
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
static s6a_hook_user_handler s6a_hook_user_handler_instance = NULL;
/* The callback called when messages are received and sent */
static void s6a_hook_cb_tree(enum fd_hook_type type, struct msg * msg,
struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd,
void * regdata)
{
char * peer_name = peer ? peer->info.pi_diamid : "<unknown peer>";
CHECK_POSIX_DO( pthread_mutex_lock(&mtx), );
if (s6a_hook_user_handler_instance)
s6a_hook_user_handler_instance(type, msg, peer, other, pmd, regdata);
if (msg) {
CHECK_MALLOC_DO( fd_msg_dump_treeview(&buf, &len, NULL, msg, fd_g_config->cnf_dict, (type == HOOK_MESSAGE_PARSING_ERROR) ? 0 : 1, 1),
{ LOG_E("Error while dumping a message"); pthread_mutex_unlock(&mtx); return; } );
}
switch (type) {
/* errors */
case HOOK_MESSAGE_FAILOVER:
LOG_E("FAILOVER from '%s':", peer_name);
LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
break;
case HOOK_MESSAGE_PARSING_ERROR:
if (msg) {
DiamId_t id = NULL;
if (fd_msg_source_get( msg, &id, NULL ))
id = (DiamId_t)"<error getting source>";
if (!id)
id = (DiamId_t)"<local>";
LOG_E("PARSING ERROR: '%s' from '%s': ", (char *)other, (char *)id);
LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
} else {
struct fd_cnx_rcvdata *rcv_data = other;
CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break);
LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf);
}
break;
case HOOK_MESSAGE_ROUTING_ERROR:
LOG_E("ROUTING ERROR '%s' for: ", (char *)other);
LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
break;
case HOOK_MESSAGE_DROPPED:
LOG_E("DROPPED '%s'", (char *)other);
LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
break;
/* send receive */
case HOOK_MESSAGE_RECEIVED:
LOG_N("RCV from '%s':", peer_name);
LOG_SPLIT(FD_LOG_DEBUG, " ", buf, NULL);
break;
case HOOK_MESSAGE_SENT:
LOG_N("SND to '%s':", peer_name);
LOG_SPLIT(FD_LOG_DEBUG, " ", buf, NULL);
break;
/* routing */
case HOOK_MESSAGE_LOCAL:
LOG_N("ISSUED:");
LOG_SPLIT(FD_LOG_DEBUG, " ", buf, NULL);
break;
case HOOK_MESSAGE_ROUTING_FORWARD:
LOG_D("FORWARDING: %s", buf);
LOG_SPLIT(FD_LOG_DEBUG, " ", buf, NULL);
break;
case HOOK_MESSAGE_ROUTING_LOCAL:
LOG_D("DISPATCHING: %s", buf);
LOG_SPLIT(FD_LOG_DEBUG, " ", buf, NULL);
break;
/* peers */
case HOOK_PEER_CONNECT_FAILED:
LOG_N("CONNECT FAILED to %s: %s", peer_name, (char *)other);
break;
case HOOK_PEER_CONNECT_SUCCESS:
{
char protobuf[40];
if (peer) {
CHECK_FCT_DO(fd_peer_cnx_proto_info(peer, protobuf, sizeof(protobuf)), break );
} else {
protobuf[0] = '-';
protobuf[1] = '\0';
}
d_info("CONNECTED TO '%s' (%s):", peer_name, protobuf);
LOG_N("CONNECTED TO '%s' (%s):", peer_name, protobuf);
LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
}
break;
/* Not handled */
case HOOK_DATA_RECEIVED:
break;
}
CHECK_POSIX_DO( pthread_mutex_unlock(&mtx), );
}
int s6a_hook_init()
{
uint32_t mask_errors, mask_sndrcv, mask_routing, mask_peers;
uint32_t mask_tree;
mask_errors = HOOK_MASK( HOOK_MESSAGE_FAILOVER, HOOK_MESSAGE_PARSING_ERROR,
HOOK_MESSAGE_ROUTING_ERROR, HOOK_MESSAGE_DROPPED );
mask_sndrcv = HOOK_MASK( HOOK_MESSAGE_RECEIVED, HOOK_MESSAGE_SENT );
mask_routing= HOOK_MASK( HOOK_MESSAGE_LOCAL,
HOOK_MESSAGE_ROUTING_FORWARD, HOOK_MESSAGE_ROUTING_LOCAL );
mask_peers = HOOK_MASK( HOOK_PEER_CONNECT_FAILED,
HOOK_PEER_CONNECT_SUCCESS );
mask_tree = mask_errors;
mask_tree |= mask_sndrcv;
mask_tree |= mask_routing;
mask_tree |= mask_peers;
CHECK_FCT( fd_hook_register(
mask_tree, s6a_hook_cb_tree, NULL, NULL, &s6a_hook_hdl) );
return 0;
}
void s6a_hook_final()
{
if (s6a_hook_hdl) { CHECK_FCT_DO( fd_hook_unregister( s6a_hook_hdl ), ); }
}
void s6a_hook_register(s6a_hook_user_handler instance)
{
s6a_hook_user_handler_instance = instance;
}
void s6a_hook_unregister(void)
{
s6a_hook_user_handler_instance = NULL;
}

View File

@ -164,6 +164,16 @@ CORE_DECLARE(void) s6a_final(void);
CORE_DECLARE(int) s6a_config_init(void);
CORE_DECLARE(int) s6a_hook_init();
CORE_DECLARE(void) s6a_hook_final();
typedef void (*s6a_hook_user_handler)(
enum fd_hook_type type, struct msg *msg, struct peer_hdr *peer,
void *other, struct fd_hook_permsgdata *pmd, void *regdata);
CORE_DECLARE(void) s6a_hook_register(s6a_hook_user_handler instance);
CORE_DECLARE(void) s6a_hook_unregister();
#ifdef __cplusplus
}
#endif /* __cplusplus */

4
main.c
View File

@ -4,6 +4,7 @@
/* Core library */
#define TRACE_MODULE _main_
#include "core_general.h"
#include "core_debug.h"
#include "core_signal.h"
@ -116,10 +117,12 @@ int main(int argc, char *argv[])
show_version();
d_print("\n");
core_initialize();
if (app_initialize(config_path, log_path) != CORE_OK)
{
d_fatal("NextEPC initialization failed. Aborted");
app_terminate();
core_terminate();
return EXIT_FAILURE;
}
@ -130,6 +133,7 @@ int main(int argc, char *argv[])
d_info("NextEPC daemon terminating...");
app_terminate();
core_terminate();
return EXIT_SUCCESS;
}

View File

@ -282,25 +282,32 @@ status_t hss_context_parse_config()
status_t hss_context_setup_trace_module()
{
int context = context_self()->trace_level.context;
int s6a = context_self()->trace_level.s6a;
if (context)
{
extern int _context;
d_trace_level(&_context, context);
extern int _hss_context;
d_trace_level(&_hss_context, context);
}
int others = context_self()->trace_level.others;
if (s6a)
{
extern int _hss_s6a_handler;
d_trace_level(&_hss_s6a_handler, s6a);
extern int _s6a;
d_trace_level(&_s6a, s6a);
extern int _s6a_fd;
d_trace_level(&_s6a_fd, s6a);
extern int _s6a_init;
d_trace_level(&_s6a_init, s6a);
extern int _s6a_hook;
d_trace_level(&_s6a_hook, s6a);
}
if (others)
{
extern int _mutex;
d_trace_level(&_mutex, others);
extern int _pkbuf;
d_trace_level(&_pkbuf, others);
extern int _context;
d_trace_level(&_context, others);
extern int _hss_context;
d_trace_level(&_hss_context, others);
}
return CORE_OK;

View File

@ -1,6 +1,5 @@
#define TRACE_MODULE _app
#include "core_general.h"
#include "core_debug.h"
#include "core_thread.h"
#include "core_net.h"
@ -20,7 +19,9 @@ status_t app_will_initialize(char *config_path, char *log_path)
{
status_t rv;
#if 0
core_initialize();
#endif
context_init();
rv = context_read_file(config_path);
@ -68,7 +69,9 @@ void app_will_terminate(void)
void app_did_terminate(void)
{
context_final();
#if 0
core_terminate();
#endif
}
void *THREAD_FUNC net_main(thread_id id, void *data)

View File

@ -124,7 +124,7 @@ void emm_handle_attach_request(
imsi_bcd);
mme_ue_set_imsi(mme_ue, imsi_bcd);
d_info("[NAS] Attach request : IMSI[%s] --> EMM", imsi_bcd);
d_trace(3, "[NAS] Attach request : IMSI[%s] --> EMM\n", imsi_bcd);
if (SECURITY_CONTEXT_IS_VALID(mme_ue))
{
@ -183,8 +183,8 @@ void emm_handle_attach_request(
guti.mme_code = nas_guti->mme_code;
guti.m_tmsi = nas_guti->m_tmsi;
d_info("[NAS] Attach request : GUTI[G:%d,C:%d,M_TMSI:0x%x]-"
"IMSI:[%s] --> EMM",
d_trace(3, "[NAS] Attach request : GUTI[G:%d,C:%d,M_TMSI:0x%x]-"
"IMSI:[%s] --> EMM\n",
guti.mme_gid,
guti.mme_code,
guti.m_tmsi,
@ -350,6 +350,9 @@ void emm_handle_authentication_request(mme_ue_t *mme_ue)
enb_ue = mme_ue->enb_ue;
d_assert(enb_ue, return, "Null param");
d_trace(3, "[NAS] Authentication request : UE[%s] <-- EMM\n",
mme_ue->imsi_bcd);
memset(&message, 0, sizeof(message));
message.emm.h.protocol_discriminator = NAS_PROTOCOL_DISCRIMINATOR_EMM;
message.emm.h.message_type = NAS_AUTHENTICATION_REQUEST;
@ -403,7 +406,7 @@ void emm_handle_authentication_response(mme_ue_t *mme_ue,
return;
}
d_info("[NAS] Authentication response : UE[%s] --> EMM",
d_trace(3, "[NAS] Authentication response : UE[%s] --> EMM\n",
mme_ue->imsi_bcd);
memset(&message, 0, sizeof(message));
@ -460,7 +463,7 @@ void emm_handle_authentication_response(mme_ue_t *mme_ue,
mme_kdf_nas(MME_KDF_NAS_ENC_ALG, mme_ue->selected_enc_algorithm,
mme_ue->kasme, mme_ue->knas_enc);
d_info("[NAS] Security mode command : UE[%s] <-- EMM",
d_trace(3, "[NAS] Security mode command : UE[%s] <-- EMM\n",
mme_ue->imsi_bcd);
rv = nas_security_encode(&emmbuf, mme_ue, &message);
@ -490,14 +493,14 @@ void emm_handle_create_session_response(mme_bearer_t *bearer)
d_assert(rv == CORE_OK && esmbuf,
return, "bearer build error");
d_info("[NAS] Activate default bearer context request : EMM <-- ESM[%d]",
bearer->ebi);
d_trace(3, "[NAS] Activate default bearer context request : "
"EMM <-- ESM[%d]\n", bearer->ebi);
rv = emm_build_attach_accept(&emmbuf, mme_ue, esmbuf);
d_assert(rv == CORE_OK && emmbuf,
pkbuf_free(esmbuf); return, "emm build error");
d_info("[NAS] Attach accept : UE[%s] <-- EMM", mme_ue->imsi_bcd);
d_trace(3, "[NAS] Attach accept : UE[%s] <-- EMM\n", mme_ue->imsi_bcd);
rv = s1ap_build_initial_context_setup_request(&s1apbuf, bearer, emmbuf);
d_assert(rv == CORE_OK && s1apbuf,
@ -575,7 +578,7 @@ void emm_handle_attach_complete(
NAS_EMM_INFORMATION_NETWORK_DAYLIGHT_SAVING_TIME_PRESENT;
network_daylight_saving_time->length = 1;
d_info("[NAS] EMM information : UE[%s] <-- EMM",
d_trace(3, "[NAS] EMM information : UE[%s] <-- EMM\n",
mme_ue->imsi_bcd);
rv = nas_security_encode(&emmbuf, mme_ue, &message);
@ -610,7 +613,8 @@ void emm_handle_detach_request(
enb_ue = mme_ue->enb_ue;
d_assert(enb_ue, return, "Null param");
d_info("[NAS] Detach request : UE_IMSI[%s] --> EMM", mme_ue->imsi_bcd);
d_trace(3, "[NAS] Detach request : UE_IMSI[%s] --> EMM\n",
mme_ue->imsi_bcd);
switch (detach_type->detach_type)
{
@ -674,7 +678,7 @@ void emm_handle_detach_accept(
message.emm.h.protocol_discriminator = NAS_PROTOCOL_DISCRIMINATOR_EMM;
message.emm.h.message_type = NAS_DETACH_ACCEPT;
d_info("[NAS] Detach accept : UE[%s] <-- EMM",
d_trace(3, "[NAS] Detach accept : UE[%s] <-- EMM\n",
mme_ue->imsi_bcd);
rv = nas_security_encode(&emmbuf, mme_ue, &message);
@ -733,7 +737,7 @@ void emm_handle_delete_session_response(mme_bearer_t *bearer)
sess = mme_sess_find_by_ebi(mme_ue, bearer->ebi);
mme_sess_remove(sess);
d_info("[NAS] Delete Session Response : UE[%s] <-- EMM[%d]",
d_trace(3, "[NAS] Delete Session Response : UE[%s] <-- EMM[%d]\n",
mme_ue->imsi_bcd, message->emm.h.message_type);
switch(message->emm.h.message_type)

View File

@ -14,7 +14,7 @@ void emm_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
FSM_TRAN(s, &emm_state_operational);
}
@ -23,7 +23,7 @@ void emm_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
}
void emm_state_operational(fsm_t *s, event_t *e)
@ -31,7 +31,7 @@ void emm_state_operational(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{
@ -78,8 +78,6 @@ void emm_state_operational(fsm_t *s, event_t *e)
{
case S6A_CMD_AUTHENTICATION_INFORMATION:
{
d_info("[NAS] Authentication request : UE[%s] <-- EMM",
mme_ue->imsi_bcd);
emm_handle_authentication_request(mme_ue);
break;
}
@ -107,8 +105,8 @@ void emm_state_operational(fsm_t *s, event_t *e)
}
case GTP_MODIFY_BEARER_RESPONSE_TYPE:
{
d_info("[GTP] Modify Bearer Response : "
"MME <-- SGW");
d_trace(3, "[GTP] Modify Bearer Response : "
"MME <-- SGW\n");
break;
}
}
@ -160,8 +158,8 @@ void emm_state_operational(fsm_t *s, event_t *e)
}
case NAS_SECURITY_MODE_COMPLETE:
{
d_info("[NAS] Security mode complete : UE[%s] --> EMM",
mme_ue->imsi_bcd);
d_trace(3, "[NAS] Security mode complete : "
"UE[%s] --> EMM\n", mme_ue->imsi_bcd);
/* Update Kenb */
if (SECURITY_CONTEXT_IS_VALID(mme_ue))
@ -173,7 +171,7 @@ void emm_state_operational(fsm_t *s, event_t *e)
}
case NAS_ATTACH_COMPLETE:
{
d_info("[NAS] Attach complete : UE[%s] --> EMM",
d_trace(3, "[NAS] Attach complete : UE[%s] --> EMM\n",
mme_ue->imsi_bcd);
emm_handle_attach_complete(
mme_ue, &message->emm.attach_complete);
@ -223,7 +221,7 @@ void emm_state_exception(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{

View File

@ -12,7 +12,7 @@ void esm_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
FSM_TRAN(s, &esm_state_operational);
}
@ -21,7 +21,7 @@ void esm_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
}
void esm_state_operational(fsm_t *s, event_t *e)
@ -29,7 +29,7 @@ void esm_state_operational(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{
@ -58,8 +58,8 @@ void esm_state_operational(fsm_t *s, event_t *e)
{
case S6A_CMD_UPDATE_LOCATION:
{
d_info("[NAS] ESM information request : "
"UE[%s] <--- ESM[%d]",
d_trace(3, "[NAS] ESM information request : "
"UE[%s] <--- ESM[%d]\n",
mme_ue->imsi_bcd, bearer->pti);
esm_handle_s6a_update_location(bearer);
break;
@ -97,8 +97,8 @@ void esm_state_operational(fsm_t *s, event_t *e)
{
esm_handle_pdn_connectivity_request(
bearer, &message->esm.pdn_connectivity_request);
d_info("[NAS] PDN connectivity request : "
"UE[%s] --> ESM[%d]",
d_trace(3, "[NAS] PDN connectivity request : "
"UE[%s] --> ESM[%d]\n",
mme_ue->imsi_bcd, bearer->pti);
break;
}
@ -107,8 +107,8 @@ void esm_state_operational(fsm_t *s, event_t *e)
/* FIXME : SGW Selection */
bearer->sgw = mme_sgw_first();
d_info("[NAS] ESM information response : "
"UE[%s] --> ESM[%d]",
d_trace(3, "[NAS] ESM information response : "
"UE[%s] --> ESM[%d]\n",
mme_ue->imsi_bcd, bearer->pti);
esm_handle_information_response(
bearer, &message->esm.esm_information_response);
@ -116,8 +116,8 @@ void esm_state_operational(fsm_t *s, event_t *e)
}
case NAS_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT:
{
d_info("[NAS] Activate default eps bearer context accept : "
"UE[%s] --> ESM[%d]",
d_trace(3, "[NAS] Activate default eps bearer "
"context accept : UE[%s] --> ESM[%d]\n",
mme_ue->imsi_bcd, bearer->pti);
break;
}
@ -144,7 +144,7 @@ void esm_state_exception(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{

View File

@ -780,35 +780,18 @@ status_t mme_context_parse_config()
status_t mme_context_setup_trace_module()
{
int context = context_self()->trace_level.context;
int sm = context_self()->trace_level.sm;
int s1ap = context_self()->trace_level.s1ap;
int nas = context_self()->trace_level.nas;
int s6a = context_self()->trace_level.s6a;
int gtp = context_self()->trace_level.gtp;
if (context)
{
extern int _context;
d_trace_level(&_context, context);
extern int _mme_context;
d_trace_level(&_mme_context, context);
}
if (sm)
{
extern int _mme_sm;
d_trace_level(&_mme_sm, sm);
extern int _s1ap_sm;
d_trace_level(&_s1ap_sm, sm);
extern int _emm_sm;
d_trace_level(&_emm_sm, sm);
extern int _esm_sm;
d_trace_level(&_esm_sm, sm);
}
int others = context_self()->trace_level.others;
if (s1ap)
{
extern int _s1ap_sm;
d_trace_level(&_s1ap_sm, s1ap);
extern int _s1ap_build;
d_trace_level(&_s1ap_build, s1ap);
extern int _s1ap_handler;
d_trace_level(&_s1ap_handler, s1ap);
extern int _s1ap_path;
@ -825,6 +808,10 @@ status_t mme_context_setup_trace_module()
if (nas)
{
extern int _emm_sm;
d_trace_level(&_emm_sm, nas);
extern int _esm_sm;
d_trace_level(&_esm_sm, nas);
extern int _emm_handler;
d_trace_level(&_emm_handler, nas);
extern int _esm_handler;
@ -841,10 +828,12 @@ status_t mme_context_setup_trace_module()
{
extern int _mme_s6a_handler;
d_trace_level(&_mme_s6a_handler, s6a);
extern int _s6a;
d_trace_level(&_s6a, s6a);
extern int _s6a_fd;
d_trace_level(&_s6a_fd, s6a);
extern int _s6a_init;
d_trace_level(&_s6a_init, s6a);
extern int _s6a_hook;
d_trace_level(&_s6a_hook, s6a);
}
if (gtp)
@ -861,6 +850,21 @@ status_t mme_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (others)
{
extern int _mutex;
d_trace_level(&_mutex, others);
extern int _pkbuf;
d_trace_level(&_pkbuf, others);
extern int _context;
d_trace_level(&_context, others);
extern int _mme_context;
d_trace_level(&_mme_context, others);
extern int _mme_sm;
d_trace_level(&_mme_sm, others);
}
return CORE_OK;
}

View File

@ -74,8 +74,8 @@ void mme_s11_handle_create_session_response(
bearer->sgw_s1u_teid = ntohl(sgw_s1u_teid->teid);
bearer->sgw_s1u_addr = sgw_s1u_teid->ipv4_addr;
d_info("[GTP] Create Session Response : "
"MME[%d] <-- SGW[%d]", sess->mme_s11_teid, sess->sgw_s11_teid);
d_trace(3, "[GTP] Create Session Response : "
"MME[%d] <-- SGW[%d]\n", sess->mme_s11_teid, sess->sgw_s11_teid);
event_set(&e, MME_EVT_EMM_BEARER_FROM_S11);
event_set_param1(&e, (c_uintptr_t)bearer->index);
@ -116,8 +116,8 @@ void mme_s11_handle_delete_session_response(
return;
}
d_info("[GTP] Delete Session Response : "
"MME[%d] <-- SGW[%d]", sess->mme_s11_teid, sess->sgw_s11_teid);
d_trace(3, "[GTP] Delete Session Response : "
"MME[%d] <-- SGW[%d]\n", sess->mme_s11_teid, sess->sgw_s11_teid);
event_set(&e, MME_EVT_EMM_BEARER_FROM_S11);
event_set_param1(&e, (c_uintptr_t)bearer->index);
@ -149,8 +149,8 @@ void mme_s11_handle_release_access_bearers_response(
return;
}
d_info("[GTP] Release Access Bearers Response : "
"MME[%d] <-- SGW[%d]", sess->mme_s11_teid, sess->sgw_s11_teid);
d_trace(3, "[GTP] Release Access Bearers Response : "
"MME[%d] <-- SGW[%d]\n", sess->mme_s11_teid, sess->sgw_s11_teid);
event_set(&e, MME_EVT_S1AP_UE_FROM_S11);
event_set_param1(&e, (c_uintptr_t)enb->index);

View File

@ -47,7 +47,7 @@ static void mme_s6a_aia_cb(void *data, struct msg **msg)
mme_ue = mi->mme_ue;
d_assert(mme_ue, error++; goto out,);
d_info("[S6A] Authentication-Information-Response : UE[%s] <-- HSS",
d_trace(3, "[S6A] Authentication-Information-Response : UE[%s] <-- HSS\n",
mme_ue->imsi_bcd);
/* Value of Result Code */
@ -237,7 +237,7 @@ int mme_s6a_send_air(mme_ue_t *mme_ue)
s6a_config->stats.nb_sent++;
d_assert(pthread_mutex_unlock(&s6a_config->stats_lock) == 0,, );
d_info("[S6A] Authentication-Information-Request : UE[%s] --> HSS",
d_trace(3, "[S6A] Authentication-Information-Request : UE[%s] --> HSS\n",
mme_ue->imsi_bcd);
return 0;
@ -278,7 +278,7 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
mme_ue = mi->mme_ue;
d_assert(mme_ue, error++; goto out,);
d_info("[S6A] Update-Location-Response : UE[%s] <-- HSS",
d_trace(3, "[S6A] Update-Location-Response : UE[%s] <-- HSS\n",
mme_ue->imsi_bcd);
/* Value of Result Code */
@ -557,7 +557,7 @@ int mme_s6a_send_ulr(mme_ue_t *mme_ue)
s6a_config->stats.nb_sent++;
d_assert(pthread_mutex_unlock(&s6a_config->stats_lock) == 0,, );
d_info("[S6A] Update-Location-Request : UE[%s] --> HSS",
d_trace(3, "[S6A] Update-Location-Request : UE[%s] --> HSS\n",
mme_ue->imsi_bcd);
return 0;
@ -605,7 +605,7 @@ void mme_s6a_final(void)
{
d_assert(fd_sess_handler_destroy(&mme_s6a_reg, NULL) == 0,,);
d_print("%d not freed in sess_state_pool[%d] of S6A-SM\n",
d_trace(1, "%d not freed in sess_state_pool[%d] of S6A-SM\n",
pool_size(&sess_state_pool) - pool_avail(&sess_state_pool),
pool_size(&sess_state_pool));

View File

@ -14,7 +14,7 @@
void mme_state_initial(fsm_t *s, event_t *e)
{
mme_sm_trace(1, e);
mme_sm_trace(3, e);
d_assert(s, return, "Null param");
@ -23,7 +23,7 @@ void mme_state_initial(fsm_t *s, event_t *e)
void mme_state_final(fsm_t *s, event_t *e)
{
mme_sm_trace(1, e);
mme_sm_trace(3, e);
d_assert(s, return, "Null param");
}
@ -35,7 +35,7 @@ void mme_state_operational(fsm_t *s, event_t *e)
status_t rv;
char buf[INET_ADDRSTRLEN];
mme_sm_trace(1, e);
mme_sm_trace(3, e);
d_assert(s, return, "Null param");
@ -114,7 +114,8 @@ void mme_state_operational(fsm_t *s, event_t *e)
enb = mme_enb_find(index);
if (enb)
{
d_info("eNB-S1[%x] connection refused!!!", enb->enb_id);
d_trace(1, "eNB-S1[%x] connection refused!!!\n",
enb->enb_id);
mme_enb_remove(enb);
}
else

View File

@ -137,8 +137,8 @@ status_t s1ap_build_downlink_nas_transport(
d_assert(s1apbuf && encoded >= 0,return CORE_ERROR,);
pkbuf_free(emmbuf);
d_info("[S1AP] downlinkNASTransport : "
"UE[eNB-UE-S1AP-ID(%d)] <-- eNB[%s:%d]",
d_trace(3, "[S1AP] downlinkNASTransport : "
"UE[eNB-UE-S1AP-ID(%d)] <-- eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb_ue->enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb_ue->enb->enb_id);
@ -252,8 +252,8 @@ status_t s1ap_build_initial_context_setup_request(
d_assert(s1apbuf && encoded >= 0,return CORE_ERROR,);
d_info("[S1AP] Initial Context Setup Request : "
"UE[eNB-UE-S1AP-ID(%d)] <-- eNB[%s:%d]",
d_trace(3, "[S1AP] Initial Context Setup Request : "
"UE[eNB-UE-S1AP-ID(%d)] <-- eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb_ue->enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb_ue->enb->enb_id);
@ -333,8 +333,8 @@ status_t s1ap_build_ue_context_release_commmand(
d_assert(s1apbuf && encoded >= 0, return CORE_ERROR,);
d_info("[S1AP] UE Context Release Command : "
"UE[mME-UE-S1AP-ID(%d)] <-- eNB[%s:%d]",
d_trace(3, "[S1AP] UE Context Release Command : "
"UE[mME-UE-S1AP-ID(%d)] <-- eNB[%s:%d]\n",
enb_ue->mme_ue_s1ap_id,
INET_NTOP(&enb_ue->enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb_ue->enb->enb_id);

View File

@ -153,7 +153,7 @@ void s1ap_handle_s1_setup_request(mme_enb_t *enb, s1ap_message_t *message)
}
#endif
d_assert(enb->s1ap_sock, return,);
d_info("[S1AP] S1SetupRequest : eNB[%s:%d] --> MME",
d_trace(3, "[S1AP] S1SetupRequest : eNB[%s:%d] --> MME\n",
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb_id);
@ -164,7 +164,7 @@ void s1ap_handle_s1_setup_request(mme_enb_t *enb, s1ap_message_t *message)
d_assert(s1ap_send_to_enb(enb, s1apbuf) == CORE_OK, , "send error");
d_assert(enb->s1ap_sock, return,);
d_info("[S1AP] S1SetupResponse: eNB[%s:%d] <-- MME",
d_trace(3, "[S1AP] S1SetupResponse: eNB[%s:%d] <-- MME\n",
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb_id);
}
@ -251,7 +251,8 @@ void s1ap_handle_initial_ue_message(mme_enb_t *enb, s1ap_message_t *message)
enb_ue->e_cgi.cell_id = (ntohl(enb_ue->e_cgi.cell_id) >> 4);
d_assert(enb->s1ap_sock, enb_ue_remove(enb_ue); return,);
d_info("[S1AP] InitialUEMessage : UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] InitialUEMessage : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);
@ -273,7 +274,8 @@ void s1ap_handle_uplink_nas_transport(
enb_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, ies->eNB_UE_S1AP_ID);
d_assert(enb_ue, return, "Null param");
d_info("[S1AP] uplinkNASTransport : UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] uplinkNASTransport : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);
@ -295,8 +297,8 @@ void s1ap_handle_ue_capability_info_indication(
enb_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, ies->eNB_UE_S1AP_ID);
d_assert(enb_ue, return, "No UE Context[%d]", ies->eNB_UE_S1AP_ID);
d_info("[S1AP] UE Capability Info Indication : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] UE Capability Info Indication : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);
@ -317,8 +319,8 @@ void s1ap_handle_initial_context_setup_response(
enb_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, ies->eNB_UE_S1AP_ID);
d_assert(enb_ue, return, "No UE Context[%d]", ies->eNB_UE_S1AP_ID);
d_info("[S1AP] Initial Context Setup Response : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] Initial Context Setup Response : "
"UE[eNB-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->enb_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);
@ -366,8 +368,8 @@ void s1ap_handle_ue_context_release_request(
enb_ue = enb_ue_find_by_mme_ue_s1ap_id(ies->mme_ue_s1ap_id);
d_assert(enb_ue, return, "No UE Context[%d]", ies->mme_ue_s1ap_id);
d_info("[S1AP] UE Context Release Request : "
"UE[mME-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] UE Context Release Request : "
"UE[mME-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->mme_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);
@ -492,8 +494,8 @@ void s1ap_handle_ue_context_release_complete(
enb_ue = enb_ue_find_by_mme_ue_s1ap_id(ies->mme_ue_s1ap_id);
d_assert(enb_ue, return, "No UE Context[%d]", ies->mme_ue_s1ap_id);
d_info("[S1AP] UE Context Release Complete : "
"UE[mME-UE-S1AP-ID(%d)] --> eNB[%s:%d]",
d_trace(3, "[S1AP] UE Context Release Complete : "
"UE[mME-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
enb_ue->mme_ue_s1ap_id,
INET_NTOP(&enb->s1ap_sock->remote.sin_addr.s_addr, buf),
enb->enb_id);

View File

@ -14,7 +14,7 @@ void s1ap_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
FSM_TRAN(s, &s1ap_state_operational);
}
@ -23,7 +23,7 @@ void s1ap_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
}
void s1ap_state_operational(fsm_t *s, event_t *e)
@ -31,7 +31,7 @@ void s1ap_state_operational(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{
@ -203,7 +203,7 @@ void s1ap_state_exception(fsm_t *s, event_t *e)
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
mme_sm_trace(1, e);
mme_sm_trace(3, e);
switch (event_get(e))
{

View File

@ -49,10 +49,10 @@ status_t pgw_context_final()
gtp_xact_delete_all(&self.s5c_node);
pgw_sess_remove_all();
d_print("%d not freed in pgw_sess_pool[%d] in PGW-Context\n",
d_trace(1, "%d not freed in pgw_sess_pool[%d] in PGW-Context\n",
index_size(&pgw_sess_pool) - pool_avail(&pgw_sess_pool),
index_size(&pgw_sess_pool));
d_print("%d not freed in pgw_ip_pool[%d] in PGW-Context\n",
d_trace(1, "%d not freed in pgw_ip_pool[%d] in PGW-Context\n",
index_size(&pgw_ip_pool_pool) - pool_avail(&pgw_ip_pool_pool),
index_size(&pgw_ip_pool_pool));
@ -399,26 +399,13 @@ status_t pgw_context_parse_config()
status_t pgw_context_setup_trace_module()
{
int context = context_self()->trace_level.context;
int sm = context_self()->trace_level.sm;
int others = context_self()->trace_level.others;
int gtp = context_self()->trace_level.gtp;
if (context)
{
extern int _context;
d_trace_level(&_context, context);
extern int _pgw_context;
d_trace_level(&_pgw_context, context);
}
if (sm)
{
extern int _pgw_sm;
d_trace_level(&_pgw_sm, sm);
}
if (gtp)
{
extern int _pgw_sm;
d_trace_level(&_pgw_sm, gtp);
extern int _pgw_handler;
d_trace_level(&_pgw_handler, gtp);
extern int _gtp_path;
@ -431,6 +418,19 @@ status_t pgw_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (others)
{
extern int _mutex;
d_trace_level(&_mutex, others);
extern int _pkbuf;
d_trace_level(&_pkbuf, others);
extern int _context;
d_trace_level(&_context, others);
extern int _pgw_context;
d_trace_level(&_pgw_context, others);
}
return CORE_OK;
}

View File

@ -182,8 +182,8 @@ void pgw_handle_create_session_request(
bearer->sgw_s5u_teid = ntohl(sgw_s5u_teid->teid);
bearer->sgw_s5u_addr = sgw_s5u_teid->ipv4_addr;
d_info("[GTP] Create Session Reqeust : "
"SGW[%d] --> PGW", sess->sgw_s5c_teid);
d_trace(3, "[GTP] Create Session Reqeust : "
"SGW[%d] --> PGW\n", sess->sgw_s5c_teid);
/* Send Control Plane(UL) : PGW-S5C */
memset(&pgw_s5c_teid, 0, sizeof(gtp_f_teid_t));

View File

@ -9,7 +9,7 @@
void pgw_state_initial(fsm_t *s, event_t *e)
{
pgw_sm_trace(1, e);
pgw_sm_trace(3, e);
d_assert(s, return, "Null param");
@ -18,7 +18,7 @@ void pgw_state_initial(fsm_t *s, event_t *e)
void pgw_state_final(fsm_t *s, event_t *e)
{
pgw_sm_trace(1, e);
pgw_sm_trace(3, e);
d_assert(s, return, "Null param");
}
@ -27,7 +27,7 @@ void pgw_state_operational(fsm_t *s, event_t *e)
{
status_t rv;
pgw_sm_trace(1, e);
pgw_sm_trace(3, e);
d_assert(s, return, "Null param");

View File

@ -50,7 +50,7 @@ status_t sgw_context_final()
sgw_sess_remove_all();
d_print("%d not freed in sgw_sess_pool[%d] in SGW-Context\n",
d_trace(1, "%d not freed in sgw_sess_pool[%d] in SGW-Context\n",
index_size(&sgw_sess_pool) - pool_avail(&sgw_sess_pool),
index_size(&sgw_sess_pool));
index_final(&sgw_bearer_pool);
@ -391,26 +391,13 @@ status_t sgw_context_parse_config()
status_t sgw_context_setup_trace_module()
{
int context = context_self()->trace_level.context;
int sm = context_self()->trace_level.sm;
int gtp = context_self()->trace_level.gtp;
if (context)
{
extern int _context;
d_trace_level(&_context, context);
extern int _sgw_context;
d_trace_level(&_sgw_context, context);
}
if (sm)
{
extern int _sgw_sm;
d_trace_level(&_sgw_sm, sm);
}
int others = context_self()->trace_level.others;
if (gtp)
{
extern int _sgw_sm;
d_trace_level(&_sgw_sm, gtp);
extern int _sgw_handler;
d_trace_level(&_sgw_handler, gtp);
extern int _gtp_path;
@ -423,6 +410,19 @@ status_t sgw_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (others)
{
extern int _mutex;
d_trace_level(&_mutex, others);
extern int _pkbuf;
d_trace_level(&_pkbuf, others);
extern int _context;
d_trace_level(&_context, others);
extern int _sgw_context;
d_trace_level(&_sgw_context, others);
}
return CORE_OK;
}

View File

@ -85,8 +85,8 @@ void sgw_handle_create_session_request(
d_assert(sgw_s5c_send_to_pgw(xact, type, 0, pkbuf) == CORE_OK,
return, "failed to send message");
d_info("[GTP] Create Session Reqeust : "
"SGW[%d] --> PGW", sess->sgw_s5c_teid);
d_trace(3, "[GTP] Create Session Reqeust : "
"SGW[%d] --> PGW\n", sess->sgw_s5c_teid);
}
void sgw_handle_create_session_response(gtp_xact_t *xact,
@ -174,8 +174,8 @@ void sgw_handle_create_session_response(gtp_xact_t *xact,
d_assert(sgw_s11_send_to_mme(xact, GTP_CREATE_SESSION_RESPONSE_TYPE,
sess->mme_s11_teid, pkbuf) == CORE_OK, return,
"failed to send message");
d_info("[GTP] Create Session Response : "
"SGW[%d] <-- PGW[%d]", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
d_trace(3, "[GTP] Create Session Response : "
"SGW[%d] <-- PGW[%d]\n", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
}
CORE_DECLARE(void) sgw_handle_modify_bearer_request(gtp_xact_t *xact,
@ -235,8 +235,8 @@ CORE_DECLARE(void) sgw_handle_modify_bearer_request(gtp_xact_t *xact,
sess->mme_s11_teid, pkbuf) == CORE_OK, return,
"failed to send message");
d_info("[GTP] Modify Bearer Reqeust : "
"MME[%d] --> SGW[%d]", sess->mme_s11_teid, sess->sgw_s11_teid);
d_trace(3, "[GTP] Modify Bearer Reqeust : "
"MME[%d] --> SGW[%d]\n", sess->mme_s11_teid, sess->sgw_s11_teid);
}
void sgw_handle_delete_session_request(gtp_xact_t *xact,
@ -256,8 +256,8 @@ void sgw_handle_delete_session_request(gtp_xact_t *xact,
sess->pgw_s5c_teid, pkbuf) == CORE_OK,
return, "failed to send message");
d_info("[GTP] Delete Session Reqeust : "
"SGW[%d] --> PGW[%d]", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
d_trace(3, "[GTP] Delete Session Reqeust : "
"SGW[%d] --> PGW[%d]\n", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
}
void sgw_handle_delete_session_response(gtp_xact_t *xact,
@ -287,8 +287,8 @@ void sgw_handle_delete_session_response(gtp_xact_t *xact,
/* Remove a pgw session */
if (sess)
{
d_info("[GTP] Delete Session Response : "
"SGW[%d] --> PGW[%d]", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
d_trace(3, "[GTP] Delete Session Response : "
"SGW[%d] --> PGW[%d]\n", sess->sgw_s5c_teid, sess->pgw_s5c_teid);
/* backup sgw_s5c_teid in session context */
mme_s11_teid = sess->mme_s11_teid;
@ -344,6 +344,6 @@ void sgw_handle_release_access_bearers_request(gtp_xact_t *xact,
sess->mme_s11_teid, pkbuf) == CORE_OK, return,
"failed to send message");
d_info("[GTP] Release Access Bearers Reqeust : "
"MME[%d] --> SGW[%d]", sess->mme_s11_teid, sess->sgw_s11_teid);
d_trace(3, "[GTP] Release Access Bearers Reqeust : "
"MME[%d] --> SGW[%d]\n", sess->mme_s11_teid, sess->sgw_s11_teid);
}

View File

@ -8,7 +8,7 @@
void sgw_state_initial(fsm_t *s, event_t *e)
{
sgw_sm_trace(1, e);
sgw_sm_trace(3, e);
d_assert(s, return, "Null param");
@ -17,7 +17,7 @@ void sgw_state_initial(fsm_t *s, event_t *e)
void sgw_state_final(fsm_t *s, event_t *e)
{
sgw_sm_trace(1, e);
sgw_sm_trace(3, e);
d_assert(s, return, "Null param");
}
@ -26,7 +26,7 @@ void sgw_state_operational(fsm_t *s, event_t *e)
{
status_t rv;
sgw_sm_trace(1, e);
sgw_sm_trace(3, e);
d_assert(s, return, "Null param");

View File

@ -3,12 +3,11 @@
LOG_PATH : "@prefix@/var/log/nextepc.log",
TRACE:
{
CONTEXT: 1,
SM: 1,
S1AP: 1,
NAS: 1,
S6A: 1,
GTP: 1,
OTHERS: 1,
}
HSS :

View File

@ -429,8 +429,8 @@ int main(int argc, const char *const argv[]) {
int list_provided = 0;
abts_suite *suite = NULL;
d_trace_global_off();
test_initialize();
d_trace_global_off();
quiet = !isatty(STDOUT_FILENO);

View File

@ -14,13 +14,17 @@
* limitations under the License.
*/
#include "core_general.h"
#include "core_debug.h"
#include "core_semaphore.h"
#include "s6a_lib.h"
#include "app.h"
#include "mme_context.h"
#include "abts.h"
#include "testutil.h"
#if 0
void core_assert_ok(abts_case* tc, const char* context, status_t rv,
int lineno)
{
@ -35,16 +39,45 @@ void core_assert_ok(abts_case* tc, const char* context, status_t rv,
abts_fail(tc, buf, lineno);
}
}
#endif
static semaphore_id test_sem;
static void test_s6a_hook_handler(enum fd_hook_type type, struct msg * msg,
struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd,
void * regdata)
{
if (type == HOOK_PEER_CONNECT_SUCCESS)
{
d_assert(semaphore_post(test_sem) == CORE_OK,,
"semaphore_post() failed");
}
}
void test_terminate(void)
{
d_trace_global_on();
app_terminate();
core_terminate();
}
void test_initialize(void)
{
s6a_hook_register(test_s6a_hook_handler);
core_initialize();
d_assert(semaphore_create(&test_sem, 0) == CORE_OK,
return, "semaphore_create() failed");
app_initialize(NULL, NULL);
d_assert(semaphore_wait(test_sem) == CORE_OK, return,
"semaphore_wait() failed");
d_assert(semaphore_wait(test_sem) == CORE_OK, return,
"semaphore_wait() failed");
d_assert(semaphore_delete(test_sem) == CORE_OK, return,
"semaphore_delete() failed");
atexit(test_terminate);
}