From 7b6bb640930cf3c8d10bbbaed15453f0d7e85bcc Mon Sep 17 00:00:00 2001 From: Lionel Gauthier <lionel.gauthier@eurecom.fr> Date: Thu, 23 Oct 2014 14:30:37 +0000 Subject: [PATCH] git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5935 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/NAS/EURECOM-NAS/src/emm/Attach.c | 4 ++- .../EURECOM-NAS/src/emm/msg/AttachAccept.c | 4 +++ ...ActivateDedicatedEpsBearerContextRequest.h | 2 +- .../NAS/EURECOM-NAS/src/esm/sap/esm_send.c | 12 +++++++ .../src/ies/ApnAggregateMaximumBitRate.c | 32 +++++++++++++++++++ .../src/ies/ApnAggregateMaximumBitRate.h | 8 +++++ 6 files changed, 60 insertions(+), 2 deletions(-) diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/Attach.c b/openair-cn/NAS/EURECOM-NAS/src/emm/Attach.c index 2ae268d28e..11fc4b0822 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/emm/Attach.c +++ b/openair-cn/NAS/EURECOM-NAS/src/emm/Attach.c @@ -2320,7 +2320,9 @@ static int _emm_attach_accept(emm_data_context_t *emm_ctx, attach_data_t *data) emm_sap.u.emm_as.u.establish.new_guti = emm_ctx->guti; } else { emm_sap.u.emm_as.u.establish.UEid.guti = emm_ctx->guti; - emm_sap.u.emm_as.u.establish.new_guti = NULL; +#warning "TEST LG FORCE GUTI IE IN ATTACH ACCEPT" + emm_sap.u.emm_as.u.establish.new_guti = emm_ctx->guti; + //emm_sap.u.emm_as.u.establish.new_guti = NULL; } emm_sap.u.emm_as.u.establish.n_tacs = emm_ctx->n_tacs; emm_sap.u.emm_as.u.establish.tac = emm_ctx->tac; diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachAccept.c b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachAccept.c index 20669028dd..d9b2567501 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachAccept.c +++ b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachAccept.c @@ -269,6 +269,10 @@ int encode_attach_accept(attach_accept_msg *attach_accept, uint8_t *buffer, uint encoded += encode_result; } +#warning "LG TEST override t3402value" + attach_accept->presencemask |= ATTACH_ACCEPT_T3402_VALUE_PRESENT; + attach_accept->t3402value.unit = GPRS_TIMER_UNIT_60S; + attach_accept->t3402value.timervalue = 12; if ((attach_accept->presencemask & ATTACH_ACCEPT_T3402_VALUE_PRESENT) == ATTACH_ACCEPT_T3402_VALUE_PRESENT) { diff --git a/openair-cn/NAS/EURECOM-NAS/src/esm/msg/ActivateDedicatedEpsBearerContextRequest.h b/openair-cn/NAS/EURECOM-NAS/src/esm/msg/ActivateDedicatedEpsBearerContextRequest.h index fe3a0f5171..3a18057c8a 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/esm/msg/ActivateDedicatedEpsBearerContextRequest.h +++ b/openair-cn/NAS/EURECOM-NAS/src/esm/msg/ActivateDedicatedEpsBearerContextRequest.h @@ -61,7 +61,7 @@ LLC_SERVICE_ACCESS_POINT_IDENTIFIER_MAXIMUM_LENGTH + \ RADIO_PRIORITY_MAXIMUM_LENGTH + \ PACKET_FLOW_IDENTIFIER_MAXIMUM_LENGTH + \ - PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH ) + PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH) /* If an optional value is present and should be encoded, the corresponding * Bit mask should be set to 1. diff --git a/openair-cn/NAS/EURECOM-NAS/src/esm/sap/esm_send.c b/openair-cn/NAS/EURECOM-NAS/src/esm/sap/esm_send.c index f17ccd4ccb..84a7374551 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/esm/sap/esm_send.c +++ b/openair-cn/NAS/EURECOM-NAS/src/esm/sap/esm_send.c @@ -610,6 +610,18 @@ int esm_send_activate_default_eps_bearer_context_request(int pti, msg->esmcause = esm_cause; } +#warning "TEST LG FORCE APN-AMBR" + LOG_TRACE(INFO, "ESM-SAP - FORCE APN-AMBR"); + msg->presencemask |= + ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_APNAMBR_PRESENT; + msg->apnambr.apnambrfordownlink = 0xfe; // (8640kbps) + msg->apnambr.apnambrforuplink = 0xfe; // (8640kbps) + msg->apnambr.apnambrfordownlink_extended = 0xde; // (200Mbps) + msg->apnambr.apnambrforuplink_extended = 0x9e; // (100Mbps) + msg->apnambr.apnambrfordownlink_extended2 = 0; + msg->apnambr.apnambrforuplink_extended2 = 0; + msg->apnambr.extensions = 0 | APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION_PRESENT; + LOG_TRACE(INFO, "ESM-SAP - Send Activate Default EPS Bearer Context " "Request message (pti=%d, ebi=%d)", msg->proceduretransactionidentity, msg->epsbeareridentity); diff --git a/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.c b/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.c index dbe85a885f..3cc25b48d2 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.c +++ b/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.c @@ -51,6 +51,18 @@ int decode_apn_aggregate_maximum_bit_rate(ApnAggregateMaximumBitRate *apnaggrega decoded++; apnaggregatemaximumbitrate->apnambrforuplink = *(buffer + decoded); decoded++; + if (ielen >= 4) { + apnaggregatemaximumbitrate->apnambrfordownlink_extended = *(buffer + decoded); + decoded++; + apnaggregatemaximumbitrate->apnambrforuplink_extended = *(buffer + decoded); + decoded++; + if (ielen >= 6) { + apnaggregatemaximumbitrate->apnambrfordownlink_extended2 = *(buffer + decoded); + decoded++; + apnaggregatemaximumbitrate->apnambrforuplink_extended2 = *(buffer + decoded); + decoded++; + } + } #if defined (NAS_DEBUG) dump_apn_aggregate_maximum_bit_rate_xml(apnaggregatemaximumbitrate, iei); #endif @@ -76,6 +88,18 @@ int encode_apn_aggregate_maximum_bit_rate(ApnAggregateMaximumBitRate *apnaggrega encoded++; *(buffer + encoded) = apnaggregatemaximumbitrate->apnambrforuplink; encoded++; + if (apnaggregatemaximumbitrate->extensions & APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION_PRESENT) { + *(buffer + encoded) = apnaggregatemaximumbitrate->apnambrfordownlink_extended; + encoded++; + *(buffer + encoded) = apnaggregatemaximumbitrate->apnambrforuplink_extended; + encoded++; + if (apnaggregatemaximumbitrate->extensions & APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION2_PRESENT) { + *(buffer + encoded) = apnaggregatemaximumbitrate->apnambrfordownlink_extended2; + encoded++; + *(buffer + encoded) = apnaggregatemaximumbitrate->apnambrforuplink_extended2; + encoded++; + } + } *lenPtr = encoded - 1 - ((iei > 0) ? 1 : 0); return encoded; } @@ -88,6 +112,14 @@ void dump_apn_aggregate_maximum_bit_rate_xml(ApnAggregateMaximumBitRate *apnaggr printf(" <IEI>0x%X</IEI>\n", iei); printf(" <APN AMBR for downlink>%u</APN AMBR for downlink>\n", apnaggregatemaximumbitrate->apnambrfordownlink); printf(" <APN AMBR for uplink>%u</APN AMBR for uplink>\n", apnaggregatemaximumbitrate->apnambrforuplink); + if (apnaggregatemaximumbitrate->extensions & APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION_PRESENT) { + printf(" <APN AMBR extended for downlink>%u</APN AMBR for downlink>\n", apnaggregatemaximumbitrate->apnambrfordownlink_extended); + printf(" <APN AMBR extended for uplink>%u</APN AMBR for uplink>\n", apnaggregatemaximumbitrate->apnambrforuplink_extended); + if (apnaggregatemaximumbitrate->extensions & APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION2_PRESENT) { + printf(" <APN AMBR extended2 for downlink>%u</APN AMBR for downlink>\n", apnaggregatemaximumbitrate->apnambrfordownlink_extended); + printf(" <APN AMBR extended2 for uplink>%u</APN AMBR for uplink>\n", apnaggregatemaximumbitrate->apnambrforuplink_extended); + } + } printf("</Apn Aggregate Maximum Bit Rate>\n"); } diff --git a/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.h b/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.h index 620ec81719..6823c53476 100644 --- a/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.h +++ b/openair-cn/NAS/EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.h @@ -38,9 +38,17 @@ #define APN_AGGREGATE_MAXIMUM_BIT_RATE_MINIMUM_LENGTH 4 #define APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_LENGTH 8 +#define APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION_PRESENT (1<<0) +#define APN_AGGREGATE_MAXIMUM_BIT_RATE_MAXIMUM_EXTENSION2_PRESENT (1<<1) + typedef struct ApnAggregateMaximumBitRate_tag { uint8_t apnambrfordownlink; uint8_t apnambrforuplink; + uint8_t apnambrfordownlink_extended; + uint8_t apnambrforuplink_extended; + uint8_t apnambrfordownlink_extended2; + uint8_t apnambrforuplink_extended2; + uint8_t extensions; } ApnAggregateMaximumBitRate; int encode_apn_aggregate_maximum_bit_rate(ApnAggregateMaximumBitRate *apnaggregatemaximumbitrate, uint8_t iei, uint8_t *buffer, uint32_t len); -- GitLab