diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 99c555dcf0ad3eac26611bee231d7d7fe83b5ea6..3169c6cc98d7bdafffdb9d7dd431a00c8f4bdc75 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -181,7 +181,6 @@ set(GIT_BRANCH        "UNKNOWN")
 set(GIT_COMMIT_HASH   "UNKNOWN")
 set(GIT_COMMIT_DATE   "UNKNOWN")
 
-
 find_package(Git)
 if(GIT_FOUND)
   message("git found: ${GIT_EXECUTABLE}")
@@ -875,7 +874,7 @@ set(UTIL_SRC
   ${OPENAIR2_DIR}/UTIL/OMG/job.c
   ${OPENAIR2_DIR}/UTIL/OMG/mobility_parser.c
   ${OPENAIR2_DIR}/UTIL/OMG/omg.c
-  ${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c
+  #${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c
   ${OPENAIR2_DIR}/UTIL/OMG/rwalk.c
   ${OPENAIR2_DIR}/UTIL/OMG/rwp.c
   ${OPENAIR2_DIR}/UTIL/OMG/static.c
@@ -1532,11 +1531,25 @@ endif()
 
 pkg_search_module(NETTLE nettle)
 if(NOT ${NETTLE_FOUND})
-  message("PACKAGE nettle not found: some targets will fail")
+  message( FATAL_ERROR "PACKAGE nettle not found: some targets will fail. Run build_oai -I again!")
 else()
   include_directories(${NETTLE_INCLUDE_DIRS})
 endif()
 
+message ("NETTLE VERSION_INSTALLED  = ${NETTLE_VERSION}")
+
+string(REGEX REPLACE "([0-9]+).*" "\\1" NETTLE_VERSION_MAJOR ${NETTLE_VERSION})
+string(REGEX REPLACE "[0-9]+\\.([0-9]+).*" "\\1" NETTLE_VERSION_MINOR ${NETTLE_VERSION})
+message ("NETTLE_VERSION_MAJOR = ${NETTLE_VERSION_MAJOR}")
+message ("NETTLE_VERSION_MINOR = ${NETTLE_VERSION_MINOR}")
+
+if ("${NETTLE_VERSION_MAJOR}" STREQUAL "" OR "${NETTLE_VERSION_MINOR}" STREQUAL "")
+  message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
+endif()
+
+add_definitions("-DNETTLE_VERSION_MAJOR=${NETTLE_VERSION_MAJOR}")
+add_definitions("-DNETTLE_VERSION_MINOR=${NETTLE_VERSION_MINOR}")
+
 pkg_search_module(XPM xpm)
 if(NOT ${XPM_FOUND})
   message("PACKAGE xpm not found: some targets will fail")
diff --git a/cmake_targets/at_commands/CMakeLists.txt b/cmake_targets/at_commands/CMakeLists.txt
index 258e5b18236c73d0250202c9599b91ac05d7fbe8..ca9a30546324be9cd3fa008e3b6b34bffd4af6b6 100755
--- a/cmake_targets/at_commands/CMakeLists.txt
+++ b/cmake_targets/at_commands/CMakeLists.txt
@@ -88,6 +88,24 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototype
 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -DMALLOC_CHECK_=3")
 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ggdb -DMALLOC_CHECK_=3 -O2")
 
+#This is to detect nettle version changes between Ubuntu 14.04/16.04
+set ( nettle_cmd "nettle-hash" )
+set ( nettle_arg "-V" )
+execute_process(COMMAND  ${nettle_cmd} ${nettle_arg}   RESULT_VARIABLE rv OUTPUT_VARIABLE ov ERROR_VARIABLE ev)
+
+string(REGEX MATCH "[+-]?[0-9]+([.][0-9]+)?" nv ${ov})
+
+message("NETTLE_VERSION = ${nv}")
+
+# we need to remove decimal as floating point arithematic does not work properly with C preprocessor
+STRING(REGEX REPLACE "[.]" "" nv ${nv})
+
+if ("${nv}" STREQUAL "")
+  message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
+endif()
+
+set (NETTLE_VERSION "${nv}")
+add_definitions("-DNETTLE_VERSION=${NETTLE_VERSION}")
 
 include(FindPkgConfig)
 
diff --git a/cmake_targets/autotests/README.txt b/cmake_targets/autotests/README.txt
index f4e50a7e517c028ba8b3d0d956e6e20506b4b6c6..2a1b57c0b236cdfc223021d43dee3f55049cc3ba 100644
--- a/cmake_targets/autotests/README.txt
+++ b/cmake_targets/autotests/README.txt
@@ -1,5 +1,4 @@
 OAI Test PLAN
-#UNDER CONSTRUCTION. Not correct at the moment
 
 Obj.#   Case#   Test#	Description
 
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 348d8c74ad0372dccdf685bbe8f7d6b30a97a023..16f1bbdac50d69de98857eff84ec7fe8771c95c1 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -7,7 +7,7 @@
  <GitOpenair-cnRepo>https://gitlab.eurecom.fr/oai/openair-cn.git</GitOpenair-cnRepo>
  <GitOAI5GRepoBranch>develop</GitOAI5GRepoBranch>
  <GitOpenair-cnRepoBranch>develop</GitOpenair-cnRepoBranch>
- <CleanUpOldProgs>oaisim oaisim_nos1 lte-softmodem lte-softmodem-nos1 mme_gw run_epc auth_request run_hss oai_hss mme spgw hss hss_sim configure_cots* wvdial  iperf iperf_script iperf_script_phone ping tshark rrh_gw iperf3 iperf3_script iperf3_script_phone pppd starthss start_ltebox stop_ltebox configure_cots_sony_experia_m4_ue configure_cots_huaweiE398_ue configure_cots_bandrich_ue</CleanUpOldProgs>	
+ <CleanUpOldProgs>oaisim oaisim_nos1 lte-softmodem lte-softmodem-nos1 mme_gw run_epc auth_request run_hss oai_hss mme spgw hss hss_sim wvdial  iperf iperf_script iperf_script_phone ping tshark rrh_gw iperf3 iperf3_script iperf3_script_phone pppd starthss start_ltebox stop_ltebox configure_cots_sony_experia_m4_ue configure_cots_huaweiE398_ue configure_cots_bandrich_ue</CleanUpOldProgs>	
  <CleanUpAluLteBox>sudo -S -E /opt/ltebox/tools/stop_ltebox</CleanUpAluLteBox>
 <ExmimoRfStop>exmimo_pci=`lspci -m | grep Xilinx`; if [ -n "$exmimo_pci" ] ; then $OPENAIR_DIR/cmake_targets/build_oai -w EXMIMO -c; sudo -S -E $OPENAIR_DIR/cmake_targets/tools/stop_exmimo2; fi; sudo -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_huaweiE398_ue.py --reset-ue;  sudo -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_sony_experia_m4_ue.py --stop-ue; uname -a; sudo -E dmesg</ExmimoRfStop>
  <Timeout_execution>36000</Timeout_execution>
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index d5d04fe09d1e9dd69f4849246fe6eda49c89d867..b77a9baa566252bef3498d6ebc79a4918b704bbc 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -552,6 +552,7 @@ function main() {
     compilations \
 	  $lte_build_dir updatefw \
 	  updatefw $dbin/updatefw
+    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
     make -C $OPENAIR_DIR/cmake_targets/$lte_build_dir/build oarf > $dlog/oarf.txt 2>&1
     cp $OPENAIR_DIR/cmake_targets/$lte_build_dir/build/*.oct $dbin
     if [ -s $dbin/oarf_config_exmimo.oct ] ; then
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 415d4ab87519df4e8d18ee3370326e15e8dc56f7..ac9739e5897cbafa3568e505a7b0e7669bc96a38 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -163,57 +163,6 @@ compilations() {
 # External packages installers
 ############################################
 
-install_nettle_from_source() {
-    nettle_install_log=$OPENAIR_DIR/cmake_targets/log/nettle_install_log.txt
-    echo_info "\nInstalling Nettle. The log file for nettle installation is here: $nettle_install_log "
-    (
-    cd /tmp
-    echo "Downloading nettle archive"
-    $SUDO rm -rf /tmp/nettle-2.5.tar.gz* /tmp/nettle-2.5
-    wget http://ftp.nluug.nl/gnu/nettle/nettle-2.5.tar.gz
-    if [ $? -ne 0 ]; then
-      wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
-    fi
-    if [ ! -f nettle-2.5.tar.gz ]; then
-      echo_error "Could not download nettle source files"
-      cd -
-      return
-    fi
-    tar -xzf nettle-2.5.tar.gz
-    cd nettle-2.5/
-    ./configure --disable-openssl --enable-shared --prefix=/usr 
-    echo "Compiling nettle"
-    make -j`nproc`
-    make check 
-    $SUDO make install 
-    ) >& $nettle_install_log
-}
-
-install_gnutls_from_source(){
-    gnutls_install_log=$OPENAIR_DIR/cmake_targets/log/gnutls_install_log.txt
-    echo_info "\nInstalling Gnutls. The log file for Gnutls installation is here: $gnutls_install_log "
-    (
-    cd /tmp 
-    echo "Downloading gnutls archive"
-    $SUDO rm -rf /tmp/gnutls-3.1.23.tar.xz* /tmp/gnutls-3.1.23
-    wget http://mirrors.dotsrc.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz || \
-      wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz
-    if [ ! -f gnutls-3.1.23.tar.xz ]; then
-      echo_error "Could not download gnutls source files"
-      cd -
-      return
-    fi
-    tar -xJf gnutls-3.1.23.tar.xz
-    cd gnutls-3.1.23/
-    ./configure --prefix=/usr
-    echo "Compiling gnutls"
-    make -j`nproc`
-    $SUDO make install 
-    )>& $gnutls_install_log
-}
-
-
-
 check_install_usrp_uhd_driver(){
         #first we remove old installation
         $SUDO apt-get remove -y uhd || true
@@ -377,22 +326,71 @@ check_install_oai_software() {
 
     $SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
     
-    #Sometimes linux headers are not available in apt-get if kernel is custom or new
-    $SUDO apt-get install linux-headers-`uname -r` || true
-    # First we remove gnutls/nettle installation and then install from sources
-    $SUDO apt-get remove -y libgnutls-dev nettle-dev nettle-bin
-    install_nettle_from_source
-    install_gnutls_from_source
+    #Remove old gnutls/nettle installation that was done from sources
+    remove_nettle_from_source
+    
+    $SUDO apt-get install -y nettle-dev nettle-bin
+    remove_gnutls_from_source
 
+    $SUDO apt-get install -y libgnutls-dev
+    
     install_asn1c_from_source
 }
 
+### Remove Nettle installation which was done from sources
+remove_nettle_from_source() {
+    nettle_uninstall_log=$OPENAIR_DIR/cmake_targets/log/nettle_uninstall_log.txt
+    echo_info "\nUn-Installing Nettle from sources. The log file for nettle un-installation is here: $nettle_uninstall_log "
+    (
+    $SUDO apt-get remove -y nettle-dev nettle-bin 
+    cd /tmp
+    echo "Downloading nettle archive"
+    $SUDO rm -rf /tmp/nettle-2.5.tar.gz* /tmp/nettle-2.5
+    wget https://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz
+    if [ $? -ne 0 ]; then
+      wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
+    fi
+    if [ ! -f nettle-2.5.tar.gz ]; then
+      echo_error "Could not download nettle source files"
+      cd -
+      return
+    fi
+    tar -xzf nettle-2.5.tar.gz
+    cd nettle-2.5/
+    ./configure --disable-openssl --enable-shared --prefix=/usr 
+    $SUDO make uninstall || true 
+    ) >& $nettle_uninstall_log
+}
+
+### Remove Gnutls from source
+remove_gnutls_from_source(){
+    gnutls_uninstall_log=$OPENAIR_DIR/cmake_targets/log/gnutls_uninstall_log.txt
+    echo_info "\nUn-Installing Gnutls. The log file for Gnutls un-installation is here: $gnutls_uninstall_log "
+    (
+    $SUDO apt-get remove -y libgnutls-dev
+    cd /tmp 
+    echo "Downloading gnutls archive"
+    $SUDO rm -rf /tmp/gnutls-3.1.23.tar.xz* /tmp/gnutls-3.1.23
+    wget http://mirrors.dotsrc.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz || \
+      wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz
+    if [ ! -f gnutls-3.1.23.tar.xz ]; then
+      echo_error "Could not download gnutls source files"
+      cd -
+      return
+    fi
+    tar -xJf gnutls-3.1.23.tar.xz
+    cd gnutls-3.1.23/
+    ./configure --prefix=/usr
+    $SUDO make uninstall || true
+    )>& $gnutls_uninstall_log
+}
+
 install_asn1c_from_source(){
     asn1_install_log=$OPENAIR_DIR/cmake_targets/log/asn1c_install_log.txt
     echo_info "\nInstalling ASN1. The log file for ASN1 installation is here: $asn1_install_log "
     (
     $SUDO rm -rf /tmp/asn1c
-    git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
+    GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
     cd /tmp/asn1c
     ./configure
     make -j`nproc`
diff --git a/cmake_targets/tools/init_exmimo2 b/cmake_targets/tools/init_exmimo2
index 06c40616ac804719c8b2584378738b9c4726f397..1ed65cf0e05588016bf6f78e8f89922dbcb2eb01 100755
--- a/cmake_targets/tools/init_exmimo2
+++ b/cmake_targets/tools/init_exmimo2
@@ -64,15 +64,7 @@ if [ ! -e /dev/openair0 ]; then
  sudo chmod a+rw /dev/openair0
 fi
 
-DEVICE=`echo $PCI | awk -F\" '{print $(NF-1)}' | awk '{print $2}'`
-DEVICE_SWID=${DEVICE:2:2}
-if [ $DEVICE_SWID == '0a' ]; then
-   echo "Using firware version 10"
    $OPENAIR_DIR/targets/bin/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
-else
-   echo 'No corresponding firmware found'
-   return
-fi
 }
 
 main "$@"
diff --git a/common/utils/itti/assertions.h b/common/utils/itti/assertions.h
index 77bd9e4bcfd9d8e2f92b028efedb93cf95399fed..df8251d10541cfd06a402172c8aa4087e5fd40b6 100644
--- a/common/utils/itti/assertions.h
+++ b/common/utils/itti/assertions.h
@@ -51,7 +51,7 @@ do {                                                        \
                 "In %s() %s:%d\n" fORMAT,                   \
                 __FUNCTION__, __FILE__, __LINE__, ##aRGS);  \
         aCTION;                                             \
-    }                                                       \
+    }						\
 } while(0)
 
 #define AssertFatal(cOND, fORMAT, aRGS...)          _Assert_(cOND, _Assert_Exit_, fORMAT, ##aRGS)
diff --git a/common/utils/itti/backtrace.c b/common/utils/itti/backtrace.c
index 5044c01e5e6b01e16793012cb1ad927b5afed259..ed7849ab4d394054d370d6b8f7170a3d800d7838 100644
--- a/common/utils/itti/backtrace.c
+++ b/common/utils/itti/backtrace.c
@@ -37,7 +37,8 @@ void display_backtrace(void)
   size_t size;
   char **strings;
   size_t i;
-
+  char* test=getenv("NO_BACKTRACE");
+  if (test!=0) *((int*)0)=0;
   size = backtrace(array, 10);
   strings = backtrace_symbols(array, size);
 
diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h
index 018f7c716260e018e7a746f95a3249298c072c53..375efa5feadb524e2f6ac92ec491c931f43f0e8c 100644
--- a/openair1/PHY/defs.h
+++ b/openair1/PHY/defs.h
@@ -45,6 +45,11 @@
 # define msg mexPrintf
 #else
 # ifdef OPENAIR2
+#   if ENABLE_RAL
+#     include "collection/hashtable/hashtable.h"
+#     include "COMMON/ral_messages_types.h"
+#     include "UTIL/queue.h"
+#   endif
 #   include "log.h"
 #   define msg(aRGS...) LOG_D(PHY, ##aRGS)
 # else
@@ -119,6 +124,8 @@ static inline void* malloc16_clear( size_t size )
 #include "PHY/TOOLS/defs.h"
 #include "platform_types.h"
 
+#ifdef OPENAIR_LTE
+
 #include "PHY/LTE_TRANSPORT/defs.h"
 #include <pthread.h>
 
@@ -130,6 +137,9 @@ static inline void* malloc16_clear( size_t size )
 
 #define NB_BANDS_MAX 8
 
+#ifdef OCP_FRAMEWORK
+#include <enums.h>
+#else
 typedef enum {normal_txrx=0,rx_calib_ue=1,rx_calib_ue_med=2,rx_calib_ue_byp=3,debug_prach=4,no_L2_connect=5,calib_prach_tx=6,rx_dump_frame=7,loop_through_memory=8} runmode_t;
 
 enum transmission_access_mode {
@@ -153,6 +163,7 @@ typedef enum {
   synch_to_ext_device=0,  // synch to RF or Ethernet device
   synch_to_other          // synch to another source (timer, other CC_id)
 } eNB_timing_t;
+#endif
 
 typedef struct UE_SCAN_INFO_s {
   /// 10 best amplitudes (linear) for each pss signals
@@ -939,5 +950,5 @@ static inline int release_thread(pthread_mutex_t *mutex,int *instance_cnt,char *
 #include "PHY/LTE_ESTIMATION/defs.h"
 
 #include "SIMULATION/ETH_TRANSPORT/defs.h"
-
+#endif
 #endif //  __PHY_DEFS__H__
diff --git a/openair1/PHY/extern.h b/openair1/PHY/extern.h
index 293da8f5720408ce660d70eb91c1b7a7fe5fabb3..09d4c74f5234d34ccf8260aa72aff0ac0eab5044 100644
--- a/openair1/PHY/extern.h
+++ b/openair1/PHY/extern.h
@@ -40,11 +40,17 @@ extern int number_of_cards;
 
 //extern PHY_CONFIG *PHY_config;
 //extern PHY_VARS *PHY_vars;
-
+#ifndef OCP_FRAMEWORK
 extern PHY_VARS_UE ***PHY_vars_UE_g;
 extern PHY_VARS_eNB ***PHY_vars_eNB_g;
 extern PHY_VARS_RN **PHY_vars_RN_g;
 extern LTE_DL_FRAME_PARMS *lte_frame_parms_g;
+#else
+#define MAX_UE 10
+#define MAX_eNB 20
+extern PHY_VARS_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs];
+extern PHY_VARS_eNB * PHY_vars_eNB_g[MAX_eNB][MAX_NUM_CCs];
+#endif
 
 extern MAC_xface *mac_xface;
 
diff --git a/openair1/PHY/impl_defs_lte.h b/openair1/PHY/impl_defs_lte.h
index 3000f13a19714796e49c22ef06e5914bd82436c6..f80effbebd4ff67f104c155a083f103e79e0c70e 100644
--- a/openair1/PHY/impl_defs_lte.h
+++ b/openair1/PHY/impl_defs_lte.h
@@ -54,7 +54,9 @@
 
 #define MAX_MBSFN_AREA 8
 
-
+#ifdef OCP_FRAMEWORK
+#include "enums.h"
+#else
 typedef enum {TDD=1,FDD=0} lte_frame_type_t;
 
 typedef enum {EXTENDED=1,NORMAL=0} lte_prefix_type_t;
@@ -74,7 +76,7 @@ typedef enum {
   one=6,
   two=12
 } PHICH_RESOURCE_t;
-
+#endif
 /// PHICH-Config from 36.331 RRC spec
 typedef struct {
   /// Parameter: PHICH-Duration, see TS 36.211 (Table 6.9.3-1).
@@ -161,10 +163,12 @@ typedef struct {
 } UL_REFERENCE_SIGNALS_PUSCH_t;
 
 /// Enumeration for parameter Hopping-mode \ref PUSCH_CONFIG_COMMON::hoppingMode.
+#ifndef OCP_FRAMEWORK
 typedef enum {
   interSubFrame=0,
   intraAndInterSubFrame=1
 } PUSCH_HOPPING_t;
+#endif
 
 /// PUSCH-ConfigCommon from 36.331 RRC spec.
 typedef struct {
@@ -329,6 +333,7 @@ typedef struct {
   uint8_t filterCoefficient;
 } UL_POWER_CONTROL_DEDICATED;
 
+#ifndef OCP_FRAMEWORK
 /// Enumeration for parameter \f$\alpha\f$ \ref UL_POWER_CONTROL_CONFIG_COMMON::alpha.
 typedef enum {
   al0=0,
@@ -340,6 +345,7 @@ typedef enum {
   al09=6,
   al1=7
 } PUSCH_alpha_t;
+#endif
 
 /// \note UNUSED
 typedef enum {
diff --git a/openair1/PHY/vars.h b/openair1/PHY/vars.h
index f920973368489bb78bd14b1a96eeb4ec8245b0dc..bb570f0ecd7b9732198915d34063d29990f34afc 100644
--- a/openair1/PHY/vars.h
+++ b/openair1/PHY/vars.h
@@ -45,10 +45,15 @@ int16_t *primary_synch2_time;
 #include "PHY/CODING/vars.h"
 
 //PHY_VARS *PHY_vars;
+#ifndef OCP_FRAMEWORK
 PHY_VARS_UE ***PHY_vars_UE_g;
 PHY_VARS_eNB ***PHY_vars_eNB_g;
 PHY_VARS_RN **PHY_vars_RN_g;
 LTE_DL_FRAME_PARMS *lte_frame_parms_g;
+#else
+PHY_VARS_UE * PHY_vars_UE_g[MAX_UE][MAX_NUM_CCs]={NULL};
+PHY_VARS_eNB * PHY_vars_eNB_g[MAX_eNB][MAX_NUM_CCs]={NULL};
+#endif
 
 
 unsigned short rev[2048],rev_times4[8192],rev_half[1024];
@@ -132,8 +137,12 @@ double beta2_dlsch[6][MCS_COUNT] = { {2.52163, 0.83231, 0.77472, 1.36536, 1.1682
 
 */
 
+#ifdef OCP_FRAMEWORK
+#include <enums.h>
+#else
 char eNB_functions[6][20]={"eNodeB_3GPP","eNodeB_3GPP_BBU","NGFI_RCC_IF4p5","NGFI_RAI_IF4p5","NGFI_RRU_IF5","NGFI_RRU_IF4p5",};
 char eNB_timing[2][20]={"synch_to_ext_device","synch_to_other"};
+#endif
 
 /// lookup table for unscrambling in RX
 int16_t unscrambling_lut[65536*16] __attribute__((aligned(32)));
diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h
index d6b793fd7cbed9e1c60e611fb62541ecce3bad99..4fc043f28111246ebc1f91819f084b2d21b60936 100644
--- a/openair2/COMMON/s1ap_messages_types.h
+++ b/openair2/COMMON/s1ap_messages_types.h
@@ -71,7 +71,7 @@
  * the key length is 32 bytes (256 bits)
  */
 #define SECURITY_KEY_LENGTH 32
-
+#ifndef OCP_FRAMEWORK
 typedef enum cell_type_e {
   CELL_MACRO_ENB,
   CELL_HOME_ENB
@@ -102,6 +102,7 @@ typedef enum cn_domain_s {
   CN_DOMAIN_PS = 1,
   CN_DOMAIN_CS = 2
 } cn_domain_t;
+#endif
 
 typedef struct net_ip_address_s {
   unsigned ipv4:1;
@@ -117,6 +118,7 @@ typedef struct ambr_s {
   bitrate_t br_dl;
 } ambr_t;
 
+#ifndef OCP_FRAMEWORK
 typedef enum priority_level_s {
   PRIORITY_LEVEL_SPARE       = 0,
   PRIORITY_LEVEL_HIGHEST     = 1,
@@ -135,6 +137,7 @@ typedef enum pre_emp_vulnerability_e {
   PRE_EMPTION_VULNERABILITY_DISABLED = 1,
   PRE_EMPTION_VULNERABILITY_MAX,
 } pre_emp_vulnerability_t;
+#endif
 
 typedef struct allocation_retention_priority_s {
   priority_level_t        priority_level;
diff --git a/openair2/ENB_APP/enb_config.h b/openair2/ENB_APP/enb_config.h
index 915dde68fad07a8566c6f3651c98ddb7717e091a..9e53af172d64e6347ac073a1f04ca0ba6545808f 100644
--- a/openair2/ENB_APP/enb_config.h
+++ b/openair2/ENB_APP/enb_config.h
@@ -32,6 +32,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <libconfig.h>
 
 #include "commonDef.h"
 #include "platform_types.h"
@@ -41,6 +42,7 @@
 #include "s1ap_messages_types.h"
 #ifdef CMAKER
 #include "SystemInformationBlockType2.h"
+#include "rrc_messages_types.h"
 #else
 #include "RRC/LITE/MESSAGES/SystemInformationBlockType2.h"
 #endif
@@ -109,6 +111,7 @@ typedef struct Enb_properties_s {
    */
   char               *eNB_name;
 
+
   /* Tracking area code */
   uint16_t            tac;
 
@@ -123,6 +126,7 @@ typedef struct Enb_properties_s {
 
   /* Physical parameters */
   int16_t                 nb_cc;
+#ifndef OCP_FRAMEWORK
   eNB_func_t              cc_node_function[1+MAX_NUM_CCs];
   eNB_timing_t            cc_node_timing[1+MAX_NUM_CCs];
   int16_t                 cc_node_synch_ref[1+MAX_NUM_CCs];
@@ -199,8 +203,10 @@ typedef struct Enb_properties_s {
   long                    ue_TimersAndConstants_t311[1+MAX_NUM_CCs];
   long                    ue_TimersAndConstants_n310[1+MAX_NUM_CCs];
   long                    ue_TimersAndConstants_n311[1+MAX_NUM_CCs];
+#else
+   RrcConfigurationReq    RrcReq;
+#endif
   long                    ue_TransmissionMode[1+MAX_NUM_CCs];
-
   long                    srb1_timer_poll_retransmit;
   long                    srb1_timer_reordering;
   long                    srb1_timer_status_prohibit;
@@ -229,6 +235,7 @@ typedef struct Enb_properties_s {
   /* List of MME to connect to */
   rrh_gw_config_t       rrh_gw_config[4];
 
+#ifndef OCP_FRAMEWORK
   // otg config
   /* Nb of OTG elements */
   uint8_t            num_otg_elements;
@@ -257,7 +264,7 @@ typedef struct Enb_properties_s {
   int16_t           udp_log_verbosity;
   int16_t           osa_log_level;
   int16_t           osa_log_verbosity;
-
+#endif
 } Enb_properties_t;
 
 typedef struct Enb_properties_array_s {
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index f14527adbb49498f33b404de4d73489bcdc81da7..284c5fd2156de156fd48fcdad61ff36b7bd92423 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -3867,6 +3867,12 @@ openair_rrc_eNB_init(
         PROTOCOL_RRC_CTXT_FMT" Init...\n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
 
+#if OCP_FRAMEWORK
+while ( eNB_rrc_inst == NULL ) {
+  LOG_E(RRC, "eNB_rrc_inst not yet initialized, waiting 1 second\n");
+  sleep(1);
+}
+#endif 
   AssertFatal(eNB_rrc_inst != NULL, "eNB_rrc_inst not initialized!");
   AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow");
 
diff --git a/openair2/UTIL/OPT/opt.h b/openair2/UTIL/OPT/opt.h
index 652873e569a61d7b2d041307260afe8760e2de9d..cc1ab6854c66179f9bd718b0bb4a998f5646f42e 100644
--- a/openair2/UTIL/OPT/opt.h
+++ b/openair2/UTIL/OPT/opt.h
@@ -55,12 +55,16 @@ This header file must be included */
 #include "PHY/impl_defs_lte.h"
 #endif
 
+#ifdef OCP_FRAMEWORK
+#include <enums.h>
+#else
 typedef enum trace_mode_e {
   OPT_WIRESHARK,
   OPT_PCAP,
   OPT_TSHARK,
   OPT_NONE
 } trace_mode_t;
+#endif
 
 typedef enum radio_type_e {
   RADIO_TYPE_FDD = 1,
diff --git a/openair2/UTIL/OSA/osa_stream_eea.c b/openair2/UTIL/OSA/osa_stream_eea.c
index 6abaa1f9755826c87880e25d38ead91a29969f43..6aef6d2588ad26d22d15f44da7dbe7ab29dd7935 100644
--- a/openair2/UTIL/OSA/osa_stream_eea.c
+++ b/openair2/UTIL/OSA/osa_stream_eea.c
@@ -191,8 +191,13 @@ int stream_encrypt_eea2(stream_cipher_t *stream_cipher, uint8_t **out)
   }
 #endif
 
+#if NETTLE_VERSION_MAJOR < 3
   nettle_aes128.set_encrypt_key(ctx, stream_cipher->key_length,
                                 stream_cipher->key);
+#else
+  nettle_aes128.set_encrypt_key(ctx, 
+                                stream_cipher->key);
+#endif
 
   nettle_ctr_crypt(ctx, nettle_aes128.encrypt,
                    nettle_aes128.block_size, m,
diff --git a/openair2/X2AP/x2ap_common.h b/openair2/X2AP/x2ap_common.h
index 0cf2990581e74eea49042aae390f52dc0171646d..d2a2ca71371f2d2f7290dab003952059303593ac 100644
--- a/openair2/X2AP/x2ap_common.h
+++ b/openair2/X2AP/x2ap_common.h
@@ -282,8 +282,10 @@
 # define X2AP_PORT 36422
 #endif
 
+#ifndef TRUE
 #define TRUE 1
 #define FALSE 0
+#endif
 
 extern int asn_debug;
 extern int asn1_xer_print;
diff --git a/openair3/SECU/nas_stream_eea2.c b/openair3/SECU/nas_stream_eea2.c
index 368cfaf48ee12b2f0546d5860188c2166fb3747c..37f2e298fb2ff710ea515af1df434b8c45db6de0 100644
--- a/openair3/SECU/nas_stream_eea2.c
+++ b/openair3/SECU/nas_stream_eea2.c
@@ -78,8 +78,13 @@ int nas_stream_encrypt_eea2(nas_stream_cipher_t *stream_cipher, uint8_t *out)
   }
 #endif
 
+#if NETTLE_VERSION_MAJOR < 3
   nettle_aes128.set_encrypt_key(ctx, stream_cipher->key_length,
                                 stream_cipher->key);
+#else
+  nettle_aes128.set_encrypt_key(ctx,
+                                stream_cipher->key);
+#endif
 
   nettle_ctr_crypt(ctx, nettle_aes128.encrypt,
                    nettle_aes128.block_size, m,
diff --git a/openair3/TEST/test_aes128_ctr_decrypt.c b/openair3/TEST/test_aes128_ctr_decrypt.c
index 4a089c617e5e84c15a4df4d474f3d069ec22c4b4..a30dc6c2f21c0d775cdf23775d4df44002265e01 100644
--- a/openair3/TEST/test_aes128_ctr_decrypt.c
+++ b/openair3/TEST/test_aes128_ctr_decrypt.c
@@ -41,7 +41,12 @@ void test_uncipher_ctr(const struct nettle_cipher *cipher, const uint8_t *key,
   uint8_t *data = malloc(length);
   uint8_t *ctr = malloc(cipher->block_size);
 
-  cipher->set_encrypt_key(ctx, key_length, key);
+#if NETTLE_VERSION_MAJOR < 3
+  cipher->set_encrypt_key(ctx, key_length,  key);
+#else
+  cipher->set_encrypt_key(ctx,  key);
+#endif
+
   memcpy(ctr, ictr, cipher->block_size);
 
   ctr_crypt(ctx, cipher->encrypt,
diff --git a/openair3/TEST/test_aes128_ctr_encrypt.c b/openair3/TEST/test_aes128_ctr_encrypt.c
index 50d33a17411bbeb71e1bb7cf97f03e0cbde96c49..6c264a98a62653ff84a41482491d60469b766fff 100644
--- a/openair3/TEST/test_aes128_ctr_encrypt.c
+++ b/openair3/TEST/test_aes128_ctr_encrypt.c
@@ -40,7 +40,12 @@ static void test_cipher_ctr(const struct nettle_cipher *cipher, const uint8_t *k
   uint8_t *data = malloc(length);
   uint8_t *ctr = malloc(cipher->block_size);
 
+#if NETTLE_VERSION_MAJOR < 3
   cipher->set_encrypt_key(ctx, key_length, key);
+#else
+  cipher->set_encrypt_key(ctx, key);
+#endif
+
   memcpy(ctr, ictr, cipher->block_size);
 
   ctr_crypt(ctx, cipher->encrypt,
diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index f43bad340957995a572eeebe386df03f3654c147..a6c8e434839746360c5d40ab37b641e40c86d555 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -65,10 +65,13 @@ typedef enum {
   max_gain=0,med_gain,byp_gain
 } rx_gain_t;
 
+#if OCP_FRAMEWORK
+#include <enums.h>
+#else
 typedef enum {
   duplex_mode_TDD=1,duplex_mode_FDD=0
 } duplex_mode_t;
-
+#endif
 
 
 /** @addtogroup _GENERIC_PHY_RF_INTERFACE_
@@ -76,6 +79,9 @@ typedef enum {
  */
 /*!\brief RF device types
  */
+#ifdef OCP_FRAMEWORK
+#include <enums.h>
+#else
 typedef enum {
   MIN_RF_DEV_TYPE = 0,
   /*!\brief device is ExpressMIMO */
@@ -93,6 +99,7 @@ typedef enum {
   MAX_RF_DEV_TYPE
 
 } dev_type_t;
+#endif
 
 /*!\brief transport protocol types
  */
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
index d7201152fc230b9f66d2fa96a420d4a1223ee795..1f8bab415c9998abc1d7809e7764ab01b6b5158a 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
@@ -264,6 +264,7 @@ int trx_eth_read_raw(openair0_device *device, openair0_timestamp *timestamp, voi
 	if (bytes_received ==-1) {
 	  eth->num_rx_errors++;
 	  perror("ETHERNET IF5 READ: ");
+          if (errno == EAGAIN) continue;
 	  exit(-1);	
 	} else {
 	  /* store the timestamp value from packet's header */
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
index d840819fe782a8e18c8e5c29496cbfac539b5bcf..1880719c508ac95e63576f1ad34868d93a69116f 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
@@ -27,7 +27,7 @@
  * \company Eurecom
  * \maintainer:  navid.nikaein@eurecom.fr
  * \note
- * \warning 
+ * \warning
  */
 
 #include <arpa/inet.h>
@@ -52,366 +52,366 @@ int dest_addr_len[MAX_INST];
 
 int trx_eth_start(openair0_device *device) {
 
-  eth_state_t *eth = (eth_state_t*)device->priv;
-  
-  /* initialize socket */
-  if (eth->flags == ETH_RAW_MODE) {     
-    printf("Setting ETHERNET to ETH_RAW_IF5_MODE\n");
-    if (eth_socket_init_raw(device)!=0)   return -1;
-    /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
-    if (device->host_type == BBU_HOST) {
-      if(eth_set_dev_conf_raw(device)!=0)  return -1;
-    } else {
-      if(eth_get_dev_conf_raw(device)!=0)  return -1;
-    }
-    /* adjust MTU wrt number of samples per packet */
-    if(ethernet_tune (device,MTU_SIZE,RAW_PACKET_SIZE_BYTES(device->openair0_cfg->samples_per_packet))!=0)  return -1;
-    if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0)  return -1;
-  } else if (eth->flags == ETH_RAW_IF4p5_MODE) {
-
-    printf("Setting ETHERNET to ETH_RAW_IF4p5_MODE\n");
-    if (eth_socket_init_raw(device)!=0)   return -1;
-    /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
-    if (device->host_type == BBU_HOST) {
-      if(eth_set_dev_conf_raw_IF4p5(device)!=0)  return -1;
+    eth_state_t *eth = (eth_state_t*)device->priv;
+
+    /* initialize socket */
+    if (eth->flags == ETH_RAW_MODE) {
+        printf("Setting ETHERNET to ETH_RAW_IF5_MODE\n");
+        if (eth_socket_init_raw(device)!=0)   return -1;
+        /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
+        if (device->host_type == BBU_HOST) {
+            if(eth_set_dev_conf_raw(device)!=0)  return -1;
+        } else {
+            if(eth_get_dev_conf_raw(device)!=0)  return -1;
+        }
+        /* adjust MTU wrt number of samples per packet */
+        if(ethernet_tune (device,MTU_SIZE,RAW_PACKET_SIZE_BYTES(device->openair0_cfg->samples_per_packet))!=0)  return -1;
+        if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0)  return -1;
+    } else if (eth->flags == ETH_RAW_IF4p5_MODE) {
+
+        printf("Setting ETHERNET to ETH_RAW_IF4p5_MODE\n");
+        if (eth_socket_init_raw(device)!=0)   return -1;
+        /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
+        if (device->host_type == BBU_HOST) {
+            if(eth_set_dev_conf_raw_IF4p5(device)!=0)  return -1;
+        } else {
+            if(eth_get_dev_conf_raw_IF4p5(device)!=0)  return -1;
+        }
+        /* adjust MTU wrt number of samples per packet */
+        if(ethernet_tune (device,MTU_SIZE,RAW_IF4p5_PRACH_SIZE_BYTES)!=0)  return -1;
+
+        if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0)  return -1;
+    } else if (eth->flags == ETH_UDP_IF4p5_MODE) {
+        printf("Setting ETHERNET to UDP_IF4p5_MODE\n");
+        if (eth_socket_init_udp(device)!=0)   return -1;
+        if (device->host_type == BBU_HOST) {
+            if(eth_set_dev_conf_udp(device)!=0)  return -1;
+        } else {
+            if(eth_get_dev_conf_udp(device)!=0)  return -1;
+        }
+    } else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
+        printf("Setting ETHERNET to RAW_IF5_MODE\n");
+        if (eth_socket_init_raw(device)!=0)   return -1;
     } else {
-      if(eth_get_dev_conf_raw_IF4p5(device)!=0)  return -1;
+        if (eth_socket_init_udp(device)!=0)   return -1;
+        /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
+        if (device->host_type == BBU_HOST) {
+            if(eth_set_dev_conf_udp(device)!=0)  return -1;
+        } else {
+            if(eth_get_dev_conf_udp(device)!=0)  return -1;
+        }
     }
-    /* adjust MTU wrt number of samples per packet */
-    if(ethernet_tune (device,MTU_SIZE,RAW_IF4p5_PRACH_SIZE_BYTES)!=0)  return -1;
+    /* apply additional configuration */
+    if(ethernet_tune (device, SND_BUF_SIZE,2000000000)!=0)  return -1;
+    if(ethernet_tune (device, RCV_BUF_SIZE,2000000000)!=0)  return -1;
 
-    if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0)  return -1;
-  } else if (eth->flags == ETH_UDP_IF4p5_MODE) {
-    printf("Setting ETHERNET to UDP_IF4p5_MODE\n");
-    if (eth_socket_init_udp(device)!=0)   return -1; 
-    if (device->host_type == BBU_HOST) {
-      if(eth_set_dev_conf_udp(device)!=0)  return -1;
-    } else {
-      if(eth_get_dev_conf_udp(device)!=0)  return -1;
-    }
-  } else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
-    printf("Setting ETHERNET to RAW_IF5_MODE\n");
-    if (eth_socket_init_raw(device)!=0)   return -1;
-  } else {
-    if (eth_socket_init_udp(device)!=0)   return -1; 
-    /* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
-    if (device->host_type == BBU_HOST) {
-      if(eth_set_dev_conf_udp(device)!=0)  return -1;
-    } else {
-      if(eth_get_dev_conf_udp(device)!=0)  return -1;
-    }
-  }
-  /* apply additional configuration */
-  if(ethernet_tune (device, SND_BUF_SIZE,2000000000)!=0)  return -1;
-  if(ethernet_tune (device, RCV_BUF_SIZE,2000000000)!=0)  return -1;
-  
-  return 0;
+    return 0;
 }
 
 
 void trx_eth_end(openair0_device *device) {
 
-  eth_state_t *eth = (eth_state_t*)device->priv;
-  int Mod_id = device->Mod_id;
-  /* destroys socket only for the processes that call the eth_end fuction-- shutdown() for beaking the pipe */
-  if ( close(eth->sockfd[Mod_id]) <0 ) {
-    perror("ETHERNET: Failed to close socket");
-    exit(0);
-   } else {
-    printf("[%s] socket for mod_id %d has been successfully closed.\n",(device->host_type == BBU_HOST)? "BBU":"RRH",Mod_id);
-   }
- 
+    eth_state_t *eth = (eth_state_t*)device->priv;
+    int Mod_id = device->Mod_id;
+    /* destroys socket only for the processes that call the eth_end fuction-- shutdown() for beaking the pipe */
+    if ( close(eth->sockfd[Mod_id]) <0 ) {
+        perror("ETHERNET: Failed to close socket");
+        exit(0);
+    } else {
+        printf("[%s] socket for mod_id %d has been successfully closed.\n",(device->host_type == BBU_HOST)? "BBU":"RRH",Mod_id);
+    }
+
 }
 
 
 int trx_eth_request(openair0_device *device, void *msg, ssize_t msg_len) {
 
-  int 	       Mod_id = device->Mod_id;
-  eth_state_t *eth = (eth_state_t*)device->priv;
- 
-  /* BBU sends a message to RRH */
- if (sendto(eth->sockfd[Mod_id],msg,msg_len,0,(struct sockaddr *)&dest_addr[Mod_id],dest_addr_len[Mod_id])==-1) {
-    perror("ETHERNET: ");
-    exit(0);
-  }
-     
-  return 0;
+    int 	       Mod_id = device->Mod_id;
+    eth_state_t *eth = (eth_state_t*)device->priv;
+
+    /* BBU sends a message to RRH */
+    if (sendto(eth->sockfd[Mod_id],msg,msg_len,0,(struct sockaddr *)&dest_addr[Mod_id],dest_addr_len[Mod_id])==-1) {
+        perror("ETHERNET: ");
+        exit(0);
+    }
+
+    return 0;
 }
 
 
 int trx_eth_reply(openair0_device *device, void *msg, ssize_t msg_len) {
 
-  eth_state_t   *eth = (eth_state_t*)device->priv;
-  int 		Mod_id = device->Mod_id;
-
-  /* RRH receives from BBU a message */
-  if (recvfrom(eth->sockfd[Mod_id],
-	       msg,
-	       msg_len,
-	       0,
-	       (struct sockaddr *)&dest_addr[Mod_id],
-	       (socklen_t *)&dest_addr_len[Mod_id])==-1) {
-    perror("ETHERNET: ");
-    exit(0);
-  }	
- 
-   return 0;
+    eth_state_t   *eth = (eth_state_t*)device->priv;
+    int 		Mod_id = device->Mod_id;
+
+    /* RRH receives from BBU a message */
+    if (recvfrom(eth->sockfd[Mod_id],
+                 msg,
+                 msg_len,
+                 0,
+                 (struct sockaddr *)&dest_addr[Mod_id],
+                 (socklen_t *)&dest_addr_len[Mod_id])==-1) {
+        perror("ETHERNET: ");
+        exit(0);
+    }
+
+    return 0;
 }
 
 
 
 int trx_eth_stop(openair0_device *device) {
-  return(0);
+    return(0);
 }
 
 int trx_eth_set_freq(openair0_device* device, openair0_config_t *openair0_cfg,int exmimo_dump_config) {
-  return(0);
+    return(0);
 }
 
 int trx_eth_set_gains(openair0_device* device, openair0_config_t *openair0_cfg) {
-  return(0);
+    return(0);
 }
 
 int trx_eth_get_stats(openair0_device* device) {
-  return(0);
+    return(0);
 }
 
 int trx_eth_reset_stats(openair0_device* device) {
-  return(0);
+    return(0);
 }
 
 
 int ethernet_tune(openair0_device *device, unsigned int option, int value) {
-  
-  eth_state_t *eth = (eth_state_t*)device->priv;
-  int Mod_id=device->Mod_id;
-  struct timeval timeout;
-  struct ifreq ifr;   
-  char system_cmd[256]; 
-  //  char* if_name=DEFAULT_IF;
-  //  struct in_addr ia;
-  //  struct if_nameindex *ids;
-  int ret=0;
-  //  int i=0;
-  
-  /****************** socket level options ************************/  
-  switch(option) {
-  case SND_BUF_SIZE:  /* transmit socket buffer size */   
-    if (setsockopt(eth->sockfd[Mod_id],  
-		   SOL_SOCKET,  
-		   SO_SNDBUF,  
-		   &value,sizeof(value))) {
-      perror("[ETHERNET] setsockopt()");
-    } else {
-      printf("send buffer size= %d bytes\n",value); 
-    }   
-    break;
-    
-  case RCV_BUF_SIZE:   /* receive socket buffer size */   
-    if (setsockopt(eth->sockfd[Mod_id],  
-		   SOL_SOCKET,  
-		   SO_RCVBUF,  
-		   &value,sizeof(value))) {
-      perror("[ETHERNET] setsockopt()");
-    } else {     
-      printf("receive bufffer size= %d bytes\n",value);    
-    }
-    break;
-    
-  case RCV_TIMEOUT:
-    timeout.tv_sec = value/1000000;
-    timeout.tv_usec = value%1000000;//less than rt_period?
-    if (setsockopt(eth->sockfd[Mod_id],  
-		   SOL_SOCKET,  
-		   SO_RCVTIMEO,  
-		   (char *)&timeout,sizeof(timeout))) {
-      perror("[ETHERNET] setsockopt()");  
-    } else {   
-      printf( "receive timeout= %u usec\n",(unsigned int)timeout.tv_usec);  
-    }  
-    break;
-    
-  case SND_TIMEOUT:
-    timeout.tv_sec = value/1000000000;
-    timeout.tv_usec = value%1000000000;//less than rt_period?
-    if (setsockopt(eth->sockfd[Mod_id],  
-		   SOL_SOCKET,  
-		   SO_SNDTIMEO,  
-		   (char *)&timeout,sizeof(timeout))) {
-      perror("[ETHERNET] setsockopt()");     
-    } else {
-      printf( "send timeout= %d,%d sec\n",(int)timeout.tv_sec,(int)timeout.tv_usec);    
-    }
-    break;
-    
-    
+
+    eth_state_t *eth = (eth_state_t*)device->priv;
+    int Mod_id=device->Mod_id;
+    struct timeval timeout;
+    struct ifreq ifr;
+    char system_cmd[256];
+    //  char* if_name=DEFAULT_IF;
+    //  struct in_addr ia;
+    //  struct if_nameindex *ids;
+    int ret=0;
+    //  int i=0;
+
+    /****************** socket level options ************************/
+    switch(option) {
+    case SND_BUF_SIZE:  /* transmit socket buffer size */
+        if (setsockopt(eth->sockfd[Mod_id],
+                       SOL_SOCKET,
+                       SO_SNDBUF,
+                       &value,sizeof(value))) {
+            perror("[ETHERNET] setsockopt()");
+        } else {
+            printf("send buffer size= %d bytes\n",value);
+        }
+        break;
+
+    case RCV_BUF_SIZE:   /* receive socket buffer size */
+        if (setsockopt(eth->sockfd[Mod_id],
+                       SOL_SOCKET,
+                       SO_RCVBUF,
+                       &value,sizeof(value))) {
+            perror("[ETHERNET] setsockopt()");
+        } else {
+            printf("receive bufffer size= %d bytes\n",value);
+        }
+        break;
+
+    case RCV_TIMEOUT:
+        timeout.tv_sec = value/1000000;
+        timeout.tv_usec = value%1000000;//less than rt_period?
+        if (setsockopt(eth->sockfd[Mod_id],
+                       SOL_SOCKET,
+                       SO_RCVTIMEO,
+                       (char *)&timeout,sizeof(timeout))) {
+            perror("[ETHERNET] setsockopt()");
+        } else {
+            printf( "receive timeout= %u usec\n",(unsigned int)timeout.tv_usec);
+        }
+        break;
+
+    case SND_TIMEOUT:
+        timeout.tv_sec = value/1000000000;
+        timeout.tv_usec = value%1000000000;//less than rt_period?
+        if (setsockopt(eth->sockfd[Mod_id],
+                       SOL_SOCKET,
+                       SO_SNDTIMEO,
+                       (char *)&timeout,sizeof(timeout))) {
+            perror("[ETHERNET] setsockopt()");
+        } else {
+            printf( "send timeout= %d,%d sec\n",(int)timeout.tv_sec,(int)timeout.tv_usec);
+        }
+        break;
+
+
     /******************* interface level options  *************************/
-  case MTU_SIZE: /* change  MTU of the eth interface */ 
-    ifr.ifr_addr.sa_family = AF_INET;
-    strncpy(ifr.ifr_name,eth->if_name[Mod_id], sizeof(ifr.ifr_name));
-    ifr.ifr_mtu =value;
-    if (ioctl(eth->sockfd[Mod_id],SIOCSIFMTU,(caddr_t)&ifr) < 0 )
-      perror ("[ETHERNET] Can't set the MTU");
-    else 
-      printf("[ETHERNET] %s MTU size has changed to %d\n",eth->if_name[Mod_id],ifr.ifr_mtu);
-    break;
-    
-  case TX_Q_LEN:  /* change TX queue length of eth interface */ 
-    ifr.ifr_addr.sa_family = AF_INET;
-    strncpy(ifr.ifr_name,eth->if_name[Mod_id], sizeof(ifr.ifr_name));
-    ifr.ifr_qlen =value;
-    if (ioctl(eth->sockfd[Mod_id],SIOCSIFTXQLEN,(caddr_t)&ifr) < 0 )
-      perror ("[ETHERNET] Can't set the txqueuelen");
-    else 
-      printf("[ETHERNET] %s txqueuelen size has changed to %d\n",eth->if_name[Mod_id],ifr.ifr_qlen);
-    break;
-    
+    case MTU_SIZE: /* change  MTU of the eth interface */
+        ifr.ifr_addr.sa_family = AF_INET;
+        strncpy(ifr.ifr_name,eth->if_name[Mod_id], sizeof(ifr.ifr_name));
+        ifr.ifr_mtu =value;
+        if (ioctl(eth->sockfd[Mod_id],SIOCSIFMTU,(caddr_t)&ifr) < 0 )
+            perror ("[ETHERNET] Can't set the MTU");
+        else
+            printf("[ETHERNET] %s MTU size has changed to %d\n",eth->if_name[Mod_id],ifr.ifr_mtu);
+        break;
+
+    case TX_Q_LEN:  /* change TX queue length of eth interface */
+        ifr.ifr_addr.sa_family = AF_INET;
+        strncpy(ifr.ifr_name,eth->if_name[Mod_id], sizeof(ifr.ifr_name));
+        ifr.ifr_qlen =value;
+        if (ioctl(eth->sockfd[Mod_id],SIOCSIFTXQLEN,(caddr_t)&ifr) < 0 )
+            perror ("[ETHERNET] Can't set the txqueuelen");
+        else
+            printf("[ETHERNET] %s txqueuelen size has changed to %d\n",eth->if_name[Mod_id],ifr.ifr_qlen);
+        break;
+
     /******************* device level options  *************************/
-  case COALESCE_PAR:
-    ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -C %s rx-usecs %d",eth->if_name[Mod_id],value);
-    if (ret > 0) {
-      ret=system(system_cmd);
-      if (ret == -1) {
-	fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
-      } else {
-	printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
-      }
-      printf("[ETHERNET] Coalesce parameters %s\n",system_cmd);
-    } else {
-      perror("[ETHERNET] Can't set coalesce parameters\n");
+    case COALESCE_PAR:
+        ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -C %s rx-usecs %d",eth->if_name[Mod_id],value);
+        if (ret > 0) {
+            ret=system(system_cmd);
+            if (ret == -1) {
+                fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
+            } else {
+                printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
+            }
+            printf("[ETHERNET] Coalesce parameters %s\n",system_cmd);
+        } else {
+            perror("[ETHERNET] Can't set coalesce parameters\n");
+        }
+        break;
+
+    case PAUSE_PAR:
+        if (value==1) ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -A %s autoneg off rx off tx off",eth->if_name[Mod_id]);
+        else if (value==0) ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -A %s autoneg on rx on tx on",eth->if_name[Mod_id]);
+        else break;
+        if (ret > 0) {
+            ret=system(system_cmd);
+            if (ret == -1) {
+                fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
+            } else {
+                printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
+            }
+            printf("[ETHERNET] Pause parameters %s\n",system_cmd);
+        } else {
+            perror("[ETHERNET] Can't set pause parameters\n");
+        }
+        break;
+
+    case RING_PAR:
+        ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -G %s val %d",eth->if_name[Mod_id],value);
+        if (ret > 0) {
+            ret=system(system_cmd);
+            if (ret == -1) {
+                fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
+            } else {
+                printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
+            }
+            printf("[ETHERNET] Ring parameters %s\n",system_cmd);
+        } else {
+            perror("[ETHERNET] Can't set ring parameters\n");
+        }
+        break;
+
+    default:
+        break;
     }
-    break;
-    
-  case PAUSE_PAR:
-    if (value==1) ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -A %s autoneg off rx off tx off",eth->if_name[Mod_id]);
-    else if (value==0) ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -A %s autoneg on rx on tx on",eth->if_name[Mod_id]);
-    else break;
-    if (ret > 0) {
-      ret=system(system_cmd);
-      if (ret == -1) {
-	fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
-      } else {
-	printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
-      }
-      printf("[ETHERNET] Pause parameters %s\n",system_cmd);
+
+    return 0;
+}
+
+
+
+int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params ) {
+
+    eth_state_t *eth = (eth_state_t*)malloc(sizeof(eth_state_t));
+    memset(eth, 0, sizeof(eth_state_t));
+
+    if (eth_params->transp_preference == 1) {
+        eth->flags = ETH_RAW_MODE;
+    } else if (eth_params->transp_preference == 0) {
+        eth->flags = ETH_UDP_MODE;
+    } else if (eth_params->transp_preference == 3) {
+        eth->flags = ETH_RAW_IF4p5_MODE;
+    } else if (eth_params->transp_preference == 2) {
+        eth->flags = ETH_UDP_IF4p5_MODE;
+    } else if (eth_params->transp_preference == 4) {
+        eth->flags = ETH_RAW_IF5_MOBIPASS;
     } else {
-      perror("[ETHERNET] Can't set pause parameters\n");
+        printf("transport_init: Unknown transport preference %d - default to RAW", eth_params->transp_preference);
+        eth->flags = ETH_RAW_MODE;
     }
-    break;
-    
-  case RING_PAR:
-    ret=snprintf(system_cmd,sizeof(system_cmd),"ethtool -G %s val %d",eth->if_name[Mod_id],value);
-    if (ret > 0) {
-      ret=system(system_cmd);
-      if (ret == -1) {
-	fprintf (stderr,"[ETHERNET] Can't start shell to execute %s %s",system_cmd, strerror(errno));
-      } else {
-	printf ("[ETHERNET] status of %s is %i\n",WEXITSTATUS(ret));
-      }            
-      printf("[ETHERNET] Ring parameters %s\n",system_cmd);
+
+    printf("[ETHERNET]: Initializing openair0_device for %s ...\n", ((device->host_type == BBU_HOST) ? "BBU": "RRH"));
+    device->Mod_id           = num_devices_eth++;
+    device->transp_type      = ETHERNET_TP;
+    device->trx_start_func   = trx_eth_start;
+    device->trx_request_func = trx_eth_request;
+    device->trx_reply_func   = trx_eth_reply;
+    device->trx_get_stats_func   = trx_eth_get_stats;
+    device->trx_reset_stats_func = trx_eth_reset_stats;
+    device->trx_end_func         = trx_eth_end;
+    device->trx_stop_func        = trx_eth_stop;
+    device->trx_set_freq_func = trx_eth_set_freq;
+    device->trx_set_gains_func = trx_eth_set_gains;
+
+    if (eth->flags == ETH_RAW_MODE) {
+        device->trx_write_func   = trx_eth_write_raw;
+        device->trx_read_func    = trx_eth_read_raw;
+    } else if (eth->flags == ETH_UDP_MODE) {
+        device->trx_write_func   = trx_eth_write_udp;
+        device->trx_read_func    = trx_eth_read_udp;
+    } else if (eth->flags == ETH_RAW_IF4p5_MODE) {
+        device->trx_write_func   = trx_eth_write_raw_IF4p5;
+        device->trx_read_func    = trx_eth_read_raw_IF4p5;
+    } else if (eth->flags == ETH_UDP_IF4p5_MODE) {
+        device->trx_write_func   = trx_eth_write_udp_IF4p5;
+        device->trx_read_func    = trx_eth_read_udp_IF4p5;
+    } else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
+        device->trx_write_func   = trx_eth_write_raw_IF4p5;
+        device->trx_read_func    = trx_eth_read_raw_IF4p5;
     } else {
-      perror("[ETHERNET] Can't set ring parameters\n");
+        //device->trx_write_func   = trx_eth_write_udp_IF4p5;
+        //device->trx_read_func    = trx_eth_read_udp_IF4p5;
     }
-    break;
-    
-  default:
-    break;
-  }
-  
-  return 0;
-}
 
+    eth->if_name[device->Mod_id] = eth_params->local_if_name;
+    device->priv = eth;
 
+    /* device specific */
+    openair0_cfg[0].iq_rxrescale = 15;//rescale iqs
+    openair0_cfg[0].iq_txshift = eth_params->iq_txshift;// shift
+    openair0_cfg[0].tx_sample_advance = eth_params->tx_sample_advance;
 
-int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params ) {
-
-  eth_state_t *eth = (eth_state_t*)malloc(sizeof(eth_state_t));
-  memset(eth, 0, sizeof(eth_state_t));
-
-  if (eth_params->transp_preference == 1) {
-    eth->flags = ETH_RAW_MODE;
-  } else if (eth_params->transp_preference == 0) {
-    eth->flags = ETH_UDP_MODE;
-  } else if (eth_params->transp_preference == 3) {
-    eth->flags = ETH_RAW_IF4p5_MODE;
-  } else if (eth_params->transp_preference == 2) {
-    eth->flags = ETH_UDP_IF4p5_MODE;
-  } else if (eth_params->transp_preference == 4) {
-    eth->flags = ETH_RAW_IF5_MOBIPASS;
-  } else {
-    printf("transport_init: Unknown transport preference %d - default to RAW", eth_params->transp_preference);
-    eth->flags = ETH_RAW_MODE;
-  }
-  
-  printf("[ETHERNET]: Initializing openair0_device for %s ...\n", ((device->host_type == BBU_HOST) ? "BBU": "RRH"));
-  device->Mod_id           = num_devices_eth++;
-  device->transp_type      = ETHERNET_TP;
-  device->trx_start_func   = trx_eth_start;
-  device->trx_request_func = trx_eth_request;
-  device->trx_reply_func   = trx_eth_reply;
-  device->trx_get_stats_func   = trx_eth_get_stats;
-  device->trx_reset_stats_func = trx_eth_reset_stats;
-  device->trx_end_func         = trx_eth_end;
-  device->trx_stop_func        = trx_eth_stop;
-  device->trx_set_freq_func = trx_eth_set_freq;
-  device->trx_set_gains_func = trx_eth_set_gains;
-
-  if (eth->flags == ETH_RAW_MODE) {
-    device->trx_write_func   = trx_eth_write_raw;
-    device->trx_read_func    = trx_eth_read_raw;     
-  } else if (eth->flags == ETH_UDP_MODE) {
-    device->trx_write_func   = trx_eth_write_udp;
-    device->trx_read_func    = trx_eth_read_udp;     
-  } else if (eth->flags == ETH_RAW_IF4p5_MODE) {
-    device->trx_write_func   = trx_eth_write_raw_IF4p5;
-    device->trx_read_func    = trx_eth_read_raw_IF4p5;     
-  } else if (eth->flags == ETH_UDP_IF4p5_MODE) {
-    device->trx_write_func   = trx_eth_write_udp_IF4p5;
-    device->trx_read_func    = trx_eth_read_udp_IF4p5;     
-  } else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
-    device->trx_write_func   = trx_eth_write_raw_IF4p5;
-    device->trx_read_func    = trx_eth_read_raw_IF4p5;     
-  } else {
-    //device->trx_write_func   = trx_eth_write_udp_IF4p5;
-    //device->trx_read_func    = trx_eth_read_udp_IF4p5;     
-  }
-    
-  eth->if_name[device->Mod_id] = eth_params->local_if_name;
-  device->priv = eth;
- 	
-  /* device specific */
-  openair0_cfg[0].iq_rxrescale = 15;//rescale iqs
-  openair0_cfg[0].iq_txshift = eth_params->iq_txshift;// shift
-  openair0_cfg[0].tx_sample_advance = eth_params->tx_sample_advance;
-
-  /* RRH does not have any information to make this configuration atm */
-  if (device->host_type == BBU_HOST) {
-    /*Note scheduling advance values valid only for case 7680000 */    
-    switch ((int)openair0_cfg[0].sample_rate) {
-    case 30720000:
-      openair0_cfg[0].samples_per_packet    = 3840;     
-      break;
-    case 23040000:     
-      openair0_cfg[0].samples_per_packet    = 2880;
-      break;
-    case 15360000:
-      openair0_cfg[0].samples_per_packet    = 1920;      
-      break;
-    case 7680000:
-      openair0_cfg[0].samples_per_packet    = 960;     
-      break;
-    case 1920000:
-      openair0_cfg[0].samples_per_packet    = 240;     
-      break;
-    default:
-      printf("Error: unknown sampling rate %f\n",openair0_cfg[0].sample_rate);
-      exit(-1);
-      break;
+    /* RRH does not have any information to make this configuration atm */
+    if (device->host_type == BBU_HOST) {
+        /*Note scheduling advance values valid only for case 7680000 */
+        switch ((int)openair0_cfg[0].sample_rate) {
+        case 30720000:
+            openair0_cfg[0].samples_per_packet    = 3840;
+            break;
+        case 23040000:
+            openair0_cfg[0].samples_per_packet    = 2880;
+            break;
+        case 15360000:
+            openair0_cfg[0].samples_per_packet    = 1920;
+            break;
+        case 7680000:
+            openair0_cfg[0].samples_per_packet    = 960;
+            break;
+        case 1920000:
+            openair0_cfg[0].samples_per_packet    = 240;
+            break;
+        default:
+            printf("Error: unknown sampling rate %f\n",openair0_cfg[0].sample_rate);
+            exit(-1);
+            break;
+        }
     }
-  }
- 
-  device->openair0_cfg=&openair0_cfg[0];
-  return 0;
+
+    device->openair0_cfg=&openair0_cfg[0];
+    return 0;
 }
 
 
@@ -419,85 +419,85 @@ int transport_init(openair0_device *device, openair0_config_t *openair0_cfg, eth
  *                                         DEBUGING-RELATED FUNCTIONS                                                     *
  **************************************************************************************************************************/
 void dump_packet(char *title, unsigned char* pkt, int bytes, unsigned int tx_rx_flag) {
-   
-  static int numSend = 1;
-  static int numRecv = 1;
-  int num, k;
-  char tmp[48];
-  unsigned short int cksum;
-  
-  num = (tx_rx_flag)? numSend++:numRecv++;
-  for (k = 0; k < 24; k++) sprintf(tmp+k, "%02X", pkt[k]);
-  cksum = calc_csum((unsigned short *)pkt, bytes>>2);
-  printf("%s-%s (%06d): %s 0x%04X\n", title,(tx_rx_flag)? "TX":"RX", num, tmp, cksum);
+
+    static int numSend = 1;
+    static int numRecv = 1;
+    int num, k;
+    char tmp[48];
+    unsigned short int cksum;
+
+    num = (tx_rx_flag)? numSend++:numRecv++;
+    for (k = 0; k < 24; k++) sprintf(tmp+k, "%02X", pkt[k]);
+    cksum = calc_csum((unsigned short *)pkt, bytes>>2);
+    printf("%s-%s (%06d): %s 0x%04X\n", title,(tx_rx_flag)? "TX":"RX", num, tmp, cksum);
 }
 
 unsigned short calc_csum (unsigned short *buf, int nwords) {
- 
- unsigned long sum;
-  for (sum = 0; nwords > 0; nwords--)
-    sum += *buf++;
-  sum = (sum >> 16) + (sum & 0xffff);
-  sum += (sum >> 16);
-  return ~sum;
+
+    unsigned long sum;
+    for (sum = 0; nwords > 0; nwords--)
+        sum += *buf++;
+    sum = (sum >> 16) + (sum & 0xffff);
+    sum += (sum >> 16);
+    return ~sum;
 }
 
 void dump_dev(openair0_device *device) {
 
-  eth_state_t *eth = (eth_state_t*)device->priv;
-  
-  printf("Ethernet device interface %i configuration:\n" ,device->openair0_cfg->Mod_id);
-  printf("       Log level is %i :\n" ,device->openair0_cfg->log_level);	
-  printf("       RB number: %i, sample rate: %lf \n" ,
-        device->openair0_cfg->num_rb_dl, device->openair0_cfg->sample_rate);
-  printf("       BBU configured for %i tx/%i rx channels)\n",
-	device->openair0_cfg->tx_num_channels,device->openair0_cfg->rx_num_channels);
-   printf("       Running flags: %s %s (\n",      
-	((eth->flags & ETH_RAW_MODE)  ? "RAW socket mode - ":""),
-	((eth->flags & ETH_UDP_MODE)  ? "UDP socket mode - ":""));	  	
-  printf("       Number of iqs dumped when displaying packets: %i\n\n",eth->iqdumpcnt);   
-  
+    eth_state_t *eth = (eth_state_t*)device->priv;
+
+    printf("Ethernet device interface %i configuration:\n" ,device->openair0_cfg->Mod_id);
+    printf("       Log level is %i :\n" ,device->openair0_cfg->log_level);
+    printf("       RB number: %i, sample rate: %lf \n" ,
+           device->openair0_cfg->num_rb_dl, device->openair0_cfg->sample_rate);
+    printf("       BBU configured for %i tx/%i rx channels)\n",
+           device->openair0_cfg->tx_num_channels,device->openair0_cfg->rx_num_channels);
+    printf("       Running flags: %s %s (\n",
+           ((eth->flags & ETH_RAW_MODE)  ? "RAW socket mode - ":""),
+           ((eth->flags & ETH_UDP_MODE)  ? "UDP socket mode - ":""));
+    printf("       Number of iqs dumped when displaying packets: %i\n\n",eth->iqdumpcnt);
+
 }
 
 void inline dump_txcounters(openair0_device *device) {
-  eth_state_t *eth = (eth_state_t*)device->priv;  
-  printf("   Ethernet device interface %i, tx counters:\n" ,device->openair0_cfg->Mod_id);
-  printf("   Sent packets: %llu send errors: %i\n",   (long long unsigned int)eth->tx_count, eth->num_tx_errors);	 
+    eth_state_t *eth = (eth_state_t*)device->priv;
+    printf("   Ethernet device interface %i, tx counters:\n" ,device->openair0_cfg->Mod_id);
+    printf("   Sent packets: %llu send errors: %i\n",   (long long unsigned int)eth->tx_count, eth->num_tx_errors);
 }
 
 void inline dump_rxcounters(openair0_device *device) {
 
-  eth_state_t *eth = (eth_state_t*)device->priv;
-  printf("   Ethernet device interface %i rx counters:\n" ,device->openair0_cfg->Mod_id);
-  printf("   Received packets: %llu missed packets errors: %i\n", (long long unsigned int)eth->rx_count, eth->num_underflows);	 
-}  
+    eth_state_t *eth = (eth_state_t*)device->priv;
+    printf("   Ethernet device interface %i rx counters:\n" ,device->openair0_cfg->Mod_id);
+    printf("   Received packets: %llu missed packets errors: %i\n", (long long unsigned int)eth->rx_count, eth->num_underflows);
+}
 
 void inline dump_buff(openair0_device *device, char *buff,unsigned int tx_rx_flag, int nsamps) {
-  
-  char *strptr;
-  eth_state_t *eth = (eth_state_t*)device->priv;  
-  /*need to add ts number of iqs in printf need to fix dump iqs call */
-  strptr = (( tx_rx_flag == TX_FLAG) ? "TX" : "RX");
-  printf("\n %s, nsamps=%i \n" ,strptr,nsamps);     
-  
-  if (tx_rx_flag == 1) {
-    dump_txcounters(device);
-    printf("  First %i iqs of TX buffer\n",eth->iqdumpcnt);
-    dump_iqs(buff,eth->iqdumpcnt);
-  } else {
-    dump_rxcounters(device);
-    printf("  First %i iqs of RX buffer\n",eth->iqdumpcnt);
-    dump_iqs(buff,eth->iqdumpcnt);      
-  }
-  
+
+    char *strptr;
+    eth_state_t *eth = (eth_state_t*)device->priv;
+    /*need to add ts number of iqs in printf need to fix dump iqs call */
+    strptr = (( tx_rx_flag == TX_FLAG) ? "TX" : "RX");
+    printf("\n %s, nsamps=%i \n" ,strptr,nsamps);
+
+    if (tx_rx_flag == 1) {
+        dump_txcounters(device);
+        printf("  First %i iqs of TX buffer\n",eth->iqdumpcnt);
+        dump_iqs(buff,eth->iqdumpcnt);
+    } else {
+        dump_rxcounters(device);
+        printf("  First %i iqs of RX buffer\n",eth->iqdumpcnt);
+        dump_iqs(buff,eth->iqdumpcnt);
+    }
+
 }
 
 void dump_iqs(char * buff, int iq_cnt) {
-  int i;
-  for (i=0;i<iq_cnt;i++) {
-    printf("s%02i: Q=%+ij I=%+i%s",i,
-	   ((iqoai_t *)(buff))[i].q,
-	   ((iqoai_t *)(buff))[i].i,
-	   ((i+1)%3 == 0) ? "\n" : "  ");
-  }   
+    int i;
+    for (i=0; i<iq_cnt; i++) {
+        printf("s%02i: Q=%+ij I=%+i%s",i,
+               ((iqoai_t *)(buff))[i].q,
+               ((iqoai_t *)(buff))[i].i,
+               ((i+1)%3 == 0) ? "\n" : "  ");
+    }
 }
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
index aca8cb7f1f70475449f895c8f064baebb2f3d4b3..e96282a7113ef4c6d9ccee73cd0182b1386b3334 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
@@ -37,11 +37,15 @@
 #include "PHY/LTE_TRANSPORT/if5_tools.h"
 
 // ETH transport preference modes
+#ifdef OCP_FRAMEWORK
+#include "enums.h"
+#else
 #define ETH_UDP_MODE        0
 #define ETH_RAW_MODE        1
 #define ETH_UDP_IF4p5_MODE    2
 #define ETH_RAW_IF4p5_MODE    3
 #define ETH_RAW_IF5_MOBIPASS    4    
+#endif
 
 // Time domain RRH packet sizes
 #define MAC_HEADER_SIZE_BYTES (sizeof(struct ether_header))
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index b7ba815828dfe4457efdb28e3898e6b1f0cf66d1..d070b9108379664294e2a55210e0a76876ea9840 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -151,6 +151,8 @@ static struct {
   volatile uint8_t phy_proc_CC_id;
 } sync_phy_proc;
 
+extern double cpuf;
+
 void exit_fun(const char* s);
 
 void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst,eth_params_t *,int);
@@ -182,11 +184,9 @@ static inline void thread_top_init(char *thread_name,
 
   if (sched_setattr(0, &attr, flags) < 0 ) {
     perror("[SCHED] eNB tx thread: sched_setattr failed\n");
-    exit_fun("Error setting deadline scheduler");
+    exit(1);
   }
 
-  LOG_I( HW, "[SCHED] eNB %s deadline thread started on CPU %d\n", thread_name,sched_getcpu() );
-
 #else //LOW_LATENCY
   int policy, s, j;
   struct sched_param sparam;
@@ -582,6 +582,7 @@ static void* eNB_thread_rxtx( void* param ) {
   // set default return value
   eNB_thread_rxtx_status = 0;
 
+
   sprintf(thread_name,"RXn_TXnp4_%d\n",&eNB->proc.proc_rxtx[0] == proc ? 0 : 1);
   thread_top_init(thread_name,1,850000L,1000000L,2000000L);
 
@@ -786,6 +787,7 @@ static void* eNB_thread_asynch_rxtx( void* param ) {
   PHY_VARS_eNB *eNB = PHY_vars_eNB_g[0][proc->CC_id];
 
 
+
   int subframe=0, frame=0; 
 
   thread_top_init("thread_asynch",1,870000L,1000000L,1000000L);
@@ -1312,7 +1314,9 @@ void init_eNB_proc(int inst) {
 
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
     eNB = PHY_vars_eNB_g[inst][CC_id];
+#ifndef OCP_FRAMEWORK
     LOG_I(PHY,"Initializing eNB %d CC_id %d (%s,%s),\n",inst,CC_id,eNB_functions[eNB->node_function],eNB_timing[eNB->node_timing]);
+#endif
     proc = &eNB->proc;
 
     proc_rxtx = proc->proc_rxtx;
@@ -1374,6 +1378,8 @@ void init_eNB_proc(int inst) {
     if ((eNB->node_timing == synch_to_other) ||
 	(eNB->node_function == NGFI_RRU_IF5) ||
 	(eNB->node_function == NGFI_RRU_IF4p5))
+
+
       pthread_create( &proc->pthread_asynch_rxtx, attr_asynch, eNB_thread_asynch_rxtx, &eNB->proc );
 
     char name[16];
@@ -1606,7 +1612,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;
+#ifndef OCP_FRAMEWORK
       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]]);
+#endif
 
       switch (node_function[CC_id]) {
       case NGFI_RRU_IF5: