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 d1b4966cef85eb942fd6e92a8272f06c6d66f6a1..5b970e8f683f6cb2adabf5728e7c532d765ed579 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
@@ -82,13 +82,7 @@ static const UInt8_t _mme_api_xres[AUTH_XRES_SIZE] = {
     0x00, 0x00, 0x00, 0x00
 };
 
-/* Network IP version capability */
-enum {
-    MME_API_IPV4_ADDR,
-    MME_API_IPV6_ADDR,
-    MME_API_IPV4V6_ADDR,
-    MME_API_ADDR_MAX
-} _mme_api_ip_capability = MME_API_IPV4V6_ADDR;
+static mme_api_ip_version_t _mme_api_ip_capability = MME_API_IPV4V6_ADDR;
 
 /* Pool of IPv4 addresses */
 static uint8_t _mme_api_ipv4_addr[MME_API_PDN_MAX][4] = {
@@ -439,7 +433,7 @@ int mme_api_new_guti(const imsi_t *imsi, GUTI_t *guti, tac_t *tac, int *n_tacs)
  **                  Others:    None                                       **
  **                                                                        **
  ***************************************************************************/
-int mme_api_subscribe(OctetString *apn, OctetString *pdn_addr,
+int mme_api_subscribe(OctetString *apn, mme_api_ip_version_t mme_pdn_index, OctetString *pdn_addr,
                       int is_emergency, mme_api_qos_t *qos)
 {
     int rc = RETURNok;
@@ -460,9 +454,9 @@ int mme_api_subscribe(OctetString *apn, OctetString *pdn_addr,
     /* Assign PDN address */
     if ( pdn_addr && (_mme_api_pdn_id < MME_API_PDN_MAX) ) {
         pdn_addr->length =
-            _mme_api_pdn_addr[_mme_api_ip_capability][_mme_api_pdn_id].length;
+            _mme_api_pdn_addr[mme_pdn_index][_mme_api_pdn_id].length;
         pdn_addr->value =
-            _mme_api_pdn_addr[_mme_api_ip_capability][_mme_api_pdn_id].value;
+            _mme_api_pdn_addr[mme_pdn_index][_mme_api_pdn_id].value;
         /* Increment the total number of PDN connections */
         _mme_api_pdn_id += 1;
     } else {
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 644b4155f6cc6ec8fa8be2452632b1e069d3de42..30dc443063cfa3986e7e98ad50e94f0fb3154a50 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
@@ -49,6 +49,14 @@ typedef enum mme_api_feature_s {
     MME_API_SINGLE_ADDR_BEARERS     = (1<<4),
 } mme_api_feature_t;
 
+/* Network IP version capability */
+typedef enum mme_api_ip_version_e {
+    MME_API_IPV4_ADDR,
+    MME_API_IPV6_ADDR,
+    MME_API_IPV4V6_ADDR,
+    MME_API_ADDR_MAX
+} mme_api_ip_version_t;
+
 /*
  * EPS Mobility Management configuration data
  * ------------------------------------------
@@ -105,7 +113,7 @@ int mme_api_identify_imsi(const imsi_t *imsi, auth_vector_t *vector);
 int mme_api_identify_imei(const imei_t *imei, auth_vector_t *vector);
 int mme_api_new_guti(const imsi_t *imsi, GUTI_t *guti, tac_t *tac, int *n_tacs);
 
-int mme_api_subscribe(OctetString *apn, OctetString *pdn_addr,
+int mme_api_subscribe(OctetString *apn, mme_api_ip_version_t mme_pdn_index, OctetString *pdn_addr,
                       int is_emergency, mme_api_qos_t *qos);
 int mme_api_unsubscribe(OctetString *apn);
 
diff --git a/openair-cn/NAS/EURECOM-NAS/src/esm/PdnConnectivity.c b/openair-cn/NAS/EURECOM-NAS/src/esm/PdnConnectivity.c
index 98ad89dead7891cdb3f258bd5fae92cc70e569f7..6bddcc2b92329731ac55ca88ff1f4e324bfca555 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/esm/PdnConnectivity.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/esm/PdnConnectivity.c
@@ -663,11 +663,28 @@ int esm_proc_pdn_connectivity_request(emm_data_context_t *ctx, int pti,
     }
 
     if (rc != RETURNerror) {
+        mme_api_ip_version_t mme_pdn_index;
         int is_emergency = (request_type == ESM_PDN_REQUEST_EMERGENCY);
         mme_api_qos_t qos;
 
+        switch (pdn_type)
+        {
+            case ESM_PDN_TYPE_IPV4:
+                mme_pdn_index = MME_API_IPV4_ADDR;
+                break;
+
+            case ESM_PDN_TYPE_IPV6:
+                mme_pdn_index = MME_API_IPV6_ADDR;
+                break;
+
+            case ESM_PDN_TYPE_IPV4V6:
+            default:
+                mme_pdn_index = MME_API_IPV4V6_ADDR;
+                break;
+        }
+
         /* Check if connectivity with the requested PDN can be established */
-        rc = mme_api_subscribe(apn, pdn_addr, is_emergency, &qos);
+        rc = mme_api_subscribe(apn, mme_pdn_index, pdn_addr, is_emergency, &qos);
 
         if (rc != RETURNok) {
             LOG_TRACE(WARNING, "ESM-PROC  - Connectivity to the requested PDN "