remove INVALID ASSERT in SGW

This commit is contained in:
Sukchan Lee 2018-01-26 06:52:30 +09:00
parent c6bfed6628
commit 9451928786
4 changed files with 24 additions and 12 deletions

View File

@ -186,6 +186,7 @@ static void common_register_state(fsm_t *s, event_t *e)
d_trace(3, "[EMM] Tracking area update complete\n");
d_trace(5, " IMSI[%s]\n", mme_ue->imsi_bcd);
#if 0 /* UE will send UE context release request */
enb_ue = mme_ue->enb_ue;
d_assert(enb_ue, return, "Null param");
@ -193,6 +194,7 @@ static void common_register_state(fsm_t *s, event_t *e)
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_NO_ACTION, 0);
d_assert(rv == CORE_OK, return, "s1ap send error");
#endif
return;
}
case NAS_EMM_STATUS:

View File

@ -2710,7 +2710,7 @@ status_t mme_m_tmsi_pool_generate()
int i, j;
int index = 0;
d_trace(5, "M-TMSI Pool try to generate...\n");
d_trace(9, "M-TMSI Pool try to generate...\n");
for (i = 0; index < MAX_POOL_OF_UE; i++)
{
mme_m_tmsi_t *m_tmsi = NULL;
@ -2719,21 +2719,27 @@ status_t mme_m_tmsi_pool_generate()
m_tmsi = &self.m_tmsi.pool[index];
rv = core_generate_random_bytes((c_uint8_t *)m_tmsi, sizeof(*m_tmsi));
d_assert(rv == CORE_OK, return CORE_ERROR, "Cannot generate random");
/* for mapped-GUTI */
*m_tmsi |= 0xc0000000;
*m_tmsi &= 0xff00ffff;
for (j = 0; j < index; j++)
{
if (*m_tmsi == self.m_tmsi.pool[j])
{
conflict = 1;
d_warn("[M-TMSI CONFLICT] %d:0x%x == %d:0x%x",
d_trace(11, "[M-TMSI CONFLICT] %d:0x%x == %d:0x%x\n",
index, *m_tmsi, j, self.m_tmsi.pool[j]);
break;
}
}
if (conflict == 1) continue;
index++;
}
self.m_tmsi.size = index;
d_trace(5, "M-TMSI Pool generate...done\n");
d_trace(9, "M-TMSI Pool generate...done\n");
return CORE_OK;
}

View File

@ -149,8 +149,8 @@ static int _gtpv1_u_recv_cb(sock_id sock, void *data)
if (!subnet)
{
d_print_hex(pkbuf->payload, pkbuf->len);
d_warn("[DROP] Cannot find subnet V:%d, IPv4:%p, IPv6:%p",
d_trace_hex(9, pkbuf->payload, pkbuf->len);
d_trace(9, "[DROP] Cannot find subnet V:%d, IPv4:%p, IPv6:%p\n",
ip_h->ip_v, sess->ipv4, sess->ipv6);
goto cleanup;
}

View File

@ -169,14 +169,15 @@ static int _gtpv1_u_recv_cb(sock_id sock, void *data)
s1u_tunnel = sgw_s1u_tunnel_in_bearer(bearer);
d_assert(s1u_tunnel, pkbuf_free(pkbuf); return 0, "Null param");
d_assert(s1u_tunnel->gnode, pkbuf_free(pkbuf); return 0,);
d_assert(s1u_tunnel->gnode->sock, pkbuf_free(pkbuf); return 0,);
d_trace(3, "[SGW] SEND GPU-U to ENB[%s]: TEID[0x%x]\n",
CORE_ADDR(sock_remote_addr(s1u_tunnel->gnode->sock), buf),
s1u_tunnel->remote_teid);
if (s1u_tunnel->remote_teid)
{
d_assert(s1u_tunnel->gnode, pkbuf_free(pkbuf); return 0,);
d_assert(s1u_tunnel->gnode->sock, pkbuf_free(pkbuf); return 0,);
d_trace(3, "[SGW] SEND GPU-U to ENB[%s]: TEID[0x%x]\n",
CORE_ADDR(sock_remote_addr(s1u_tunnel->gnode->sock), buf),
s1u_tunnel->remote_teid);
/* If there is buffered packet, send it first */
for (i = 0; i < bearer->num_buffered_pkt; i++)
{
@ -206,17 +207,20 @@ static int _gtpv1_u_recv_cb(sock_id sock, void *data)
d_assert(bearer->sess->sgw_ue, pkbuf_free(pkbuf); return 0,
"SGW_UE is NULL");
d_trace(3, "[SGW] SEND GPU-U to ENB : STATE[0x%x]\n",
SGW_GET_UE_STATE(sgw_ue));
sgw_ue = bearer->sess->sgw_ue;
if ((SGW_GET_UE_STATE(sgw_ue) & SGW_S1U_INACTIVE))
{
d_trace(9, " SGW-S1U Inactive\n");
d_trace(5, " SGW-S1U Inactive\n");
if ( !(SGW_GET_UE_STATE(sgw_ue) & SGW_DL_NOTI_SENT))
{
event_t e;
status_t rv;
d_trace(9, " EVENT DL Data Notification\n");
d_trace(5, " EVENT DL Data Notification\n");
event_set(&e, SGW_EVT_LO_DLDATA_NOTI);
event_set_param1(&e, (c_uintptr_t)bearer->index);
rv = sgw_event_send(&e);