add s6a trace for message context

And this is a changed.
  TRACE.CONTEXT, TRACE.SM is removed in configuration files
  TRACE.OTHERS is added

See the support/nextepc.conf.in

Even though, you don't have to apply this changes to your current
configuration. TRACE.CONTEXT/SM/OTHERS will be ignored.
This commit is contained in:
Sukchan Lee 2017-08-02 15:11:08 +09:00
parent 4496998fd3
commit 432626628c
25 changed files with 282 additions and 155 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

@ -16,6 +16,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,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_debug.c s6a_dict.c
libs6a_la_DEPENDENCIES = \
$(top_srcdir)/lib/base/libbase.la \

132
lib/s6a/s6a_debug.c Normal file
View File

@ -0,0 +1,132 @@
#define TRACE_MODULE _s6a_debug
#include "core_debug.h"
#include "s6a_lib.h"
static struct fd_hook_hdl *md_hdl = NULL;
static char * buf = NULL;
static size_t len;
static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
/* The callback called when messages are received and sent */
static void md_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 (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_debug_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, md_hook_cb_tree, NULL, NULL, &md_hdl) );
return 0;
}
void s6a_debug_final()
{
if (md_hdl) { CHECK_FCT_DO( fd_hook_unregister( md_hdl ), ); }
}

View File

@ -1,7 +1,7 @@
#define TRACE_MODULE _s6a
#include "core_debug.h"
#include "core_lib.h"
#include "core_param.h"
#include "core_signal.h"
#include "core_semaphore.h"
@ -10,7 +10,9 @@
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();
extern int s6a_debug_init();
extern void s6a_debug_final();
int s6a_fd_init(const char *conffile)
{
@ -43,6 +45,9 @@ int s6a_fd_init(const char *conffile)
CHECK_FCT_DO( s6a_config_apply(), goto error );
}
/* register debug hook */
CHECK_FCT_DO( s6a_debug_init(), goto error );
/* Start the servers */
CHECK_FCT_DO( fd_core_start(), goto error );
@ -58,6 +63,8 @@ error:
void s6a_fd_final()
{
s6a_debug_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"));

View File

@ -282,16 +282,8 @@ 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)
{
@ -301,6 +293,16 @@ status_t hss_context_setup_trace_module()
d_trace_level(&_s6a, s6a);
extern int _s6a_init;
d_trace_level(&_s6a_init, s6a);
extern int _s6a_debug;
d_trace_level(&_s6a_debug, s6a);
}
if (others)
{
extern int _context;
d_trace_level(&_context, others);
extern int _hss_context;
d_trace_level(&_hss_context, others);
}
return CORE_OK;

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

@ -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);

View File

@ -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;
}

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;
@ -845,6 +832,8 @@ status_t mme_context_setup_trace_module()
d_trace_level(&_s6a, s6a);
extern int _s6a_init;
d_trace_level(&_s6a_init, s6a);
extern int _s6a_debug;
d_trace_level(&_s6a_debug, s6a);
}
if (gtp)
@ -861,6 +850,16 @@ status_t mme_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (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;

View File

@ -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(1, "[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(1, "[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

@ -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,14 @@ status_t pgw_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (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

@ -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,14 @@ status_t sgw_context_setup_trace_module()
d_trace_level(&_gtp_xact, gtp);
}
if (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

@ -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 :