Corrected interpretation of "numberofelements" field in tracking area list (must be used as N+1).
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4909 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -124,10 +124,6 @@ int emm_recv_attach_accept(attach_accept_msg *msg, int *emm_cause)
|
||||
/* Only list of TACs belonging to one PLMN with consecutive
|
||||
* TAC values is supported */
|
||||
*emm_cause = EMM_CAUSE_IE_NOT_IMPLEMENTED;
|
||||
} else if (msg->tailist.numberofelements < 1) {
|
||||
/* The tracking area identity list shall contain
|
||||
* at leat one TAI value */
|
||||
*emm_cause = EMM_CAUSE_INVALID_MANDATORY_INFO;
|
||||
} else if ( (msg->presencemask & ATTACH_ACCEPT_GUTI_PRESENT) &&
|
||||
(msg->guti.guti.typeofidentity != EPS_MOBILE_IDENTITY_GUTI) ) {
|
||||
/* The only supported type of EPS mobile identity is GUTI */
|
||||
@@ -151,7 +147,10 @@ int emm_recv_attach_accept(attach_accept_msg *msg, int *emm_cause)
|
||||
T3423 = gprs_timer_value(&msg->t3423value);
|
||||
}
|
||||
/* Get the tracking area list the UE is registered to */
|
||||
int n_tais = msg->tailist.numberofelements;
|
||||
|
||||
/* LW: number of elements is coded as N-1 (0 -> 1 element, 1 -> 2 elements...),
|
||||
* see 3GPP TS 24.301, section 9.9.3.33.1 */
|
||||
int n_tais = msg->tailist.numberofelements + 1;
|
||||
tai_t tai[n_tais];
|
||||
for (i = 0; i < n_tais; i++) {
|
||||
tai[i].plmn.MCCdigit1 = msg->tailist.mccdigit1;
|
||||
|
||||
@@ -79,7 +79,9 @@ void dump_tracking_area_identity_list_xml(TrackingAreaIdentityList *trackingarea
|
||||
/* Don't display IEI if = 0 */
|
||||
printf(" <IEI>0x%X</IEI>\n", iei);
|
||||
printf(" <Type of list>%u</Type of list>\n", trackingareaidentitylist->typeoflist);
|
||||
printf(" <Number of elements>%u</Number of elements>\n", trackingareaidentitylist->numberofelements);
|
||||
/* LW: number of elements is coded as N-1 (0 -> 1 element, 1 -> 2 elements...),
|
||||
* see 3GPP TS 24.301, section 9.9.3.33.1 */
|
||||
printf(" <Number of elements>%u</Number of elements>\n", trackingareaidentitylist->numberofelements + 1);
|
||||
printf(" <MCC digit 2>%u</MCC digit 2>\n", trackingareaidentitylist->mccdigit2);
|
||||
printf(" <MCC digit 1>%u</MCC digit 1>\n", trackingareaidentitylist->mccdigit1);
|
||||
printf(" <MNC digit 3>%u</MNC digit 3>\n", trackingareaidentitylist->mncdigit3);
|
||||
|
||||
@@ -731,11 +731,12 @@ ssize_t taiList(char* buffer, size_t len, const TrackingAreaIdentityList* tai)
|
||||
tai->mncdigit3);
|
||||
}
|
||||
|
||||
if (tai->numberofelements > 0) {
|
||||
index += snprintf(buffer + index, len - index,
|
||||
", n_tacs = %u, tac = 0x%.4x",
|
||||
tai->numberofelements, tai->tac);
|
||||
}
|
||||
index += snprintf(buffer + index, len - index,
|
||||
", n_tacs = %u, tac = 0x%.4x",
|
||||
/* LW: number of elements is coded as N-1 (0 -> 1 element, 1 -> 2 elements...),
|
||||
* see 3GPP TS 24.301, section 9.9.3.33.1 */
|
||||
tai->numberofelements + 1,
|
||||
tai->tac);
|
||||
|
||||
index += snprintf(buffer + index, len - index, "}");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user