diff --git a/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.c b/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.c
index cfb0163e9b453868ce7848f9e5bf228db7d2a7a6..361537846258313e982874a9dfae28ab4b5dee97 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.c
@@ -222,7 +222,11 @@ static int _mme_api_pdn_id = 0;
  **		 Others:	None                                       **
  **                                                                        **
  ***************************************************************************/
+#if defined(EPC_BUILD)
+int mme_api_get_emm_config(mme_api_emm_config_t* config, mme_config_t *mme_config_p)
+#else
 int mme_api_get_emm_config(mme_api_emm_config_t* config)
+#endif
 {
     LOG_FUNC_IN;
 
@@ -234,7 +238,17 @@ int mme_api_get_emm_config(mme_api_emm_config_t* config)
     config->gummei.plmn.MNCdigit3 = 0xf;
     config->gummei.MMEgid = MME_API_MME_GID;
     config->gummei.MMEcode = MME_API_MME_CODE;
+#if defined(EPC_BUILD)
+    /* SR: this config param comes from MME global config */
+    if (mme_config_p->emergency_attach_supported != 0) {
+        config->features |= MME_API_EMERGENCY_ATTACH;
+    }
+    if (mme_config_p->unauthenticated_imsi_supported != 0) {
+        config->features |= MME_API_UNAUTHENTICATED_IMSI;
+    }
+#else
     config->features = MME_API_EMERGENCY_ATTACH | MME_API_UNAUTHENTICATED_IMSI;
+#endif
 
     LOG_FUNC_RETURN (RETURNok);
 }
diff --git a/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.h b/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.h
index ee6d0e540d51fa39c699226b6d2364ba9f4fa5fa..4f87228f8f82fc8ff677e48e372b6bd2720b9a80 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/api/mme/mme_api.h
@@ -22,6 +22,9 @@ Description	Implements the API used by the NAS layer running in the MME
 #define __MME_API_H__
 
 #ifdef NAS_MME
+# if defined(EPC_BUILD)
+#   include "mme_config.h"
+# endif
 #include "commonDef.h"
 #include "securityDef.h"
 #include "OctetString.h"
@@ -89,7 +92,11 @@ typedef struct {
 /******************  E X P O R T E D    F U N C T I O N S  ******************/
 /****************************************************************************/
 
+#if defined(EPC_BUILD)
+int mme_api_get_emm_config(mme_api_emm_config_t* config, mme_config_t *mme_config_p);
+#else
 int mme_api_get_emm_config(mme_api_emm_config_t* config);
+#endif
 int mme_api_get_esm_config(mme_api_esm_config_t* config);
 
 int mme_api_identify_guti(const GUTI_t* guti, auth_vector_t* vector);
diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.c b/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.c
index b9171d1d9633391fb33a88f124c889124fa775a7..a5a833554ce1c3b14fe14bc9fd74879c42c4ef89 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.c
@@ -33,6 +33,10 @@ Description Defines the EPS Mobility Management procedure call manager,
 #include <stdlib.h> // malloc, free
 #endif
 
+#if defined(EPC_BUILD) && defined(NAS_MME)
+# include "mme_config.h"
+#endif
+
 /****************************************************************************/
 /****************  E X T E R N A L    D E F I N I T I O N S  ****************/
 /****************************************************************************/
@@ -382,12 +386,21 @@ void emm_main_initialize(emm_indication_callback_t cb, const char *imei)
  **      Others:    _emm_data                                  **
  **                                                                        **
  ***************************************************************************/
+#if defined(EPC_BUILD)
+void emm_main_initialize(mme_config_t *mme_config_p)
+#else
 void emm_main_initialize(void)
+#endif
 {
     LOG_FUNC_IN;
 
     /* Retreive MME supported configuration data */
-    if (mme_api_get_emm_config(&_emm_data.conf) != RETURNok) {
+#if defined(EPC_BUILD)
+    if (mme_api_get_emm_config(&_emm_data.conf, mme_config_p) != RETURNok)
+#else
+    if (mme_api_get_emm_config(&_emm_data.conf) != RETURNok)
+#endif
+    {
         LOG_TRACE(ERROR, "EMM-MAIN  - Failed to get MME configuration data");
     }
 
diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.h b/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.h
index eae046373ffedeacf6e7cebf0471f9a73dcfbd9c..d1658e6e4996362313836ced766dae7d35a1d85c 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/emm/emm_main.h
@@ -21,6 +21,10 @@ Description Defines the EPS Mobility Management procedure call manager,
 #ifndef __EMM_MAIN_H__
 #define __EMM_MAIN_H__
 
+#if defined(EPC_BUILD)
+# include "mme_config.h"
+#endif
+
 #include "commonDef.h"
 #include "networkDef.h"
 
@@ -44,7 +48,11 @@ Description Defines the EPS Mobility Management procedure call manager,
 void emm_main_initialize(emm_indication_callback_t cb, const char *imei);
 #endif
 #ifdef NAS_MME
+# if defined(EPC_BUILD)
+void emm_main_initialize(mme_config_t *mme_config_p);
+# else
 void emm_main_initialize(void);
+# endif
 #endif
 void emm_main_cleanup(void);
 
diff --git a/openair-cn/NAS/EURECOM-NAS/src/nas_network.c b/openair-cn/NAS/EURECOM-NAS/src/nas_network.c
index 52bc5ffaa2c3eb335f59d34d957ce6647a7aeb0f..6898bc1f243fb9a860b1464a995996e5b2293068 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/nas_network.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/nas_network.c
@@ -51,13 +51,21 @@ Description NAS procedure functions triggered by the network
  **          Others:    None                                       **
  **                                                                        **
  ***************************************************************************/
+#if defined(EPC_BUILD) && defined(NAS_MME)
+void nas_network_initialize(mme_config_t *mme_config_p)
+#else
 void nas_network_initialize(void)
+#endif
 {
     LOG_FUNC_IN;
 
 #ifdef NAS_MME
     /* Initialize the internal NAS processing data */
+# if defined(EPC_BUILD)
+    nas_proc_initialize(mme_config_p);
+# else
     nas_proc_initialize();
+# endif
 #endif
 
     LOG_FUNC_OUT;
diff --git a/openair-cn/NAS/EURECOM-NAS/src/nas_network.h b/openair-cn/NAS/EURECOM-NAS/src/nas_network.h
index 608aadad43132ac45acc793a72309a1303d2c111..32831b6254288bbcd5dc1312ba3393921721d353 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/nas_network.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/nas_network.h
@@ -17,6 +17,11 @@ Author      Frederic Maurel
 Description NAS procedure functions triggered by the network
 
 *****************************************************************************/
+
+#if defined(EPC_BUILD) && defined(NAS_MME)
+# include "mme_config.h"
+#endif
+
 #ifndef __NAS_NETWORK_H__
 #define __NAS_NETWORK_H__
 
@@ -36,7 +41,11 @@ Description NAS procedure functions triggered by the network
 /******************  E X P O R T E D    F U N C T I O N S  ******************/
 /****************************************************************************/
 
+#if defined(EPC_BUILD) && defined(NAS_MME)
+void nas_network_initialize(mme_config_t *mme_config_p);
+#else
 void nas_network_initialize(void);
+#endif
 
 void nas_network_cleanup(void);
 
diff --git a/openair-cn/NAS/EURECOM-NAS/src/nas_proc.c b/openair-cn/NAS/EURECOM-NAS/src/nas_proc.c
index 2f88b016cce6a68487f53bd05170635c124a9b35..c7728d8df8850c58f9d4cd873cc5feb1b8d45f34 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/nas_proc.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/nas_proc.c
@@ -115,6 +115,20 @@ void nas_proc_initialize(emm_indication_callback_t emm_cb,
  **      Others:    None                                       **
  **                                                                        **
  ***************************************************************************/
+# if defined(EPC_BUILD)
+void nas_proc_initialize(mme_config_t *mme_config_p)
+{
+    LOG_FUNC_IN;
+
+    /* Initialize the EMM procedure manager */
+    emm_main_initialize(mme_config_p);
+
+    /* Initialize the ESM procedure manager */
+    esm_main_initialize();
+
+    LOG_FUNC_OUT;
+}
+# else
 void nas_proc_initialize(void)
 {
     LOG_FUNC_IN;
@@ -127,6 +141,7 @@ void nas_proc_initialize(void)
 
     LOG_FUNC_OUT;
 }
+# endif
 #endif
 
 /****************************************************************************
diff --git a/openair-cn/NAS/EURECOM-NAS/src/nas_proc.h b/openair-cn/NAS/EURECOM-NAS/src/nas_proc.h
index 3d0a022dcf2534c894142a1366fa655bd238c8e3..205e76e4dc4ea67fac401ddcc99e769e72d7712a 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/nas_proc.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/nas_proc.h
@@ -20,6 +20,10 @@ Description NAS procedure call manager
 #ifndef __NAS_PROC_H__
 #define __NAS_PROC_H__
 
+#if defined(EPC_BUILD)
+# include "mme_config.h"
+#endif
+
 #include "commonDef.h"
 #include "networkDef.h"
 
@@ -44,7 +48,11 @@ void nas_proc_initialize(emm_indication_callback_t emm_cb,
                          esm_indication_callback_t esm_cb, const char *imei);
 #endif
 #ifdef NAS_MME
+# if defined(EPC_BUILD)
+void nas_proc_initialize(mme_config_t *mme_config_p);
+# else
 void nas_proc_initialize(void);
+# endif
 #endif
 
 void nas_proc_cleanup(void);
diff --git a/openair-cn/NAS/nas_defs.h b/openair-cn/NAS/nas_defs.h
index c60a1b6bc6f04fbc3e64d46737a05c6d81c1fd3a..99a15998b590fe2fbf628ae982651748ac60267c 100644
--- a/openair-cn/NAS/nas_defs.h
+++ b/openair-cn/NAS/nas_defs.h
@@ -1,6 +1,6 @@
 #ifndef NAS_DEFS_H_
 #define NAS_DEFS_H_
 
-int nas_init(const mme_config_t *mme_config_p);
+int nas_init(mme_config_t *mme_config_p);
 
 #endif /* NAS_DEFS_H_ */
diff --git a/openair-cn/NAS/nas_main.c b/openair-cn/NAS/nas_main.c
index 0f5ad9a7c06f6034fe12a2a0d12dc9f3cc08a3e3..7612c3156141974ea004a773fa61718aa5948568 100644
--- a/openair-cn/NAS/nas_main.c
+++ b/openair-cn/NAS/nas_main.c
@@ -10,6 +10,7 @@
 #include "nas_defs.h"
 
 #if !defined(DISABLE_USE_NAS)
+# include "nas_network.h"
 # include "nas_proc.h"
 # include "emm_main.h"
 # include "nas_log.h"
@@ -92,7 +93,7 @@ next_message:
             } break;
 
             case NAS_DOWNLINK_DATA_CNF: {
-                nas_proc_dl_transfer_cnf(NAS_DL_DATA_CNF(received_message_p).UEid);
+//                 nas_proc_dl_transfer_cnf(NAS_DL_DATA_CNF(received_message_p).UEid);
             } break;
 #endif
 
@@ -112,12 +113,13 @@ next_message:
     return NULL;
 }
 
-int nas_init(const mme_config_t *mme_config_p)
+int nas_init(mme_config_t *mme_config_p)
 {
     NAS_DEBUG("Initializing NAS task interface\n");
+
 #if !defined(DISABLE_USE_NAS)
     nas_log_init(LOG_DEBUG);
-    emm_main_initialize();
+    nas_network_initialize(mme_config_p);
 #endif
 
     if (itti_create_task(TASK_NAS, &nas_intertask_interface,
diff --git a/openair-cn/UTILS/mme_config.c b/openair-cn/UTILS/mme_config.c
index 04366aa60570bc18391e4d5b54dc49409a9d7f82..6bbb8d566f22f443931b929c6adb09f025ee9d8e 100644
--- a/openair-cn/UTILS/mme_config.c
+++ b/openair-cn/UTILS/mme_config.c
@@ -53,10 +53,14 @@ void config_init(mme_config_t *mme_config_p)
 
     pthread_rwlock_init(&mme_config_p->rw_lock, NULL);
 
-    mme_config_p->verbosity_level = 0;
-    mme_config_p->config_file     = NULL;
-    mme_config_p->max_eNBs        = MAX_NUMBER_OF_ENB;
-    mme_config_p->max_ues         = MAX_NUMBER_OF_UE;
+    mme_config_p->verbosity_level            = 0;
+    mme_config_p->config_file                = NULL;
+    mme_config_p->max_eNBs                   = MAX_NUMBER_OF_ENB;
+    mme_config_p->max_ues                    = MAX_NUMBER_OF_UE;
+
+    mme_config_p->emergency_attach_supported     = 0;
+    mme_config_p->unauthenticated_imsi_supported = 0;
+
     /* Timer configuration */
     mme_config_p->gtpv1u_config.port_number = GTPV1_U_PORT_NUMBER;
     mme_config_p->s1ap_config.port_number   = S1AP_PORT_NUMBER;
@@ -167,55 +171,58 @@ static void config_display(mme_config_t *mme_config_p)
 {
     fprintf(stdout, "==== EURECOM %s v%s ====\n", PACKAGE_NAME, PACKAGE_VERSION);
     fprintf(stdout, "Configuration:\n");
-    fprintf(stdout, "- File .............: %s\n", mme_config_p->config_file);
-    fprintf(stdout, "- Verbosity level ..: %d\n", mme_config_p->verbosity_level);
-    fprintf(stdout, "- Realm ............: %s\n", mme_config_p->realm);
-    fprintf(stdout, "- Max eNBs .........: %u\n", mme_config_p->max_eNBs);
-    fprintf(stdout, "- Max UEs ..........: %u\n", mme_config_p->max_ues);
-    fprintf(stdout, "- Relative capa ....: %u\n\n", mme_config_p->relative_capacity);
-    fprintf(stdout, "- Statistics timer .: %u (seconds)\n\n", mme_config_p->mme_statistic_timer);
+    fprintf(stdout, "- File ...............: %s\n", mme_config_p->config_file);
+    fprintf(stdout, "- Verbosity level ....: %d\n", mme_config_p->verbosity_level);
+    fprintf(stdout, "- Realm ..............: %s\n", mme_config_p->realm);
+    fprintf(stdout, "- Max eNBs ...........: %u\n", mme_config_p->max_eNBs);
+    fprintf(stdout, "- Max UEs ............: %u\n", mme_config_p->max_ues);
+    fprintf(stdout, "- Emergency support ..: %s\n", mme_config_p->emergency_attach_supported == 0 ? "FALSE" : "TRUE");
+    fprintf(stdout, "- Unauth IMSI support : %s\n", mme_config_p->unauthenticated_imsi_supported == 0 ? "FALSE" : "TRUE");
+    fprintf(stdout, "- Max UEs ............: %u\n", mme_config_p->max_ues);
+    fprintf(stdout, "- Relative capa ......: %u\n\n", mme_config_p->relative_capacity);
+    fprintf(stdout, "- Statistics timer ...: %u (seconds)\n\n", mme_config_p->mme_statistic_timer);
     fprintf(stdout, "- S1-U:\n");
-    fprintf(stdout, "    port number ....: %d\n", mme_config_p->gtpv1u_config.port_number);
+    fprintf(stdout, "    port number ......: %d\n", mme_config_p->gtpv1u_config.port_number);
     fprintf(stdout, "- S1-MME:\n");
-    fprintf(stdout, "    port number ....: %d\n", mme_config_p->s1ap_config.port_number);
+    fprintf(stdout, "    port number ......: %d\n", mme_config_p->s1ap_config.port_number);
     fprintf(stdout, "- IP:\n");
-    fprintf(stdout, "    s1-u iface .....: %s\n", mme_config_p->ipv4.sgw_interface_name_for_S1u_S12_S4_up);
-    fprintf(stdout, "    s1-u ip ........: %s/%d\n",
+    fprintf(stdout, "    s1-u iface .......: %s\n", mme_config_p->ipv4.sgw_interface_name_for_S1u_S12_S4_up);
+    fprintf(stdout, "    s1-u ip ..........: %s/%d\n",
             inet_ntoa(*((struct in_addr *)&mme_config_p->ipv4.sgw_ip_address_for_S1u_S12_S4_up)),
             mme_config_p->ipv4.sgw_ip_netmask_for_S1u_S12_S4_up);
-    fprintf(stdout, "    sgi iface ......: %s\n", mme_config_p->ipv4.pgw_interface_name_for_SGI);
-    fprintf(stdout, "    sgi ip .........: %s/%d\n",
+    fprintf(stdout, "    sgi iface ........: %s\n", mme_config_p->ipv4.pgw_interface_name_for_SGI);
+    fprintf(stdout, "    sgi ip ...........: %s/%d\n",
             inet_ntoa(*((struct in_addr *)&mme_config_p->ipv4.pgw_ip_addr_for_SGI)),
             mme_config_p->ipv4.pgw_ip_netmask_for_SGI);
-    fprintf(stdout, "    s1-MME iface ...: %s\n", mme_config_p->ipv4.mme_interface_name_for_S1_MME);
-    fprintf(stdout, "    s1-MME ip ......: %s/%d\n",
+    fprintf(stdout, "    s1-MME iface .....: %s\n", mme_config_p->ipv4.mme_interface_name_for_S1_MME);
+    fprintf(stdout, "    s1-MME ip ........: %s/%d\n",
             inet_ntoa(*((struct in_addr *)&mme_config_p->ipv4.mme_ip_address_for_S1_MME)),
             mme_config_p->ipv4.mme_ip_netmask_for_S1_MME);
-    fprintf(stdout, "    s11 S-GW iface .: %s\n", mme_config_p->ipv4.sgw_interface_name_for_S11);
-    fprintf(stdout, "    s11 S-GW ip ....: %s/%d\n",
+    fprintf(stdout, "    s11 S-GW iface ...: %s\n", mme_config_p->ipv4.sgw_interface_name_for_S11);
+    fprintf(stdout, "    s11 S-GW ip ......: %s/%d\n",
             inet_ntoa(*((struct in_addr *)&mme_config_p->ipv4.sgw_ip_address_for_S11)),
             mme_config_p->ipv4.sgw_ip_netmask_for_S11);
-    fprintf(stdout, "    s11 MME iface ..: %s\n", mme_config_p->ipv4.mme_interface_name_for_S11);
-    fprintf(stdout, "    s11 S-GW ip ....: %s/%d\n",
+    fprintf(stdout, "    s11 MME iface ....: %s\n", mme_config_p->ipv4.mme_interface_name_for_S11);
+    fprintf(stdout, "    s11 S-GW ip ......: %s/%d\n",
             inet_ntoa(*((struct in_addr *)&mme_config_p->ipv4.mme_ip_address_for_S11)),
             mme_config_p->ipv4.mme_ip_netmask_for_S11);
     fprintf(stdout, "- ITTI:\n");
-    fprintf(stdout, "    queue size .....: %u (bytes)\n", mme_config_p->itti_config.queue_size);
-    fprintf(stdout, "    log file .......: %s\n", mme_config_p->itti_config.log_file);
+    fprintf(stdout, "    queue size .......: %u (bytes)\n", mme_config_p->itti_config.queue_size);
+    fprintf(stdout, "    log file .........: %s\n", mme_config_p->itti_config.log_file);
     fprintf(stdout, "- SCTP:\n");
-    fprintf(stdout, "    in streams .....: %u\n", mme_config_p->sctp_config.in_streams);
-    fprintf(stdout, "    out streams ....: %u\n", mme_config_p->sctp_config.out_streams);
+    fprintf(stdout, "    in streams .......: %u\n", mme_config_p->sctp_config.in_streams);
+    fprintf(stdout, "    out streams ......: %u\n", mme_config_p->sctp_config.out_streams);
     fprintf(stdout, "- GUMMEI:\n");
-    fprintf(stdout, "    mme group ids ..:\n        ");
+    fprintf(stdout, "    mme group ids ....:\n        ");
     DISPLAY_ARRAY(mme_config_p->gummei.nb_mme_gid, "| %u ", mme_config_p->gummei.mme_gid[i]);
-    fprintf(stdout, "    mme codes ......:\n        ");
+    fprintf(stdout, "    mme codes ........:\n        ");
     DISPLAY_ARRAY(mme_config_p->gummei.nb_mmec, "| %u ", mme_config_p->gummei.mmec[i]);
-    fprintf(stdout, "    plmns ..........: (mcc.mnc:tac)\n        ");
+    fprintf(stdout, "    plmns ............: (mcc.mnc:tac)\n        ");
     DISPLAY_ARRAY(mme_config_p->gummei.nb_plmns, "| %3u.%3u:%u ",
                   mme_config_p->gummei.plmn_mcc[i], mme_config_p->gummei.plmn_mnc[i],
                   mme_config_p->gummei.plmn_tac[i]);
     fprintf(stdout, "- S6A:\n");
-    fprintf(stdout, "    conf file ......: %s\n", mme_config_p->s6a_config.conf_file);
+    fprintf(stdout, "    conf file ........: %s\n", mme_config_p->s6a_config.conf_file);
 }
 
 static void usage(void)
diff --git a/openair-cn/UTILS/mme_config.h b/openair-cn/UTILS/mme_config.h
index 0c8501d9083c18d204e539ee4d08b90ac315db01..0dd5f3eaafc343264c66336b547d4864414dee30 100644
--- a/openair-cn/UTILS/mme_config.h
+++ b/openair-cn/UTILS/mme_config.h
@@ -53,6 +53,9 @@ typedef struct mme_config_s {
 
     uint32_t mme_statistic_timer;
 
+    uint8_t emergency_attach_supported;
+    uint8_t unauthenticated_imsi_supported;
+
     struct {
         uint16_t  nb_mme_gid;
         uint16_t *mme_gid;
diff --git a/openair-cn/UTILS/mme_parser.y b/openair-cn/UTILS/mme_parser.y
index 2fcd78fa3930ed9eb2c6503cac4009084e2cec56..ceaedeb8e4a3c8f4d21183b40d9ecc669ab58716 100644
--- a/openair-cn/UTILS/mme_parser.y
+++ b/openair-cn/UTILS/mme_parser.y
@@ -41,6 +41,8 @@ int fddlex(YYSTYPE *lvalp, YYLTYPE *llocp);
 %token <string> QSTRING
 %token <integer> INTEGER
 
+%token EMERGENCY_ATTACH_SUPPORTED
+%token UNAUTHENTICATED_IMSI_SUPPORTED
 %token S6A_CONF
 %token MAX_UE
 %token MAX_ENB
@@ -79,6 +81,8 @@ int fddlex(YYSTYPE *lvalp, YYLTYPE *llocp);
 %%
 conffile:       /* If options not provided, we will default values */
     | conffile s6aconf
+    | conffile emergency_attach_supported
+    | conffile unauthenticated_imsi_supported
     | conffile maxenb
     | conffile maxue
     | conffile mmec
@@ -119,6 +123,24 @@ conffile:       /* If options not provided, we will default values */
     }
     ;
 
+emergency_attach_supported: EMERGENCY_ATTACH_SUPPORTED '=' INTEGER ';'
+    {
+        if ($3 != 0 && $3 != 1) {
+            yyerror(&yylloc, mme_config_p, "Invalid value (possible values are 0 or 1");
+            return EINVAL;
+        }
+        mme_config_p->emergency_attach_supported = $3;
+    };
+
+unauthenticated_imsi_supported: UNAUTHENTICATED_IMSI_SUPPORTED '=' INTEGER ';'
+    {
+        if ($3 != 0 && $3 != 1) {
+            yyerror(&yylloc, mme_config_p, "Invalid value (possible values are 0 or 1");
+            return EINVAL;
+        }
+        mme_config_p->unauthenticated_imsi_supported = $3;
+    };
+
 mme_statistic_timer: MME_STATISTIC_TIMER '=' INTEGER ';'
     {
         if ($3 <= 0) {
diff --git a/openair-cn/UTILS/mme_scanner.l b/openair-cn/UTILS/mme_scanner.l
index f8b5264ac9214354d7e8a004b480ada0f810ccef..064a13f5f2967c0af245b97dae8fa15ae61588a4 100644
--- a/openair-cn/UTILS/mme_scanner.l
+++ b/openair-cn/UTILS/mme_scanner.l
@@ -79,6 +79,8 @@ qstring     \"[^\"\n]*\"
 }
 
     /* Full words tokens (keywords) */
+(?i:"EMERGENCY_ATTACH_SUPPORTED")     { return EMERGENCY_ATTACH_SUPPORTED; }
+(?i:"UNAUTHENTICATED_IMSI_SUPPORTED") { return UNAUTHENTICATED_IMSI_SUPPORTED; }
 (?i:"MAXENB")                   { return MAX_ENB; }
 (?i:"MAXUE")                    { return MAX_UE; }
 (?i:"S6A_CONF")                 { return S6A_CONF; }