From 46b2ee9577073261163349f03057f2587186b955 Mon Sep 17 00:00:00 2001
From: Cedric Roux <cedric.roux@eurecom.fr>
Date: Thu, 8 Dec 2016 17:51:02 +0100
Subject: [PATCH] integration fix: attempt to clarify ODD_PARITY

This may need to be refined.

The variable ODD_PARITY is defined at various places,
with different values, causing compilation warnings.

It's wrong to define a variable with different values.

A new variable is created, specific to IMEI case: IMEI_ODD_PARITY.
Maybe ODD_PARITY should also have 0xf as value, and so maybe only
one variable is necessary. To be checked at some point...
---
 openair2/COMMON/commonDef.h              | 2 +-
 openair3/NAS/COMMON/IES/MobileIdentity.h | 4 ++--
 openair3/NAS/UE/EMM/SAP/emm_send.c       | 2 +-
 openair3/NAS/UE/EMM/emm_main.c           | 3 ++-
 4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/openair2/COMMON/commonDef.h b/openair2/COMMON/commonDef.h
index ae1bdaf994a..cfd5d68e40a 100644
--- a/openair2/COMMON/commonDef.h
+++ b/openair2/COMMON/commonDef.h
@@ -119,7 +119,7 @@ typedef struct {
       Byte_t digit14:4;
       Byte_t digit13:4;
 #define EVEN_PARITY 0
-#define ODD_PARITY  0xf
+#define ODD_PARITY  1
       Byte_t parity:4;
       Byte_t digit15:4;
     } num;
diff --git a/openair3/NAS/COMMON/IES/MobileIdentity.h b/openair3/NAS/COMMON/IES/MobileIdentity.h
index 9c082c12df0..72abcb9ed47 100644
--- a/openair3/NAS/COMMON/IES/MobileIdentity.h
+++ b/openair3/NAS/COMMON/IES/MobileIdentity.h
@@ -93,7 +93,7 @@ typedef struct imeisv_s{
   uint8_t  digit15:4;
   uint8_t  digit16:4;
 #define EVEN_PARITY 0
-#define ODD_PARITY  1
+#define IMEI_ODD_PARITY  0xf
        uint8_t parity:4;
 } imeisv_t;
 
@@ -119,7 +119,7 @@ typedef struct imeisv_s {
        uint8_t svn2:4;
        uint8_t svn1:4;
 #define EVEN_PARITY 0
-#define ODD_PARITY  1
+#define IMEI_ODD_PARITY  0xf
        uint8_t parity:4;
      } num;
 #define IMEISV_BCD8_SIZE   9
diff --git a/openair3/NAS/UE/EMM/SAP/emm_send.c b/openair3/NAS/UE/EMM/SAP/emm_send.c
index 554c5569328..e3fc4fa7f99 100644
--- a/openair3/NAS/UE/EMM/SAP/emm_send.c
+++ b/openair3/NAS/UE/EMM/SAP/emm_send.c
@@ -879,7 +879,7 @@ int emm_send_security_mode_complete(const emm_as_security_t *msg,
 	  emm_msg->imeisv.imeisv.digit14        = 0x3;
 	  emm_msg->imeisv.imeisv.digit15        = 0x0;
 	  emm_msg->imeisv.imeisv.digit16        = 0x0;
-	  emm_msg->imeisv.imeisv.parity         = ODD_PARITY;
+	  emm_msg->imeisv.imeisv.parity         = IMEI_ODD_PARITY;
 
 	  size += SECURITY_MODE_COMPLETE_MAXIMUM_LENGTH;
   }
diff --git a/openair3/NAS/UE/EMM/emm_main.c b/openair3/NAS/UE/EMM/emm_main.c
index 82946a634e6..2eb4d8fa24d 100644
--- a/openair3/NAS/UE/EMM/emm_main.c
+++ b/openair3/NAS/UE/EMM/emm_main.c
@@ -40,6 +40,7 @@ Description Defines the EPS Mobility Management procedure call manager,
 #include "emm_main.h"
 #include "nas_log.h"
 #include "emmData.h"
+#include "MobileIdentity.h"
 
 #include "memory.h"
 #include "usim_api.h"
@@ -919,7 +920,7 @@ static int _emm_main_get_imei(imei_t *imei, const char *imei_str)
   int len = strlen(imei_str);
 
   if (len % 2) {
-    imei->u.num.parity = ODD_PARITY;
+    imei->u.num.parity = IMEI_ODD_PARITY;
   } else {
     imei->u.num.parity = EVEN_PARITY;
   }
-- 
GitLab