remove INVALID ASSERT in SGW
This commit is contained in:
parent
c6bfed6628
commit
9451928786
|
@ -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(3, "[EMM] Tracking area update complete\n");
|
||||||
d_trace(5, " IMSI[%s]\n", mme_ue->imsi_bcd);
|
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;
|
enb_ue = mme_ue->enb_ue;
|
||||||
d_assert(enb_ue, return, "Null param");
|
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_Cause_PR_nas, S1ap_CauseNas_normal_release,
|
||||||
S1AP_UE_CTX_REL_NO_ACTION, 0);
|
S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case NAS_EMM_STATUS:
|
case NAS_EMM_STATUS:
|
||||||
|
|
|
@ -2710,7 +2710,7 @@ status_t mme_m_tmsi_pool_generate()
|
||||||
int i, j;
|
int i, j;
|
||||||
int index = 0;
|
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++)
|
for (i = 0; index < MAX_POOL_OF_UE; i++)
|
||||||
{
|
{
|
||||||
mme_m_tmsi_t *m_tmsi = NULL;
|
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];
|
m_tmsi = &self.m_tmsi.pool[index];
|
||||||
rv = core_generate_random_bytes((c_uint8_t *)m_tmsi, sizeof(*m_tmsi));
|
rv = core_generate_random_bytes((c_uint8_t *)m_tmsi, sizeof(*m_tmsi));
|
||||||
d_assert(rv == CORE_OK, return CORE_ERROR, "Cannot generate random");
|
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++)
|
for (j = 0; j < index; j++)
|
||||||
{
|
{
|
||||||
if (*m_tmsi == self.m_tmsi.pool[j])
|
if (*m_tmsi == self.m_tmsi.pool[j])
|
||||||
{
|
{
|
||||||
conflict = 1;
|
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]);
|
index, *m_tmsi, j, self.m_tmsi.pool[j]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (conflict == 1) continue;
|
if (conflict == 1) continue;
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
self.m_tmsi.size = 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;
|
return CORE_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,8 +149,8 @@ static int _gtpv1_u_recv_cb(sock_id sock, void *data)
|
||||||
|
|
||||||
if (!subnet)
|
if (!subnet)
|
||||||
{
|
{
|
||||||
d_print_hex(pkbuf->payload, pkbuf->len);
|
d_trace_hex(9, pkbuf->payload, pkbuf->len);
|
||||||
d_warn("[DROP] Cannot find subnet V:%d, IPv4:%p, IPv6:%p",
|
d_trace(9, "[DROP] Cannot find subnet V:%d, IPv4:%p, IPv6:%p\n",
|
||||||
ip_h->ip_v, sess->ipv4, sess->ipv6);
|
ip_h->ip_v, sess->ipv4, sess->ipv6);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,14 +169,15 @@ static int _gtpv1_u_recv_cb(sock_id sock, void *data)
|
||||||
|
|
||||||
s1u_tunnel = sgw_s1u_tunnel_in_bearer(bearer);
|
s1u_tunnel = sgw_s1u_tunnel_in_bearer(bearer);
|
||||||
d_assert(s1u_tunnel, pkbuf_free(pkbuf); return 0, "Null param");
|
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)
|
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 */
|
/* If there is buffered packet, send it first */
|
||||||
for (i = 0; i < bearer->num_buffered_pkt; i++)
|
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,
|
d_assert(bearer->sess->sgw_ue, pkbuf_free(pkbuf); return 0,
|
||||||
"SGW_UE is NULL");
|
"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;
|
sgw_ue = bearer->sess->sgw_ue;
|
||||||
|
|
||||||
if ((SGW_GET_UE_STATE(sgw_ue) & SGW_S1U_INACTIVE))
|
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))
|
if ( !(SGW_GET_UE_STATE(sgw_ue) & SGW_DL_NOTI_SENT))
|
||||||
{
|
{
|
||||||
event_t e;
|
event_t e;
|
||||||
status_t rv;
|
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(&e, SGW_EVT_LO_DLDATA_NOTI);
|
||||||
event_set_param1(&e, (c_uintptr_t)bearer->index);
|
event_set_param1(&e, (c_uintptr_t)bearer->index);
|
||||||
rv = sgw_event_send(&e);
|
rv = sgw_event_send(&e);
|
||||||
|
|
Loading…
Reference in New Issue