diff --git a/openair3/COMMON/as_message.h b/openair3/COMMON/as_message.h
deleted file mode 120000
index 3bfc76865acee46a60802c21105d4fa1822373d0..0000000000000000000000000000000000000000
--- a/openair3/COMMON/as_message.h
+++ /dev/null
@@ -1 +0,0 @@
-../../openair2/COMMON/as_message.h
\ No newline at end of file
diff --git a/openair3/COMMON/as_message.h b/openair3/COMMON/as_message.h
new file mode 100644
index 0000000000000000000000000000000000000000..30810a325eace63c944b947bfb8c0a6487094e80
--- /dev/null
+++ b/openair3/COMMON/as_message.h
@@ -0,0 +1,578 @@
+/*
+ * Copyright (c) 2015, EURECOM (www.eurecom.fr)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those
+ * of the authors and should not be interpreted as representing official policies,
+ * either expressed or implied, of the FreeBSD Project.
+ */
+
+
+/*****************************************************************************
+
+Source      as_message.h
+
+Version     0.1
+
+Date        2012/10/18
+
+Product     NAS stack
+
+Subsystem   Application Programming Interface
+
+Author      Frederic Maurel
+
+Description Defines the messages supported by the Access Stratum sublayer
+        protocol (usually RRC and S1AP for E-UTRAN) and functions used
+        to encode and decode
+
+*****************************************************************************/
+#ifndef __AS_MESSAGE_H__
+#define __AS_MESSAGE_H__
+
+#include "commonDef.h"
+#include "networkDef.h"
+
+/****************************************************************************/
+/*********************  G L O B A L    C O N S T A N T S  *******************/
+/****************************************************************************/
+
+/*
+ * --------------------------------------------------------------------------
+ *              Access Stratum message types
+ * --------------------------------------------------------------------------
+ */
+#define AS_REQUEST  0x0100
+#define AS_RESPONSE 0x0200
+#define AS_INDICATION   0x0400
+#define AS_CONFIRM  0x0800
+
+/*
+ * --------------------------------------------------------------------------
+ *          Access Stratum message identifiers
+ * --------------------------------------------------------------------------
+ */
+
+/* Broadcast information */
+#define AS_BROADCAST_INFO       0x01
+#define AS_BROADCAST_INFO_IND       (AS_BROADCAST_INFO | AS_INDICATION)
+
+/* Cell information relevant for cell selection processing */
+#define AS_CELL_INFO            0x02
+#define AS_CELL_INFO_REQ        (AS_CELL_INFO | AS_REQUEST)
+#define AS_CELL_INFO_CNF        (AS_CELL_INFO | AS_CONFIRM)
+#define AS_CELL_INFO_IND        (AS_CELL_INFO | AS_INDICATION)
+
+/* Paging information */
+#define AS_PAGING           0x03
+#define AS_PAGING_REQ           (AS_PAGING | AS_REQUEST)
+#define AS_PAGING_IND           (AS_PAGING | AS_INDICATION)
+
+/* NAS signalling connection establishment */
+#define AS_NAS_ESTABLISH        0x04
+#define AS_NAS_ESTABLISH_REQ        (AS_NAS_ESTABLISH | AS_REQUEST)
+#define AS_NAS_ESTABLISH_IND        (AS_NAS_ESTABLISH | AS_INDICATION)
+#define AS_NAS_ESTABLISH_RSP        (AS_NAS_ESTABLISH | AS_RESPONSE)
+#define AS_NAS_ESTABLISH_CNF        (AS_NAS_ESTABLISH | AS_CONFIRM)
+
+/* NAS signalling connection release */
+#define AS_NAS_RELEASE          0x05
+#define AS_NAS_RELEASE_REQ      (AS_NAS_RELEASE | AS_REQUEST)
+#define AS_NAS_RELEASE_IND      (AS_NAS_RELEASE | AS_INDICATION)
+
+/* Uplink information transfer */
+#define AS_UL_INFO_TRANSFER     0x06
+#define AS_UL_INFO_TRANSFER_REQ     (AS_UL_INFO_TRANSFER | AS_REQUEST)
+#define AS_UL_INFO_TRANSFER_CNF     (AS_UL_INFO_TRANSFER | AS_CONFIRM)
+#define AS_UL_INFO_TRANSFER_IND     (AS_UL_INFO_TRANSFER | AS_INDICATION)
+
+/* Downlink information transfer */
+#define AS_DL_INFO_TRANSFER     0x07
+#define AS_DL_INFO_TRANSFER_REQ     (AS_DL_INFO_TRANSFER | AS_REQUEST)
+#define AS_DL_INFO_TRANSFER_CNF     (AS_DL_INFO_TRANSFER | AS_CONFIRM)
+#define AS_DL_INFO_TRANSFER_IND     (AS_DL_INFO_TRANSFER | AS_INDICATION)
+
+/* Radio Access Bearer establishment */
+#define AS_RAB_ESTABLISH        0x08
+#define AS_RAB_ESTABLISH_REQ        (AS_RAB_ESTABLISH | AS_REQUEST)
+#define AS_RAB_ESTABLISH_IND        (AS_RAB_ESTABLISH | AS_INDICATION)
+#define AS_RAB_ESTABLISH_RSP        (AS_RAB_ESTABLISH | AS_RESPONSE)
+#define AS_RAB_ESTABLISH_CNF        (AS_RAB_ESTABLISH | AS_CONFIRM)
+
+/* Radio Access Bearer release */
+#define AS_RAB_RELEASE          0x09
+#define AS_RAB_RELEASE_REQ      (AS_RAB_RELEASE | AS_REQUEST)
+#define AS_RAB_RELEASE_IND      (AS_RAB_RELEASE | AS_INDICATION)
+
+/* NAS Cause */
+#define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8)
+#define EPS_SERVICES_NOT_ALLOWED                      (7)
+#define PLMN_NOT_ALLOWED                              (11)
+#define TRACKING_AREA_NOT_ALLOWED                     (12)
+#define ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA     (13)
+#define EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN         (14)
+#define NO_SUITABLE_CELLS_IN_TRACKING_AREA            (15)
+#define NETWORK_FAILURE                               (17)
+#define ESM_FAILURE                                   (19)
+
+typedef enum nas_cause_s {
+  NAS_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED,
+  NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED                  = EPS_SERVICES_NOT_ALLOWED,
+  NAS_CAUSE_PLMN_NOT_ALLOWED                          = PLMN_NOT_ALLOWED,
+  NAS_CAUSE_TRACKING_AREA_NOT_ALLOWED                 = TRACKING_AREA_NOT_ALLOWED,
+  NAS_CAUSE_ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA = ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA,
+  NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN     = EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN,
+  NAS_CAUSE_NO_SUITABLE_CELLS_IN_TRACKING_AREA        = NO_SUITABLE_CELLS_IN_TRACKING_AREA,
+  NAS_CAUSE_NETWORK_FAILURE                           = NETWORK_FAILURE,
+  NAS_CAUSE_ESM_FAILURE                               = ESM_FAILURE
+} nas_cause_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          Access Stratum message global parameters
+ * --------------------------------------------------------------------------
+ */
+
+/* Error code */
+typedef enum nas_error_code_s {
+  AS_SUCCESS = 1, /* Success code, transaction is going on    */
+  AS_TERMINATED_NAS,  /* Transaction terminated by NAS        */
+  AS_TERMINATED_AS,   /* Transaction terminated by AS         */
+  AS_FAILURE      /* Failure code                 */
+} nas_error_code_t;
+
+/* Core network domain */
+typedef enum core_network_s {
+  AS_PS = 1,      /* Packet-Switched  */
+  AS_CS       /* Circuit-Switched */
+} core_network_t;
+
+/* SAE Temporary Mobile Subscriber Identity */
+typedef struct as_stmsi_s {
+  uint8_t MMEcode;    /* MME code that allocated the GUTI     */
+  uint32_t m_tmsi;    /* M-Temporary Mobile Subscriber Identity   */
+} as_stmsi_t;
+
+/* Dedicated NAS information */
+typedef struct as_nas_info_s {
+  uint32_t length;    /* Length of the NAS information data       */
+  Byte_t* data;   /* Dedicated NAS information data container */
+} as_nas_info_t;
+
+/* Radio Access Bearer identity */
+typedef uint8_t as_rab_id_t;
+
+/****************************************************************************/
+/************************  G L O B A L    T Y P E S  ************************/
+/****************************************************************************/
+
+/*
+ * --------------------------------------------------------------------------
+ *              Broadcast information
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * AS->NAS - Broadcast information indication
+ * AS may asynchronously report to NAS available PLMNs within specific
+ * location area
+ */
+typedef struct broadcast_info_ind_s {
+#define PLMN_LIST_MAX_SIZE  6
+  PLMN_LIST_T(PLMN_LIST_MAX_SIZE) plmnIDs; /* List of PLMN identifiers */
+  ci_t cellID;    /* Identity of the cell serving the listed PLMNs */
+  tac_t tac;      /* Code of the tracking area the cell belongs to */
+} broadcast_info_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *     Cell information relevant for cell selection processing
+ * --------------------------------------------------------------------------
+ */
+
+/* Radio access technologies supported by the network */
+#define AS_GSM              (1 << NET_ACCESS_GSM)
+#define AS_COMPACT          (1 << NET_ACCESS_COMPACT)
+#define AS_UTRAN            (1 << NET_ACCESS_UTRAN)
+#define AS_EGPRS            (1 << NET_ACCESS_EGPRS)
+#define AS_HSDPA            (1 << NET_ACCESS_HSDPA)
+#define AS_HSUPA            (1 << NET_ACCESS_HSUPA)
+#define AS_HSDUPA           (1 << NET_ACCESS_HSDUPA)
+#define AS_EUTRAN           (1 << NET_ACCESS_EUTRAN)
+
+/*
+ * NAS->AS - Cell Information request
+ * NAS request AS to search for a suitable cell belonging to the selected
+ * PLMN to camp on.
+ */
+typedef struct cell_info_req_s {
+  plmn_t plmnID;  /* Selected PLMN identity           */
+  Byte_t rat;     /* Bitmap - set of radio access technologies    */
+} cell_info_req_t;
+
+/*
+ * AS->NAS - Cell Information confirm
+ * AS search for a suitable cell and respond to NAS. If found, the cell
+ * is selected to camp on.
+ */
+typedef struct cell_info_cnf_s {
+  uint8_t errCode;    /* Error code                     */
+  ci_t cellID;    /* Identity of the cell serving the selected PLMN */
+  tac_t tac;      /* Code of the tracking area the cell belongs to  */
+  AcT_t rat;      /* Radio access technology supported by the cell  */
+  uint8_t rsrq;   /* Reference signal received quality         */
+  uint8_t rsrp;   /* Reference signal received power       */
+} cell_info_cnf_t;
+
+/*
+ * AS->NAS - Cell Information indication
+ * AS may change cell selection if a more suitable cell is found.
+ */
+typedef struct cell_info_ind_s {
+  ci_t cellID;    /* Identity of the new serving cell      */
+  tac_t tac;      /* Code of the tracking area the cell belongs to */
+} cell_info_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              Paging information
+ * --------------------------------------------------------------------------
+ */
+
+/* Paging cause */
+typedef enum paging_cause_s {
+  AS_CONNECTION_ESTABLISH,    /* Establish NAS signalling connection  */
+  AS_EPS_ATTACH,      /* Perform local detach and initiate EPS
+                 * attach procedure         */
+  AS_CS_FALLBACK      /* Inititate CS fallback procedure  */
+} paging_cause_t;
+
+/*
+ * NAS->AS - Paging Information request
+ * NAS requests the AS that NAS signalling messages or user data is pending
+ * to be sent.
+ */
+typedef struct paging_req_s {
+  as_stmsi_t s_tmsi;  /* UE identity                  */
+  uint8_t CN_domain;  /* Core network domain              */
+} paging_req_t;
+
+/*
+ * AS->NAS - Paging Information indication
+ * AS reports to the NAS that appropriate procedure has to be initiated.
+ */
+typedef struct paging_ind_s {
+  paging_cause_t cause;  /* Paging cause                 */
+} paging_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          NAS signalling connection establishment
+ * --------------------------------------------------------------------------
+ */
+
+/* Cause of RRC connection establishment */
+typedef enum as_cause_s {
+  AS_CAUSE_UNKNOWN    = 0,
+  AS_CAUSE_EMERGENCY  = NET_ESTABLISH_CAUSE_EMERGENCY,
+  AS_CAUSE_HIGH_PRIO  = NET_ESTABLISH_CAUSE_HIGH_PRIO,
+  AS_CAUSE_MT_ACCESS  = NET_ESTABLISH_CAUSE_MT_ACCESS,
+  AS_CAUSE_MO_SIGNAL  = NET_ESTABLISH_CAUSE_MO_SIGNAL,
+  AS_CAUSE_MO_DATA    = NET_ESTABLISH_CAUSE_MO_DATA,
+  AS_CAUSE_V1020      = NET_ESTABLISH_CAUSE_V1020
+} as_cause_t;
+
+/* Type of the call associated to the RRC connection establishment */
+typedef enum as_call_type_s {
+  AS_TYPE_ORIGINATING_SIGNAL  = NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL,
+  AS_TYPE_EMERGENCY_CALLS     = NET_ESTABLISH_TYPE_EMERGENCY_CALLS,
+  AS_TYPE_ORIGINATING_CALLS   = NET_ESTABLISH_TYPE_ORIGINATING_CALLS,
+  AS_TYPE_TERMINATING_CALLS   = NET_ESTABLISH_TYPE_TERMINATING_CALLS,
+  AS_TYPE_MO_CS_FALLBACK      = NET_ESTABLISH_TYPE_MO_CS_FALLBACK
+} as_call_type_t;
+
+/*
+ * NAS->AS - NAS signalling connection establishment request
+ * NAS requests the AS to perform the RRC connection establishment procedure
+ * to transfer initial NAS message to the network while UE is in IDLE mode.
+ */
+typedef struct nas_establish_req_s {
+  as_cause_t      cause;          /* RRC connection establishment cause   */
+  as_call_type_t  type;           /* RRC associated call type             */
+  as_stmsi_t      s_tmsi;         /* UE identity                          */
+  plmn_t          plmnID;         /* Selected PLMN identity               */
+  as_nas_info_t   initialNasMsg;  /* Initial NAS message to transfer      */
+} nas_establish_req_t;
+
+/*
+ * AS->NAS - NAS signalling connection establishment indication
+ * AS transfers the initial NAS message to the NAS.
+ */
+typedef struct nas_establish_ind_s {
+  uint32_t      UEid;          /* UE lower layer identifier               */
+  tac_t         tac;           /* Code of the tracking area the initiating
+                                  * UE belongs to                           */
+  as_cause_t    asCause;       /* Establishment cause                     */
+  as_nas_info_t initialNasMsg; /* Initial NAS message to transfer         */
+} nas_establish_ind_t;
+
+/*
+ * NAS->AS - NAS signalling connection establishment response
+ * NAS responds to the AS that initial answer message has to be provided to
+ * the UE.
+ */
+typedef struct nas_establish_rsp_s {
+  uint32_t         UEid;         /* UE lower layer identifier   */
+  as_stmsi_t       s_tmsi;       /* UE identity                 */
+  nas_error_code_t errCode;      /* Transaction status          */
+  as_nas_info_t    nasMsg;       /* NAS message to transfer     */
+  uint32_t         nas_ul_count; /* UL NAS COUNT                */
+  uint16_t         selected_encryption_algorithm;
+  uint16_t         selected_integrity_algorithm;
+} nas_establish_rsp_t;
+
+/*
+ * AS->NAS - NAS signalling connection establishment confirm
+ * AS transfers the initial answer message to the NAS.
+ */
+typedef struct nas_establish_cnf_s {
+  uint32_t         UEid;            /* UE lower layer identifier   */
+  nas_error_code_t errCode;         /* Transaction status          */
+  as_nas_info_t    nasMsg;          /* NAS message to transfer     */
+  uint32_t         ul_nas_count;
+  uint16_t         selected_encryption_algorithm;
+  uint16_t         selected_integrity_algorithm;
+} nas_establish_cnf_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          NAS signalling connection release
+ * --------------------------------------------------------------------------
+ */
+
+/* Release cause */
+typedef enum release_cause_s {
+  AS_AUTHENTICATION_FAILURE = 1,  /* Authentication procedure failed   */
+  AS_DETACH                       /* Detach requested                  */
+} release_cause_t;
+
+/*
+ * NAS->AS - NAS signalling connection release request
+ * NAS requests the termination of the connection with the UE.
+ */
+typedef struct nas_release_req_s {
+  uint32_t UEid;          /* UE lower layer identifier    */
+  as_stmsi_t s_tmsi;      /* UE identity                  */
+  release_cause_t cause;  /* Release cause                */
+} nas_release_req_t;
+
+/*
+ * AS->NAS - NAS signalling connection release indication
+ * AS reports that connection has been terminated by the network.
+ */
+typedef struct nas_release_ind_s {
+  release_cause_t cause;      /* Release cause            */
+} nas_release_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              NAS information transfer
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * NAS->AS - Uplink data transfer request
+ * NAS requests the AS to transfer uplink information to the NAS that
+ * operates at the network side.
+ */
+typedef struct ul_info_transfer_req_s {
+  uint32_t UEid;      /* UE lower layer identifier        */
+  as_stmsi_t s_tmsi;      /* UE identity              */
+  as_nas_info_t nasMsg;   /* Uplink NAS message           */
+} ul_info_transfer_req_t;
+
+/*
+ * AS->NAS - Uplink data transfer confirm
+ * AS immediately notifies the NAS whether uplink information has been
+ * successfully sent to the network or not.
+ */
+typedef struct ul_info_transfer_cnf_s {
+  uint32_t         UEid;      /* UE lower layer identifier        */
+  nas_error_code_t errCode;   /* Transaction status               */
+} ul_info_transfer_cnf_t;
+
+/*
+ * AS->NAS - Uplink data transfer indication
+ * AS delivers the uplink information message to the NAS that operates
+ * at the network side.
+ */
+typedef struct ul_info_transfer_ind_s {
+  uint32_t UEid;          /* UE lower layer identifier        */
+  as_nas_info_t nasMsg;   /* Uplink NAS message           */
+} ul_info_transfer_ind_t;
+
+/*
+ * NAS->AS - Downlink data transfer request
+ * NAS requests the AS to transfer downlink information to the NAS that
+ * operates at the UE side.
+ */
+typedef ul_info_transfer_req_t dl_info_transfer_req_t;
+
+/*
+ * AS->NAS - Downlink data transfer confirm
+ * AS immediately notifies the NAS whether downlink information has been
+ * successfully sent to the network or not.
+ */
+typedef ul_info_transfer_cnf_t dl_info_transfer_cnf_t;
+
+/*
+ * AS->NAS - Downlink data transfer indication
+ * AS delivers the downlink information message to the NAS that operates
+ * at the UE side.
+ */
+typedef ul_info_transfer_ind_t dl_info_transfer_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          Radio Access Bearer establishment
+ * --------------------------------------------------------------------------
+ */
+
+/* TODO: Quality of Service parameters */
+typedef struct {} as_qos_t;
+
+/*
+ * NAS->AS - Radio access bearer establishment request
+ * NAS requests the AS to allocate transmission resources to radio access
+ * bearer initialized at the network side.
+ */
+typedef struct rab_establish_req_s {
+  as_stmsi_t s_tmsi;      /* UE identity                      */
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+  as_qos_t QoS;           /* Requested Quality of Service     */
+} rab_establish_req_t;
+
+/*
+ * AS->NAS - Radio access bearer establishment indication
+ * AS notifies the NAS that specific radio access bearer has to be setup.
+ */
+typedef struct rab_establish_ind_s {
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_establish_ind_t;
+
+/*
+ * NAS->AS - Radio access bearer establishment response
+ * NAS responds to AS whether the specified radio access bearer has been
+ * successfully setup or not.
+ */
+typedef struct rab_establish_rsp_s {
+  as_stmsi_t       s_tmsi;        /* UE identity                      */
+  as_rab_id_t      rabID;         /* Radio access bearer identity     */
+  nas_error_code_t errCode;       /* Transaction status               */
+} rab_establish_rsp_t;
+
+/*
+ * AS->NAS - Radio access bearer establishment confirm
+ * AS notifies NAS whether the specified radio access bearer has been
+ * successfully setup at the UE side or not.
+ */
+typedef struct rab_establish_cnf_s {
+  as_rab_id_t rabID;          /* Radio access bearer identity     */
+  nas_error_code_t errCode;   /* Transaction status               */
+} rab_establish_cnf_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              Radio Access Bearer release
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * NAS->AS - Radio access bearer release request
+ * NAS requests the AS to release transmission resources previously allocated
+ * to specific radio access bearer at the network side.
+ */
+typedef struct rab_release_req_s {
+  as_stmsi_t s_tmsi;      /* UE identity                      */
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_release_req_t;
+
+/*
+ * AS->NAS - Radio access bearer release indication
+ * AS notifies NAS that specific radio access bearer has been released.
+ */
+typedef struct rab_release_ind_s {
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_release_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *  Structure of the AS messages handled by the network sublayer
+ * --------------------------------------------------------------------------
+ */
+typedef struct as_message_s {
+  uint16_t msgID;
+  union {
+    broadcast_info_ind_t broadcast_info_ind;
+    cell_info_req_t cell_info_req;
+    cell_info_cnf_t cell_info_cnf;
+    cell_info_ind_t cell_info_ind;
+    paging_req_t paging_req;
+    paging_ind_t paging_ind;
+    nas_establish_req_t nas_establish_req;
+    nas_establish_ind_t nas_establish_ind;
+    nas_establish_rsp_t nas_establish_rsp;
+    nas_establish_cnf_t nas_establish_cnf;
+    nas_release_req_t nas_release_req;
+    nas_release_ind_t nas_release_ind;
+    ul_info_transfer_req_t ul_info_transfer_req;
+    ul_info_transfer_cnf_t ul_info_transfer_cnf;
+    ul_info_transfer_ind_t ul_info_transfer_ind;
+    dl_info_transfer_req_t dl_info_transfer_req;
+    dl_info_transfer_cnf_t dl_info_transfer_cnf;
+    dl_info_transfer_ind_t dl_info_transfer_ind;
+    rab_establish_req_t rab_establish_req;
+    rab_establish_ind_t rab_establish_ind;
+    rab_establish_rsp_t rab_establish_rsp;
+    rab_establish_cnf_t rab_establish_cnf;
+    rab_release_req_t rab_release_req;
+    rab_release_ind_t rab_release_ind;
+  } __attribute__((__packed__)) msg;
+} as_message_t;
+
+/****************************************************************************/
+/********************  G L O B A L    V A R I A B L E S  ********************/
+/****************************************************************************/
+
+/****************************************************************************/
+/******************  E X P O R T E D    F U N C T I O N S  ******************/
+/****************************************************************************/
+
+int as_message_decode(const char* buffer, as_message_t* msg, int length);
+
+int as_message_encode(char* buffer, as_message_t* msg, int length);
+
+/* Implemented in the network_api.c body file */
+int as_message_send(as_message_t* as_msg);
+
+#endif /* __AS_MESSAGE_H__*/
diff --git a/openair3/INTERTASK_INTERFACE b/openair3/INTERTASK_INTERFACE
deleted file mode 120000
index 4bc54522d8ea289234614619607e5c8e9d228c42..0000000000000000000000000000000000000000
--- a/openair3/INTERTASK_INTERFACE
+++ /dev/null
@@ -1 +0,0 @@
-../common/utils/itti
\ No newline at end of file
diff --git a/openair3/NAS/COMMON/API/NETWORK/as_message.h b/openair3/NAS/COMMON/API/NETWORK/as_message.h
deleted file mode 120000
index ef8d3686fd6b2b4f53bde09c5085a41cb523c0f0..0000000000000000000000000000000000000000
--- a/openair3/NAS/COMMON/API/NETWORK/as_message.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../openair2/COMMON/as_message.h
\ No newline at end of file
diff --git a/openair3/NAS/COMMON/API/NETWORK/as_message.h b/openair3/NAS/COMMON/API/NETWORK/as_message.h
new file mode 100644
index 0000000000000000000000000000000000000000..30810a325eace63c944b947bfb8c0a6487094e80
--- /dev/null
+++ b/openair3/NAS/COMMON/API/NETWORK/as_message.h
@@ -0,0 +1,578 @@
+/*
+ * Copyright (c) 2015, EURECOM (www.eurecom.fr)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those
+ * of the authors and should not be interpreted as representing official policies,
+ * either expressed or implied, of the FreeBSD Project.
+ */
+
+
+/*****************************************************************************
+
+Source      as_message.h
+
+Version     0.1
+
+Date        2012/10/18
+
+Product     NAS stack
+
+Subsystem   Application Programming Interface
+
+Author      Frederic Maurel
+
+Description Defines the messages supported by the Access Stratum sublayer
+        protocol (usually RRC and S1AP for E-UTRAN) and functions used
+        to encode and decode
+
+*****************************************************************************/
+#ifndef __AS_MESSAGE_H__
+#define __AS_MESSAGE_H__
+
+#include "commonDef.h"
+#include "networkDef.h"
+
+/****************************************************************************/
+/*********************  G L O B A L    C O N S T A N T S  *******************/
+/****************************************************************************/
+
+/*
+ * --------------------------------------------------------------------------
+ *              Access Stratum message types
+ * --------------------------------------------------------------------------
+ */
+#define AS_REQUEST  0x0100
+#define AS_RESPONSE 0x0200
+#define AS_INDICATION   0x0400
+#define AS_CONFIRM  0x0800
+
+/*
+ * --------------------------------------------------------------------------
+ *          Access Stratum message identifiers
+ * --------------------------------------------------------------------------
+ */
+
+/* Broadcast information */
+#define AS_BROADCAST_INFO       0x01
+#define AS_BROADCAST_INFO_IND       (AS_BROADCAST_INFO | AS_INDICATION)
+
+/* Cell information relevant for cell selection processing */
+#define AS_CELL_INFO            0x02
+#define AS_CELL_INFO_REQ        (AS_CELL_INFO | AS_REQUEST)
+#define AS_CELL_INFO_CNF        (AS_CELL_INFO | AS_CONFIRM)
+#define AS_CELL_INFO_IND        (AS_CELL_INFO | AS_INDICATION)
+
+/* Paging information */
+#define AS_PAGING           0x03
+#define AS_PAGING_REQ           (AS_PAGING | AS_REQUEST)
+#define AS_PAGING_IND           (AS_PAGING | AS_INDICATION)
+
+/* NAS signalling connection establishment */
+#define AS_NAS_ESTABLISH        0x04
+#define AS_NAS_ESTABLISH_REQ        (AS_NAS_ESTABLISH | AS_REQUEST)
+#define AS_NAS_ESTABLISH_IND        (AS_NAS_ESTABLISH | AS_INDICATION)
+#define AS_NAS_ESTABLISH_RSP        (AS_NAS_ESTABLISH | AS_RESPONSE)
+#define AS_NAS_ESTABLISH_CNF        (AS_NAS_ESTABLISH | AS_CONFIRM)
+
+/* NAS signalling connection release */
+#define AS_NAS_RELEASE          0x05
+#define AS_NAS_RELEASE_REQ      (AS_NAS_RELEASE | AS_REQUEST)
+#define AS_NAS_RELEASE_IND      (AS_NAS_RELEASE | AS_INDICATION)
+
+/* Uplink information transfer */
+#define AS_UL_INFO_TRANSFER     0x06
+#define AS_UL_INFO_TRANSFER_REQ     (AS_UL_INFO_TRANSFER | AS_REQUEST)
+#define AS_UL_INFO_TRANSFER_CNF     (AS_UL_INFO_TRANSFER | AS_CONFIRM)
+#define AS_UL_INFO_TRANSFER_IND     (AS_UL_INFO_TRANSFER | AS_INDICATION)
+
+/* Downlink information transfer */
+#define AS_DL_INFO_TRANSFER     0x07
+#define AS_DL_INFO_TRANSFER_REQ     (AS_DL_INFO_TRANSFER | AS_REQUEST)
+#define AS_DL_INFO_TRANSFER_CNF     (AS_DL_INFO_TRANSFER | AS_CONFIRM)
+#define AS_DL_INFO_TRANSFER_IND     (AS_DL_INFO_TRANSFER | AS_INDICATION)
+
+/* Radio Access Bearer establishment */
+#define AS_RAB_ESTABLISH        0x08
+#define AS_RAB_ESTABLISH_REQ        (AS_RAB_ESTABLISH | AS_REQUEST)
+#define AS_RAB_ESTABLISH_IND        (AS_RAB_ESTABLISH | AS_INDICATION)
+#define AS_RAB_ESTABLISH_RSP        (AS_RAB_ESTABLISH | AS_RESPONSE)
+#define AS_RAB_ESTABLISH_CNF        (AS_RAB_ESTABLISH | AS_CONFIRM)
+
+/* Radio Access Bearer release */
+#define AS_RAB_RELEASE          0x09
+#define AS_RAB_RELEASE_REQ      (AS_RAB_RELEASE | AS_REQUEST)
+#define AS_RAB_RELEASE_IND      (AS_RAB_RELEASE | AS_INDICATION)
+
+/* NAS Cause */
+#define EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED (8)
+#define EPS_SERVICES_NOT_ALLOWED                      (7)
+#define PLMN_NOT_ALLOWED                              (11)
+#define TRACKING_AREA_NOT_ALLOWED                     (12)
+#define ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA     (13)
+#define EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN         (14)
+#define NO_SUITABLE_CELLS_IN_TRACKING_AREA            (15)
+#define NETWORK_FAILURE                               (17)
+#define ESM_FAILURE                                   (19)
+
+typedef enum nas_cause_s {
+  NAS_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED = EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED,
+  NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED                  = EPS_SERVICES_NOT_ALLOWED,
+  NAS_CAUSE_PLMN_NOT_ALLOWED                          = PLMN_NOT_ALLOWED,
+  NAS_CAUSE_TRACKING_AREA_NOT_ALLOWED                 = TRACKING_AREA_NOT_ALLOWED,
+  NAS_CAUSE_ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA = ROAMING_NOT_ALLOWED_IN_THIS_TRACKING_AREA,
+  NAS_CAUSE_EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN     = EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN,
+  NAS_CAUSE_NO_SUITABLE_CELLS_IN_TRACKING_AREA        = NO_SUITABLE_CELLS_IN_TRACKING_AREA,
+  NAS_CAUSE_NETWORK_FAILURE                           = NETWORK_FAILURE,
+  NAS_CAUSE_ESM_FAILURE                               = ESM_FAILURE
+} nas_cause_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          Access Stratum message global parameters
+ * --------------------------------------------------------------------------
+ */
+
+/* Error code */
+typedef enum nas_error_code_s {
+  AS_SUCCESS = 1, /* Success code, transaction is going on    */
+  AS_TERMINATED_NAS,  /* Transaction terminated by NAS        */
+  AS_TERMINATED_AS,   /* Transaction terminated by AS         */
+  AS_FAILURE      /* Failure code                 */
+} nas_error_code_t;
+
+/* Core network domain */
+typedef enum core_network_s {
+  AS_PS = 1,      /* Packet-Switched  */
+  AS_CS       /* Circuit-Switched */
+} core_network_t;
+
+/* SAE Temporary Mobile Subscriber Identity */
+typedef struct as_stmsi_s {
+  uint8_t MMEcode;    /* MME code that allocated the GUTI     */
+  uint32_t m_tmsi;    /* M-Temporary Mobile Subscriber Identity   */
+} as_stmsi_t;
+
+/* Dedicated NAS information */
+typedef struct as_nas_info_s {
+  uint32_t length;    /* Length of the NAS information data       */
+  Byte_t* data;   /* Dedicated NAS information data container */
+} as_nas_info_t;
+
+/* Radio Access Bearer identity */
+typedef uint8_t as_rab_id_t;
+
+/****************************************************************************/
+/************************  G L O B A L    T Y P E S  ************************/
+/****************************************************************************/
+
+/*
+ * --------------------------------------------------------------------------
+ *              Broadcast information
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * AS->NAS - Broadcast information indication
+ * AS may asynchronously report to NAS available PLMNs within specific
+ * location area
+ */
+typedef struct broadcast_info_ind_s {
+#define PLMN_LIST_MAX_SIZE  6
+  PLMN_LIST_T(PLMN_LIST_MAX_SIZE) plmnIDs; /* List of PLMN identifiers */
+  ci_t cellID;    /* Identity of the cell serving the listed PLMNs */
+  tac_t tac;      /* Code of the tracking area the cell belongs to */
+} broadcast_info_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *     Cell information relevant for cell selection processing
+ * --------------------------------------------------------------------------
+ */
+
+/* Radio access technologies supported by the network */
+#define AS_GSM              (1 << NET_ACCESS_GSM)
+#define AS_COMPACT          (1 << NET_ACCESS_COMPACT)
+#define AS_UTRAN            (1 << NET_ACCESS_UTRAN)
+#define AS_EGPRS            (1 << NET_ACCESS_EGPRS)
+#define AS_HSDPA            (1 << NET_ACCESS_HSDPA)
+#define AS_HSUPA            (1 << NET_ACCESS_HSUPA)
+#define AS_HSDUPA           (1 << NET_ACCESS_HSDUPA)
+#define AS_EUTRAN           (1 << NET_ACCESS_EUTRAN)
+
+/*
+ * NAS->AS - Cell Information request
+ * NAS request AS to search for a suitable cell belonging to the selected
+ * PLMN to camp on.
+ */
+typedef struct cell_info_req_s {
+  plmn_t plmnID;  /* Selected PLMN identity           */
+  Byte_t rat;     /* Bitmap - set of radio access technologies    */
+} cell_info_req_t;
+
+/*
+ * AS->NAS - Cell Information confirm
+ * AS search for a suitable cell and respond to NAS. If found, the cell
+ * is selected to camp on.
+ */
+typedef struct cell_info_cnf_s {
+  uint8_t errCode;    /* Error code                     */
+  ci_t cellID;    /* Identity of the cell serving the selected PLMN */
+  tac_t tac;      /* Code of the tracking area the cell belongs to  */
+  AcT_t rat;      /* Radio access technology supported by the cell  */
+  uint8_t rsrq;   /* Reference signal received quality         */
+  uint8_t rsrp;   /* Reference signal received power       */
+} cell_info_cnf_t;
+
+/*
+ * AS->NAS - Cell Information indication
+ * AS may change cell selection if a more suitable cell is found.
+ */
+typedef struct cell_info_ind_s {
+  ci_t cellID;    /* Identity of the new serving cell      */
+  tac_t tac;      /* Code of the tracking area the cell belongs to */
+} cell_info_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              Paging information
+ * --------------------------------------------------------------------------
+ */
+
+/* Paging cause */
+typedef enum paging_cause_s {
+  AS_CONNECTION_ESTABLISH,    /* Establish NAS signalling connection  */
+  AS_EPS_ATTACH,      /* Perform local detach and initiate EPS
+                 * attach procedure         */
+  AS_CS_FALLBACK      /* Inititate CS fallback procedure  */
+} paging_cause_t;
+
+/*
+ * NAS->AS - Paging Information request
+ * NAS requests the AS that NAS signalling messages or user data is pending
+ * to be sent.
+ */
+typedef struct paging_req_s {
+  as_stmsi_t s_tmsi;  /* UE identity                  */
+  uint8_t CN_domain;  /* Core network domain              */
+} paging_req_t;
+
+/*
+ * AS->NAS - Paging Information indication
+ * AS reports to the NAS that appropriate procedure has to be initiated.
+ */
+typedef struct paging_ind_s {
+  paging_cause_t cause;  /* Paging cause                 */
+} paging_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          NAS signalling connection establishment
+ * --------------------------------------------------------------------------
+ */
+
+/* Cause of RRC connection establishment */
+typedef enum as_cause_s {
+  AS_CAUSE_UNKNOWN    = 0,
+  AS_CAUSE_EMERGENCY  = NET_ESTABLISH_CAUSE_EMERGENCY,
+  AS_CAUSE_HIGH_PRIO  = NET_ESTABLISH_CAUSE_HIGH_PRIO,
+  AS_CAUSE_MT_ACCESS  = NET_ESTABLISH_CAUSE_MT_ACCESS,
+  AS_CAUSE_MO_SIGNAL  = NET_ESTABLISH_CAUSE_MO_SIGNAL,
+  AS_CAUSE_MO_DATA    = NET_ESTABLISH_CAUSE_MO_DATA,
+  AS_CAUSE_V1020      = NET_ESTABLISH_CAUSE_V1020
+} as_cause_t;
+
+/* Type of the call associated to the RRC connection establishment */
+typedef enum as_call_type_s {
+  AS_TYPE_ORIGINATING_SIGNAL  = NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL,
+  AS_TYPE_EMERGENCY_CALLS     = NET_ESTABLISH_TYPE_EMERGENCY_CALLS,
+  AS_TYPE_ORIGINATING_CALLS   = NET_ESTABLISH_TYPE_ORIGINATING_CALLS,
+  AS_TYPE_TERMINATING_CALLS   = NET_ESTABLISH_TYPE_TERMINATING_CALLS,
+  AS_TYPE_MO_CS_FALLBACK      = NET_ESTABLISH_TYPE_MO_CS_FALLBACK
+} as_call_type_t;
+
+/*
+ * NAS->AS - NAS signalling connection establishment request
+ * NAS requests the AS to perform the RRC connection establishment procedure
+ * to transfer initial NAS message to the network while UE is in IDLE mode.
+ */
+typedef struct nas_establish_req_s {
+  as_cause_t      cause;          /* RRC connection establishment cause   */
+  as_call_type_t  type;           /* RRC associated call type             */
+  as_stmsi_t      s_tmsi;         /* UE identity                          */
+  plmn_t          plmnID;         /* Selected PLMN identity               */
+  as_nas_info_t   initialNasMsg;  /* Initial NAS message to transfer      */
+} nas_establish_req_t;
+
+/*
+ * AS->NAS - NAS signalling connection establishment indication
+ * AS transfers the initial NAS message to the NAS.
+ */
+typedef struct nas_establish_ind_s {
+  uint32_t      UEid;          /* UE lower layer identifier               */
+  tac_t         tac;           /* Code of the tracking area the initiating
+                                  * UE belongs to                           */
+  as_cause_t    asCause;       /* Establishment cause                     */
+  as_nas_info_t initialNasMsg; /* Initial NAS message to transfer         */
+} nas_establish_ind_t;
+
+/*
+ * NAS->AS - NAS signalling connection establishment response
+ * NAS responds to the AS that initial answer message has to be provided to
+ * the UE.
+ */
+typedef struct nas_establish_rsp_s {
+  uint32_t         UEid;         /* UE lower layer identifier   */
+  as_stmsi_t       s_tmsi;       /* UE identity                 */
+  nas_error_code_t errCode;      /* Transaction status          */
+  as_nas_info_t    nasMsg;       /* NAS message to transfer     */
+  uint32_t         nas_ul_count; /* UL NAS COUNT                */
+  uint16_t         selected_encryption_algorithm;
+  uint16_t         selected_integrity_algorithm;
+} nas_establish_rsp_t;
+
+/*
+ * AS->NAS - NAS signalling connection establishment confirm
+ * AS transfers the initial answer message to the NAS.
+ */
+typedef struct nas_establish_cnf_s {
+  uint32_t         UEid;            /* UE lower layer identifier   */
+  nas_error_code_t errCode;         /* Transaction status          */
+  as_nas_info_t    nasMsg;          /* NAS message to transfer     */
+  uint32_t         ul_nas_count;
+  uint16_t         selected_encryption_algorithm;
+  uint16_t         selected_integrity_algorithm;
+} nas_establish_cnf_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          NAS signalling connection release
+ * --------------------------------------------------------------------------
+ */
+
+/* Release cause */
+typedef enum release_cause_s {
+  AS_AUTHENTICATION_FAILURE = 1,  /* Authentication procedure failed   */
+  AS_DETACH                       /* Detach requested                  */
+} release_cause_t;
+
+/*
+ * NAS->AS - NAS signalling connection release request
+ * NAS requests the termination of the connection with the UE.
+ */
+typedef struct nas_release_req_s {
+  uint32_t UEid;          /* UE lower layer identifier    */
+  as_stmsi_t s_tmsi;      /* UE identity                  */
+  release_cause_t cause;  /* Release cause                */
+} nas_release_req_t;
+
+/*
+ * AS->NAS - NAS signalling connection release indication
+ * AS reports that connection has been terminated by the network.
+ */
+typedef struct nas_release_ind_s {
+  release_cause_t cause;      /* Release cause            */
+} nas_release_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              NAS information transfer
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * NAS->AS - Uplink data transfer request
+ * NAS requests the AS to transfer uplink information to the NAS that
+ * operates at the network side.
+ */
+typedef struct ul_info_transfer_req_s {
+  uint32_t UEid;      /* UE lower layer identifier        */
+  as_stmsi_t s_tmsi;      /* UE identity              */
+  as_nas_info_t nasMsg;   /* Uplink NAS message           */
+} ul_info_transfer_req_t;
+
+/*
+ * AS->NAS - Uplink data transfer confirm
+ * AS immediately notifies the NAS whether uplink information has been
+ * successfully sent to the network or not.
+ */
+typedef struct ul_info_transfer_cnf_s {
+  uint32_t         UEid;      /* UE lower layer identifier        */
+  nas_error_code_t errCode;   /* Transaction status               */
+} ul_info_transfer_cnf_t;
+
+/*
+ * AS->NAS - Uplink data transfer indication
+ * AS delivers the uplink information message to the NAS that operates
+ * at the network side.
+ */
+typedef struct ul_info_transfer_ind_s {
+  uint32_t UEid;          /* UE lower layer identifier        */
+  as_nas_info_t nasMsg;   /* Uplink NAS message           */
+} ul_info_transfer_ind_t;
+
+/*
+ * NAS->AS - Downlink data transfer request
+ * NAS requests the AS to transfer downlink information to the NAS that
+ * operates at the UE side.
+ */
+typedef ul_info_transfer_req_t dl_info_transfer_req_t;
+
+/*
+ * AS->NAS - Downlink data transfer confirm
+ * AS immediately notifies the NAS whether downlink information has been
+ * successfully sent to the network or not.
+ */
+typedef ul_info_transfer_cnf_t dl_info_transfer_cnf_t;
+
+/*
+ * AS->NAS - Downlink data transfer indication
+ * AS delivers the downlink information message to the NAS that operates
+ * at the UE side.
+ */
+typedef ul_info_transfer_ind_t dl_info_transfer_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *          Radio Access Bearer establishment
+ * --------------------------------------------------------------------------
+ */
+
+/* TODO: Quality of Service parameters */
+typedef struct {} as_qos_t;
+
+/*
+ * NAS->AS - Radio access bearer establishment request
+ * NAS requests the AS to allocate transmission resources to radio access
+ * bearer initialized at the network side.
+ */
+typedef struct rab_establish_req_s {
+  as_stmsi_t s_tmsi;      /* UE identity                      */
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+  as_qos_t QoS;           /* Requested Quality of Service     */
+} rab_establish_req_t;
+
+/*
+ * AS->NAS - Radio access bearer establishment indication
+ * AS notifies the NAS that specific radio access bearer has to be setup.
+ */
+typedef struct rab_establish_ind_s {
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_establish_ind_t;
+
+/*
+ * NAS->AS - Radio access bearer establishment response
+ * NAS responds to AS whether the specified radio access bearer has been
+ * successfully setup or not.
+ */
+typedef struct rab_establish_rsp_s {
+  as_stmsi_t       s_tmsi;        /* UE identity                      */
+  as_rab_id_t      rabID;         /* Radio access bearer identity     */
+  nas_error_code_t errCode;       /* Transaction status               */
+} rab_establish_rsp_t;
+
+/*
+ * AS->NAS - Radio access bearer establishment confirm
+ * AS notifies NAS whether the specified radio access bearer has been
+ * successfully setup at the UE side or not.
+ */
+typedef struct rab_establish_cnf_s {
+  as_rab_id_t rabID;          /* Radio access bearer identity     */
+  nas_error_code_t errCode;   /* Transaction status               */
+} rab_establish_cnf_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *              Radio Access Bearer release
+ * --------------------------------------------------------------------------
+ */
+
+/*
+ * NAS->AS - Radio access bearer release request
+ * NAS requests the AS to release transmission resources previously allocated
+ * to specific radio access bearer at the network side.
+ */
+typedef struct rab_release_req_s {
+  as_stmsi_t s_tmsi;      /* UE identity                      */
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_release_req_t;
+
+/*
+ * AS->NAS - Radio access bearer release indication
+ * AS notifies NAS that specific radio access bearer has been released.
+ */
+typedef struct rab_release_ind_s {
+  as_rab_id_t rabID;      /* Radio access bearer identity     */
+} rab_release_ind_t;
+
+/*
+ * --------------------------------------------------------------------------
+ *  Structure of the AS messages handled by the network sublayer
+ * --------------------------------------------------------------------------
+ */
+typedef struct as_message_s {
+  uint16_t msgID;
+  union {
+    broadcast_info_ind_t broadcast_info_ind;
+    cell_info_req_t cell_info_req;
+    cell_info_cnf_t cell_info_cnf;
+    cell_info_ind_t cell_info_ind;
+    paging_req_t paging_req;
+    paging_ind_t paging_ind;
+    nas_establish_req_t nas_establish_req;
+    nas_establish_ind_t nas_establish_ind;
+    nas_establish_rsp_t nas_establish_rsp;
+    nas_establish_cnf_t nas_establish_cnf;
+    nas_release_req_t nas_release_req;
+    nas_release_ind_t nas_release_ind;
+    ul_info_transfer_req_t ul_info_transfer_req;
+    ul_info_transfer_cnf_t ul_info_transfer_cnf;
+    ul_info_transfer_ind_t ul_info_transfer_ind;
+    dl_info_transfer_req_t dl_info_transfer_req;
+    dl_info_transfer_cnf_t dl_info_transfer_cnf;
+    dl_info_transfer_ind_t dl_info_transfer_ind;
+    rab_establish_req_t rab_establish_req;
+    rab_establish_ind_t rab_establish_ind;
+    rab_establish_rsp_t rab_establish_rsp;
+    rab_establish_cnf_t rab_establish_cnf;
+    rab_release_req_t rab_release_req;
+    rab_release_ind_t rab_release_ind;
+  } __attribute__((__packed__)) msg;
+} as_message_t;
+
+/****************************************************************************/
+/********************  G L O B A L    V A R I A B L E S  ********************/
+/****************************************************************************/
+
+/****************************************************************************/
+/******************  E X P O R T E D    F U N C T I O N S  ******************/
+/****************************************************************************/
+
+int as_message_decode(const char* buffer, as_message_t* msg, int length);
+
+int as_message_encode(char* buffer, as_message_t* msg, int length);
+
+/* Implemented in the network_api.c body file */
+int as_message_send(as_message_t* as_msg);
+
+#endif /* __AS_MESSAGE_H__*/
diff --git a/openair3/NAS/COMMON/commonDef.h b/openair3/NAS/COMMON/commonDef.h
deleted file mode 120000
index 19553e9b6485b5e512d086e2f72abf1a1f387b97..0000000000000000000000000000000000000000
--- a/openair3/NAS/COMMON/commonDef.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../openair2/COMMON/commonDef.h
\ No newline at end of file
diff --git a/openair3/NAS/COMMON/commonDef.h b/openair3/NAS/COMMON/commonDef.h
new file mode 100644
index 0000000000000000000000000000000000000000..64216b009465119c56e0d357dab48875b7c4be08
--- /dev/null
+++ b/openair3/NAS/COMMON/commonDef.h
@@ -0,0 +1,342 @@
+/*
+ * Copyright (c) 2015, EURECOM (www.eurecom.fr)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those
+ * of the authors and should not be interpreted as representing official policies,
+ * either expressed or implied, of the FreeBSD Project.
+ */
+/*
+
+Source      commonDef.h
+
+Version     0.1
+
+Date        2012/02/27
+
+Product     NAS stack
+
+Subsystem   include
+
+Author      Frederic Maurel
+
+Description Contains global common definitions
+
+*****************************************************************************/
+#ifndef __COMMONDEF_H__
+#define __COMMONDEF_H__
+
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+
+typedef signed char        boolean_t;
+
+#if !defined(TRUE)
+#define TRUE               (boolean_t)0x01
+#endif
+
+#if !defined(FALSE)
+#define FALSE              (boolean_t)0x00
+#endif
+
+#define BOOL_NOT(b) (b^TRUE)
+
+#define NAS_UE_ID_FMT "0x%06x"
+
+/****************************************************************************/
+/*********************  G L O B A L    C O N S T A N T S  *******************/
+/****************************************************************************/
+
+#define RETURNok        (0)
+#define RETURNerror     (-1)
+
+/*
+ * Name of the environment variable which defines the default directory
+ * where the NAS application is executed and where are located files
+ * where non-volatile data are stored
+ */
+#define DEFAULT_NAS_PATH    "PWD"
+
+/****************************************************************************/
+/************************  G L O B A L    T Y P E S  ************************/
+/****************************************************************************/
+
+/*
+-----------------------------------------------------------------------------
+            Standard data type definitions
+-----------------------------------------------------------------------------
+*/
+typedef int8_t      SByte_t;    /* 8 bit  signed integer     */
+typedef uint8_t     Byte_t;     /* 8 bit unsigned integer   */
+
+
+/*
+-----------------------------------------------------------------------------
+            Common NAS data type definitions
+-----------------------------------------------------------------------------
+*/
+
+typedef uint8_t     Stat_t;     /* Registration status  */
+typedef uint16_t    lac_t;      /* Location Area Code   */
+typedef uint8_t     rac_t;      /* Routing Area Code    */
+typedef uint16_t    tac_t;      /* Tracking Area Code   */
+typedef uint32_t    ci_t;       /* Cell Identifier  */
+typedef uint8_t     AcT_t;      /* Access Technology    */
+
+/*
+ * International Mobile Subscriber Identity
+ */
+typedef struct {
+  Byte_t length;
+  union {
+    struct {
+      Byte_t digit2:4;
+      Byte_t digit1:4;
+      Byte_t digit4:4;
+      Byte_t digit3:4;
+      Byte_t digit6:4;
+      Byte_t digit5:4;
+      Byte_t digit8:4;
+      Byte_t digit7:4;
+      Byte_t digit10:4;
+      Byte_t digit9:4;
+      Byte_t digit12:4;
+      Byte_t digit11:4;
+      Byte_t digit14:4;
+      Byte_t digit13:4;
+#define EVEN_PARITY 0
+#define ODD_PARITY  1
+      Byte_t parity:4;
+      Byte_t digit15:4;
+    } num;
+#define IMSI_SIZE   8
+    Byte_t value[IMSI_SIZE];
+  } u;
+} imsi_t;
+
+#define NAS_IMSI2STR(iMsI_t_PtR,iMsI_sTr, MaXlEn) \
+        {\
+          int l_offset = 0;\
+          int l_ret    = 0;\
+          l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u%u%u%u%u",\
+	    		  iMsI_t_PtR->u.num.digit1, iMsI_t_PtR->u.num.digit2,\
+	    		  iMsI_t_PtR->u.num.digit3, iMsI_t_PtR->u.num.digit4,\
+	    		  iMsI_t_PtR->u.num.digit5);\
+	      if ((iMsI_t_PtR->u.num.digit6 != 0xf)  && (l_ret > 0)) {\
+	    	l_offset += l_ret;\
+	    	l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset,  "%u", iMsI_t_PtR->u.num.digit6);\
+	      }\
+	      if (l_ret > 0) {\
+	    	l_offset += l_ret;\
+	    	l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u%u%u%u%u%u%u%u",\
+	    		  iMsI_t_PtR->u.num.digit7, iMsI_t_PtR->u.num.digit8,\
+	    		  iMsI_t_PtR->u.num.digit9, iMsI_t_PtR->u.num.digit10,\
+	    		  iMsI_t_PtR->u.num.digit11, iMsI_t_PtR->u.num.digit12,\
+	    		  iMsI_t_PtR->u.num.digit13, iMsI_t_PtR->u.num.digit14);\
+	      }\
+	      if ((iMsI_t_PtR->u.num.digit15 != 0xf)   && (l_ret > 0)) {\
+	    	l_offset += l_ret;\
+	    	l_ret = snprintf(iMsI_sTr + l_offset, MaXlEn - l_offset, "%u", iMsI_t_PtR->u.num.digit15);\
+	      }\
+	    }
+
+/*
+ * Mobile subscriber dialing number
+ */
+typedef struct {
+  Byte_t ext:1;
+  /* Type Of Number           */
+#define MSISDN_TON_UNKNOWKN     0b000
+#define MSISDN_TON_INTERNATIONAL    0b001
+#define MSISDN_TON_NATIONAL     0b010
+#define MSISDN_TON_NETWORK      0b011
+#define MSISDN_TON_SUBCRIBER        0b100
+#define MSISDN_TON_ABBREVIATED      0b110
+#define MSISDN_TON_RESERVED     0b111
+  Byte_t ton:3;
+  /* Numbering Plan Identification    */
+#define MSISDN_NPI_UNKNOWN      0b0000
+#define MSISDN_NPI_ISDN_TELEPHONY   0b0001
+#define MSISDN_NPI_GENERIC      0b0010
+#define MSISDN_NPI_DATA         0b0011
+#define MSISDN_NPI_TELEX        0b0100
+#define MSISDN_NPI_MARITIME_MOBILE  0b0101
+#define MSISDN_NPI_LAND_MOBILE      0b0110
+#define MSISDN_NPI_ISDN_MOBILE      0b0111
+#define MSISDN_NPI_PRIVATE      0b1110
+#define MSISDN_NPI_RESERVED     0b1111
+  Byte_t npi:4;
+  /* Dialing Number           */
+  struct {
+    Byte_t lsb:4;
+    Byte_t msb:4;
+#define MSISDN_DIGIT_SIZE   10
+  } digit[MSISDN_DIGIT_SIZE];
+} msisdn_t;
+
+/*
+ * International Mobile Equipment Identity
+ */
+typedef imsi_t imei_t;
+
+/*
+ * Public Land Mobile Network identifier
+ * PLMN = BCD encoding (Mobile Country Code + Mobile Network Code)
+ */
+typedef struct {
+  Byte_t MCCdigit2:4;
+  Byte_t MCCdigit1:4;
+  Byte_t MNCdigit3:4;
+  Byte_t MCCdigit3:4;
+  Byte_t MNCdigit2:4;
+  Byte_t MNCdigit1:4;
+} plmn_t;
+
+/*
+ * Location Area Identification
+ */
+typedef struct {
+  plmn_t plmn;    /* <MCC> + <MNC>    */
+  lac_t lac;      /* Location Area Code   */
+} lai_t;
+
+/*
+ * GPRS Routing Area Identification
+ */
+typedef struct {
+  plmn_t plmn;    /* <MCC> + <MNC>    */
+  lac_t lac;      /* Location Area Code   */
+  rac_t rac;      /* Routing Area Code    */
+} RAI_t;
+
+/*
+ * EPS Tracking Area Identification
+ */
+typedef struct {
+  plmn_t plmn;    /* <MCC> + <MNC>    */
+  tac_t tac;      /* Tracking Area Code   */
+} tai_t;
+
+/*
+ * EPS Globally Unique MME Identity
+ */
+typedef struct {
+  plmn_t plmn;    /* <MCC> + <MNC>    */
+  uint16_t MMEgid;    /* MME group identifier */
+  uint8_t MMEcode;    /* MME code     */
+} gummei_t;
+
+/*
+ * EPS Globally Unique Temporary UE Identity
+ */
+typedef struct {
+  gummei_t gummei;    /* Globally Unique MME Identity         */
+  uint32_t m_tmsi;    /* M-Temporary Mobile Subscriber Identity   */
+} GUTI_t;
+#define GUTI2STR(GuTi_PtR, GuTi_StR, MaXlEn) \
+        {\
+          int l_offset = 0;\
+          int l_ret    = 0;\
+          l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%03u.",\
+	    		  GuTi_PtR->gummei.plmn.MCCdigit3 * 100 +\
+                  GuTi_PtR->gummei.plmn.MCCdigit2 * 10 +\
+                  GuTi_PtR->gummei.plmn.MCCdigit1);\
+          if (l_ret > 0) {\
+        	l_offset += l_ret;\
+          }  else {\
+        	l_offset = MaXlEn;\
+          }\
+          if (GuTi_PtR->gummei.plmn.MNCdigit1 != 0xf) {\
+              l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%03u|%04x|%02x|%08x",\
+    	    		  GuTi_PtR->gummei.plmn.MNCdigit3 * 100 +\
+                      GuTi_PtR->gummei.plmn.MNCdigit2 * 10 +\
+                      GuTi_PtR->gummei.plmn.MNCdigit1,\
+                      GuTi_PtR->gummei.MMEgid,\
+                      GuTi_PtR->gummei.MMEcode,\
+                      GuTi_PtR->m_tmsi);\
+          } else {\
+              l_ret += snprintf(GuTi_StR + l_offset,MaXlEn-l_offset, "%02u|%04x|%02x|%08x",\
+                      GuTi_PtR->gummei.plmn.MNCdigit2 * 10 +\
+                      GuTi_PtR->gummei.plmn.MNCdigit1,\
+                      GuTi_PtR->gummei.MMEgid,\
+                      GuTi_PtR->gummei.MMEcode,\
+                      GuTi_PtR->m_tmsi);\
+          }\
+	    }
+
+
+
+
+/* Checks PLMN validity */
+#define PLMN_IS_VALID(plmn) (((plmn).MCCdigit1 &    \
+                              (plmn).MCCdigit2 &    \
+                              (plmn).MCCdigit3) != 0x0F)
+
+/* Checks TAC validity */
+#define TAC_IS_VALID(tac)   (((tac) != 0x0000) && ((tac) != 0xFFF0))
+
+/* Checks TAI validity */
+#define TAI_IS_VALID(tai)   (PLMN_IS_VALID((tai).plmn) &&   \
+                             TAC_IS_VALID((tai).tac))
+/*
+ * A list of PLMNs
+ */
+#define PLMN_LIST_T(SIZE) struct {Byte_t n_plmns; plmn_t plmn[SIZE];}
+
+/*
+ * A list of TACs
+ */
+#define TAC_LIST_T(SIZE) struct {Byte_t n_tacs; TAC_t tac[SIZE];}
+
+/*
+ * A list of TAIs
+ */
+#define TAI_LIST_T(SIZE) struct {Byte_t n_tais; tai_t tai[SIZE];}
+
+/*
+ * User notification callback, executed whenever a change of data with
+ * respect of network information (e.g. network registration and/or
+ * location change, new PLMN becomes available) is notified by the
+ * EPS Mobility Management sublayer
+ */
+typedef int (*emm_indication_callback_t) (Stat_t, tac_t, ci_t, AcT_t,
+    const char*, size_t);
+
+typedef enum eps_protocol_discriminator_e {
+  /* Protocol discriminator identifier for EPS Mobility Management */
+  EPS_MOBILITY_MANAGEMENT_MESSAGE =   0x7,
+
+  /* Protocol discriminator identifier for EPS Session Management */
+  EPS_SESSION_MANAGEMENT_MESSAGE =    0x2,
+} eps_protocol_discriminator_t;
+
+/****************************************************************************/
+/********************  G L O B A L    V A R I A B L E S  ********************/
+/****************************************************************************/
+
+/****************************************************************************/
+/******************  E X P O R T E D    F U N C T I O N S  ******************/
+/****************************************************************************/
+
+#endif /* __COMMONDEF_H__*/
diff --git a/openair3/NAS/COMMON/networkDef.h b/openair3/NAS/COMMON/networkDef.h
deleted file mode 120000
index 2648b55e992973fc58c9c2c0e12b99733fba0010..0000000000000000000000000000000000000000
--- a/openair3/NAS/COMMON/networkDef.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../openair2/COMMON/networkDef.h
\ No newline at end of file
diff --git a/openair3/NAS/COMMON/networkDef.h b/openair3/NAS/COMMON/networkDef.h
new file mode 100644
index 0000000000000000000000000000000000000000..46716bee24714ab2273744c4634a0924d9320207
--- /dev/null
+++ b/openair3/NAS/COMMON/networkDef.h
@@ -0,0 +1,278 @@
+/*
+ * Copyright (c) 2015, EURECOM (www.eurecom.fr)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ *    list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those
+ * of the authors and should not be interpreted as representing official policies,
+ * either expressed or implied, of the FreeBSD Project.
+ */
+
+/*****************************************************************************
+
+Source      networkDef.h
+
+Version     0.1
+
+Date        2012/09/21
+
+Product     NAS stack
+
+Subsystem   include
+
+Author      Frederic Maurel
+
+Description Contains network's global definitions
+
+*****************************************************************************/
+#ifndef __NETWORKDEF_H__
+#define __NETWORKDEF_H__
+
+/****************************************************************************/
+/*********************  G L O B A L    C O N S T A N T S  *******************/
+/****************************************************************************/
+
+/*
+ * ----------------------
+ * Network selection mode
+ * ----------------------
+ */
+#define NET_PLMN_AUTO           0
+#define NET_PLMN_MANUAL         1
+
+/*
+ * ---------------------------
+ * Network registration status
+ * ---------------------------
+ */
+/* not registered, not currently searching an operator to register to */
+#define NET_REG_STATE_OFF       0
+/* registered, home network                       */
+#define NET_REG_STATE_HN        1
+/* not registered, currently trying to attach or searching an operator
+ * to register to                         */
+#define NET_REG_STATE_ON        2
+/* registration denied                        */
+#define NET_REG_STATE_DENIED        3
+/* unknown (e.g. out of GERAN/UTRAN/E-UTRAN coverage)         */
+#define NET_REG_STATE_UNKNOWN       4
+/* registered, roaming                        */
+#define NET_REG_STATE_ROAMING       5
+/* registered for "SMS only", home network                */
+#define NET_REG_STATE_SMS_HN        6
+/* registered, for "SMS only", roaming                */
+#define NET_REG_STATE_SMS_ROAMING   7
+/* attached for emergency bearer services only (applicable to UTRAN)  */
+#define NET_REG_STATE_EMERGENCY     8
+
+/*
+ * ------------------------------------
+ * Network access technology indicators
+ * ------------------------------------
+ */
+#define NET_ACCESS_UNAVAILABLE  (-1)    /* Not available        */
+#define NET_ACCESS_GSM      0   /* GSM              */
+#define NET_ACCESS_COMPACT  1   /* GSM Compact          */
+#define NET_ACCESS_UTRAN    2   /* UTRAN            */
+#define NET_ACCESS_EGPRS    3   /* GSM w/EGPRS          */
+#define NET_ACCESS_HSDPA    4   /* UTRAN w/HSDPA        */
+#define NET_ACCESS_HSUPA    5   /* UTRAN w/HSUPA        */
+#define NET_ACCESS_HSDUPA   6   /* UTRAN w/HSDPA and HSUPA  */
+#define NET_ACCESS_EUTRAN   7   /* E-UTRAN          */
+
+/*
+ * ---------------------------------------
+ * Network operator representation formats
+ * ---------------------------------------
+ */
+#define NET_FORMAT_LONG     0   /* long format alphanumeric */
+#define NET_FORMAT_SHORT    1   /* short format alphanumeric    */
+#define NET_FORMAT_NUM      2   /* numeric format       */
+
+#define NET_FORMAT_MAX_SIZE NET_FORMAT_LONG_SIZE
+
+/*
+ * -----------------------------
+ * Network operator availability
+ * -----------------------------
+ */
+#define NET_OPER_UNKNOWN    0   /* unknown operator     */
+#define NET_OPER_AVAILABLE  1   /* available operator       */
+#define NET_OPER_CURRENT    2   /* currently selected operator  */
+#define NET_OPER_FORBIDDEN  3   /* forbidden operator       */
+
+/*
+ * --------------------------------------
+ * Network connection establishment cause
+ * --------------------------------------
+ */
+#define NET_ESTABLISH_CAUSE_EMERGENCY       0x01
+#define NET_ESTABLISH_CAUSE_HIGH_PRIO       0x02
+#define NET_ESTABLISH_CAUSE_MT_ACCESS       0x03
+#define NET_ESTABLISH_CAUSE_MO_SIGNAL       0x04
+#define NET_ESTABLISH_CAUSE_MO_DATA     0x05
+#define NET_ESTABLISH_CAUSE_V1020       0x06
+
+/*
+ * --------------------------------------
+ * Network connection establishment type
+ * --------------------------------------
+ */
+#define NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL   0x10
+#define NET_ESTABLISH_TYPE_EMERGENCY_CALLS  0x20
+#define NET_ESTABLISH_TYPE_ORIGINATING_CALLS    0x30
+#define NET_ESTABLISH_TYPE_TERMINATING_CALLS    0x40
+#define NET_ESTABLISH_TYPE_MO_CS_FALLBACK   0x50
+
+/*
+ * -------------------
+ * PDN connection type
+ * -------------------
+ */
+#define NET_PDN_TYPE_IPV4   (0 + 1)
+#define NET_PDN_TYPE_IPV6   (1 + 1)
+#define NET_PDN_TYPE_IPV4V6 (2 + 1)
+
+/****************************************************************************/
+/************************  G L O B A L    T Y P E S  ************************/
+/****************************************************************************/
+
+/*
+ * ---------------------
+ * PDN connection status
+ * ---------------------
+ */
+typedef enum {
+  /* MT = The Mobile Terminal, NW = The Network               */
+  NET_PDN_MT_DEFAULT_ACT = 1, /* MT has activated a PDN connection        */
+  NET_PDN_NW_DEFAULT_DEACT,   /* NW has deactivated a PDN connection      */
+  NET_PDN_MT_DEFAULT_DEACT,   /* MT has deactivated a PDN connection      */
+  NET_PDN_NW_DEDICATED_ACT,   /* NW has activated an EPS bearer context   */
+  NET_PDN_MT_DEDICATED_ACT,   /* MT has activated an EPS bearer context   */
+  NET_PDN_NW_DEDICATED_DEACT, /* NW has deactivated an EPS bearer context */
+  NET_PDN_MT_DEDICATED_DEACT, /* MT has deactivated an EPS bearer context */
+} network_pdn_state_t;
+
+/*
+ * ---------------------------
+ * Network operator identifier
+ * ---------------------------
+ */
+typedef struct {
+#define NET_FORMAT_LONG_SIZE    16  /* Long alphanumeric format     */
+#define NET_FORMAT_SHORT_SIZE   8   /* Short alphanumeric format        */
+#define NET_FORMAT_NUM_SIZE 6   /* Numeric format (PLMN identifier  */
+  union {
+    unsigned char alpha_long[NET_FORMAT_LONG_SIZE+1];
+    unsigned char alpha_short[NET_FORMAT_SHORT_SIZE+1];
+    unsigned char num[NET_FORMAT_NUM_SIZE+1];
+  } id;
+} network_plmn_t;
+
+/*
+ * -------------------------------
+ * EPS bearer level QoS parameters
+ * -------------------------------
+ */
+typedef struct {
+  int gbrUL;      /* Guaranteed Bit Rate for uplink   */
+  int gbrDL;      /* Guaranteed Bit Rate for downlink */
+  int mbrUL;      /* Maximum Bit Rate for uplink      */
+  int mbrDL;      /* Maximum Bit Rate for downlink    */
+  int qci;        /* QoS Class Identifier         */
+} network_qos_t;
+
+/*
+ * -----------------------------
+ * IPv4 packet filter parameters
+ * -----------------------------
+ */
+typedef struct {
+  unsigned char protocol; /* Protocol identifier      */
+  unsigned char tos;      /* Type of service      */
+#define NET_PACKET_FILTER_IPV4_ADDR_SIZE    4
+  unsigned char addr[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
+  unsigned char mask[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
+} network_ipv4_data_t;
+
+/*
+ * -----------------------------
+ * IPv6 packet filter parameters
+ * -----------------------------
+ */
+typedef struct {
+  unsigned char nh;       /* Next header type     */
+  unsigned char tf;       /* Traffic class        */
+#define NET_PACKET_FILTER_IPV6_ADDR_SIZE    16
+  unsigned char addr[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
+  unsigned char mask[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
+  unsigned int ipsec;     /* IPSec security parameter index */
+  unsigned int fl;        /* Flow label             */
+} network_ipv6_data_t;
+
+/*
+ * -------------
+ * Packet Filter
+ * -------------
+ */
+typedef struct {
+  unsigned char id;       /* Packet filter identifier */
+#define NET_PACKET_FILTER_DOWNLINK  0x01
+#define NET_PACKET_FILTER_UPLINK    0x02
+#define NET_PACKET_FILTER_BIDIR     0x03
+  unsigned char dir;      /* Packet filter direction  */
+  unsigned char precedence;   /* Evaluation precedence    */
+  union {
+    network_ipv4_data_t ipv4;
+    network_ipv6_data_t ipv6;
+  } data;
+  unsigned short lport;   /* Local (UE) port number   */
+  unsigned short rport;   /* Remote (network) port number */
+} network_pkf_t;
+
+/*
+ * ---------------------
+ * Traffic Flow Template
+ * ---------------------
+ */
+typedef struct {
+  int n_pkfs;
+#define NET_PACKET_FILTER_MAX   16
+  network_pkf_t* pkf[NET_PACKET_FILTER_MAX];
+} network_tft_t;
+
+/*
+ * User notification callback, executed whenever a change of status with
+ * respect of PDN connection or EPS bearer context is notified by the EPS
+ * Session Management sublayer
+ */
+typedef int (*esm_indication_callback_t) (int, network_pdn_state_t);
+
+/****************************************************************************/
+/********************  G L O B A L    V A R I A B L E S  ********************/
+/****************************************************************************/
+
+/****************************************************************************/
+/******************  E X P O R T E D    F U N C T I O N S  ******************/
+/****************************************************************************/
+
+#endif /* __NETWORKDEF_H__*/
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
index 902420ae08be1d0736c9ca02dc3b5c328d6960a7..6c309df4db831ceca7394635cf30a28f4442e416 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.50PRB.if5.usrpb210.conf
@@ -155,9 +155,9 @@ eNBs =
 
     rrh_gw_config = (
     {			  
-      	local_if_name = "eth0";			  
-      	remote_address = "34:e6:d7:3c:ae:fc";
-    	local_address = "74:d4:35:cc:8d:15"; 
+        local_if_name = "eth0";
+        remote_address = "90:e2:ba:c5:fc:04";
+        local_address = "00:13:95:1f:a0:af";
     	local_port = 50000;	#for raw option local port must be the same to remote	       
     	remote_port = 50000; 
     	rrh_gw_active = "yes";
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
index 7806e917ac858b4d20f11b659d7c2848ffb5e8b8..7f92dff947a37ab5166727f251a123fd267d6594 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.25PRB.usrpb210.conf
@@ -159,12 +159,12 @@ eNBs =
     rrh_gw_config = (
     {			  
       	local_if_name = "eth0";			  
-      	remote_address = "90:e2:ba:c5:fc:04";
-    	local_address = "00:13:95:1f:a0:af"; 
+      	remote_address = "10.10.10.155";
+    	local_address = "10.10.10.58"; 
     	local_port = 50000;	#for raw option local port must be the same to remote	       
     	remote_port = 50000; 
     	rrh_gw_active = "yes";
-    	tr_preference = "raw_if4p5";
+    	tr_preference = "udp_if4p5";
     	rf_preference = "usrp_b200";
     	iq_txshift = 4;
     	tx_sample_advance = 80;	
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
index 831010a89a35b42bb594b031620b8cc596cf524d..c8c5b73974ff580a11dac55cdc526a9d9445fd02 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.band7.tm1.if4p5.50PRB.usrpb210.conf
@@ -31,15 +31,16 @@ eNBs =
       tdd_config_s            			      = 0;
       prefix_type             			      = "NORMAL";
       eutra_band              			      = 7;
-      downlink_frequency      			      = 2660000000L;
+      downlink_frequency      			      = 2685000000L;
       uplink_frequency_offset 			      = -120000000;
       Nid_cell					      = 0;
       N_RB_DL                 			      = 50;
       Nid_cell_mbsfn          			      = 0;
+      nb_antenna_ports                                = 1;
       nb_antennas_tx          			      = 1;
       nb_antennas_rx          			      = 1;
       tx_gain                                            = 90;
-      rx_gain                                            = 125;
+      rx_gain                                            = 120;
       prach_root              			      = 0;
       prach_config_index      			      = 0;
       prach_high_speed        			      = "DISABLE";
@@ -67,9 +68,9 @@ eNBs =
       srs_ackNackST                                      =;
       srs_MaxUpPts                                       =;*/
 
-      pusch_p0_Nominal                                   = -90;
+      pusch_p0_Nominal                                   = -95;
       pusch_alpha                                        = "AL1";
-      pucch_p0_Nominal                                   = -96;
+      pucch_p0_Nominal                                   = -104;
       msg3_delta_Preamble                                = 6;
       pucch_deltaF_Format1                               = "deltaF2";
       pucch_deltaF_Format1b                              = "deltaF3";
@@ -85,7 +86,7 @@ eNBs =
       rach_messagePowerOffsetGroupB                      = ;
       */
       rach_powerRampingStep                              = 4;
-      rach_preambleInitialReceivedTargetPower            = -108;
+      rach_preambleInitialReceivedTargetPower            = -104;
       rach_preambleTransMax                              = 10;
       rach_raResponseWindowSize                          = 10;
       rach_macContentionResolutionTimer                  = 48;
@@ -101,6 +102,8 @@ eNBs =
       ue_TimersAndConstants_n310			      = 20;
       ue_TimersAndConstants_n311			      = 1;
 
+      ue_TransmissionMode	   			      = 1;
+
       }
     );
 
@@ -156,8 +159,8 @@ eNBs =
     rrh_gw_config = (
     {			  
       	local_if_name = "eth0";			  
-      	remote_address = "34:e6:d7:3c:ae:fc";
-    	local_address = "74:d4:35:cc:8d:15"; 
+      	remote_address = "90:e2:ba:c5:fc:04";
+    	local_address = "00:13:95:1f:a0:af"; 
     	local_port = 50000;	#for raw option local port must be the same to remote	       
     	remote_port = 50000; 
     	rrh_gw_active = "yes";
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index fd5d38f6962f317a31fc9e413f4ab2bf1268cb99..d6b2d4ac82b1b800d73a02a2b7baff0bd907a90d 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -886,6 +886,15 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
   
   proc->frame_rx    = (proc->timestamp_rx / (fp->samples_per_tti*10))&1023;
   proc->subframe_rx = (proc->timestamp_rx / fp->samples_per_tti)%10;
+  // synchronize first reception to frame 0 subframe 0
+  if (eNB->iframe_offset == -1)
+    eNB->iframe_offset = proc->frame_rx;
+  if (eNB->isubframe_offset == -1)
+    eNB->isubframe_offset = proc->subframe_rx;
+
+  proc->frame_rx    -= eNB->iframe_offset;
+  proc->subframe_rx -= eNB->isubframe_offset;
+
   proc->timestamp_tx = proc->timestamp_rx+(4*fp->samples_per_tti);
   //  printf("trx_read <- USRP TS %llu (sf %d, first_rx %d)\n", proc->timestamp_rx,proc->subframe_rx,proc->first_rx);  
   
@@ -1614,6 +1623,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
       eNB->node_timing        = node_timing[CC_id];
       eNB->abstraction_flag   = 0;
       eNB->single_thread_flag = single_thread_flag;
+      eNB->iframe_offset = -1;
+      eNB->isubframe_offset = -1;
+
       LOG_I(PHY,"Initializing eNB %d CC_id %d : (%s,%s)\n",inst,CC_id,eNB_functions[node_function[CC_id]],eNB_timing[node_timing[CC_id]]);
 
       switch (node_function[CC_id]) {