UE/EMM: add nas_user_t parameter to emm_sap_send

Surprisingly, it touches every part of openair3, and most of the prototype.
Moreover, a special attention have been put to callback review.
However, there are still places to fix or review indicated by FIXME
This commit is contained in:
Frédéric Leroy
2017-01-25 13:08:19 +01:00
parent 4742178aee
commit 223247ceb0
46 changed files with 380 additions and 349 deletions
@@ -104,13 +104,13 @@ Description Defines the dedicated EPS bearer context activation ESM
** Others: None **
** **
***************************************************************************/
int esm_proc_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int ebi, int default_ebi,
int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int default_ebi,
const esm_proc_qos_t *qos,
const esm_proc_tft_t *tft,
int *esm_cause)
{
LOG_FUNC_IN;
esm_data_t *esm_data = _esm_data;
int rc = RETURNerror;
LOG_TRACE(INFO, "ESM-PROC - Dedicated EPS bearer context activation "
@@ -141,7 +141,7 @@ int esm_proc_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int ebi,
int old_pid, old_bid;
/* Locally deactivate the existing EPS bearer context and proceed
* with the requested dedicated EPS bearer context activation */
rc = esm_proc_eps_bearer_context_deactivate(esm_data, TRUE, ebi,
rc = esm_proc_eps_bearer_context_deactivate(user, TRUE, ebi,
&old_pid, &old_bid);
if (rc != RETURNok) {
@@ -206,7 +206,7 @@ int esm_proc_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int ebi,
** Others: None **
** **
***************************************************************************/
int esm_proc_dedicated_eps_bearer_context_accept(int is_standalone, int ebi,
int esm_proc_dedicated_eps_bearer_context_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered)
{
LOG_FUNC_IN;
@@ -225,7 +225,7 @@ int esm_proc_dedicated_eps_bearer_context_accept(int is_standalone, int ebi,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
if (rc != RETURNerror) {
/* Set the EPS bearer context state to ACTIVE */
@@ -266,7 +266,7 @@ int esm_proc_dedicated_eps_bearer_context_accept(int is_standalone, int ebi,
** Others: None **
** **
***************************************************************************/
int esm_proc_dedicated_eps_bearer_context_reject(int is_standalone, int ebi,
int esm_proc_dedicated_eps_bearer_context_reject(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered)
{
LOG_FUNC_IN;
@@ -293,7 +293,7 @@ int esm_proc_dedicated_eps_bearer_context_reject(int is_standalone, int ebi,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
}
LOG_FUNC_RETURN (rc);
@@ -104,12 +104,12 @@ static struct {
** Others: _default_eps_bearer_context_data **
** **
***************************************************************************/
int esm_proc_default_eps_bearer_context_request(esm_data_t *esm_data, int pid, int ebi,
int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int ebi,
const esm_proc_qos_t *qos,
int *esm_cause)
{
LOG_FUNC_IN;
esm_data_t *esm_data = _esm_data;
int rc = RETURNerror;
LOG_TRACE(INFO, "ESM-PROC - Default EPS bearer context activation "
@@ -126,7 +126,7 @@ int esm_proc_default_eps_bearer_context_request(esm_data_t *esm_data, int pid, i
int old_pid, old_bid;
/* Locally deactivate the existing EPS bearer context and proceed
* with the requested default EPS bearer context activation */
rc = esm_proc_eps_bearer_context_deactivate(esm_data, TRUE, ebi,
rc = esm_proc_eps_bearer_context_deactivate(user, TRUE, ebi,
&old_pid, &old_bid);
if (rc != RETURNok) {
@@ -188,7 +188,7 @@ int esm_proc_default_eps_bearer_context_request(esm_data_t *esm_data, int pid, i
** Others: None **
** **
***************************************************************************/
int esm_proc_default_eps_bearer_context_accept(int is_standalone, int ebi,
int esm_proc_default_eps_bearer_context_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered)
{
LOG_FUNC_IN;
@@ -208,7 +208,7 @@ int esm_proc_default_eps_bearer_context_accept(int is_standalone, int ebi,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
}
if (rc != RETURNerror) {
@@ -256,7 +256,7 @@ int esm_proc_default_eps_bearer_context_accept(int is_standalone, int ebi,
** Others: None **
** **
***************************************************************************/
int esm_proc_default_eps_bearer_context_reject(int is_standalone, int ebi,
int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered)
{
LOG_FUNC_IN;
@@ -283,7 +283,7 @@ int esm_proc_default_eps_bearer_context_reject(int is_standalone, int ebi,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
} else {
/* An error is returned to notify EMM that the default EPS bearer
* activation procedure initiated as part of the initial attach
@@ -346,7 +346,7 @@ int esm_proc_default_eps_bearer_context_complete(void)
** Others: _default_eps_bearer_context_data **
** **
***************************************************************************/
int esm_proc_default_eps_bearer_context_failure(esm_data_t *esm_data)
int esm_proc_default_eps_bearer_context_failure(nas_user_t *user)
{
LOG_FUNC_IN;
@@ -357,7 +357,7 @@ int esm_proc_default_eps_bearer_context_failure(esm_data_t *esm_data)
"ESM-PROC - Default EPS bearer context activation failure");
/* Release the default EPS bearer context and enter state INACTIVE */
int rc = esm_proc_eps_bearer_context_deactivate(esm_data, TRUE, ebi, &pid, &bid);
int rc = esm_proc_eps_bearer_context_deactivate(user, TRUE, ebi, &pid, &bid);
if (rc != RETURNerror) {
/* Reset default EPS bearer context internal data */
@@ -74,7 +74,7 @@ Description Defines the EPS bearer context deactivation ESM procedure
* in the UE
* --------------------------------------------------------------------------
*/
static int _eps_bearer_release(esm_data_t *esm_data, int ebi, int *pid, int *bid);
static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid);
/****************************************************************************/
@@ -112,25 +112,25 @@ static int _eps_bearer_release(esm_data_t *esm_data, int ebi, int *pid, int *bid
** Others: None **
** **
***************************************************************************/
int esm_proc_eps_bearer_context_deactivate(esm_data_t *esm_data, int is_local, int ebi,
int esm_proc_eps_bearer_context_deactivate(nas_user_t *user, int is_local, int ebi,
int *pid, int *bid)
{
LOG_FUNC_IN;
int rc = RETURNerror;
int i;
esm_data_t *esm_data = _esm_data;
if (is_local) {
if (ebi != ESM_SAP_ALL_EBI) {
/* Locally release the EPS bearer context */
rc = _eps_bearer_release(esm_data, ebi, pid, bid);
rc = _eps_bearer_release(user, ebi, pid, bid);
} else {
/* Locally release all the EPS bearer contexts */
*bid = 0;
for (*pid = 0; *pid < ESM_DATA_PDN_MAX; (*pid)++) {
if (esm_data->pdn[*pid].data) {
rc = _eps_bearer_release(esm_data, ESM_EBI_UNASSIGNED, pid, bid);
rc = _eps_bearer_release(user, ESM_EBI_UNASSIGNED, pid, bid);
if (rc != RETURNok) {
break;
@@ -189,18 +189,19 @@ int esm_proc_eps_bearer_context_deactivate(esm_data_t *esm_data, int is_local, i
** Others: None **
** **
***************************************************************************/
int esm_proc_eps_bearer_context_deactivate_request(esm_data_t *esm_data, int ebi, int *esm_cause)
int esm_proc_eps_bearer_context_deactivate_request(nas_user_t *user, int ebi, int *esm_cause)
{
LOG_FUNC_IN;
int pid, bid;
int rc = RETURNok;
esm_data_t *esm_data = _esm_data;
LOG_TRACE(INFO, "ESM-PROC - EPS bearer context deactivation "
"requested by the network (ebi=%d)", ebi);
/* Release the EPS bearer context entry */
if (esm_ebr_context_release(esm_data, ebi, &pid, &bid) == ESM_EBI_UNASSIGNED) {
if (esm_ebr_context_release(user, ebi, &pid, &bid) == ESM_EBI_UNASSIGNED) {
LOG_TRACE(WARNING, "ESM-PROC - Failed to release EPS bearer context");
*esm_cause = ESM_CAUSE_PROTOCOL_ERROR;
LOG_FUNC_RETURN (RETURNerror);
@@ -243,7 +244,7 @@ int esm_proc_eps_bearer_context_deactivate_request(esm_data_t *esm_data, int ebi
esm_sap.is_standalone = TRUE;
esm_sap.data.pdn_connect.is_defined = TRUE;
esm_sap.data.pdn_connect.cid = pid + 1;
rc = esm_sap_send(&esm_sap);
rc = esm_sap_send(user, &esm_sap);
}
}
}
@@ -275,7 +276,7 @@ int esm_proc_eps_bearer_context_deactivate_request(esm_data_t *esm_data, int ebi
** Others: None **
** **
***************************************************************************/
int esm_proc_eps_bearer_context_deactivate_accept(int is_standalone, int ebi,
int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered)
{
LOG_FUNC_IN;
@@ -293,7 +294,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(int is_standalone, int ebi,
emm_sap.u.emm_esm.ueid = 0;
emm_sap.u.emm_esm.u.data.msg.length = msg->length;
emm_sap.u.emm_esm.u.data.msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
}
if (rc != RETURNerror) {
@@ -352,14 +353,14 @@ int esm_proc_eps_bearer_context_deactivate_accept(int is_standalone, int ebi,
** Others: None **
** **
***************************************************************************/
static int _eps_bearer_release(esm_data_t *esm_data, int ebi, int *pid, int *bid)
static int _eps_bearer_release(nas_user_t *user, int ebi, int *pid, int *bid)
{
LOG_FUNC_IN;
int rc = RETURNerror;
/* Release the EPS bearer context entry */
ebi = esm_ebr_context_release(esm_data, ebi, pid, bid);
ebi = esm_ebr_context_release(user, ebi, pid, bid);
if (ebi == ESM_EBI_UNASSIGNED) {
LOG_TRACE(WARNING, "ESM-PROC - Failed to release EPS bearer context");
+2 -2
View File
@@ -161,7 +161,7 @@ int esm_proc_status_ind(
** Others: None **
** **
***************************************************************************/
int esm_proc_status(int is_standalone,
int esm_proc_status(nas_user_t *user, int is_standalone,
int ebi, OctetString *msg,
int ue_triggered)
{
@@ -179,7 +179,7 @@ int esm_proc_status(int is_standalone,
emm_sap.u.emm_esm.ueid = 0;
emm_sap.u.emm_esm.u.data.msg.length = msg->length;
emm_sap.u.emm_esm.u.data.msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
LOG_FUNC_RETURN (rc);
}
+11 -9
View File
@@ -279,7 +279,7 @@ int esm_proc_pdn_connectivity(esm_data_t *esm_data, int cid, int is_to_define,
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_connectivity_request(int is_standalone, int pti,
int esm_proc_pdn_connectivity_request(nas_user_t *user, int is_standalone, int pti,
OctetString *msg, int sent_by_ue)
{
LOG_FUNC_IN;
@@ -298,7 +298,7 @@ int esm_proc_pdn_connectivity_request(int is_standalone, int pti,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
if (rc != RETURNerror) {
/* Start T3482 retransmission timer */
@@ -346,12 +346,12 @@ int esm_proc_pdn_connectivity_request(int is_standalone, int pti,
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_connectivity_accept(esm_data_t *esm_data, int pti, esm_proc_pdn_type_t pdn_type,
int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_type_t pdn_type,
const OctetString *pdn_addr,
const OctetString *apn, int *esm_cause)
{
LOG_FUNC_IN;
esm_data_t *esm_data = _esm_data;
int rc;
int pid = RETURNerror;
char apn_first_char[4];
@@ -438,7 +438,7 @@ int esm_proc_pdn_connectivity_accept(esm_data_t *esm_data, int pti, esm_proc_pdn
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_connectivity_reject(int pti, int *esm_cause)
int esm_proc_pdn_connectivity_reject(nas_user_t *user, int pti, int *esm_cause)
{
LOG_FUNC_IN;
@@ -489,7 +489,7 @@ int esm_proc_pdn_connectivity_reject(int pti, int *esm_cause)
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_connectivity_complete(void)
int esm_proc_pdn_connectivity_complete(nas_user_t *user)
{
LOG_FUNC_IN;
@@ -530,7 +530,7 @@ int esm_proc_pdn_connectivity_complete(void)
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_connectivity_failure(int is_pending)
int esm_proc_pdn_connectivity_failure(nas_user_t *user, int is_pending)
{
LOG_FUNC_IN;
@@ -603,6 +603,7 @@ int esm_proc_pdn_connectivity_failure(int is_pending)
** Others: None **
** **
***************************************************************************/
// FIXME
static void *_pdn_connectivity_t3482_handler(void *args)
{
LOG_FUNC_IN;
@@ -610,7 +611,8 @@ static void *_pdn_connectivity_t3482_handler(void *args)
int rc;
/* Get retransmission timer parameters data */
esm_pt_timer_data_t *data = (esm_pt_timer_data_t *)(args);
esm_pt_timer_data_t *data = args;
nas_user_t *user = data->user;
/* Increment the retransmission counter */
data->count += 1;
@@ -629,7 +631,7 @@ static void *_pdn_connectivity_t3482_handler(void *args)
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = data->msg.length;
emm_esm->msg.value = data->msg.value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
if (rc != RETURNerror) {
/* Restart the timer T3482 */
+9 -8
View File
@@ -168,7 +168,7 @@ int esm_proc_pdn_disconnect(esm_data_t *esm_data, int cid, unsigned int *pti, un
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_disconnect_request(int is_standalone, int pti,
int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti,
OctetString *msg, int sent_by_ue)
{
LOG_FUNC_IN;
@@ -187,7 +187,7 @@ int esm_proc_pdn_disconnect_request(int is_standalone, int pti,
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = msg->length;
emm_esm->msg.value = msg->value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
if (rc != RETURNerror) {
/* Start T3482 retransmission timer */
@@ -284,10 +284,10 @@ int esm_proc_pdn_disconnect_accept(int pti, int *esm_cause)
** Others: None **
** **
***************************************************************************/
int esm_proc_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int *esm_cause)
int esm_proc_pdn_disconnect_reject(nas_user_t *user, int pti, int *esm_cause)
{
LOG_FUNC_IN;
esm_data_t *esm_data = _esm_data;
int rc;
LOG_TRACE(WARNING, "ESM-PROC - PDN disconnection rejected by the network "
@@ -331,7 +331,7 @@ int esm_proc_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int *esm_cause
esm_sap.recv = NULL;
esm_sap.send.length = 0;
esm_sap.data.eps_bearer_context_deactivate.ebi = ebi;
rc = esm_sap_send(&esm_sap);
rc = esm_sap_send(user, &esm_sap);
if (rc != RETURNok) {
*esm_cause = ESM_CAUSE_PROTOCOL_ERROR;
@@ -383,7 +383,8 @@ static void *_pdn_disconnect_t3492_handler(void *args)
{
LOG_FUNC_IN;
// FIXME check callback call
esm_data_t *esm_data = args;;
nas_user_t *user = args;
esm_data_t *esm_data = _esm_data;;
int rc;
/* Get retransmission timer parameters data */
@@ -406,7 +407,7 @@ static void *_pdn_disconnect_t3492_handler(void *args)
emm_sap.u.emm_esm.ueid = 0;
emm_esm->msg.length = data->msg.length;
emm_esm->msg.value = data->msg.value;
rc = emm_sap_send(&emm_sap);
rc = emm_sap_send(user, &emm_sap);
if (rc != RETURNerror) {
/* Restart the timer T3492 */
@@ -449,7 +450,7 @@ static void *_pdn_disconnect_t3492_handler(void *args)
esm_sap.recv = NULL;
esm_sap.send.length = 0;
esm_sap.data.eps_bearer_context_deactivate.ebi = ebi;
rc = esm_sap_send(&esm_sap);
rc = esm_sap_send(user, &esm_sap);
}
}
}
+11 -12
View File
@@ -135,7 +135,7 @@ int esm_recv_status(int pti, int ebi, const esm_status_msg *msg)
** Others: None **
** **
***************************************************************************/
int esm_recv_pdn_connectivity_reject(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_pdn_connectivity_reject(nas_user_t *user, int pti, int ebi,
const pdn_connectivity_reject_msg *msg)
{
LOG_FUNC_IN;
@@ -179,7 +179,7 @@ int esm_recv_pdn_connectivity_reject(esm_data_t *esm_data, int pti, int ebi,
esm_cause = msg->esmcause;
/* Execute the PDN connectivity procedure not accepted by the network */
int rc = esm_proc_pdn_connectivity_reject(pti, &esm_cause);
int rc = esm_proc_pdn_connectivity_reject(user, pti, &esm_cause);
if (rc != RETURNerror) {
esm_cause = ESM_CAUSE_SUCCESS;
@@ -206,7 +206,7 @@ int esm_recv_pdn_connectivity_reject(esm_data_t *esm_data, int pti, int ebi,
** Others: None **
** **
***************************************************************************/
int esm_recv_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_pdn_disconnect_reject(nas_user_t *user, int pti, int ebi,
const pdn_disconnect_reject_msg *msg)
{
LOG_FUNC_IN;
@@ -250,7 +250,7 @@ int esm_recv_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int ebi,
esm_cause = msg->esmcause;
/* Execute the PDN disconnect procedure not accepted by the network */
int rc = esm_proc_pdn_disconnect_reject(esm_data, pti, &esm_cause);
int rc = esm_proc_pdn_disconnect_reject(user, pti, &esm_cause);
if (rc != RETURNerror) {
esm_cause = ESM_CAUSE_SUCCESS;
@@ -278,11 +278,10 @@ int esm_recv_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int ebi,
** Others: None **
** **
***************************************************************************/
int esm_recv_activate_default_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const activate_default_eps_bearer_context_request_msg *msg)
{
LOG_FUNC_IN;
int esm_cause = ESM_CAUSE_SUCCESS;
LOG_TRACE(INFO, "ESM-SAP - Received Activate Default EPS Bearer Context "
@@ -369,14 +368,14 @@ int esm_recv_activate_default_eps_bearer_context_request(esm_data_t *esm_data, i
}
/* Execute the PDN connectivity procedure accepted by the network */
int pid = esm_proc_pdn_connectivity_accept(esm_data, pti, pdn_type,
int pid = esm_proc_pdn_connectivity_accept(user, pti, pdn_type,
&msg->pdnaddress.pdnaddressinformation,
&msg->accesspointname.accesspointnamevalue,
&esm_cause);
if (pid != RETURNerror) {
/* Create local default EPS bearer context */
int rc = esm_proc_default_eps_bearer_context_request(esm_data, pid, ebi, &qos,
int rc = esm_proc_default_eps_bearer_context_request(user, pid, ebi, &qos,
&esm_cause);
if (rc != RETURNerror) {
@@ -406,7 +405,7 @@ int esm_recv_activate_default_eps_bearer_context_request(esm_data_t *esm_data, i
** Others: None **
** **
***************************************************************************/
int esm_recv_activate_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const activate_dedicated_eps_bearer_context_request_msg *msg)
{
LOG_FUNC_IN;
@@ -580,7 +579,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(esm_data_t *esm_data,
}
/* Execute the dedicated EPS bearer context activation procedure */
int rc = esm_proc_dedicated_eps_bearer_context_request(esm_data, ebi,
int rc = esm_proc_dedicated_eps_bearer_context_request(user, ebi,
msg->linkedepsbeareridentity,
&qos, &tft, &esm_cause);
@@ -614,7 +613,7 @@ int esm_recv_activate_dedicated_eps_bearer_context_request(esm_data_t *esm_data,
** Others: None **
** **
***************************************************************************/
int esm_recv_deactivate_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const deactivate_eps_bearer_context_request_msg *msg)
{
LOG_FUNC_IN;
@@ -670,7 +669,7 @@ int esm_recv_deactivate_eps_bearer_context_request(esm_data_t *esm_data, int pti
if (rc != RETURNerror) {
/* Execute the EPS bearer context deactivation procedure */
rc = esm_proc_eps_bearer_context_deactivate_request(esm_data, ebi, &esm_cause);
rc = esm_proc_eps_bearer_context_deactivate_request(user, ebi, &esm_cause);
if (rc != RETURNerror) {
esm_cause = ESM_CAUSE_SUCCESS;
+6 -5
View File
@@ -42,6 +42,7 @@ Description Defines functions executed at the ESM Service Access
#include "EsmStatus.h"
#include "emmData.h"
#include "user_defs.h"
#include "PdnConnectivityReject.h"
#include "PdnDisconnectReject.h"
@@ -88,23 +89,23 @@ int esm_recv_status(int pti, int ebi, const esm_status_msg *msg);
* Transaction related messages
* ----------------------------
*/
int esm_recv_pdn_connectivity_reject(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_pdn_connectivity_reject(nas_user_t *user, int pti, int ebi,
const pdn_connectivity_reject_msg *msg);
int esm_recv_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_pdn_disconnect_reject(nas_user_t *user, int pti, int ebi,
const pdn_disconnect_reject_msg *msg);
/*
* Messages related to EPS bearer contexts
* ---------------------------------------
*/
int esm_recv_activate_default_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_activate_default_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const activate_default_eps_bearer_context_request_msg *msg);
int esm_recv_activate_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_activate_dedicated_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const activate_dedicated_eps_bearer_context_request_msg *msg);
int esm_recv_deactivate_eps_bearer_context_request(esm_data_t *esm_data, int pti, int ebi,
int esm_recv_deactivate_eps_bearer_context_request(nas_user_t *user, int pti, int ebi,
const deactivate_eps_bearer_context_request_msg *msg);
+22 -23
View File
@@ -63,10 +63,9 @@ Description Defines the ESM Service Access Points at which the EPS
/******************* L O C A L D E F I N I T I O N S *******************/
/****************************************************************************/
// FIXME NOT SURE FOR THIS ONE
static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
static int _esm_sap_recv(nas_user_t *user, int msg_type, int is_standalone,
const OctetString *req, OctetString *rsp, esm_sap_error_t *err);
static int _esm_sap_send(int msg_type, int is_standalone, int pti, int ebi,
static int _esm_sap_send(nas_user_t *user, int msg_type, int is_standalone, int pti, int ebi,
const esm_sap_data_t *data, OctetString *rsp);
@@ -145,7 +144,7 @@ void esm_sap_initialize(void)
** Others: None **
** **
***************************************************************************/
int esm_sap_send(esm_sap_t *msg)
int esm_sap_send(nas_user_t *user, esm_sap_t *msg)
{
LOG_FUNC_IN;
// FIXME
@@ -193,7 +192,7 @@ int esm_sap_send(esm_sap_t *msg)
if (rc != RETURNerror) {
/* Send PDN connectivity request */
rc = _esm_sap_send(PDN_CONNECTIVITY_REQUEST,
rc = _esm_sap_send(user, PDN_CONNECTIVITY_REQUEST,
msg->is_standalone,
pti, EPS_BEARER_IDENTITY_UNASSIGNED,
&msg->data, &msg->send);
@@ -214,11 +213,11 @@ int esm_sap_send(esm_sap_t *msg)
pdn_connect->is_emergency, NULL);
} else if (msg->recv != NULL) {
/* The UE received a PDN connectivity reject message */
rc = _esm_sap_recv(esm_data, PDN_CONNECTIVITY_REJECT, msg->is_standalone,
rc = _esm_sap_recv(user, PDN_CONNECTIVITY_REJECT, msg->is_standalone,
msg->recv, &msg->send, &msg->err);
} else {
/* The PDN connectivity procedure locally failed */
rc = esm_proc_pdn_connectivity_failure(TRUE);
rc = esm_proc_pdn_connectivity_failure(user, TRUE);
}
}
break;
@@ -234,7 +233,7 @@ int esm_sap_send(esm_sap_t *msg)
if (rc != RETURNerror) {
/* Send PDN disconnect request */
rc = _esm_sap_send(PDN_DISCONNECT_REQUEST, TRUE, pti, ebi,
rc = _esm_sap_send(user, PDN_DISCONNECT_REQUEST, TRUE, pti, ebi,
&msg->data, &msg->send);
}
}
@@ -257,7 +256,7 @@ int esm_sap_send(esm_sap_t *msg)
case ESM_DEFAULT_EPS_BEARER_CONTEXT_ACTIVATE_REQ:
/* The UE received activate default ESP bearer context request */
rc = _esm_sap_recv(esm_data, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST,
rc = _esm_sap_recv(user, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST,
msg->is_standalone,
msg->recv, &msg->send, &msg->err);
break;
@@ -270,7 +269,7 @@ int esm_sap_send(esm_sap_t *msg)
rc = esm_proc_default_eps_bearer_context_complete();
if (rc != RETURNerror) {
rc = esm_proc_pdn_connectivity_complete();
rc = esm_proc_pdn_connectivity_complete(user);
}
break;
@@ -279,10 +278,10 @@ int esm_sap_send(esm_sap_t *msg)
/*
* Default ESP bearer context activation procedure locally failed
*/
rc = esm_proc_default_eps_bearer_context_failure(esm_data);
rc = esm_proc_default_eps_bearer_context_failure(user);
if (rc != RETURNerror) {
rc = esm_proc_pdn_connectivity_failure(FALSE);
rc = esm_proc_pdn_connectivity_failure(user, FALSE);
}
break;
@@ -310,7 +309,7 @@ int esm_sap_send(esm_sap_t *msg)
/*
* Locally deactivate EPS bearer context
*/
rc = esm_proc_eps_bearer_context_deactivate(esm_data, TRUE,
rc = esm_proc_eps_bearer_context_deactivate(user, TRUE,
msg->data.eps_bearer_context_deactivate.ebi, &pid, &bid);
}
break;
@@ -319,7 +318,7 @@ int esm_sap_send(esm_sap_t *msg)
break;
case ESM_UNITDATA_IND:
rc = _esm_sap_recv(esm_data, -1, msg->is_standalone, msg->recv,
rc = _esm_sap_recv(user, -1, msg->is_standalone, msg->recv,
&msg->send, &msg->err);
break;
@@ -364,7 +363,7 @@ int esm_sap_send(esm_sap_t *msg)
** Others: _esm_sap_buffer **
** **
***************************************************************************/
static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
static int _esm_sap_recv(nas_user_t *user, int msg_type, int is_standalone,
const OctetString *req, OctetString *rsp,
esm_sap_error_t *err)
{
@@ -442,7 +441,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
* received from the MME
*/
esm_cause = esm_recv_activate_default_eps_bearer_context_request(
esm_data, pti, ebi,
user, pti, ebi,
&esm_msg.activate_default_eps_bearer_context_request);
if ( (esm_cause == ESM_CAUSE_SUCCESS) ||
@@ -480,7 +479,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
* received from the MME
*/
esm_cause = esm_recv_activate_dedicated_eps_bearer_context_request(
esm_data, pti, ebi,
user, pti, ebi,
&esm_msg.activate_dedicated_eps_bearer_context_request);
if ( (esm_cause == ESM_CAUSE_SUCCESS) ||
@@ -520,7 +519,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
* Process deactivate EPS bearer context request message
* received from the MME
*/
esm_cause = esm_recv_deactivate_eps_bearer_context_request(esm_data, pti, ebi,
esm_cause = esm_recv_deactivate_eps_bearer_context_request(user, pti, ebi,
&esm_msg.deactivate_eps_bearer_context_request);
if ( (esm_cause == ESM_CAUSE_INVALID_PTI_VALUE) ||
@@ -556,7 +555,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
/*
* Process PDN connectivity reject message received from the MME
*/
esm_cause = esm_recv_pdn_connectivity_reject(esm_data, pti, ebi,
esm_cause = esm_recv_pdn_connectivity_reject(user, pti, ebi,
&esm_msg.pdn_connectivity_reject);
if ( (esm_cause == ESM_CAUSE_INVALID_PTI_VALUE) ||
@@ -579,7 +578,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
/*
* Process PDN disconnect reject message received from the MME
*/
esm_cause = esm_recv_pdn_disconnect_reject(esm_data, pti, ebi,
esm_cause = esm_recv_pdn_disconnect_reject(user, pti, ebi,
&esm_msg.pdn_disconnect_reject);
if ( (esm_cause == ESM_CAUSE_INVALID_PTI_VALUE) ||
@@ -653,7 +652,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
}
/* Complete the relevant ESM procedure */
rc = (*esm_procedure)(is_standalone, ebi, rsp, triggered_by_ue);
rc = (*esm_procedure)(user, is_standalone, ebi, rsp, triggered_by_ue);
if (is_discarded) {
/* Return indication that received message has been discarded */
@@ -696,7 +695,7 @@ static int _esm_sap_recv(esm_data_t *esm_data, int msg_type, int is_standalone,
** Others: _esm_sap_buffer **
** **
***************************************************************************/
static int _esm_sap_send(int msg_type, int is_standalone,
static int _esm_sap_send(nas_user_t *user, int msg_type, int is_standalone,
int pti, int ebi, const esm_sap_data_t *data,
OctetString *rsp)
{
@@ -784,7 +783,7 @@ static int _esm_sap_send(int msg_type, int is_standalone,
/* Execute the relevant ESM procedure */
if (esm_procedure) {
rc = (*esm_procedure)(is_standalone, pti, rsp, sent_by_ue);
rc = (*esm_procedure)(user, is_standalone, pti, rsp, sent_by_ue);
}
}
+2 -1
View File
@@ -41,6 +41,7 @@ Description Defines the ESM Service Access Points at which the EPS
#define __ESM_SAP_H__
#include "esm_sapDef.h"
#include "user_defs.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
@@ -60,6 +61,6 @@ Description Defines the ESM Service Access Points at which the EPS
void esm_sap_initialize(void);
int esm_sap_send(esm_sap_t *msg);
int esm_sap_send(nas_user_t *user, esm_sap_t *msg);
#endif /* __ESM_SAP_H__*/
+4 -5
View File
@@ -330,8 +330,7 @@ int esm_ebr_context_create(
** Others: _esm_data **
** **
***************************************************************************/
int esm_ebr_context_release(
esm_data_t *esm_data,
int esm_ebr_context_release(nas_user_t *user,
int ebi, int *pid, int *bid)
{
int found = FALSE;
@@ -342,7 +341,7 @@ int esm_ebr_context_release(
LOG_FUNC_IN;
esm_ctx = esm_data;
esm_ctx = _esm_data;
if (ebi != ESM_EBI_UNASSIGNED) {
/*
@@ -492,7 +491,7 @@ int esm_ebr_context_release(
emm_sap_t emm_sap;
emm_sap.primitive = EMMESM_ESTABLISH_CNF;
emm_sap.u.emm_esm.u.establish.is_attached = FALSE;
(void) emm_sap_send(&emm_sap);
(void) emm_sap_send(user, &emm_sap);
}
/* 3GPP TS 24.301, section 6.4.4.3, 6.4.4.6
* If due to the EPS bearer context deactivation only the PDN
@@ -505,7 +504,7 @@ int esm_ebr_context_release(
emm_sap.primitive = EMMESM_ESTABLISH_CNF;
emm_sap.u.emm_esm.u.establish.is_attached = TRUE;
emm_sap.u.emm_esm.u.establish.is_emergency = TRUE;
(void) emm_sap_send(&emm_sap);
(void) emm_sap_send(user, &emm_sap);
}
LOG_FUNC_RETURN (ebi);
+2 -1
View File
@@ -39,6 +39,7 @@ Description Defines functions used to handle EPS bearer contexts.
#define __ESM_EBR_CONTEXT_H__
#include "networkDef.h"
#include "user_defs.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
@@ -68,7 +69,7 @@ typedef enum {
int esm_ebr_context_create(esm_data_t *esm_data, int pid, int ebi, int is_default,
const network_qos_t *qos, const network_tft_t *tft);
int esm_ebr_context_release(esm_data_t *esm_data, int ebi, int *pid, int *bid);
int esm_ebr_context_release(nas_user_t *user, int ebi, int *pid, int *bid);
int esm_ebr_context_get_pid(esm_data_t *esm_data, int ebi);
+20 -19
View File
@@ -43,6 +43,7 @@ Description Defines the EPS Session Management procedures executed at
#include "OctetString.h"
#include "emmData.h"
#include "ProtocolConfigurationOptions.h"
#include "user_defs.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
@@ -78,7 +79,7 @@ typedef enum {
* Type of the ESM procedure callback executed when requested by the UE
* or initiated by the network
*/
typedef int (*esm_proc_procedure_t) (int, int, OctetString *, int);
typedef int (*esm_proc_procedure_t) (nas_user_t *user, int, int, OctetString *, int);
/* EPS bearer level QoS parameters */
typedef network_qos_t esm_proc_qos_t;
@@ -112,7 +113,7 @@ typedef struct {
* --------------------------------------------------------------------------
*/
int esm_proc_status_ind(int pti, int ebi, int *esm_cause);
int esm_proc_status(int is_standalone, int pti, OctetString *msg,
int esm_proc_status(nas_user_t *user, int is_standalone, int pti, OctetString *msg,
int sent_by_ue);
@@ -124,13 +125,13 @@ int esm_proc_status(int is_standalone, int pti, OctetString *msg,
int esm_proc_pdn_connectivity(esm_data_t *esm_data, int cid, int to_define,
esm_proc_pdn_type_t pdn_type, const OctetString *apn, int is_emergency,
unsigned int *pti);
int esm_proc_pdn_connectivity_request(int is_standalone, int pti,
int esm_proc_pdn_connectivity_request(nas_user_t *user, int is_standalone, int pti,
OctetString *msg, int sent_by_ue);
int esm_proc_pdn_connectivity_accept(esm_data_t *esm_data, int pti, esm_proc_pdn_type_t pdn_type,
int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_type_t pdn_type,
const OctetString *pdn_address, const OctetString *apn, int *esm_cause);
int esm_proc_pdn_connectivity_reject(int pti, int *esm_cause);
int esm_proc_pdn_connectivity_complete(void);
int esm_proc_pdn_connectivity_failure(int is_pending);
int esm_proc_pdn_connectivity_reject(nas_user_t *user, int pti, int *esm_cause);
int esm_proc_pdn_connectivity_complete(nas_user_t *user);
int esm_proc_pdn_connectivity_failure(nas_user_t *user, int is_pending);
/*
@@ -139,11 +140,11 @@ int esm_proc_pdn_connectivity_failure(int is_pending);
* --------------------------------------------------------------------------
*/
int esm_proc_pdn_disconnect(esm_data_t *esm_data, int cid, unsigned int *pti, unsigned int *ebi);
int esm_proc_pdn_disconnect_request(int is_standalone, int pti,
int esm_proc_pdn_disconnect_request(nas_user_t *user, int is_standalone, int pti,
OctetString *msg, int sent_by_ue);
int esm_proc_pdn_disconnect_accept(int pti, int *esm_cause);
int esm_proc_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int *esm_cause);
int esm_proc_pdn_disconnect_reject(nas_user_t *user, int pti, int *esm_cause);
/*
* --------------------------------------------------------------------------
@@ -151,14 +152,14 @@ int esm_proc_pdn_disconnect_reject(esm_data_t *esm_data, int pti, int *esm_cause
* --------------------------------------------------------------------------
*/
int esm_proc_default_eps_bearer_context_request(esm_data_t *esm_data, int pid, int ebi,
int esm_proc_default_eps_bearer_context_request(nas_user_t *user, int pid, int ebi,
const esm_proc_qos_t *esm_qos, int *esm_cause);
int esm_proc_default_eps_bearer_context_complete(void);
int esm_proc_default_eps_bearer_context_failure(esm_data_t *esm_data);
int esm_proc_default_eps_bearer_context_failure(nas_user_t *user);
int esm_proc_default_eps_bearer_context_accept(int is_standalone, int ebi,
int esm_proc_default_eps_bearer_context_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered);
int esm_proc_default_eps_bearer_context_reject(int is_standalone, int ebi,
int esm_proc_default_eps_bearer_context_reject(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered);
/*
@@ -167,12 +168,12 @@ int esm_proc_default_eps_bearer_context_reject(int is_standalone, int ebi,
* --------------------------------------------------------------------------
*/
int esm_proc_dedicated_eps_bearer_context_request(esm_data_t *esm_data, int ebi, int default_ebi,
int esm_proc_dedicated_eps_bearer_context_request(nas_user_t *user, int ebi, int default_ebi,
const esm_proc_qos_t *qos, const esm_proc_tft_t *tft, int *esm_cause);
int esm_proc_dedicated_eps_bearer_context_accept(int is_standalone, int ebi,
int esm_proc_dedicated_eps_bearer_context_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered);
int esm_proc_dedicated_eps_bearer_context_reject(int is_standalone, int ebi,
int esm_proc_dedicated_eps_bearer_context_reject(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered);
/*
@@ -181,11 +182,11 @@ int esm_proc_dedicated_eps_bearer_context_reject(int is_standalone, int ebi,
* --------------------------------------------------------------------------
*/
int esm_proc_eps_bearer_context_deactivate(esm_data_t *esm_data, int is_local, int ebi, int *pid,
int esm_proc_eps_bearer_context_deactivate(nas_user_t *user, int is_local, int ebi, int *pid,
int *bid);
int esm_proc_eps_bearer_context_deactivate_request(esm_data_t *esm_data, int ebi, int *esm_cause);
int esm_proc_eps_bearer_context_deactivate_request(nas_user_t *user, int ebi, int *esm_cause);
int esm_proc_eps_bearer_context_deactivate_accept(int is_standalone, int ebi,
int esm_proc_eps_bearer_context_deactivate_accept(nas_user_t *user, int is_standalone, int ebi,
OctetString *msg, int ue_triggered);
#endif /* __ESM_PROC_H__*/
+1
View File
@@ -308,6 +308,7 @@ int esm_pt_start_timer(int pti, const OctetString *msg,
* time interval */
ctx->timer.id = nas_timer_start(sec, cb, ctx->args);
ctx->timer.sec = sec;
// FIXME add user
}
}
+2
View File
@@ -40,6 +40,7 @@ Description Defines functions used to handle ESM procedure transactions.
#include "OctetString.h"
#include "nas_timer.h"
#include "user_defs.h"
#include "ProcedureTransactionIdentity.h"
@@ -67,6 +68,7 @@ typedef struct {
unsigned char pti; /* Procedure transaction identity */
unsigned int count; /* Retransmission counter */
OctetString msg; /* Encoded ESM message to re-transmit */
nas_user_t *user; /* user reference */
} esm_pt_timer_data_t;
/****************************************************************************/