This commit is contained in:
Sukchan Lee 2018-06-23 13:00:01 +00:00
commit 2295636f36
9 changed files with 37 additions and 110 deletions

View file

@ -301,6 +301,29 @@ status_t context_parse_config()
return CORE_OK;
}
/*
* We've added it
* Because the following function is deprecated in the mongo-c-driver
*/
static bool
context_mongoc_client_get_server_status (mongoc_client_t *client, /* IN */
mongoc_read_prefs_t *read_prefs, /* IN */
bson_t *reply, /* OUT */
bson_error_t *error) /* OUT */
{
bson_t cmd = BSON_INITIALIZER;
bool ret = false;
BSON_ASSERT (client);
BSON_APPEND_INT32 (&cmd, "serverStatus", 1);
ret = mongoc_client_command_simple (
client, "admin", &cmd, read_prefs, reply, error);
bson_destroy (&cmd);
return ret;
}
status_t context_db_init(const char *db_uri)
{
bson_t reply;
@ -334,7 +357,8 @@ status_t context_db_init(const char *db_uri)
d_assert(self.database, context_db_final(); return CORE_ERROR,
"Database is not defined in DB_URI [%s]", db_uri);
if (!mongoc_client_get_server_status(self.db_client, NULL, &reply, &error))
if (!context_mongoc_client_get_server_status(
self.db_client, NULL, &reply, &error))
{
d_error("Failed to conect to server [%s]", db_uri);
return CORE_EAGAIN;

View file

@ -183,7 +183,8 @@ static void common_register_state(fsm_t *s, event_t *e)
if (!MME_UE_HAVE_IMSI(mme_ue))
{
d_warn("[EMM] TAU request : Unknown UE");
rv = nas_send_tau_reject(mme_ue, EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
rv = nas_send_tau_reject(mme_ue,
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
d_assert(rv == CORE_OK,,
"nas_send_tau_reject() failed");
FSM_TRAN(s, &emm_state_exception);

View file

@ -1994,19 +1994,7 @@ status_t mme_ue_remove(mme_ue_t *mme_ue)
CLEAR_PAGING_INFO(mme_ue);
/* Free UeRadioCapability */
#if 0
if (mme_ue->radio_capa)
{
S1AP_UERadioCapability_t *radio_capa =
(S1AP_UERadioCapability_t *)mme_ue->radio_capa;
if (radio_capa->buf)
CORE_FREE(radio_capa->buf);
CORE_FREE(mme_ue->radio_capa);
}
#else
S1AP_CLEAR_DATA(&mme_ue->ueRadioCapability);
#endif
/* Clear Transparent Container */
S1AP_CLEAR_DATA(&mme_ue->container);

View file

@ -352,11 +352,7 @@ struct _mme_ue_t {
c_uint32_t max_paging_retry;
/* UE Radio Capability */
#if 0
void *radio_capa;
#else
OCTET_STRING_t ueRadioCapability;
#endif
/* S1AP Transparent Container */
OCTET_STRING_t container;
@ -384,9 +380,6 @@ struct _mme_ue_t {
#define MAX_NUM_OF_GTP_COUNTER 16
#if 0 /* Deprecated */
#define GTP_COUNTER_DELETE_SESSION 0
#endif
#define GTP_COUNTER_MODIFY_BEARER_BY_PATH_SWITCH 1
#define GTP_COUNTER_MODIFY_BEARER_BY_HANDOVER_NOTIFY 2
struct {

View file

@ -489,29 +489,6 @@ status_t s1ap_build_initial_context_setup_request(
memcpy(SecurityKey->buf, mme_ue->kenb, SecurityKey->size);
/* Set UeRadioCapability if exists */
#if 0
if (mme_ue->radio_capa)
{
S1AP_UERadioCapability_t *UERadioCapability = NULL;
S1AP_UERadioCapability_t *radio_capa =
(S1AP_UERadioCapability_t *)mme_ue->radio_capa;
ie = core_calloc(1, sizeof(S1AP_InitialContextSetupRequestIEs_t));
ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
ie->id = S1AP_ProtocolIE_ID_id_UERadioCapability;
ie->criticality = S1AP_Criticality_ignore;
ie->value.present =
S1AP_InitialContextSetupRequestIEs__value_PR_UERadioCapability;
UERadioCapability = &ie->value.choice.UERadioCapability;
UERadioCapability->size = radio_capa->size;
UERadioCapability->buf =
core_calloc(UERadioCapability->size, sizeof(c_uint8_t));
memcpy(UERadioCapability->buf, radio_capa->buf, radio_capa->size);
}
#else
if (mme_ue->ueRadioCapability.buf && mme_ue->ueRadioCapability.size)
{
S1AP_UERadioCapability_t *UERadioCapability = NULL;
@ -531,7 +508,6 @@ status_t s1ap_build_initial_context_setup_request(
mme_ue->ueRadioCapability.buf, mme_ue->ueRadioCapability.size,
UERadioCapability);
}
#endif
rv = s1ap_encode_pdu(s1apbuf, &pdu);
s1ap_free_pdu(&pdu);

View file

@ -447,34 +447,8 @@ void s1ap_handle_ue_capability_info_indication(
if (enb_ue->mme_ue)
{
#if 0
S1AP_UERadioCapability_t *radio_capa = NULL;
mme_ue_t *mme_ue = enb_ue->mme_ue;
/* Release the previous one */
if (mme_ue->radio_capa)
{
radio_capa = (S1AP_UERadioCapability_t *)mme_ue->radio_capa;
if (radio_capa->buf)
CORE_FREE(radio_capa->buf);
CORE_FREE(mme_ue->radio_capa);
}
/* Save UE radio capability */
mme_ue->radio_capa = core_calloc(1, sizeof(S1AP_UERadioCapability_t));
radio_capa = (S1AP_UERadioCapability_t *)mme_ue->radio_capa;
d_assert(radio_capa, return,);
d_assert(UERadioCapability, return,);
radio_capa->size = UERadioCapability->size;
radio_capa->buf = core_calloc(radio_capa->size, sizeof(c_uint8_t));
d_assert(radio_capa->buf, return, "core_calloc error(size=%d)",
radio_capa->size);
memcpy(radio_capa->buf, UERadioCapability->buf, radio_capa->size);
#else
d_assert(UERadioCapability, return,);
S1AP_STORE_DATA(&enb_ue->mme_ue->ueRadioCapability, UERadioCapability);
#endif
}
}
@ -661,41 +635,6 @@ void s1ap_handle_initial_context_setup_failure(
* may in principle be adopted. The eNB should ensure
* that no hanging resources remain at the eNB.
*/
#if 0 /* NOTHING TO DO */
#if 0 /* FIXME : Does it needed? */
rv = nas_send_service_reject(mme_ue,
EMM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED);
d_assert(rv == CORE_OK,,
"nas_send_service_reject() failed");
#endif
#if 1 /* Explicit Release */
d_trace(5, " Explicit Release\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1AP_Cause_PR_nas,
#if 1 /* NAS Cause: Normal Relase */
S1AP_CauseNas_normal_release,
#else /* NAS Cause : Detach */
S1AP_CauseNas_detach,
#endif
S1AP_UE_CTX_REL_UNLINK_MME_UE_CONTEXT, 0);
d_assert(rv == CORE_OK,, "s1ap send error");
#else /* Implicit Release */
d_trace(5, " Implicit Release\n");
rv = enb_ue_remove(enb_ue);
d_assert(rv == CORE_OK,, "enb_ue_remove() failed");
rv = mme_ue_deassociate(mme_ue);
d_assert(rv == CORE_OK,, "mme_ue_deassociate() failed");
#endif
#endif
}
else
{

View file

@ -500,9 +500,9 @@ static int s1ap_usrsctp_recv_handler(struct socket *sock,
case SCTP_SEND_FAILED :
{
d_error("SCTP_SEND_FAILED:[T:%d, F:0x%x, S:%d]\n",
not->sn_send_failed.ssf_type,
not->sn_send_failed.ssf_flags,
not->sn_send_failed.ssf_error);
not->sn_send_failed_event.ssfe_type,
not->sn_send_failed_event.ssfe_flags,
not->sn_send_failed_event.ssfe_error);
break;
}
default :

View file

@ -924,6 +924,8 @@ pgw_sess_t *pgw_sess_add(
c_uint8_t *imsi, int imsi_len, c_int8_t *apn,
c_uint8_t pdn_type, c_uint8_t ebi)
{
char buf1[CORE_ADDRSTRLEN];
char buf2[CORE_ADDRSTRLEN];
pgw_sess_t *sess = NULL;
pgw_bearer_t *bearer = NULL;
pgw_subnet_t *subnet6 = NULL;
@ -993,6 +995,10 @@ pgw_sess_t *pgw_sess_add(
else
d_assert(0, return NULL, "Unsupported PDN Type(%d)", pdn_type);
d_trace(1, "UE IPv4:[%s] IPv6:[%s]\n",
sess->ipv4 ? INET_NTOP(&sess->ipv4->addr, buf1) : "",
sess->ipv6 ? INET6_NTOP(&sess->ipv6->addr, buf2) : "");
/* Generate Hash Key : IMSI + APN */
sess_hash_keygen(sess->hash_keybuf, &sess->hash_keylen,
imsi, imsi_len, apn);

View file

@ -40,7 +40,7 @@ AM_CPPFLAGS = \
AM_CFLAGS = \
-Wall -Werror \
-Wno-unused-function -Wno-unused-variable \
-Wno-unused-function -Wno-unused-variable -Wno-deprecated-declarations \
@OSCPPFLAGS@ \
$(NULL)